ghost 6.52.0 → 6.52.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. package/components/tryghost-kg-card-factory-5.2.3.tgz +0 -0
  2. package/components/tryghost-kg-clean-basic-html-4.3.3.tgz +0 -0
  3. package/components/tryghost-kg-converters-1.2.3.tgz +0 -0
  4. package/components/tryghost-kg-default-cards-10.3.3.tgz +0 -0
  5. package/components/tryghost-kg-default-nodes-2.1.3.tgz +0 -0
  6. package/components/tryghost-kg-default-transforms-1.3.3.tgz +0 -0
  7. package/components/tryghost-kg-html-to-lexical-1.3.3.tgz +0 -0
  8. package/components/tryghost-kg-lexical-html-renderer-1.4.3.tgz +0 -0
  9. package/components/tryghost-kg-markdown-html-renderer-7.2.3.tgz +0 -0
  10. package/components/tryghost-kg-utils-1.1.3.tgz +0 -0
  11. package/core/built/admin/assets/Growth-CczbRexv.js +3 -0
  12. package/core/built/admin/assets/Newsletters-rFycX4x8.js +1 -0
  13. package/core/built/admin/assets/Overview-DFubBJaR.js +1 -0
  14. package/core/built/admin/assets/Web-BDE2lN4_.js +2 -0
  15. package/core/built/admin/assets/{account-migration-DiS76mRS.js → account-migration-gvH5a8ea.js} +1 -1
  16. package/core/built/admin/assets/audience-CMWMCxFS.js +1 -0
  17. package/core/built/admin/assets/{automated-emails-Cel18g7S.js → automated-emails-293Lcj5S.js} +1 -1
  18. package/core/built/admin/assets/automations-BxnjfCKn.js +1 -0
  19. package/core/built/admin/assets/automations-kPr44AmD.js +1 -0
  20. package/core/built/admin/assets/bluesky-sharing-Cww54F3Y.js +1 -0
  21. package/core/built/admin/assets/{chunk.912.9d6df5a6da679d905bbf.js → chunk.251.dd82df30188bb633b4ae.js} +9 -9
  22. package/core/built/admin/assets/{chunk.730.2457b7fede040aa52c88.js → chunk.341.20e7d2936dfa5877deea.js} +3 -3
  23. package/core/built/admin/assets/{chunk.524.d6d399b571454ea0234d.js → chunk.524.697bf0ded48e7c994fc3.js} +5 -5
  24. package/core/built/admin/assets/{chunk.582.50a9a5cbab6996daf0fe.js → chunk.582.6b742e9ba932688c442c.js} +6 -6
  25. package/core/built/admin/assets/{code-editor-view-BLGzcLub.js → code-editor-view-DSY5RHLf.js} +1 -1
  26. package/core/built/admin/assets/comments-BwNUmaNM.js +1 -0
  27. package/core/built/admin/assets/constants-c-JNF9c2.js +1 -0
  28. package/core/built/admin/assets/container-CD33Rm0u.js +1 -0
  29. package/core/built/admin/assets/content-helpers-CNBPrwsi.js +1 -0
  30. package/core/built/admin/assets/date-range-select-BkkNN98H.js +1 -0
  31. package/core/built/admin/assets/disabled-sources-indicator-ChHTF69d.js +1 -0
  32. package/core/built/admin/assets/{domain-2REz20SO.js → domain-CGk9SMa-.js} +1 -1
  33. package/core/built/admin/assets/dropzone-9zocztX0.js +5 -0
  34. package/core/built/admin/assets/{edit-profile-7QEh0VtN.js → edit-profile-C0B2Kbsl.js} +1 -1
  35. package/core/built/admin/assets/editor-Bz2Sm2O8.js +8 -0
  36. package/core/built/admin/assets/{esm-CEtFqV1y.js → esm-CsHLKmLh.js} +1 -1
  37. package/core/built/admin/assets/explore-CpRAMnx7.js +1 -0
  38. package/core/built/admin/assets/feed-BRoOWghO.js +1 -0
  39. package/core/built/admin/assets/filter-sources-DhxqZID1.js +1 -0
  40. package/core/built/admin/assets/{filters-DUy8rzI5.js → filters-B8nLLYGO.js} +1 -1
  41. package/core/built/admin/assets/{gh-chart-DdBGmBS8.js → gh-chart-Cqy9gGq7.js} +1 -1
  42. package/core/built/admin/assets/{gift-link-modal-CSgyxenA.js → gift-link-modal-v55u0VUL.js} +1 -1
  43. package/core/built/admin/assets/growth-BIfM3w1p.js +1 -0
  44. package/core/built/admin/assets/{inbox-CTD-ix6u.js → inbox-CDX57fXK.js} +11 -11
  45. package/core/built/admin/assets/index-B5yxmQNp.js +69 -0
  46. package/core/built/admin/assets/inline-DdrWe7D3.js +1 -0
  47. package/core/built/admin/assets/{input-group-DkR63-nk.js → input-group-DUPGQck1.js} +1 -1
  48. package/core/built/admin/assets/{koenig-lexical-D09TwwLs.js → koenig-lexical-CUVpp-dC.js} +1 -1
  49. package/core/built/admin/assets/{kpi-card-Fr_HJH78.js → kpi-card-DyDbok3h.js} +1 -1
  50. package/core/built/admin/assets/kpi-helpers-Bx9IHIMq.js +1 -0
  51. package/core/built/admin/assets/{kpi-tabs-Dc4Nt4a5.js → kpi-tabs-DmUcThFc.js} +1 -1
  52. package/core/built/admin/assets/labels-DLL8dl-7.js +1 -0
  53. package/core/built/admin/assets/layout-B7K3SmL0.js +1 -0
  54. package/core/built/admin/assets/{links-CfAB2Yeq.js → link-helpers-DHG_8GIT.js} +1 -1
  55. package/core/built/admin/assets/list-page-COAUFrmV.js +1 -0
  56. package/core/built/admin/assets/members-BxWs_mjq.js +10 -0
  57. package/core/built/admin/assets/{modals-Bu-1Uxdc.js → modals-DF2sECo6.js} +4 -4
  58. package/core/built/admin/assets/moderation-DYKTx5x0.js +1 -0
  59. package/core/built/admin/assets/newsletter-C-ZD1dI8.js +1 -0
  60. package/core/built/admin/assets/note-oaRdU_5z.js +1 -0
  61. package/core/built/admin/assets/notifications-BF4fAiP1.js +1 -0
  62. package/core/built/admin/assets/{nql-lang-CvCSOQG3.js → nql-lang-BoHzkNg5.js} +1 -1
  63. package/core/built/admin/assets/{onboarding-route-BDaa9hd3.js → onboarding-route-SS-e9Aeb.js} +1 -1
  64. package/core/built/admin/assets/overview-Cbn6bIoR.js +1 -0
  65. package/core/built/admin/assets/post-analytics-Bk9-KEgB.js +1 -0
  66. package/core/built/admin/assets/post-analytics-context-C8t_048I.js +1 -0
  67. package/core/built/admin/assets/post-analytics-header-xTjcg4H0.js +1 -0
  68. package/core/built/admin/assets/post-analytics-provider-CqnWwLMk.js +1 -0
  69. package/core/built/admin/assets/{post-share-modal-59Ujf4t1.js → post-share-modal-ZUCX7JZo.js} +1 -1
  70. package/core/built/admin/assets/preferences-BgjgxiBB.js +5 -0
  71. package/core/built/admin/assets/profile-qIwaxKTm.js +1 -0
  72. package/core/built/admin/assets/{router-provider-DcttGCQn.js → router-provider-S8Wf6jdu.js} +1 -1
  73. package/core/built/admin/assets/select-Cp27ScMR.js +1 -0
  74. package/core/built/admin/assets/{settings-dLraw6et.js → settings-CdDfyF90.js} +1 -1
  75. package/core/built/admin/assets/{settings-CIslWMfh.js → settings-CynBh-YN.js} +4 -4
  76. package/core/built/admin/assets/{share-modal-CI3E67kW.js → share-modal-DTIFYNI1.js} +1 -1
  77. package/core/built/admin/assets/social-urls-DVvRfwEp.js +16 -0
  78. package/core/built/admin/assets/{sort-button-BYwI0xdN.js → sort-button-BHh5Ba1K.js} +1 -1
  79. package/core/built/admin/assets/source-icon--egCE7iN.js +1 -0
  80. package/core/built/admin/assets/stats-DkqCtrPh.js +1 -0
  81. package/core/built/admin/assets/stats-view-BvWWxegf.js +1 -0
  82. package/core/built/admin/assets/step-1-DWjw7rIn.js +1 -0
  83. package/core/built/admin/assets/{step-2-CVOvLQ2n.js → step-2-D1LrETIB.js} +1 -1
  84. package/core/built/admin/assets/{step-3-BsVXcpWU.js → step-3-BAdJdZw4.js} +2 -2
  85. package/core/built/admin/assets/{tabs-Bw8aEqsd.js → tabs-DSrHPjWP.js} +1 -1
  86. package/core/built/admin/assets/tags-BWZqBj19.js +1 -0
  87. package/core/built/admin/assets/{textarea-CNaqhk5P.js → textarea-CUVQjsrM.js} +1 -1
  88. package/core/built/admin/assets/{toggle-group-CMp1taHd.js → toggle-group-CrFpl-Xz.js} +1 -1
  89. package/core/built/admin/assets/{topic-filter-D2_9eEw4.js → topic-filter-jAxwwd9I.js} +1 -1
  90. package/core/built/admin/assets/types-uYQ1HgqL.js +1 -0
  91. package/core/built/admin/assets/url-helpers-CCyfRrKj.js +1 -0
  92. package/core/built/admin/assets/use-analytics-data-DXG7mpgK.js +1 -0
  93. package/core/built/admin/assets/use-filter-params-EoQBXfP3.js +1 -0
  94. package/core/built/admin/assets/use-growth-stats-DJoXxVfD.js +1 -0
  95. package/core/built/admin/assets/use-post-referrers-B-onYbuS.js +1 -0
  96. package/core/built/admin/assets/use-reply-chain-data-D8IFALoz.js +1 -0
  97. package/core/built/admin/assets/{use-tinybird-query-CNCaUn39.js → use-tinybird-query-BSL3iVCc.js} +1 -1
  98. package/core/built/admin/assets/{use-tinybird-token-1T80Odca.js → use-tinybird-token-DHgOnrNu.js} +1 -1
  99. package/core/built/admin/assets/virtual-list-AQrbRAXP.js +1 -0
  100. package/core/built/admin/assets/web-zEFi98DS.js +1 -0
  101. package/core/built/admin/index.html +6 -6
  102. package/core/server/services/automations/automations-api.js +20 -0
  103. package/core/server/services/automations/automations-api.ts +31 -0
  104. package/core/server/services/automations/poll.js +7 -7
  105. package/core/server/services/automations/poll.ts +12 -9
  106. package/core/server/services/email-analytics/email-analytics-provider-mailgun.js +2 -2
  107. package/core/server/services/email-analytics/email-analytics-service-wrapper.js +1 -4
  108. package/core/server/services/email-analytics/email-analytics-service.js +5 -7
  109. package/core/server/services/webhooks/serialize.js +6 -5
  110. package/package.json +1 -1
  111. package/pnpm-lock.yaml +14 -14
  112. package/pnpm-workspace.yaml +5 -0
  113. package/core/built/admin/assets/Growth-Dx0vv-BS.js +0 -3
  114. package/core/built/admin/assets/Newsletters-v1GnbUjW.js +0 -1
  115. package/core/built/admin/assets/Overview-BgM7o-Z8.js +0 -1
  116. package/core/built/admin/assets/Web-DRv-83Ow.js +0 -2
  117. package/core/built/admin/assets/automations-DFLgH14-.js +0 -1
  118. package/core/built/admin/assets/automations-Dc4DUKBb.js +0 -1
  119. package/core/built/admin/assets/bluesky-sharing-Dk1RTUaz.js +0 -1
  120. package/core/built/admin/assets/comments-DgH1rC7w.js +0 -1
  121. package/core/built/admin/assets/constants-BlvYJTqz.js +0 -1
  122. package/core/built/admin/assets/content-helpers-BEgGpvyE.js +0 -1
  123. package/core/built/admin/assets/editor-u3BPqQed.js +0 -8
  124. package/core/built/admin/assets/en-DA2zVD_n.js +0 -1
  125. package/core/built/admin/assets/explore-BgHmdFVz.js +0 -1
  126. package/core/built/admin/assets/feed-Cs7-F3I5.js +0 -1
  127. package/core/built/admin/assets/filter-query-core-D6GjHUFB.js +0 -1
  128. package/core/built/admin/assets/growth-IkQZ1ZV9.js +0 -1
  129. package/core/built/admin/assets/index-BMhs4O3N.js +0 -69
  130. package/core/built/admin/assets/inline-C1CpHxuO.js +0 -1
  131. package/core/built/admin/assets/kpis-BTZ8cyw-.js +0 -1
  132. package/core/built/admin/assets/labels-sA9m188H.js +0 -5
  133. package/core/built/admin/assets/layout-szLkuQ88.js +0 -1
  134. package/core/built/admin/assets/list-page-DWkOdljb.js +0 -1
  135. package/core/built/admin/assets/main-layout-B-K8KliJ.js +0 -1
  136. package/core/built/admin/assets/members-PNNhalbu.js +0 -10
  137. package/core/built/admin/assets/moderation-DqnsNTiw.js +0 -1
  138. package/core/built/admin/assets/newsletter-BhuQeWFL.js +0 -1
  139. package/core/built/admin/assets/note-DFy2JTpP.js +0 -1
  140. package/core/built/admin/assets/notifications-BVu-JOkB.js +0 -1
  141. package/core/built/admin/assets/overview-Bhg8M7VS.js +0 -1
  142. package/core/built/admin/assets/pagemenu-C4paivNj.js +0 -1
  143. package/core/built/admin/assets/post-analytics-BhQUmZyA.js +0 -1
  144. package/core/built/admin/assets/post-analytics-context-Dy17HR1_.js +0 -1
  145. package/core/built/admin/assets/post-analytics-header-DAQep1VQ.js +0 -1
  146. package/core/built/admin/assets/posts/_react-dom-Blmuc0OL.js +0 -21
  147. package/core/built/admin/assets/posts/alert-dialog-DBJeQQTK.js +0 -154
  148. package/core/built/admin/assets/posts/app-provider-BJr9fdEC.js +0 -22
  149. package/core/built/admin/assets/posts/app-utils-9O53Czfw.js +0 -83
  150. package/core/built/admin/assets/posts/automations-BM0oBTjO.js +0 -275
  151. package/core/built/admin/assets/posts/automations-Dbp-gdHS.js +0 -223
  152. package/core/built/admin/assets/posts/avatar-kOk1tTvT.js +0 -144
  153. package/core/built/admin/assets/posts/badge-DnByIHe9.js +0 -25
  154. package/core/built/admin/assets/posts/button-Dd8Xreln.js +0 -40844
  155. package/core/built/admin/assets/posts/chunk-KS7C4IRE-ECXkcZq6.js +0 -7740
  156. package/core/built/admin/assets/posts/comments-D-7hbbdw.js +0 -8032
  157. package/core/built/admin/assets/posts/data-list-DdD_glQ-.js +0 -14219
  158. package/core/built/admin/assets/posts/dialog-DDkTy_np.js +0 -229
  159. package/core/built/admin/assets/posts/editor-D7-01KV_.js +0 -14633
  160. package/core/built/admin/assets/posts/empty-indicator-Ze-bwJ27.js +0 -38
  161. package/core/built/admin/assets/posts/filters-CmKfKtpS.js +0 -5611
  162. package/core/built/admin/assets/posts/get-site-timezone-DVbWc-NA.js +0 -39
  163. package/core/built/admin/assets/posts/growth-DlhFUzVg.js +0 -299
  164. package/core/built/admin/assets/posts/heading-BBl-8tMC.js +0 -92
  165. package/core/built/admin/assets/posts/hooks-gZAmj4Al.js +0 -5429
  166. package/core/built/admin/assets/posts/input-DuPLeCGW.js +0 -16
  167. package/core/built/admin/assets/posts/input-surface-ClwNIxfd.js +0 -17
  168. package/core/built/admin/assets/posts/jsx-runtime-BfZnKD4L.js +0 -95
  169. package/core/built/admin/assets/posts/koenig-lexical-DCHiJJou.js +0 -77579
  170. package/core/built/admin/assets/posts/kpis-Fsx0XmYK.js +0 -2061
  171. package/core/built/admin/assets/posts/label-D1wSl69p.js +0 -32
  172. package/core/built/admin/assets/posts/links-DLozzgMh.js +0 -1243
  173. package/core/built/admin/assets/posts/loading-indicator-BgU2kK3v.js +0 -44
  174. package/core/built/admin/assets/posts/main-layout-DDlTMrnF.js +0 -15
  175. package/core/built/admin/assets/posts/newsletter-DAQJ1GLe.js +0 -736
  176. package/core/built/admin/assets/posts/overview-G3MfRm-S.js +0 -426
  177. package/core/built/admin/assets/posts/page-header-CanFyB95.js +0 -284
  178. package/core/built/admin/assets/posts/popover-Cta8ZDHJ.js +0 -221
  179. package/core/built/admin/assets/posts/post-analytics-cS07-wo_.js +0 -121
  180. package/core/built/admin/assets/posts/post-analytics-context-D868SMoq.js +0 -150
  181. package/core/built/admin/assets/posts/post-analytics-header-CZYiuaEL.js +0 -42249
  182. package/core/built/admin/assets/posts/post-share-modal-BJfswZzf.js +0 -352
  183. package/core/built/admin/assets/posts/posts-CpusjBC0.js +0 -37
  184. package/core/built/admin/assets/posts/posts-app-context-CPC7dOlt.js +0 -26
  185. package/core/built/admin/assets/posts/posts.js +0 -145
  186. package/core/built/admin/assets/posts/router-provider-DrqpOc8m.js +0 -114
  187. package/core/built/admin/assets/posts/separator-DAZNzARU.js +0 -37
  188. package/core/built/admin/assets/posts/settings-CMfUn5Hq.js +0 -66
  189. package/core/built/admin/assets/posts/shade-app-DLbeExcd-NeEZjE3R.js +0 -4764
  190. package/core/built/admin/assets/posts/sheet-CEuv-0a5.js +0 -62
  191. package/core/built/admin/assets/posts/site-WJ6ldary.js +0 -10
  192. package/core/built/admin/assets/posts/skeleton-CO0qCdQF.js +0 -2426
  193. package/core/built/admin/assets/posts/source-icon-Bs6o84W3.js +0 -143
  194. package/core/built/admin/assets/posts/stats-B1Z8H0JT.js +0 -92
  195. package/core/built/admin/assets/posts/table-CbJ9bOpM.js +0 -77
  196. package/core/built/admin/assets/posts/tabs-BvzzwQ4P.js +0 -242
  197. package/core/built/admin/assets/posts/tags-D-4TwsD0.js +0 -462
  198. package/core/built/admin/assets/posts/tooltip-BI7VtFUY.js +0 -380
  199. package/core/built/admin/assets/posts/update-queries-DiUznIQ1.js +0 -60
  200. package/core/built/admin/assets/posts/users-UgRPrTKW.js +0 -83
  201. package/core/built/admin/assets/posts/value-DF_wOhJe.js +0 -415
  202. package/core/built/admin/assets/posts/virtual-list-window-DP63Onpm.js +0 -853
  203. package/core/built/admin/assets/posts/web-axp2l3kK.js +0 -8077
  204. package/core/built/admin/assets/preferences-ChOzBKcF.js +0 -5
  205. package/core/built/admin/assets/profile-DlcrYKay.js +0 -1
  206. package/core/built/admin/assets/select-BbtNHCBq.js +0 -1
  207. package/core/built/admin/assets/social-urls-DVzIHh2W.js +0 -16
  208. package/core/built/admin/assets/source-icon-Uuhttjun.js +0 -1
  209. package/core/built/admin/assets/source-utils-BchD0sF0.js +0 -1
  210. package/core/built/admin/assets/stats-CrlPzgdd.js +0 -1
  211. package/core/built/admin/assets/stats-view-UNMhTMCZ.js +0 -1
  212. package/core/built/admin/assets/step-1-C2HY6pyi.js +0 -1
  213. package/core/built/admin/assets/tags-DjCsJo0X.js +0 -1
  214. package/core/built/admin/assets/typeof-Ca-duI-z.js +0 -1
  215. package/core/built/admin/assets/url-helpers-DxA844rA.js +0 -1
  216. package/core/built/admin/assets/use-growth-stats-DNIGdI8h.js +0 -1
  217. package/core/built/admin/assets/use-reply-chain-data-DtEC2Azp.js +0 -1
  218. package/core/built/admin/assets/virtual-list-window-BTXGwpf5.js +0 -1
  219. package/core/built/admin/assets/web-Cj8VEw3s.js +0 -1
  220. /package/core/built/admin/assets/{chunk.912.9d6df5a6da679d905bbf.js.LICENSE.txt → chunk.251.dd82df30188bb633b4ae.js.LICENSE.txt} +0 -0
@@ -1,3 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{t as n}from"./jsx-runtime-CtMZ-PAS.js";import{t as r}from"./clsx-CjueKrWZ.js";import{i,r as a,t as o}from"./tabs-Bw8aEqsd.js";import{c as s,d as c,i as l,o as u,s as d,u as f}from"./pagemenu-C4paivNj.js";import{t as p}from"./currency-CQsJu8iC.js";import{n as m}from"./source-utils-BchD0sF0.js";import{g as h}from"./chunk-KS7C4IRE-DG9HTHQ3.js";import{a as g}from"./router-provider-DcttGCQn.js";import{Cn as _,Hn as v,Sn as y,Xn as b,bn as x,ir as S,j as C,qn as w,qt as T,rr as E,t as ee}from"./button-DiwO9Rof.js";import{E as te}from"./_baseAssignValue-C_vooEQc.js";import{$ as D,C as ne,E as re,I as ie,J as O,K as ae,P as k,S as oe,U as A,V as se,W as ce,Y as le,Z as ue,_ as de,a as fe,at as pe,b as me,et as he,g as ge,i as _e,n as ve,nt as ye,ot as be,q as xe,r as Se,rt as Ce,tt as j,w as we,x as Te,y as Ee}from"./chart-DmRrxCRv.js";import{n as De,t as Oe}from"./PolarAngleAxis-D4SNKRGT.js";import{a as ke,i as Ae,o as je,t as Me}from"./gh-chart-DdBGmBS8.js";import{n as Ne,t as M}from"./sort-button-BYwI0xdN.js";import{i as Pe,n as Fe,o as Ie,s as Le,t as Re}from"./select-BbtNHCBq.js";import{t as N}from"./empty-indicator-Cl63eDpB.js";import{a as P,c as F,i as ze,n as I,r as L,s as Be,t as Ve}from"./table-rH2MyJm6.js";import{An as He,Cn as Ue,Dr as We,Fi as Ge,Mn as Ke,On as qe,Pr as Je,Sn as Ye,Tn as Xe,bn as Ze,c as R,d as Qe,dr as z,jr as $e,kr as et,lr as B,or as V,r as tt,sr as H,wn as nt,xn as rt}from"./index-BMhs4O3N.js";import{a as it}from"./tiers-74aPYtWv.js";import{a as at,i as ot,l as st,n as ct,o as U,r as lt,s as ut,t as dt}from"./stats-view-UNMhTMCZ.js";import{d as ft,l as pt,n as mt}from"./stats-CrlPzgdd.js";import{t as ht}from"./use-growth-stats-DNIGdI8h.js";import{n as gt,r as W,t as _t}from"./kpi-tabs-Dc4Nt4a5.js";import{a as vt,i as yt,r as bt,t as G}from"./content-helpers-BEgGpvyE.js";import{i as xt,t as St}from"./url-helpers-DxA844rA.js";import{n as Ct}from"./referrers-B0RVWBfE.js";var K=e(t()),wt=e(be()),Tt=e(ie()),q=e(pe()),Et=e(te()),Dt;function J(e){"@babel/helpers - typeof";return J=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},J(e)}function Y(){return Y=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Y.apply(this,arguments)}function Ot(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function X(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?Ot(Object(n),!0).forEach(function(t){Z(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ot(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function kt(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function At(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,zt(r.key),r)}}function jt(e,t,n){return t&&At(e.prototype,t),n&&At(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function Mt(e,t,n){return t=It(t),Nt(e,Ft()?Reflect.construct(t,n||[],It(e).constructor):t.apply(e,n))}function Nt(e,t){if(t&&(J(t)===`object`||typeof t==`function`))return t;if(t!==void 0)throw TypeError(`Derived constructors may only return object or undefined`);return Pt(e)}function Pt(e){if(e===void 0)throw ReferenceError(`this hasn't been initialised - super() hasn't been called`);return e}function Ft(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(Ft=function(){return!!e})()}function It(e){return It=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},It(e)}function Lt(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Super expression must either be null or a function`);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&Rt(e,t)}function Rt(e,t){return Rt=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},Rt(e,t)}function Z(e,t,n){return t=zt(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function zt(e){var t=Bt(e,`string`);return J(t)==`symbol`?t:t+``}function Bt(e,t){if(J(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(J(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}var Q=function(e){function t(e){var n;return kt(this,t),n=Mt(this,t,[e]),Z(n,`pieRef`,null),Z(n,`sectorRefs`,[]),Z(n,`id`,Ce(`recharts-pie-`)),Z(n,`handleAnimationEnd`,function(){var e=n.props.onAnimationEnd;n.setState({isAnimationFinished:!0}),(0,Et.default)(e)&&e()}),Z(n,`handleAnimationStart`,function(){var e=n.props.onAnimationStart;n.setState({isAnimationFinished:!1}),(0,Et.default)(e)&&e()}),n.state={isAnimationFinished:!e.isAnimationActive,prevIsAnimationActive:e.isAnimationActive,prevAnimationId:e.animationId,sectorToFocus:0},n}return Lt(t,e),jt(t,[{key:`isActiveIndex`,value:function(e){var t=this.props.activeIndex;return Array.isArray(t)?t.indexOf(e)!==-1:e===t}},{key:`hasActiveIndex`,value:function(){var e=this.props.activeIndex;return Array.isArray(e)?e.length!==0:e||e===0}},{key:`renderLabels`,value:function(e){if(this.props.isAnimationActive&&!this.state.isAnimationFinished)return null;var n=this.props,r=n.label,i=n.labelLine,a=n.dataKey,o=n.valueKey,s=O(this.props,!1),c=O(r,!1),l=O(i,!1),u=r&&r.offsetRadius||20,d=e.map(function(e,n){var d=(e.startAngle+e.endAngle)/2,f=re(e.cx,e.cy,e.outerRadius+u,d),p=X(X(X(X({},s),e),{},{stroke:`none`},c),{},{index:n,textAnchor:t.getTextAnchor(f.x,e.cx)},f),m=X(X(X(X({},s),e),{},{fill:`none`,stroke:e.fill},l),{},{index:n,points:[re(e.cx,e.cy,e.outerRadius,d),f]}),h=a;return(0,q.default)(a)&&(0,q.default)(o)?h=`value`:(0,q.default)(a)&&(h=o),K.createElement(xe,{key:`label-${e.startAngle}-${e.endAngle}-${e.midAngle}-${n}`},i&&t.renderLabelLineItem(i,m,`line`),t.renderLabelItem(r,p,k(e,h)))});return K.createElement(xe,{className:`recharts-pie-labels`},d)}},{key:`renderSectorsStatically`,value:function(e){var t=this,n=this.props,r=n.activeShape,i=n.blendStroke,a=n.inactiveShape;return e.map(function(n,o){if(n?.startAngle===0&&n?.endAngle===0&&e.length!==1)return null;var s=t.isActiveIndex(o),c=a&&t.hasActiveIndex()?a:null,l=s?r:c,u=X(X({},n),{},{stroke:i?n.fill:n.stroke,tabIndex:-1});return K.createElement(xe,Y({ref:function(e){e&&!t.sectorRefs.includes(e)&&t.sectorRefs.push(e)},tabIndex:-1,className:`recharts-pie-sector`},ue(t.props,n,o),{key:`sector-${n?.startAngle}-${n?.endAngle}-${n.midAngle}-${o}`}),K.createElement(de,Y({option:l,isActive:s,shapeType:`sector`},u)))})}},{key:`renderSectorsWithAnimation`,value:function(){var e=this,t=this.props,n=t.sectors,r=t.isAnimationActive,i=t.animationBegin,a=t.animationDuration,o=t.animationEasing,s=t.animationId,c=this.state,l=c.prevSectors,u=c.prevIsAnimationActive;return K.createElement(Ee,{begin:i,duration:a,isActive:r,easing:o,from:{t:0},to:{t:1},key:`pie-${s}-${u}`,onAnimationStart:this.handleAnimationStart,onAnimationEnd:this.handleAnimationEnd},function(t){var r=t.t,i=[],a=(n&&n[0]).startAngle;return n.forEach(function(e,t){var n=l&&l[t],o=t>0?(0,wt.default)(e,`paddingAngle`,0):0;if(n){var s=he(n.endAngle-n.startAngle,e.endAngle-e.startAngle),c=X(X({},e),{},{startAngle:a+o,endAngle:a+s(r)+o});i.push(c),a=c.endAngle}else{var u=e.endAngle,d=e.startAngle,f=he(0,u-d)(r),p=X(X({},e),{},{startAngle:a+o,endAngle:a+f+o});i.push(p),a=p.endAngle}}),K.createElement(xe,null,e.renderSectorsStatically(i))})}},{key:`attachKeyboardHandlers`,value:function(e){var t=this;e.onkeydown=function(e){if(!e.altKey)switch(e.key){case`ArrowLeft`:var n=++t.state.sectorToFocus%t.sectorRefs.length;t.sectorRefs[n].focus(),t.setState({sectorToFocus:n});break;case`ArrowRight`:var r=--t.state.sectorToFocus<0?t.sectorRefs.length-1:t.state.sectorToFocus%t.sectorRefs.length;t.sectorRefs[r].focus(),t.setState({sectorToFocus:r});break;case`Escape`:t.sectorRefs[t.state.sectorToFocus].blur(),t.setState({sectorToFocus:0});break;default:}}}},{key:`renderSectors`,value:function(){var e=this.props,t=e.sectors,n=e.isAnimationActive,r=this.state.prevSectors;return n&&t&&t.length&&(!r||!(0,Tt.default)(r,t))?this.renderSectorsWithAnimation():this.renderSectorsStatically(t)}},{key:`componentDidMount`,value:function(){this.pieRef&&this.attachKeyboardHandlers(this.pieRef)}},{key:`render`,value:function(){var e=this,t=this.props,n=t.hide,i=t.sectors,a=t.className,o=t.label,s=t.cx,c=t.cy,l=t.innerRadius,u=t.outerRadius,d=t.isAnimationActive,f=this.state.isAnimationFinished;if(n||!i||!i.length||!j(s)||!j(c)||!j(l)||!j(u))return null;var p=r(`recharts-pie`,a);return K.createElement(xe,{tabIndex:this.props.rootTabIndex,className:p,ref:function(t){e.pieRef=t}},this.renderSectors(),o&&this.renderLabels(i),oe.renderCallByParent(this.props,null,!1),(!d||f)&&Te.renderCallByParent(this.props,i,!1))}}],[{key:`getDerivedStateFromProps`,value:function(e,t){return t.prevIsAnimationActive===e.isAnimationActive?e.isAnimationActive&&e.animationId!==t.prevAnimationId?{prevAnimationId:e.animationId,curSectors:e.sectors,prevSectors:t.curSectors,isAnimationFinished:!0}:e.sectors===t.curSectors?null:{curSectors:e.sectors,isAnimationFinished:!0}:{prevIsAnimationActive:e.isAnimationActive,prevAnimationId:e.animationId,curSectors:e.sectors,prevSectors:[],isAnimationFinished:!0}}},{key:`getTextAnchor`,value:function(e,t){return e>t?`start`:e<t?`end`:`middle`}},{key:`renderLabelLineItem`,value:function(e,t,n){if(K.isValidElement(e))return K.cloneElement(e,t);if((0,Et.default)(e))return e(t);var i=r(`recharts-pie-label-line`,typeof e==`boolean`?``:e.className);return K.createElement(me,Y({},t,{key:n,type:`linear`,className:i}))}},{key:`renderLabelItem`,value:function(e,t,n){if(K.isValidElement(e))return K.cloneElement(e,t);var i=n;if((0,Et.default)(e)&&(i=e(t),K.isValidElement(i)))return i;var a=r(`recharts-pie-label-text`,typeof e!=`boolean`&&!(0,Et.default)(e)?e.className:``);return K.createElement(se,Y({},t,{alignmentBaseline:`middle`,className:a}),i)}}])}(K.PureComponent);Dt=Q,Z(Q,`displayName`,`Pie`),Z(Q,`defaultProps`,{stroke:`#fff`,fill:`#808080`,legendType:`rect`,cx:`50%`,cy:`50%`,startAngle:0,endAngle:360,innerRadius:0,outerRadius:`80%`,paddingAngle:0,labelLine:!0,hide:!1,minAngle:0,isAnimationActive:!ce.isSsr,animationBegin:400,animationDuration:1500,animationEasing:`ease`,nameKey:`name`,blendStroke:!1,rootTabIndex:0}),Z(Q,`parseDeltaAngle`,function(e,t){return ye(t-e)*Math.min(Math.abs(t-e),360)}),Z(Q,`getRealPieData`,function(e){var t=e.data,n=e.children,r=O(e,!1),i=le(n,A);return t&&t.length?t.map(function(e,t){return X(X(X({payload:e},r),e),i&&i[t]&&i[t].props)}):i&&i.length?i.map(function(e){return X(X({},r),e.props)}):[]}),Z(Q,`parseCoordinateOfPie`,function(e,t){var n=t.top,r=t.left,i=t.width,a=t.height,o=we(i,a);return{cx:r+D(e.cx,i,i/2),cy:n+D(e.cy,a,a/2),innerRadius:D(e.innerRadius,o,0),outerRadius:D(e.outerRadius,o,o*.8),maxRadius:e.maxRadius||Math.sqrt(i*i+a*a)/2}}),Z(Q,`getComposedData`,function(e){var t=e.item,n=e.offset,r=t.type.defaultProps===void 0?t.props:X(X({},t.type.defaultProps),t.props),i=Dt.getRealPieData(r);if(!i||!i.length)return null;var a=r.cornerRadius,o=r.startAngle,s=r.endAngle,c=r.paddingAngle,l=r.dataKey,u=r.nameKey,d=r.valueKey,f=r.tooltipType,p=Math.abs(r.minAngle),m=Dt.parseCoordinateOfPie(r,n),h=Dt.parseDeltaAngle(o,s),g=Math.abs(h),_=l;(0,q.default)(l)&&(0,q.default)(d)?(ae(!1,`Use "dataKey" to specify the value of pie,
2
- the props "valueKey" will be deprecated in 1.1.0`),_=`value`):(0,q.default)(l)&&(ae(!1,`Use "dataKey" to specify the value of pie,
3
- the props "valueKey" will be deprecated in 1.1.0`),_=d);var v=i.filter(function(e){return k(e,_,0)!==0}).length,y=(g>=360?v:v-1)*c,b=g-v*p-y,x=i.reduce(function(e,t){var n=k(t,_,0);return e+(j(n)?n:0)},0),S;if(x>0){var C;S=i.map(function(e,t){var n=k(e,_,0),r=k(e,u,t),i=(j(n)?n:0)/x,s=t?C.endAngle+ye(h)*c*(n===0?0:1):o,l=s+ye(h)*((n===0?0:p)+i*b),d=(s+l)/2,g=(m.innerRadius+m.outerRadius)/2;return C=X(X(X({percent:i,cornerRadius:a,name:r,tooltipPayload:[{name:r,value:n,payload:e,dataKey:_,type:f}],midAngle:d,middleRadius:g,tooltipPosition:re(m.cx,m.cy,g,d)},e),m),{},{value:k(e,_),startAngle:s,endAngle:l,payload:e,paddingAngle:ye(h)*c}),C})}return X(X({},m),{},{sectors:S,data:i})});var Vt=fe({chartName:`PieChart`,GraphicalChild:Q,validateTooltipEventTypes:[`item`],defaultTooltipEventType:`item`,legendContent:`children`,axisComponents:[{axisType:`angleAxis`,AxisComp:Oe},{axisType:`radiusAxis`,AxisComp:De}],formatAxisMap:ne,defaultProps:{layout:`centric`,startAngle:0,endAngle:360,cx:`50%`,cy:`50%`,innerRadius:0,outerRadius:`80%`}}),$=n(),Ht=({className:e})=>{let t=g();return(0,$.jsx)(N,{actions:(0,$.jsx)(ee,{variant:`outline`,onClick:()=>t(`/settings/analytics`,{crossApp:!0}),children:`Open settings`}),className:e,description:`Enable member source tracking in settings to see which content drives member growth.`,title:`Member sources have been disabled`,children:(0,$.jsx)(v,{})})},Ut=e=>e===`total-members`||e===`free-members`||e===`paid-members`||e===`mrr`,Wt=({active:e,payload:t,range:n,color:r,showBreakdown:i})=>{if(!e||!t?.length)return null;let a=t[0].payload,{date:o,formattedValue:s,label:c,comped:l,gift:u}=a,d=a.value-(l||0)-(u||0);return(0,$.jsxs)(`div`,{className:`min-w-[200px] rounded-lg border bg-background px-3 py-2 shadow-lg`,children:[o&&(0,$.jsx)(`div`,{className:`mb-1 text-sm text-foreground`,children:H(o,n||0)}),(0,$.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[i&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,$.jsxs)(`div`,{className:`flex grow items-center justify-between gap-5`,children:[(0,$.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:`Paid subscriptions`}),(0,$.jsx)(`div`,{className:`font-mono text-xs`,children:b(d)})]})}),(0,$.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,$.jsxs)(`div`,{className:`flex grow items-center justify-between gap-5`,children:[(0,$.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:`Gift subscriptions`}),(0,$.jsx)(`div`,{className:`font-mono text-xs`,children:u!==void 0&&u>0?b(u):`0`})]})}),(0,$.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,$.jsxs)(`div`,{className:`flex grow items-center justify-between gap-5`,children:[(0,$.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:`Complimentary`}),(0,$.jsx)(`div`,{className:`font-mono text-xs`,children:l!==void 0&&l>0?b(l):`0`})]})}),(0,$.jsx)(Ke,{})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`span`,{className:`inline-block size-2 rounded-full opacity-50`,style:{backgroundColor:r||`var(--chart-purple)`}}),(0,$.jsxs)(`div`,{className:`flex grow items-center justify-between gap-5`,children:[c&&(0,$.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:c}),(0,$.jsx)(`div`,{className:`font-mono font-medium`,children:s})]})]})]})]})},Gt=({chartData:e,totals:t,initialTab:n,currencySymbol:r,isLoading:i,onTabChange:s})=>{let c=Ut(n)?n:`total-members`,[l,u]=(0,K.useState)(c),{range:d}=Qe(),{appSettings:f}=Ge(),p=g(),[m]=h();(0,K.useEffect)(()=>{u(c)},[c]);let _=e=>{u(e);let t=new URLSearchParams(m);t.set(`tab`,e),p(`?${t.toString()}`,{replace:!0}),s&&s(e)},{totalMembers:v,freeMembers:y,paidMembers:x,mrr:S,percentChanges:C,directions:w}=t,T=(0,K.useMemo)(()=>{if(!e||e.length===0)return[];let t=[],n=`value`;switch(l){case`free-members`:n=`free`;break;case`paid-members`:n=`paid`;break;case`mrr`:n=`mrr`;break;default:n=`value`}t=ut(e,d,n,`exact`);let i=[];switch(l){case`free-members`:i=t.map(e=>({...e,value:e.free,formattedValue:b(e.free),label:`Free members`}));break;case`paid-members`:i=t.map(e=>({...e,value:e.paid,formattedValue:b(e.paid),label:`Paid members`,comped:e.comped,gift:e.gift,paid_subscribed:e.paid_subscribed}));break;case`mrr`:i=t.map(e=>({...e,value:V(e.mrr),formattedValue:`${r}${b(V(e.mrr))}`,label:`MRR`}));break;default:i=t.map(e=>{let t=e.free+e.paid;return{...e,value:t,formattedValue:b(t),label:`Total members`}})}return i},[l,e,d,r]),E={"total-members":{color:`var(--chart-darkblue)`},"free-members":{color:`var(--chart-blue)`},"paid-members":{color:`var(--chart-purple)`},mrr:{color:`var(--chart-teal)`}};return i?(0,$.jsx)(`div`,{className:`-mb-6 flex h-[calc(16vw+132px)] w-full items-start justify-center`,children:(0,$.jsx)(qe,{})}):(0,$.jsxs)(o,{defaultValue:c,variant:`kpis`,children:[(0,$.jsxs)(a,{className:`-mx-6 ${f?.paidMembersEnabled?`hidden grid-cols-4 lg:visible! lg:grid!`:`grid grid-cols-4`}`,children:[(0,$.jsx)(gt,{className:f?.paidMembersEnabled?``:`cursor-auto after:hidden`,value:`total-members`,onClick:()=>{f?.paidMembersEnabled&&_(`total-members`)},children:(0,$.jsx)(W,{color:`var(--chart-darkblue)`,diffDirection:d===R.allTime.value?`hidden`:w.total,diffValue:C.total,label:`Total members`,value:b(v)})}),f?.paidMembersEnabled&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(gt,{value:`free-members`,onClick:()=>{_(`free-members`)},children:(0,$.jsx)(W,{color:`var(--chart-blue)`,diffDirection:d===R.allTime.value?`hidden`:w.free,diffValue:C.free,label:`Free members`,value:b(y)})}),(0,$.jsx)(gt,{value:`paid-members`,onClick:()=>{_(`paid-members`)},children:(0,$.jsx)(W,{color:`var(--chart-purple)`,diffDirection:d===R.allTime.value?`hidden`:w.paid,diffValue:C.paid,label:`Paid members`,value:b(x)})}),(0,$.jsx)(gt,{value:`mrr`,onClick:()=>{_(`mrr`)},children:(0,$.jsx)(W,{color:`var(--chart-teal)`,diffDirection:d===R.allTime.value?`hidden`:w.mrr,diffValue:C.mrr,label:`MRR`,value:`${r}${b(V(S))}`})})]})]}),f?.paidMembersEnabled&&(0,$.jsxs)(We,{children:[(0,$.jsx)(Je,{className:`lg:hidden`,asChild:!0,children:(0,$.jsxs)(_t,{children:[l===`total-members`&&(0,$.jsx)(W,{color:`var(--chart-darkblue)`,diffDirection:d===R.allTime.value?`hidden`:w.total,diffValue:C.total,label:`Total members`,value:b(v)}),l===`free-members`&&(0,$.jsx)(W,{color:`var(--chart-blue)`,diffDirection:d===R.allTime.value?`hidden`:w.free,diffValue:C.free,label:`Free members`,value:b(y)}),l===`paid-members`&&(0,$.jsx)(W,{color:`var(--chart-purple)`,diffDirection:d===R.allTime.value?`hidden`:w.paid,diffValue:C.paid,label:`Paid members`,value:b(x)}),l===`mrr`&&(0,$.jsx)(W,{color:`var(--chart-teal)`,diffDirection:d===R.allTime.value?`hidden`:w.mrr,diffValue:C.mrr,label:`MRR`,value:`${r}${b(V(S))}`})]})}),(0,$.jsxs)(et,{align:`end`,className:`w-56`,children:[(0,$.jsx)($e,{onClick:()=>_(`total-members`),children:`Total members`}),(0,$.jsx)($e,{onClick:()=>_(`free-members`),children:`Free members`}),(0,$.jsx)($e,{onClick:()=>_(`paid-members`),children:`Paid members`}),(0,$.jsx)($e,{onClick:()=>_(`mrr`),children:`MRR`})]})]}),(0,$.jsx)(`div`,{className:`my-4 [&_.recharts-cartesian-axis-tick-value]:fill-gray-500`,children:(0,$.jsx)(Me,{className:`-mb-3 h-[16vw] max-h-[320px] w-full min-h-[180px]`,color:E[l].color,data:T,dataFormatter:l===`mrr`?e=>`${r}${b(e)}`:b,id:l,range:d,tooltipContent:l===`paid-members`?(0,$.jsx)(Wt,{color:E[`paid-members`].color,range:d,showBreakdown:!0}):void 0})})]})},Kt=(e,t=`signups desc`,n=50)=>{let{startDate:r,endDate:i,timezone:a}=z(e),o={date_from:B(r),date_to:B(i),member_status:xt(tt),order:t,limit:n.toString()};return a&&(o.timezone=a),Ct({searchParams:o})},qt=({data:e,currencySymbol:t,limit:n,defaultSourceIconUrl:r})=>{let i=n?e.slice(0,n):e,{appSettings:a}=Ge();return(0,$.jsx)(I,{children:i.map(e=>(0,$.jsxs)(F,{className:`last:border-none`,children:[(0,$.jsx)(L,{className:`font-medium`,children:(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(vt,{defaultSourceIconUrl:r,displayName:e.displayName,iconSrc:e.iconSrc}),e.linkUrl?(0,$.jsx)(`a`,{className:`hover:underline`,href:e.linkUrl,rel:`noreferrer`,target:`_blank`,children:e.displayName}):(0,$.jsx)(`span`,{children:e.displayName})]})}),(0,$.jsxs)(L,{className:`text-right font-mono text-sm`,children:[`+`,b(e.free_members)]}),a?.paidMembersEnabled&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(L,{className:`text-right font-mono text-sm`,children:[`+`,b(e.paid_members)]}),(0,$.jsxs)(L,{className:`text-right font-mono text-sm`,children:[`+`,t,b(V(e.mrr))]})]})]},e.source))})},Jt=({range:e,limit:t=20,showViewAll:n=!1,sortBy:r,setSortBy:i})=>{let{site:a}=ot(),{data:o}=mt(),{appSettings:s}=Ge(),[c,l]=(0,K.useState)(`free_members desc`),u=r||c,d=i||l,{data:f,isLoading:h}=Kt(e,u.replace(`free_members`,`signups`).replace(`paid_members`,`paid_conversions`),t),g=a.url,_=`https://www.google.com/s2/favicons?domain=ghost.org&sz=64`,v=K.useMemo(()=>{if(o?.stats&&o?.meta?.totals){let e=o.meta.totals,t=e[0];if(!t)return p(`usd`);for(let n of e)n.mrr>t.mrr&&(t=n);return p(t.currency)}return p(`usd`)},[o]),y=K.useMemo(()=>f?.stats?f.stats.map(e=>{let t=e.source||`Direct`,{domain:n}=m(t,g),r=n?`https://www.faviconextractor.com/favicon/${n}?larger=true`:_,i=n&&t!==`Direct`?`https://${n}`:void 0;return{source:t,free_members:e.signups,paid_members:e.paid_conversions,mrr:e.mrr,iconSrc:r,displayName:t,linkUrl:i}}):[],[f,g]),b=`Where did your growth come from ${U(e)}`;return s?.analytics.membersTrackSources?h?(0,$.jsx)(I,{children:(0,$.jsx)(F,{className:`last:border-none`,children:(0,$.jsx)(L,{className:`border-none py-2`,colSpan:1,children:(0,$.jsx)(He,{containerClassName:`space-y-2`,count:5,maxWidth:75,randomize:!0})})})}):(0,$.jsxs)($.Fragment,{children:[y.length>0?(0,$.jsx)(qt,{currencySymbol:v,data:y,defaultSourceIconUrl:_,limit:t}):(0,$.jsx)(I,{children:(0,$.jsx)(F,{className:`last:border-none`,children:(0,$.jsx)(L,{className:`border-none py-12 group-hover:bg-transparent!`,colSpan:s?.paidMembersEnabled?4:2,children:(0,$.jsx)(N,{description:`Try adjusting your date range to see more data.`,title:`No conversions ${U(e)}`,children:(0,$.jsx)(T,{strokeWidth:1.5})})})})}),n&&y.length>t&&(0,$.jsx)(ze,{className:`border-none bg-transparent hover:bg-transparent!`,children:(0,$.jsx)(F,{children:(0,$.jsx)(L,{className:`border-none bg-transparent px-0 pb-0 hover:bg-transparent!`,colSpan:4,children:(0,$.jsxs)(Ze,{children:[(0,$.jsx)(Xe,{asChild:!0,children:(0,$.jsxs)(ee,{variant:`outline`,children:[`View all `,(0,$.jsx)(C,{})]})}),(0,$.jsxs)(rt,{className:`overflow-y-auto pt-0 sm:max-w-[420px]`,children:[(0,$.jsxs)(Ue,{className:`sticky top-0 z-40 -mx-6 bg-surface-elevated/60 p-6 backdrop-blur`,children:[(0,$.jsx)(nt,{children:`Top sources`}),(0,$.jsx)(Ye,{children:b})]}),(0,$.jsx)(`div`,{className:`group/datalist`,children:(0,$.jsxs)(Ve,{children:[(0,$.jsx)(Be,{children:(0,$.jsxs)(F,{children:[(0,$.jsx)(P,{children:`Source`}),(0,$.jsx)(P,{className:`w-[110px] text-right`,children:(0,$.jsx)(M,{activeSortBy:u,setSortBy:d,sortBy:`free_members desc`,children:`Free members`})}),s?.paidMembersEnabled&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(P,{className:`w-[110px] text-right`,children:(0,$.jsx)(M,{activeSortBy:u,setSortBy:d,sortBy:`paid_members desc`,children:`Paid members`})}),(0,$.jsx)(P,{className:`w-[110px] text-right`,children:(0,$.jsx)(M,{activeSortBy:u,setSortBy:d,sortBy:`mrr desc`,children:`MRR impact`})})]})]})}),(0,$.jsx)(qt,{currencySymbol:v,data:y,defaultSourceIconUrl:_})]})})]})]})})})})]}):(0,$.jsx)(I,{children:(0,$.jsx)(F,{className:`last:border-none`,children:(0,$.jsx)(L,{className:`border-none py-12 group-hover:bg-transparent!`,colSpan:s?.paidMembersEnabled?4:2,children:(0,$.jsx)(Ht,{})})})})};S();var Yt=({active:e,payload:t})=>{if(e&&t&&t.length){let e=t[0];return(0,$.jsx)(`div`,{className:`rounded-lg border bg-background p-2 shadow-sm`,children:(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`div`,{className:`size-2 rounded-full opacity-50`,style:{backgroundColor:e.payload.color}}),(0,$.jsx)(`span`,{className:`font-medium`,children:e.name}),(0,$.jsx)(`span`,{className:`font-mono`,children:b(e.value)})]})})}return null},Xt=({isLoading:e,range:t})=>{let{data:n}=pt(),{data:{tiers:r=[]}={}}=it(),[i,a]=(0,K.useState)(`billing-period`),{startDate:o,endDate:l}=(0,K.useMemo)(()=>z(t),[t]),p=(0,K.useMemo)(()=>B(o),[o]),m=(0,K.useMemo)(()=>B(l),[l]),h=(0,K.useMemo)(()=>r.filter(e=>e.type===`paid`&&e.active).map(e=>({id:e.id,name:e.name})),[r]),g=(0,K.useMemo)(()=>{if(!n?.stats)return[];let e=E(p),t=E(m),r=n.stats.filter(n=>{let r=E(n.date);return r.isSameOrAfter(e)&&r.isSameOrBefore(t)}).reduce((e,t)=>{let n=t.cadence;return e[n]||(e[n]=0),e[n]+=t.signups,e},{});return Object.entries(r).map(([e,t],n)=>{let r=e,i=`url(#gradientPurple)`,a=`var(--chart-purple)`;return e===`month`?(r=`Monthly`,i=`url(#gradientPurple)`,a=`var(--chart-purple)`):e===`year`&&(r=`Annual`,i=`url(#gradientTeal)`,a=`var(--chart-teal)`),{id:`cadence-${n}`,name:r,count:t,fill:i,color:a}})},[n,p,m]),_=(0,K.useMemo)(()=>{if(!n?.stats||h.length===0)return[];let e=E(p),t=E(m),r=n.stats.filter(n=>{let r=E(n.date);return r.isSameOrAfter(e)&&r.isSameOrBefore(t)}).reduce((e,t)=>{let n=t.tier;return e[n]||(e[n]=0),e[n]+=t.signups,e},{}),i=[{gradient:`url(#gradientPurple)`,solid:`var(--chart-purple)`},{gradient:`url(#gradientTeal)`,solid:`var(--chart-teal)`},{gradient:`url(#gradientBlue)`,solid:`var(--chart-blue)`},{gradient:`url(#gradientRose)`,solid:`var(--chart-rose)`},{gradient:`url(#gradientOrange)`,solid:`var(--chart-orange)`},{gradient:`url(#gradientGreen)`,solid:`var(--chart-green)`},{gradient:`url(#gradientAmber)`,solid:`var(--chart-amber)`},{gradient:`url(#gradientYellow)`,solid:`var(--chart-yellow)`},{gradient:`url(#gradientDarkblue)`,solid:`var(--chart-darkblue)`},{gradient:`url(#gradientGray)`,solid:`var(--chart-darkgray)`}];return[...h.map(e=>{let t=r[e.id]||0;return{id:e.id,name:e.name,count:t}})].sort((e,t)=>t.count-e.count).map((e,t)=>{let n=t%i.length;return{...e,fill:i[n].gradient,color:i[n].solid}})},[n,h,p,m]),v=i===`billing-period`?g:_,y=(0,K.useMemo)(()=>v.reduce((e,t)=>e+t.count,0),[v]),S=(0,K.useMemo)(()=>{let e={count:{label:`Subscriptions`}};return v.forEach(t=>{e[t.id]={label:t.name,color:t.color}}),e},[v]),C=(0,K.useMemo)(()=>y===0?[]:v.map(e=>({label:e.name,count:e.count,percentage:e.count/y*100,color:e.color})),[v,y]);if(e||!n?.stats)return null;let w=v.length>0&&y>0;return(0,$.jsxs)(u,{children:[(0,$.jsx)(f,{children:(0,$.jsxs)(`div`,{className:`flex items-start justify-between gap-1.5`,children:[(0,$.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,$.jsx)(c,{children:`Paid subscription breakdown`}),(0,$.jsxs)(s,{children:[`New paid subscriptions `,U(t)]})]}),h.length>1&&(0,$.jsx)(`div`,{children:(0,$.jsxs)(Re,{value:i,onValueChange:e=>a(e),children:[(0,$.jsx)(Ie,{className:`w-full`,children:(0,$.jsx)(Le,{})}),(0,$.jsxs)(Fe,{align:`end`,children:[(0,$.jsx)(Pe,{value:`billing-period`,children:`Billing period`}),(0,$.jsx)(Pe,{value:`tiers`,children:`Tiers`})]})]})})]})}),(0,$.jsx)(d,{children:w?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(ve,{className:`mx-auto aspect-square h-[250px] min-h-[250px] w-full`,config:S,children:(0,$.jsxs)(Vt,{children:[(0,$.jsxs)(`defs`,{children:[(0,$.jsxs)(`linearGradient`,{id:`gradientPurple`,x1:`0`,x2:`0`,y1:`0`,y2:`1`,children:[(0,$.jsx)(`stop`,{offset:`0%`,stopColor:`var(--chart-purple)`,stopOpacity:.8}),(0,$.jsx)(`stop`,{offset:`100%`,stopColor:`var(--chart-purple)`,stopOpacity:.6})]}),(0,$.jsxs)(`linearGradient`,{id:`gradientTeal`,x1:`0`,x2:`0`,y1:`0`,y2:`1`,children:[(0,$.jsx)(`stop`,{offset:`0%`,stopColor:`var(--chart-teal)`,stopOpacity:.8}),(0,$.jsx)(`stop`,{offset:`100%`,stopColor:`var(--chart-teal)`,stopOpacity:.6})]}),(0,$.jsxs)(`linearGradient`,{id:`gradientRose`,x1:`0`,x2:`0`,y1:`0`,y2:`1`,children:[(0,$.jsx)(`stop`,{offset:`0%`,stopColor:`var(--chart-rose)`,stopOpacity:.8}),(0,$.jsx)(`stop`,{offset:`100%`,stopColor:`var(--chart-rose)`,stopOpacity:.6})]}),(0,$.jsxs)(`linearGradient`,{id:`gradientBlue`,x1:`0`,x2:`0`,y1:`0`,y2:`1`,children:[(0,$.jsx)(`stop`,{offset:`0%`,stopColor:`var(--chart-blue)`,stopOpacity:.8}),(0,$.jsx)(`stop`,{offset:`100%`,stopColor:`var(--chart-blue)`,stopOpacity:.6})]}),(0,$.jsxs)(`linearGradient`,{id:`gradientOrange`,x1:`0`,x2:`0`,y1:`0`,y2:`1`,children:[(0,$.jsx)(`stop`,{offset:`0%`,stopColor:`var(--chart-orange)`,stopOpacity:.8}),(0,$.jsx)(`stop`,{offset:`100%`,stopColor:`var(--chart-orange)`,stopOpacity:.6})]}),(0,$.jsxs)(`linearGradient`,{id:`gradientGreen`,x1:`0`,x2:`0`,y1:`0`,y2:`1`,children:[(0,$.jsx)(`stop`,{offset:`0%`,stopColor:`var(--chart-green)`,stopOpacity:.8}),(0,$.jsx)(`stop`,{offset:`100%`,stopColor:`var(--chart-green)`,stopOpacity:.6})]}),(0,$.jsxs)(`linearGradient`,{id:`gradientAmber`,x1:`0`,x2:`0`,y1:`0`,y2:`1`,children:[(0,$.jsx)(`stop`,{offset:`0%`,stopColor:`var(--chart-amber)`,stopOpacity:.8}),(0,$.jsx)(`stop`,{offset:`100%`,stopColor:`var(--chart-amber)`,stopOpacity:.6})]}),(0,$.jsxs)(`linearGradient`,{id:`gradientYellow`,x1:`0`,x2:`0`,y1:`0`,y2:`1`,children:[(0,$.jsx)(`stop`,{offset:`0%`,stopColor:`var(--chart-yellow)`,stopOpacity:.8}),(0,$.jsx)(`stop`,{offset:`100%`,stopColor:`var(--chart-yellow)`,stopOpacity:.6})]}),(0,$.jsxs)(`linearGradient`,{id:`gradientDarkblue`,x1:`0`,x2:`0`,y1:`0`,y2:`1`,children:[(0,$.jsx)(`stop`,{offset:`0%`,stopColor:`var(--chart-darkblue)`,stopOpacity:.8}),(0,$.jsx)(`stop`,{offset:`100%`,stopColor:`var(--chart-darkblue)`,stopOpacity:.6})]}),(0,$.jsxs)(`linearGradient`,{id:`gradientGray`,x1:`0`,x2:`0`,y1:`0`,y2:`1`,children:[(0,$.jsx)(`stop`,{offset:`0%`,stopColor:`var(--chart-darkgray)`,stopOpacity:.8}),(0,$.jsx)(`stop`,{offset:`100%`,stopColor:`var(--chart-darkgray)`,stopOpacity:.6})]})]}),(0,$.jsx)(Se,{content:(0,$.jsx)(Yt,{}),cursor:!1}),(0,$.jsx)(Q,{animationBegin:0,animationDuration:1e3,data:v,dataKey:`count`,innerRadius:70,nameKey:`name`,stroke:`var(--card)`,strokeWidth:5,children:(0,$.jsx)(oe,{content:({viewBox:e})=>{if(e&&`cx`in e&&`cy`in e)return(0,$.jsxs)(`text`,{dominantBaseline:`middle`,textAnchor:`middle`,x:e.cx,y:e.cy,children:[(0,$.jsx)(`tspan`,{className:`fill-foreground text-2xl font-semibold tracking-tight`,x:e.cx,y:e.cy,children:b(y)}),(0,$.jsx)(`tspan`,{className:`fill-muted-foreground`,x:e.cx,y:(e.cy||0)+20,children:`Total`})]})}})})]})}),C.length>0&&(0,$.jsx)(`div`,{className:`mt-4 flex flex-wrap items-center justify-center gap-x-6 gap-y-1 text-sm text-muted-foreground`,children:C.map(e=>(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`span`,{className:`size-2 rounded-full opacity-50`,style:{backgroundColor:e.color}}),(0,$.jsx)(`span`,{className:`max-w-[150px] truncate whitespace-nowrap`,title:e.label,children:e.label}),(0,$.jsxs)(`span`,{className:`font-medium text-foreground`,children:[Math.round(Number(e.percentage)||0),`%`]})]},e.label))})]}):(0,$.jsx)(`div`,{className:`py-12`,children:(0,$.jsx)(N,{description:`No new paid subscriptions ${U(t)}.`,title:`No new subscribers`,children:(0,$.jsx)(x,{strokeWidth:1.5})})})})]})};S();var Zt=(e,t,n)=>{if(t===1){let t=E().format(`YYYY-MM-DD`),n=e.find(e=>e.date===t);return[{date:t,signups:n?.signups||0,cancellations:n?.cancellations||0}]}let{startDate:r,endDate:i}=z(t),a=at(t,E(i).diff(E(r),`days`),`sum`,n),o=new Map(e.map(e=>[e.date,e])),s=[],c=new Set;if(a===`monthly`){let e=E(r).startOf(`month`),t=E(i).startOf(`month`);for(;e.isSameOrBefore(t);){let t=e.format(`YYYY-MM-DD`);if(!c.has(t)){c.add(t);let e=o.get(t);e?s.push(e):s.push({date:t,signups:0,cancellations:0})}e.add(1,`month`)}}else if(a===`weekly`){let e=E(r).startOf(`week`),t=E(i).startOf(`week`);for(;e.isSameOrBefore(t);){let t=e.format(`YYYY-MM-DD`);if(!c.has(t)){c.add(t);let e=o.get(t);e?s.push(e):s.push({date:t,signups:0,cancellations:0})}e.add(1,`week`)}}else{let e=E(r),t=E(i);for(;e.isSameOrBefore(t);){let t=e.format(`YYYY-MM-DD`),n=o.get(t);n?s.push(n):s.push({date:t,signups:0,cancellations:0}),e.add(1,`day`)}}return s},Qt=e=>{if(e===-1){let{startDate:t,endDate:n}=z(e);return E(n).diff(E(t),`days`)}return e},$t=e=>{let t=Qt(e);return t<30?[`daily`]:t>=91?[`weekly`,`monthly`]:[`daily`,`weekly`]},en=e=>{let t=Qt(e);return t<30?`daily`:t>=91?`monthly`:`weekly`},tn=({subscriptionData:e,memberData:t,range:n,isLoading:r})=>{let[i,a]=(0,K.useState)(()=>en(n));(0,K.useEffect)(()=>{a(en(n))},[n]);let o=(0,K.useMemo)(()=>$t(n),[n]),l=(0,K.useMemo)(()=>{switch(i){case`daily`:return`none`;case`weekly`:return`weekly`;case`monthly`:return`monthly`}},[i]),p=(0,K.useMemo)(()=>{if(e&&e.length>0){if(n===1){let t=E().format(`YYYY-MM-DD`),r=e.find(e=>e.date===t);return[{date:H(t,n),rawDate:t,new:r?.signups||0,cancelled:-(r?.cancellations||0)}]}let t=ut(e,n,`signups`,`sum`,l),r=ut(e,n,`cancellations`,`sum`,l),a=new Map(r.map(e=>[e.date,e])),o=t.map(e=>({date:e.date,signups:e.signups||0,cancellations:a.get(e.date)?.cancellations||0})),s=new Set(o.map(e=>e.date));return r.forEach(e=>{s.has(e.date)||o.push({date:e.date,signups:0,cancellations:e.cancellations||0})}),o.sort((e,t)=>new Date(e.date).getTime()-new Date(t.date).getTime()),Zt(o,n,l).map(e=>{let t=n;return i===`weekly`&&n<91?t=91:i===`monthly`&&n<365&&(t=365),{date:H(e.date,t),rawDate:e.date,new:e.signups||0,cancelled:-(e.cancellations||0)}})}else{if(!t||t.length===0)return[];if(n===1){let e=E().format(`YYYY-MM-DD`),r=t.find(t=>t.date===e);return[{date:H(e,n),rawDate:e,new:r?.paid_subscribed||0,cancelled:-(r?.paid_canceled||0)}]}let e=ut(t,n,`paid_subscribed`,`sum`,l),r=ut(t,n,`paid_canceled`,`sum`,l),a=new Map(r.map(e=>[e.date,e])),o=e.map(e=>({date:e.date,paid_subscribed:e.paid_subscribed||0,paid_canceled:a.get(e.date)?.paid_canceled||0})),s=new Set(o.map(e=>e.date));return r.forEach(e=>{s.has(e.date)||o.push({date:e.date,paid_subscribed:0,paid_canceled:e.paid_canceled||0})}),o.sort((e,t)=>new Date(e.date).getTime()-new Date(t.date).getTime()),o.map(e=>{let t=n;return i===`weekly`&&n<91?t=91:i===`monthly`&&n<365&&(t=365),{date:H(e.date,t),rawDate:e.date,new:e.paid_subscribed||0,cancelled:-(e.paid_canceled||0)}})}},[t,e,n,l,i]),m={new:{label:`New`,color:`var(--chart-teal)`},cancelled:{label:`Cancelled`,color:`var(--chart-rose)`}},h=(0,K.useMemo)(()=>({new:p.reduce((e,t)=>e+t.new,0),cancelled:p.reduce((e,t)=>e+Math.abs(t.cancelled),0)}),[p]);if(r)return null;let g=p.length>0&&(h.new>0||h.cancelled>0),_=e=>e.charAt(0).toUpperCase()+e.slice(1);return(0,$.jsxs)(u,{"data-testid":`paid-members-change-card`,children:[(0,$.jsx)(f,{children:(0,$.jsxs)(`div`,{className:`flex items-start justify-between gap-1.5`,children:[(0,$.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,$.jsx)(c,{children:`Paid subscriptions`}),(0,$.jsxs)(s,{children:[`New and cancelled paid subscriptions `,U(n)]})]}),o.length>1&&(0,$.jsx)(`div`,{children:(0,$.jsxs)(Re,{value:i,onValueChange:e=>a(e),children:[(0,$.jsx)(Ie,{className:`w-[110px]`,children:(0,$.jsx)(Le,{})}),(0,$.jsx)(Fe,{align:`end`,children:o.map(e=>(0,$.jsx)(Pe,{value:e,children:_(e)},e))})]})})]})}),(0,$.jsx)(d,{children:g?(0,$.jsxs)(`div`,{children:[(0,$.jsx)(ve,{className:`aspect-auto h-[200px] w-full md:h-[220px] xl:h-[260px]`,config:m,children:(0,$.jsxs)(Ne,{data:p,stackOffset:`sign`,children:[(0,$.jsx)(`defs`,{children:(0,$.jsxs)(`linearGradient`,{id:`tealGradient`,x1:`0`,x2:`0`,y1:`0`,y2:`1`,children:[(0,$.jsx)(`stop`,{offset:`0%`,stopColor:`var(--color-new)`,stopOpacity:.8}),(0,$.jsx)(`stop`,{offset:`100%`,stopColor:`var(--color-new)`,stopOpacity:.6})]})}),(0,$.jsx)(`defs`,{children:(0,$.jsxs)(`linearGradient`,{id:`roseGradient`,x1:`0`,x2:`0`,y1:`0`,y2:`1`,children:[(0,$.jsx)(`stop`,{offset:`0%`,stopColor:`var(--color-cancelled)`,stopOpacity:.6}),(0,$.jsx)(`stop`,{offset:`100%`,stopColor:`var(--color-cancelled)`,stopOpacity:.8})]})}),(0,$.jsx)(je,{stroke:`var(--border)`,vertical:!1}),(0,$.jsx)(ke,{axisLine:!1,dataKey:`date`,tickFormatter:()=>``,tickLine:!1,tickMargin:10}),(0,$.jsx)(Ae,{axisLine:!1,tickFormatter:e=>b(e<0?e*-1:e),tickLine:!1}),(0,$.jsx)(Se,{content:(0,$.jsx)(_e,{className:`min-w-[120px]! px-3 py-2`,formatter:(e,t,n,r)=>{let a=Number(e),o=`0`;o=a===0?`0`:b(a<0?a*-1:a);let s=n?.payload,c=Number(s?.new||0)+Number(s?.cancelled||0),l=c===0?`0`:c>0?`+${b(c)}`:b(c),u=s?.date,d=s?.rawDate;return d&&(u=i===`monthly`?H(d,366):i===`weekly`?H(d,91):H(d,30)),(0,$.jsxs)(`div`,{className:`flex w-full flex-col`,children:[r===0&&(0,$.jsx)(`div`,{className:`mb-1 text-sm font-medium text-foreground`,children:u}),(0,$.jsxs)(`div`,{className:`flex w-full items-center justify-between gap-4`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,$.jsx)(`div`,{className:`size-2 shrink-0 rounded-full bg-[var(--color-bg)] opacity-50`,style:{"--color-bg":`var(--color-${t})`}}),(0,$.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:m[t]?.label||t})]}),(0,$.jsx)(`div`,{className:`ml-auto flex items-baseline gap-0.5 font-mono font-medium text-foreground tabular-nums`,children:o})]}),r===1&&(0,$.jsxs)(`div`,{className:`mt-1 flex w-full items-center justify-between gap-4 border-t pt-1`,children:[(0,$.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:`Net change`}),(0,$.jsx)(`div`,{className:`ml-auto flex items-baseline gap-0.5 font-mono font-medium text-foreground tabular-nums`,children:l})]})]})},hideLabel:!0}),cursor:!1,isAnimationActive:!1,position:{y:10}}),(0,$.jsx)(ge,{activeBar:{fillOpacity:1},dataKey:`new`,fill:`url(#tealGradient)`,fillOpacity:.75,maxBarSize:32,minPointSize:3,radius:[4,4,0,0],stackId:`a`}),(0,$.jsx)(ge,{activeBar:{fillOpacity:1},dataKey:`cancelled`,fill:`url(#roseGradient)`,fillOpacity:.75,maxBarSize:32,radius:[4,4,0,0],stackId:`a`})]})}),(0,$.jsxs)(`div`,{className:`mt-3 flex items-center justify-center gap-6 text-sm text-muted-foreground`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`span`,{className:`size-2 rounded-full opacity-50`,style:{backgroundColor:m.new.color}}),(0,$.jsx)(`span`,{children:`New`}),(0,$.jsx)(`span`,{className:`font-medium text-foreground`,children:b(h.new)})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`span`,{className:`size-2 rounded-full opacity-50`,style:{backgroundColor:m.cancelled.color}}),(0,$.jsx)(`span`,{children:`Cancelled`}),(0,$.jsx)(`span`,{className:`font-medium text-foreground`,children:b(h.cancelled)})]})]})]}):(0,$.jsx)(`div`,{className:`py-12`,children:(0,$.jsx)(N,{description:`No paid subscription changes ${U(n)}.`,title:`No paid member changes`,children:(0,$.jsx)(y,{strokeWidth:1.5})})})})]})},nn=(e,t,n)=>{let r=e??30,i=t??`mrr desc`,{startDate:a,endDate:o}=(0,K.useMemo)(()=>z(r),[r]),s=(0,K.useMemo)(()=>{let e={date_from:B(a),date_to:B(o),order:i};return n===`posts`?e.post_type=`post`:n===`pages`&&(e.post_type=`page`),e},[a,o,i,n]);return ft({searchParams:Object.fromEntries(Object.entries(s).filter(([,e])=>e!==void 0))})},rn=()=>{let{range:e}=Qe(),{site:t,settings:n}=ot(),r=String(n.find(e=>e.key===`timezone`)?.value||`Etc/UTC`),p=g(),[m,v]=(0,K.useState)(`free_members desc`),[y,x]=(0,K.useState)(G.POSTS_AND_PAGES),[S]=h(),{appSettings:C}=Ge(),T=S.get(`tab`)||`total-members`,[E,te]=(0,K.useState)(T);(0,K.useEffect)(()=>{T!==E&&te(T)},[T]);let{isLoading:D,chartData:ne,totals:re,currencySymbol:ie,subscriptionData:O}=ht(e),{data:ae,isLoading:k}=nn(e,m,y),oe=(0,K.useMemo)(()=>{let e=(ae?.stats||[]).reduce((e,t)=>{let n=t.post_id||(t.title&&t.title.trim()!==``?t.title:t.attribution_url);if(!n)return e;if(!e.has(n))e.set(n,t);else{let r=e.get(n);r.free_members+=t.free_members,r.paid_members+=t.paid_members,r.mrr+=t.mrr,e.set(n,r)}return e},new Map),t=Array.from(e.values()),n=t.reduce((e,t)=>e+t.free_members,0),r=t.reduce((e,t)=>e+t.paid_members,0),i=t.reduce((e,t)=>e+t.mrr,0);return t.map(e=>{let t=0;return m.includes(`free_members`)&&n>0?t=e.free_members/n:m.includes(`paid_members`)&&r>0?t=e.paid_members/r:m.includes(`mrr`)&&i>0&&(t=e.mrr/i),{title:e.title||e.attribution_url,post_id:e.post_id,attribution_url:e.attribution_url,attribution_type:e.attribution_type,attribution_id:e.attribution_id,free_members:e.free_members,paid_members:e.paid_members,mrr:e.mrr,percentage:t,published_at:e.published_at,url_exists:e.url_exists??!0}})},[ae,m]),A=D,se=D||k;return(0,$.jsxs)(ct,{children:[(0,$.jsx)(lt,{children:(0,$.jsx)(l,{children:(0,$.jsx)(st,{})})}),(0,$.jsxs)(dt,{data:A?void 0:ne,isLoading:!1,loadingComponent:(0,$.jsx)($.Fragment,{}),children:[(0,$.jsx)(u,{"data-testid":`total-members-card`,children:(0,$.jsx)(d,{children:(0,$.jsx)(Gt,{chartData:ne,currencySymbol:ie,initialTab:T,isLoading:A,totals:re,onTabChange:te})})}),C?.paidMembersEnabled&&E===`paid-members`&&(0,$.jsxs)(`div`,{className:`grid grid-cols-1 gap-6 lg:grid-cols-2 xl:grid-cols-[2fr_minmax(460px,1fr)]`,children:[(0,$.jsx)(tn,{isLoading:A,memberData:ne,range:e,subscriptionData:O}),(0,$.jsx)(Xt,{isLoading:A,range:e})]}),(0,$.jsxs)(u,{className:`w-full overflow-x-auto`,"data-testid":`top-content-card`,children:[(0,$.jsxs)(f,{children:[(0,$.jsx)(c,{children:bt(y)}),(0,$.jsx)(s,{children:yt(y,e,U)})]}),(0,$.jsx)(d,{children:(0,$.jsxs)(Ve,{children:[(0,$.jsx)(Be,{children:(0,$.jsxs)(F,{className:`[&>th]:h-auto [&>th]:pt-0 [&>th]:pb-2`,children:[(0,$.jsx)(P,{className:`min-w-[320px] pl-0`,children:(0,$.jsx)(o,{defaultValue:y,variant:`button-sm`,onValueChange:e=>{x(e)},children:(0,$.jsxs)(a,{children:[(0,$.jsx)(i,{value:G.POSTS_AND_PAGES,children:`Posts & pages`}),(0,$.jsx)(i,{value:G.POSTS,children:`Posts`}),(0,$.jsx)(i,{value:G.PAGES,children:`Pages`}),(0,$.jsx)(i,{value:G.SOURCES,children:`Sources`})]})})}),(0,$.jsx)(P,{className:`w-[140px] text-right`,children:C?.paidMembersEnabled?(0,$.jsx)(M,{activeSortBy:m,setSortBy:v,sortBy:`free_members desc`,children:`Free members`}):(0,$.jsx)($.Fragment,{children:`Free members`})}),C?.paidMembersEnabled&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(P,{className:`w-[140px] text-right`,children:(0,$.jsx)(M,{activeSortBy:m,setSortBy:v,sortBy:`paid_members desc`,children:`Paid members`})}),(0,$.jsx)(P,{className:`w-[140px] text-right`,children:(0,$.jsx)(M,{activeSortBy:m,setSortBy:v,sortBy:`mrr desc`,children:`MRR impact`})})]})]})}),y===G.SOURCES?(0,$.jsx)(Jt,{limit:20,range:e,setSortBy:e=>v(e),showViewAll:!0,sortBy:m}):(0,$.jsx)(I,{children:se?(0,$.jsx)(F,{className:`last:border-none`,children:(0,$.jsx)(L,{className:`border-none py-2`,colSpan:1,children:(0,$.jsx)(He,{containerClassName:`space-y-2`,count:5,maxWidth:75,randomize:!0})})}):C?.analytics.membersTrackSources?oe.length>0?oe.map((e,n)=>(0,$.jsxs)(F,{className:`last:border-none`,children:[(0,$.jsx)(L,{children:(0,$.jsxs)(`div`,{className:`group/link inline-flex flex-col items-start gap-px`,children:[e.post_id&&e.attribution_type===`post`?(0,$.jsx)(ee,{className:`h-auto p-0 text-left leading-tight font-medium whitespace-normal hover:underline!`,title:`View post analytics`,variant:`link`,onClick:St(e.attribution_url,e.post_id,t.url||``,p,e.attribution_type),children:e.title}):(0,$.jsx)(`span`,{className:`font-medium`,children:e.title}),e.published_at&&w&&new Date(e.published_at).getTime()>0&&(0,$.jsxs)(`span`,{className:`text-muted-foreground`,children:[`Published on `,w(e.published_at,r)]})]})}),(0,$.jsxs)(L,{className:`text-right font-mono text-sm`,children:[e.free_members>0&&`+`,b(e.free_members)]}),C?.paidMembersEnabled&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(L,{className:`text-right font-mono text-sm`,children:[e.paid_members>0&&`+`,b(e.paid_members)]}),(0,$.jsxs)(L,{className:`text-right font-mono text-sm`,children:[e.mrr>0&&`+`,ie,b(V(e.mrr))]})]})]},`${y}-${e.post_id||`${e.title}-${n}`}`)):(0,$.jsx)(F,{className:`border-none`,children:(0,$.jsx)(L,{className:`py-12 group-hover:bg-transparent!`,colSpan:C?.paidMembersEnabled?4:2,children:(0,$.jsx)(N,{description:`Try adjusting your date range to see more data.`,title:`No conversions ${U(e)}`,children:(0,$.jsx)(_,{strokeWidth:1.5})})})}):(0,$.jsx)(F,{className:`last:border-none`,children:(0,$.jsx)(L,{className:`border-none py-12 group-hover:bg-transparent!`,colSpan:C?.paidMembersEnabled?4:2,children:(0,$.jsx)(Ht,{})})})})]})})]})]})]})};export{rn as default};
@@ -1 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{t as n}from"./jsx-runtime-CtMZ-PAS.js";import{r,t as i}from"./tabs-Bw8aEqsd.js";import{c as a,d as o,i as s,o as c,s as l,u}from"./pagemenu-C4paivNj.js";import{g as d}from"./chunk-KS7C4IRE-DG9HTHQ3.js";import{a as f,t as p}from"./router-provider-DcttGCQn.js";import{Ct as m,Xn as h,Zn as g,qn as _,t as v,wt as y}from"./button-DiwO9Rof.js";import{g as b,n as x,o as S,r as ee}from"./chart-DmRrxCRv.js";import{a as te,i as ne,o as re,t as ie}from"./gh-chart-DdBGmBS8.js";import{n as ae,t as C}from"./sort-button-BYwI0xdN.js";import{a as w,i as T,n as E,o as D,r as O,s as k,t as A}from"./select-BbtNHCBq.js";import{t as j}from"./empty-indicator-Cl63eDpB.js";import{a as M,c as N,n as P,r as F,s as I,t as L}from"./table-rH2MyJm6.js";import{Dr as oe,Fi as R,On as z,Pr as se,ar as ce,d as B,dr as V,jn as H,jr as U,kr as le,lr as W}from"./index-BMhs4O3N.js";import{r as ue}from"./newsletters-BEvO0JE3.js";import{i as de,l as fe,n as pe,o as G,r as me,s as he,t as ge}from"./stats-view-UNMhTMCZ.js";import{c as _e,i as ve,r as ye}from"./stats-CrlPzgdd.js";import{n as K,r as q,t as be}from"./kpi-tabs-Dc4Nt4a5.js";var J=e(t(),1),Y=n(),xe=({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,Y.jsxs)(`div`,{className:`max-w-[240px] min-w-[220px] rounded-lg border bg-background px-3 py-2 shadow-lg`,children:[(0,Y.jsxs)(`div`,{className:`mb-2 flex w-full flex-col border-b pb-2`,children:[(0,Y.jsx)(`span`,{className:`text-sm leading-tight font-semibold`,children:n.post_title}),(0,Y.jsxs)(`span`,{className:`text-sm text-muted-foreground`,children:[`Sent on `,_(r)]})]}),(0,Y.jsxs)(`div`,{className:`mb-1 flex w-full justify-between`,children:[(0,Y.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Sent`}),(0,Y.jsx)(`div`,{className:`ml-2 w-full text-right font-mono`,children:h(n.sent_to)})]}),(0,Y.jsxs)(`div`,{className:`mb-1 flex w-full justify-between`,children:[(0,Y.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Opens`}),(0,Y.jsxs)(`div`,{className:`ml-2 w-full text-right font-mono`,children:[(0,Y.jsxs)(`span`,{className:`text-muted-foreground`,children:[h(n.total_opens),` / `]}),g(n.open_rate)]})]}),(0,Y.jsxs)(`div`,{className:`mb-1 flex w-full justify-between`,children:[(0,Y.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Clicks`}),(0,Y.jsxs)(`div`,{className:`ml-2 w-full text-right font-mono`,children:[(0,Y.jsxs)(`span`,{className:`text-muted-foreground`,children:[h(n.total_clicks),` / `]}),g(n.click_rate)]})]})]})},Se=({subscribersData:e,avgsData:t,totals:n,isLoading:a,isAvgsLoading:o,initialTab:s=`total-subscribers`})=>{let[c,l]=(0,J.useState)(s),[u,p]=(0,J.useState)(!1),{range:m}=B(),_=f(),[v]=d(),{appSettings:C}=R(),{emailTrackClicks:w,emailTrackOpens:T}=C?.analytics||{},{totalSubscribers:E,avgOpenRate:D,avgClickRate:O}=n,k=(0,J.useMemo)(()=>{if(!e||e.length===0)return[];let t=[];return t=he(e,m,`value`,`exact`),t.map(e=>({...e,formattedValue:h(e.value),label:`Total Subscribers`}))},[e,m]),A=(0,J.useMemo)(()=>{if(!k||k.length<=1)return{direction:`same`,value:`0%`};let e=k[0]?.value??0,t=k[k.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}},[k]);(0,J.useEffect)(()=>{l(s)},[s]);let M=e=>{l(e);let t=new URLSearchParams(v);t.set(`tab`,e),_(`?${t.toString()}`,{replace:!0})},N={open_rate:{label:`Open rate`}},P=(0,J.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:F,barTicks:I}=(0,J.useMemo)(()=>{if(!t||t.length===0||c===`total-subscribers`)return{barDomain:[0,1],barTicks:[0,1]};let e=P[c]?.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=c===`avg-open-rate`?D:O,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,c,P,D,O]);if(a)return(0,Y.jsx)(`div`,{className:`-mb-6 flex h-[calc(16vw+132px)] w-full items-start justify-center`,children:(0,Y.jsx)(z,{})});let L=`grid-cols-3`;(!w||!T)&&(L=`grid-cols-2`),!w&&!T&&(L=`grid-cols-1`);let V=c===`avg-open-rate`&&D>F[0]&&D<F[1]||c===`avg-click-rate`&&O>F[0]&&O<F[1],H=c===`avg-open-rate`?D:O;return(0,Y.jsxs)(i,{defaultValue:s,variant:`kpis`,children:[(0,Y.jsxs)(r,{className:`-mx-6 hidden grid-cols-3 md:visible! md:grid! ${L}`,children:[(0,Y.jsx)(K,{className:`${!T&&!w&&`cursor-auto after:hidden`}`,value:`total-subscribers`,onClick:()=>{M(`total-subscribers`)},children:(0,Y.jsx)(q,{color:P[`total-subscribers`].color,"data-testid":`total-subscribers-value`,diffDirection:A.direction,diffValue:A.value,label:`Total subscribers`,value:h(E)})}),T&&(0,Y.jsx)(K,{value:`avg-open-rate`,onClick:()=>{M(`avg-open-rate`)},children:(0,Y.jsx)(q,{className:o?`opacity-50`:``,color:P[`avg-open-rate`].color,label:`Avg. open rate`,value:g(D)})}),w&&(0,Y.jsx)(K,{value:`avg-click-rate`,onClick:()=>{M(`avg-click-rate`)},children:(0,Y.jsx)(q,{className:o?`opacity-50`:``,color:P[`avg-click-rate`].color,label:`Avg. click rate`,value:g(O)})})]}),(0,Y.jsxs)(oe,{children:[(0,Y.jsx)(se,{className:`md:hidden`,asChild:!0,children:(0,Y.jsxs)(be,{children:[c===`total-subscribers`&&(0,Y.jsx)(q,{color:P[`total-subscribers`].color,label:`Total subscribers`,value:h(E)}),c===`avg-open-rate`&&T&&(0,Y.jsx)(q,{className:o?`opacity-50`:``,color:P[`avg-open-rate`].color,label:`Avg. open rate`,value:g(D)}),c===`avg-click-rate`&&w&&(0,Y.jsx)(q,{className:o?`opacity-50`:``,color:P[`avg-click-rate`].color,label:`Avg. click rate`,value:g(O)})]})}),(0,Y.jsxs)(le,{align:`end`,className:`w-56`,children:[(0,Y.jsx)(U,{onClick:()=>M(`total-subscribers`),children:`Total subscribers`}),T&&(0,Y.jsx)(U,{onClick:()=>M(`avg-open-rate`),children:`Avg. open rate`}),w&&(0,Y.jsx)(U,{onClick:()=>M(`avg-click-rate`),children:`Avg. click rate`})]})]}),(0,Y.jsxs)(`div`,{className:`my-4 [&_.recharts-cartesian-axis-tick-value]:fill-gray-500`,children:[c===`total-subscribers`&&(0,Y.jsx)(ie,{className:`-mb-3 h-[16vw] max-h-[320px] min-h-[180px] w-full`,color:P[`total-subscribers`].color,data:k,id:`mrr`,range:m}),(c===`avg-open-rate`&&T||c===`avg-click-rate`&&w)&&(0,Y.jsx)(Y.Fragment,{children:o?(0,Y.jsx)(`div`,{className:`h-[320px] w-full items-center justify-center`,children:(0,Y.jsx)(z,{})}):t&&t.length>0?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(x,{className:`aspect-auto h-[200px] w-full md:h-[220px] xl:h-[320px]`,config:N,children:(0,Y.jsxs)(ae,{className:u?`cursor-pointer!`:``,data:t,margin:{top:20},onClick:e=>{let t=(e.activePayload?.[0])?.payload?.post_id;t&&_(`/posts/analytics/${t}`,{crossApp:!0})},onMouseLeave:()=>p(!1),onMouseMove:e=>{let t=(e.activePayload?.[0])?.payload?.post_id;p(!!t)},children:[(0,Y.jsx)(`defs`,{children:(0,Y.jsxs)(`linearGradient`,{id:`barGradient`,x1:`0`,x2:`0`,y1:`0`,y2:`1`,children:[(0,Y.jsx)(`stop`,{offset:`0%`,stopColor:P[c].color,stopOpacity:.8}),(0,Y.jsx)(`stop`,{offset:`100%`,stopColor:P[c].color,stopOpacity:.6})]})}),(0,Y.jsx)(re,{horizontal:!0,stroke:`var(--border)`,vertical:!1}),(0,Y.jsx)(te,{axisLine:{stroke:`var(--border)`,strokeWidth:1},dataKey:`post_id`,interval:0,stroke:`var(--border)`,tickFormatter:()=>``,tickLine:!1,tickMargin:10}),(0,Y.jsx)(ne,{axisLine:!1,domain:F,tickFormatter:e=>g(e),tickLine:!1,ticks:I,width:ce(I,e=>g(e))}),(0,Y.jsx)(ee,{content:(0,Y.jsx)(xe,{}),cursor:!1,isAnimationActive:!1,position:{y:10}}),V&&(0,Y.jsx)(S,{label:{value:`${g(H)}`,position:`left`,offset:8,fill:`var(--muted-foreground)`},opacity:.5,stroke:`var(--muted-foreground)`,strokeDasharray:`4 4`,y:H}),(0,Y.jsx)(b,{activeBar:{fillOpacity:1},dataKey:P[c].datakey,fill:`url(#barGradient)`,fillOpacity:.6,isAnimationActive:!1,maxBarSize:32,minPointSize:3,radius:4})]})}),(0,Y.jsxs)(`div`,{className:`-mt-4 text-center text-sm text-muted-foreground`,children:[`Newsletters `,c===`avg-open-rate`?`opens`:`clicks`,` in this period`]})]}):(0,Y.jsx)(j,{className:`size-full py-20`,title:`No newsletters ${G(m)}`,children:(0,Y.jsx)(y,{strokeWidth:1.5})})})]})]})},Ce=({newsletters:e})=>{let{selectedNewsletterId:t,setSelectedNewsletterId:n}=B(),r=(0,J.useMemo)(()=>e?.filter(e=>e.status===`active`)||[],[e]);return(0,J.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,Y.jsxs)(A,{value:t||``,onValueChange:e=>{n(e)},children:[(0,Y.jsxs)(D,{className:`w-auto`,children:[(0,Y.jsx)(m,{className:`mr-2`,size:16,strokeWidth:1.5}),(0,Y.jsx)(k,{placeholder:`Select a newsletter`})]}),(0,Y.jsx)(E,{align:`end`,children:(0,Y.jsxs)(O,{children:[(0,Y.jsx)(w,{children:`Newsletters`}),r.map(e=>(0,Y.jsx)(T,{value:e.id,children:e.name},e.id))]})})]})},we=(e,t,n=!0)=>{let r=e??30,{startDate:i,endDate:a}=(0,J.useMemo)(()=>V(r),[r]),o=_e({searchParams:(0,J.useMemo)(()=>{let e={date_from:W(i),date_to:W(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}},Te=(e,t,n,r=!0)=>{let i=e??30,a=t??`date desc`,{startDate:o,endDate:s}=(0,J.useMemo)(()=>V(i),[i]),c=ye({searchParams:(0,J.useMemo)(()=>{let e={date_from:W(o),date_to:W(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}},Ee=(e,t=[],n=!0)=>{let r=ve({searchParams:(0,J.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}},X=(e,t,n,r=!0)=>{let i=Te(e,t,n,r),a=(0,J.useMemo)(()=>i.data?.stats?i.data.stats.map(e=>e.post_id):[],[i.data]),o=Ee(n,a,r&&a.length>0);return{data:(0,J.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()}}},Z=J.memo(({range:e,selectedNewsletterId:t,shouldFetchStats:n,sortBy:r})=>{let i=f(),{settings:a}=de(),o=String(a.find(e=>e.key===`timezone`)?.value||`Etc/UTC`),{data:s,isLoading:c,isClicksLoading:l}=X(e,r,t||void 0,!!n),{appSettings:u}=R(),{emailTrackClicks:d,emailTrackOpens:p}=u?.analytics||{},m=(0,J.useMemo)(()=>s?.stats||[],[s]),b=p&&d?5:p||d?4:3,x=(0,J.useMemo)(()=>(0,Y.jsx)(Y.Fragment,{children:(0,Y.jsx)(N,{className:`last:border-none [&>td]:py-2.5`,children:(0,Y.jsx)(F,{className:`font-medium`,colSpan:b,children:(0,Y.jsx)(H,{className:`mt-5`})})})}),[b]),S=(0,J.useMemo)(()=>m.length>0?(0,Y.jsx)(Y.Fragment,{children:m.map(e=>(0,Y.jsxs)(N,{className:`last:border-none [&>td]:py-2.5`,children:[(0,Y.jsx)(F,{className:`font-medium`,children:(0,Y.jsx)(`div`,{className:`group/link inline-flex items-center gap-2`,children:e.post_id?(0,Y.jsx)(v,{className:`h-auto p-0 text-left whitespace-normal hover:underline!`,title:`View post analytics`,variant:`link`,onClick:()=>{i(`/posts/analytics/${e.post_id}/`,{crossApp:!0})},children:e.post_title}):(0,Y.jsx)(Y.Fragment,{children:e.post_title})})}),(0,Y.jsx)(F,{className:`text-sm whitespace-nowrap`,children:_(e.send_date,o)}),(0,Y.jsx)(F,{className:`text-right font-mono text-sm`,children:h(e.sent_to)}),p&&(0,Y.jsxs)(F,{className:`text-right font-mono text-sm`,children:[(0,Y.jsx)(`span`,{className:`group-hover:hidden`,children:g(e.open_rate)}),(0,Y.jsx)(`span`,{className:`hidden group-hover:visible! group-hover:block!`,children:h(e.total_opens)})]}),d&&(0,Y.jsx)(F,{className:`text-right font-mono text-sm`,children:l?(0,Y.jsx)(`span`,{className:`inline-block h-4 w-8 animate-pulse rounded bg-gray-200`}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`span`,{className:`group-hover:hidden`,children:g(e.click_rate)}),(0,Y.jsx)(`span`,{className:`hidden group-hover:visible! group-hover:block!`,children:h(e.total_clicks)})]})})]},e.post_id))}):(0,Y.jsx)(N,{className:`border-none hover:bg-transparent`,children:(0,Y.jsx)(F,{className:`text-center group-hover:bg-transparent!`,colSpan:b,children:(0,Y.jsx)(j,{className:`size-full py-20`,title:`No newsletters ${G(e)}`,children:(0,Y.jsx)(y,{strokeWidth:1.5})})})}),[m,l,i,d,p,e]);return c||!s?x:S});Z.displayName=`NewsletterTableRows`;var Q=J.memo(({sortBy:e,setSortBy:t,range:n})=>{let r=(0,J.useMemo)(()=>(0,Y.jsxs)(u,{children:[(0,Y.jsx)(o,{children:`Top newsletters`}),(0,Y.jsxs)(a,{children:[` Your best performing newsletters `,G(n)]})]}),[n]),{appSettings:i}=R(),{emailTrackClicks:s,emailTrackOpens:c}=i?.analytics||{};return(0,Y.jsx)(I,{children:(0,Y.jsxs)(N,{children:[(0,Y.jsx)(M,{className:`min-w-[320px]`,variant:`cardhead`,children:r}),(0,Y.jsx)(M,{className:`w-[65px]`,children:(0,Y.jsx)(C,{activeSortBy:e,setSortBy:t,sortBy:`date desc`,children:`Date`})}),(0,Y.jsx)(M,{className:`w-[90px] text-right`,children:(0,Y.jsx)(C,{activeSortBy:e,setSortBy:t,sortBy:`sent_to desc`,children:`Sent`})}),c&&(0,Y.jsx)(M,{className:`w-[90px] text-right`,children:(0,Y.jsx)(C,{activeSortBy:e,setSortBy:t,sortBy:`open_rate desc`,children:`Opens`})}),s&&(0,Y.jsx)(M,{className:`w-[90px] text-right`,children:(0,Y.jsx)(C,{activeSortBy:e,setSortBy:t,sortBy:`click_rate desc`,children:`Clicks`})})]})})});Q.displayName=`NewsletterTableHeader`;var $=J.memo(({range:e,selectedNewsletterId:t,shouldFetchStats:n})=>{let[r,i]=(0,J.useState)(`open_rate desc`);return(0,Y.jsx)(c,{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,Y.jsx)(l,{children:(0,Y.jsxs)(L,{children:[(0,Y.jsx)(Q,{range:e,setSortBy:i,sortBy:r}),(0,Y.jsx)(P,{children:(0,Y.jsx)(Z,{range:e,selectedNewsletterId:t,shouldFetchStats:n,sortBy:r})})]})})})});$.displayName=`TopNewslettersTable`;var De=()=>{let{range:e,selectedNewsletterId:t}=B(),[n]=d(),{appSettings:r}=R(),i=n.get(`tab`)||`total-subscribers`,{data:a,isLoading:o}=ue({searchParams:{limit:`50`}}),u=!o&&a&&a.newsletters.length>0&&!!t,{data:f,isLoading:m}=we(e,t||void 0,u||!1),{data:h,isLoading:g,isClicksLoading:_}=X(e,`date asc`,t||void 0,u||!1),v=(0,J.useMemo)(()=>!a?.newsletters||!t?null:a.newsletters.find(e=>e.id===t)||null,[a,t]),y=(0,J.useMemo)(()=>{let e=v?.count?.active_members||f?.stats?.[0]?.total||0,t=0,n=0;if(h?.stats&&h.stats.length>0){let e=h.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}},[v,f,h]),b=(0,J.useMemo)(()=>{if(!f?.stats?.[0]?.values||f.stats[0].values.length===0){let{startDate:t,endDate:n}=V(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=f.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},[f,e]),x=(0,J.useMemo)(()=>h?.stats?h.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})):[],[h]),S=m||_||g;return r&&!r.newslettersEnabled?(0,Y.jsx)(p,{to:`/analytics`}):(0,Y.jsxs)(pe,{children:[(0,Y.jsx)(me,{children:(0,Y.jsxs)(s,{children:[(0,Y.jsx)(Ce,{newsletters:a?.newsletters}),(0,Y.jsx)(fe,{})]})}),(0,Y.jsx)(ge,{isLoading:!1,loadingComponent:(0,Y.jsx)(Y.Fragment,{}),children:(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(c,{"data-testid":`newsletters-card`,children:(0,Y.jsx)(l,{children:(0,Y.jsx)(Se,{avgsData:x,initialTab:i,isAvgsLoading:!1,isLoading:S,subscribersData:b,totals:y})})}),(0,Y.jsx)($,{range:e,selectedNewsletterId:t,shouldFetchStats:!!u})]})})]})};export{De as default};
@@ -1 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{t as n}from"./jsx-runtime-CtMZ-PAS.js";import{t as r}from"./use-tinybird-query-CNCaUn39.js";import{c as i,d as a,f as o,i as s,o as c,s as l,u}from"./pagemenu-C4paivNj.js";import{n as d}from"./posts-D_gBhqmK.js";import{t as f}from"./analytics-53FOa2wq.js";import{a as p,t as m}from"./post-helpers-C5OQMBoi.js";import{a as h}from"./router-provider-DcttGCQn.js";import{Cn as g,Et as _,Gn as v,I as y,Kn as b,Pt as x,Rt as S,Xn as C,Zn as w,c as T,it as E,lt as D,m as O,nn as k,qn as A,qt as j,r as M,t as N,ut as ee,vn as P,xn as te,z as F}from"./button-DiwO9Rof.js";import{t as I}from"./gh-chart-DdBGmBS8.js";import{t as L}from"./empty-indicator-Cl63eDpB.js";import{An as R,Fi as z,On as B,c as V,d as H,dr as ne,ii as re,jn as ie,lr as U,mr as W,or as G,r as ae}from"./index-BMhs4O3N.js";import{i as K,l as oe,n as se,o as q,r as ce,t as le}from"./stats-view-UNMhTMCZ.js";import{f as ue,s as de}from"./stats-CrlPzgdd.js";import{t as fe}from"./use-growth-stats-DNIGdI8h.js";import{n as pe,r as me,t as he}from"./kpi-card-Fr_HJH78.js";import{i as ge,n as J}from"./url-helpers-DxA844rA.js";import{t as _e}from"./post-share-modal-59Ujf4t1.js";var Y=e(t()),ve=()=>{let{data:{posts:[e]}={posts:[]},isLoading:t}=d({searchParams:{filter:`status:[published,sent]`,order:`published_at DESC`,limit:`1`,include:`authors,email,count.clicks`}}),n=e,{data:r,isLoading:i}=de(n?.id||``,{enabled:!!n?.id});return{data:(0,Y.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}},X=n(),ye=e=>e.email_only?`Sent`:e.email?`Published and sent`:`Published`,be=({latestPostStats:e,isLoading:t})=>{let n=h(),[r,o]=(0,Y.useState)(!1),{site:s,settings:d}=K(),{appSettings:p}=z(),{emailTrackClicks:g,emailTrackOpens:v,webAnalytics:x=!1,membersTrackSources:T=!1}=p?.analytics||{};(0,Y.useEffect)(()=>{r&&f(`Share Modal Opened`,{giftLinkShown:!1,source:`stats-overview`})},[r]);let D=s.title||String(d.find(e=>e.key===`title`)?.value||`Ghost Site`),k=String(d.find(e=>e.key===`timezone`)?.value||`Etc/UTC`),M=e?m(e,{membersTrackSources:T}):null,P=`group mr-2 flex flex-col gap-1.5 hover:cursor-pointer`,F=!!e?.email,I=J({postId:e?.id,hasEmailData:F,analytics:{webAnalytics:x,membersTrackSources:T}}),B=I.startsWith(`/editor/`);return(0,X.jsxs)(c,{className:`group/card`,"data-testid":`latest-post`,children:[(0,X.jsxs)(u,{children:[(0,X.jsx)(a,{className:`flex items-baseline justify-between leading-snug font-medium text-muted-foreground`,children:`Latest post performance`}),(0,X.jsx)(i,{className:`hidden`,children:`How your last post did`})]}),(0,X.jsxs)(l,{className:`flex flex-col gap-6 px-0 lg:flex-row xl:grid xl:grid-cols-3`,children:[t&&(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(`div`,{className:`flex w-full items-center gap-6 px-6 xl:col-span-2`,children:[(0,X.jsx)(`div`,{className:`w-full max-w-[232px] grow`,children:(0,X.jsx)(R,{className:`aspect-[16/10] rounded-md`})}),(0,X.jsxs)(`div`,{className:`w-full grow`,children:[(0,X.jsx)(R,{className:`w-full max-w-[420px]`}),(0,X.jsx)(R,{className:`w-1/2`})]})]}),(0,X.jsx)(`div`,{className:`flex flex-col items-stretch gap-2 px-6`,children:(0,X.jsxs)(`div`,{className:`grid grid-cols-2 gap-5`,children:[(0,X.jsxs)(`div`,{children:[(0,X.jsx)(R,{className:`w-3/4`}),(0,X.jsx)(R,{className:`h-10 w-1/3`})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(R,{className:`w-3/4`}),(0,X.jsx)(R,{className:`h-10 w-1/3`})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(R,{className:`w-3/4`}),(0,X.jsx)(R,{className:`h-10 w-1/3`})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(R,{className:`w-3/4`}),(0,X.jsx)(R,{className:`h-10 w-1/3`})]})]})})]}),!t&&e&&M?(0,X.jsxs)(X.Fragment,{children:[(0,X.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,X.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,X.jsxs)(`div`,{className:`flex grow flex-col items-start justify-center self-stretch`,children:[(0,X.jsx)(`div`,{className:`text-md leading-tighter font-semibold tracking-tight hover:cursor-pointer hover:opacity-75`,onClick:()=>{!t&&e&&n(I,{crossApp:!0})},children:e.title}),(0,X.jsxs)(`div`,{className:`mt-1 text-muted-foreground`,children:[e.authors&&e.authors.length>0&&(0,X.jsxs)(`div`,{children:[`By `,e.authors.map(e=>e.name).join(`, `),` – `,A(e.published_at,k)]}),(0,X.jsx)(`div`,{className:`mt-0.5`,children:ye(e)})]}),(0,X.jsxs)(`div`,{className:`mt-6 flex items-center gap-2`,children:[!e.email_only&&(0,X.jsx)(_e,{author:e.authors?.map(e=>e.name).join(`, `)||``,description:``,faviconURL:s.icon||``,featureImageURL:e.feature_image||``,open:r,postExcerpt:e.excerpt||``,postTitle:e.title,postURL:e.url||``,siteTitle:D,onClose:()=>o(!1),onOpenChange:o,children:(0,X.jsxs)(N,{onClick:()=>o(!0),children:[(0,X.jsx)(y,{}),` Share post`]})}),(0,X.jsx)(N,{className:e.email_only?`w-full`:``,variant:`outline`,onClick:()=>{n(I,{crossApp:!0})},children:B?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(E,{}),(0,X.jsx)(`span`,{className:`hidden md:visible! md:block!`,children:`Edit post`})]}):(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(te,{}),(0,X.jsx)(`span`,{className:`hidden md:visible! md:block!`,children:e.email_only?`Post analytics`:`Analytics`})]})})]})]})]}),(0,X.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,X.jsxs)(`div`,{className:`grid grid-cols-2 gap-6 pl-10 lg:border-l xl:h-full`,children:[M.showWebMetrics&&x&&(0,X.jsxs)(`div`,{className:P,"data-testid":`latest-post-visitors`,onClick:()=>{n(`/posts/analytics/${e.id}/web`,{crossApp:!0})},children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 font-medium text-muted-foreground transition-all group-hover:text-foreground`,children:[(0,X.jsx)(S,{size:16,strokeWidth:1.25}),(0,X.jsx)(`span`,{className:`hidden md:visible! md:block!`,children:`Visitors`})]}),(0,X.jsx)(`span`,{className:`text-[2.2rem] leading-none font-semibold tracking-tighter`,children:C(e.visitors)})]}),M.showMemberGrowth&&(0,X.jsxs)(`div`,{className:b(P,M.showEmailMetrics&&(!M.showWebMetrics||!x)&&`col-[1/2] row-[2/3]`),"data-testid":`latest-post-members`,onClick:()=>{n(`/posts/analytics/${e.id}/growth`,{crossApp:!0})},children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 font-medium text-muted-foreground transition-all group-hover:text-foreground`,children:[(0,X.jsx)(O,{size:16,strokeWidth:1.25}),(0,X.jsx)(`span`,{className:`hidden md:visible! md:block!`,children:`Members`})]}),(0,X.jsx)(`span`,{className:`text-[2.2rem] leading-none font-semibold tracking-tighter`,children:e.member_delta?(0,X.jsxs)(X.Fragment,{children:[`+`,C(e.member_delta)]}):0})]}),M.showEmailMetrics&&e.email&&(0,X.jsxs)(X.Fragment,{children:[v&&(0,X.jsxs)(`div`,{className:P,onClick:()=>{n(`/posts/analytics/${e.id}/newsletter`,{crossApp:!0})},children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 font-medium text-muted-foreground transition-all group-hover:text-foreground`,children:[(0,X.jsx)(_,{size:16,strokeWidth:1.25}),(0,X.jsx)(`span`,{className:`hidden whitespace-nowrap md:visible! md:block!`,children:`Opens`})]}),(0,X.jsx)(`span`,{className:`text-[2.2rem] leading-none font-semibold tracking-tighter`,children:e.email.email_count?w((e.email.opened_count||0)/e.email.email_count):`0%`})]}),g&&(0,X.jsxs)(`div`,{className:P,onClick:()=>{n(`/posts/analytics/${e.id}/newsletter`,{crossApp:!0})},children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 font-medium text-muted-foreground transition-all group-hover:text-foreground`,children:[(0,X.jsx)(ee,{size:16,strokeWidth:1.25}),(0,X.jsx)(`span`,{className:`hidden whitespace-nowrap md:visible! md:block!`,children:`Clicks`})]}),(0,X.jsx)(`span`,{className:`text-[2.2rem] leading-none font-semibold tracking-tighter`,children:e.email.email_count&&e.count?.clicks?w((e.count.clicks||0)/e.email.email_count):`0%`})]})]})]})})]}):!t&&(0,X.jsx)(L,{actions:(0,X.jsx)(N,{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,X.jsx)(j,{strokeWidth:1.5})})]})]})},xe=()=>{let{config:e}=K();return{isLimited:t=>e?.hostSettings?.limits&&t===`limitAnalytics`?e.hostSettings.limits.limitAnalytics?.disabled===!0:!1}},Z=({title:e,iconName:t,description:n,color:r,diffDirection:o,diffValue:s,formattedValue:d,trendingFromValue:f,children:p,onClick:m})=>{let{range:h}=H(),g=t&&M[t],_=Y.useMemo(()=>{if(!o||o===`empty`||h===V.allTime.value||!s)return``;let e=o===`up`?`up`:o===`down`?`down`:`at`,t=q(h).replace(`in the `,``).replace(/^\(|\)$/g,``);return o===`same`?(0,X.jsxs)(`span`,{children:[`You're trending at the same level as `,(0,X.jsx)(`span`,{className:`font-semibold`,children:d}),` compared to the `,(0,X.jsx)(`span`,{className:`font-semibold`,children:t})]}):(0,X.jsxs)(`span`,{children:[`You're trending `,(0,X.jsxs)(`span`,{className:`font-semibold`,children:[e,` `,s]}),` from `,(0,X.jsx)(`span`,{className:`font-semibold`,children:f}),` compared to the `,t]})},[o,s,f,d,h]);return(0,X.jsxs)(c,{className:`group`,"data-testid":e,children:[(0,X.jsxs)(u,{className:`hidden`,children:[(0,X.jsx)(a,{children:e}),(0,X.jsx)(i,{children:n})]}),(0,X.jsxs)(he,{className:`relative flex grow flex-row items-start justify-between gap-5 border-none pb-2 xl:pb-4`,children:[(0,X.jsxs)(`div`,{className:`flex grow flex-col gap-1.5 border-none pb-0`,children:[(0,X.jsxs)(pe,{className:m&&`transition-all group-hover:text-foreground`,children:[r&&(0,X.jsx)(`span`,{className:`inline-block size-2 rounded-full opacity-50`,style:{backgroundColor:r}}),g&&(0,X.jsx)(g,{size:16,strokeWidth:1.5}),e]}),(0,X.jsx)(me,{diffDirection:h===V.allTime.value?`hidden`:o,diffTooltip:_,diffValue:s,value:d})]}),m&&(0,X.jsx)(N,{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:m,children:`View more`})]}),(0,X.jsx)(l,{children:p})]})},Se=({kpiValues:e,visitorsChartData:t,visitorsYRange:n,growthTotals:r,membersChartData:s,mrrChartData:d,currencySymbol:f,isLoading:p})=>{let m=h(),{range:g}=H(),{appSettings:_}=z(),v=xe().isLimited(`limitAnalytics`),y=`-mb-3 h-[10vw] max-h-[200px] min-h-[100px] hover:cursor-pointer!`;if(p)return(0,X.jsx)(o,{className:`flex h-[calc(10vw+116px)] max-h-[416px] min-h-20 items-center justify-center hover:cursor-pointer!`,children:(0,X.jsx)(B,{})});let b=_?.analytics.webAnalytics,x=v&&!b,S=_?.paidMembersEnabled,w=[b,x,!0,S].filter(Boolean).length,T=`lg:grid-cols-3`;return w===2?T=`lg:grid-cols-2`:w===1&&(T=`lg:grid-cols-1`),(0,X.jsxs)(`div`,{className:`flex flex-col lg:grid ${T} gap-6`,children:[b&&!x&&(0,X.jsx)(Z,{description:`Number of individual people who visited your website`,diffDirection:`empty`,formattedValue:e.visits,iconName:`Globe`,linkto:`/analytics/web/`,title:`Unique visitors`,onClick:()=>{m(`/analytics/web/`)},children:(0,X.jsx)(I,{className:y,color:`var(--chart-blue)`,data:t,id:`visitors`,range:g,showHorizontalLines:!0,showYAxisValues:!1,syncId:`overview-charts`,yAxisRange:n})}),x&&(0,X.jsxs)(c,{children:[(0,X.jsxs)(u,{className:`hidden`,children:[(0,X.jsx)(a,{children:`Unlock web analytics`}),(0,X.jsx)(i,{children:`Get the full picture of what's working with detailed, cookie-free traffic analytics.`})]}),(0,X.jsx)(l,{className:`flex h-full items-center justify-center p-6`,children:(0,X.jsx)(L,{actions:(0,X.jsx)(N,{variant:`outline`,onClick:()=>m(`/pro`,{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,X.jsx)(P,{})})})]}),(0,X.jsx)(Z,{description:`How number of members of your publication changed over time`,diffDirection:r.directions.total,diffValue:r.percentChanges.total,formattedValue:C(r.totalMembers),iconName:`User`,linkto:`/analytics/growth/`,title:`Members`,trendingFromValue:`${C(s[0].value)}`,onClick:()=>{m(`/analytics/growth/?tab=total-members`)},children:(0,X.jsx)(I,{className:y,color:`var(--chart-darkblue)`,data:s,id:`members`,range:g,showHorizontalLines:!0,showYAxisValues:!1,syncId:`overview-charts`})}),S&&(0,X.jsx)(Z,{description:`Monthly recurring revenue changes over time`,diffDirection:r.directions.mrr,diffValue:r.percentChanges.mrr,formattedValue:`${f}${C(G(r.mrr))}`,iconName:`Coins`,linkto:`/analytics/growth/`,title:`MRR`,trendingFromValue:`${f}${C(d[0].value)}`,onClick:()=>{m(`/analytics/growth/?tab=mrr`)},children:(0,X.jsx)(I,{className:y,color:`var(--chart-teal)`,data:d,id:`mrr`,range:g,showHorizontalLines:!0,showYAxisValues:!1,syncId:`overview-charts`})})]})},Ce=({className:e})=>(0,X.jsx)(`div`,{className:b(`flex flex-col items-center justify-center gap-1 rounded-sm bg-muted p-6 dark:bg-surface-elevated-2`,e),children:(0,X.jsx)(x,{className:`text-muted-foreground/50`,size:18,strokeWidth:1.5})}),Q=({className:e,metrics:t,title:n})=>(0,X.jsx)(X.Fragment,{children:(0,X.jsxs)(`div`,{className:b(`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,X.jsx)(`div`,{className:`mb-1.5 border-b pr-10 pb-1.5 font-medium whitespace-nowrap text-muted-foreground`,children:n}),(0,X.jsx)(`div`,{className:`flex flex-col gap-1.5`,children:t?.map(e=>(0,X.jsxs)(`div`,{className:`flex items-center justify-between gap-5`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 whitespace-nowrap`,children:[e.icon,e.label]}),(0,X.jsx)(`span`,{className:`font-mono`,children:e.metric})]},e.label))})]})}),we=({topPostsData:e,isLoading:t})=>{let n=h(),{range:r}=H(),{settings:o}=K(),{appSettings:s}=z(),d=String(o.find(e=>e.key===`timezone`)?.value||`Etc/UTC`),{webAnalytics:f=!1,membersTrackSources:m=!1,emailTrackClicks:g=!1,emailTrackOpens:y=!1}=s?.analytics||{},b=`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,X.jsxs)(c,{className:`group/card w-full lg:col-span-2`,"data-testid":`top-posts-card`,children:[(0,X.jsxs)(u,{children:[(0,X.jsxs)(a,{className:`flex items-baseline justify-between leading-snug font-medium text-muted-foreground`,children:[`Top posts `,q(r)]}),(0,X.jsx)(i,{className:`hidden`,children:`Most viewed posts in this period`})]}),(0,X.jsx)(l,{children:t?(0,X.jsx)(ie,{className:`mt-6`}):(0,X.jsxs)(X.Fragment,{children:[e?.stats?.map(e=>(0,X.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,X.jsxs)(`div`,{className:`z-10 flex min-w-[160px] grow items-start gap-4 md:items-center lg:min-w-[320px]`,onClick:()=>{n(J({postId:e.post_id,hasEmailData:e.sent_count!==null,analytics:{webAnalytics:f,membersTrackSources:m}}),{crossApp:!0})},children:[e.feature_image?(0,X.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,X.jsx)(Ce,{className:`hidden aspect-[16/10] w-[80px] shrink-0 group-hover:bg-muted-foreground/10 sm:visible! sm:flex! lg:w-[100px]`}),(0,X.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,X.jsx)(`span`,{className:`line-clamp-2 text-md font-semibold`,children:e.title}),(0,X.jsxs)(`span`,{className:`text text-muted-foreground`,children:[`By `,e.authors,` – `,A(e.published_at,d)]}),(0,X.jsx)(`span`,{className:`text text-muted-foreground`,children:p(e)})]})]}),(0,X.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:[f&&(0,X.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`,{crossApp:!0})},children:[(0,X.jsx)(Q,{metrics:[{icon:(0,X.jsx)(S,{className:`shrink-0 text-muted-foreground`,size:16,strokeWidth:1.5}),label:`Unique visitors`,metric:C(e.views)}],title:`Web traffic`}),(0,X.jsxs)(`div`,{className:b,children:[(0,X.jsx)(S,{className:`text-muted-foreground group-hover:text-foreground`,size:16,strokeWidth:1.5}),v(e.views)]})]}),e.sent_count!==null&&(0,X.jsxs)(`div`,{className:`group/tooltip relative flex w-[66px] lg:w-[92px]`,onClick:t=>{t.stopPropagation(),n(`/posts/analytics/${e.post_id}/newsletter`,{crossApp:!0})},children:[(0,X.jsx)(Q,{className:`${m?``:`right-0 left-auto translate-x-0`}`,metrics:[{icon:(0,X.jsx)(F,{className:`shrink-0 text-muted-foreground`,size:16,strokeWidth:1.5}),label:`Sent`,metric:C(e.sent_count||0)},...y?[{icon:(0,X.jsx)(_,{className:`shrink-0 text-muted-foreground`,size:16,strokeWidth:1.5}),label:`Opens`,metric:C(e.opened_count||0)}]:[],...g?[{icon:(0,X.jsx)(D,{className:`shrink-0 text-muted-foreground`,size:16,strokeWidth:1.5}),label:`Clicks`,metric:C(e.clicked_count||0)}]:[]],title:`Newsletter performance`}),(0,X.jsx)(`div`,{className:b,children:y?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(_,{className:`text-muted-foreground group-hover:text-foreground`,size:16,strokeWidth:1.5}),e.open_rate?`${Math.round(e.open_rate)}%`:`0%`]}):g?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(D,{className:`text-muted-foreground group-hover:text-foreground`,size:16,strokeWidth:1.5}),e.click_rate?`${Math.round(e.click_rate)}%`:`0%`]}):(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(F,{className:`text-muted-foreground group-hover:text-foreground`,size:16,strokeWidth:1.5}),v(e.sent_count||0)]})})]}),m&&(0,X.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`,{crossApp:!0})},children:[(0,X.jsx)(Q,{className:`right-0 left-auto translate-x-0`,metrics:[{icon:(0,X.jsx)(T,{className:`shrink-0 text-muted-foreground`,size:16,strokeWidth:1.5}),label:`Free`,metric:e.free_members>0?`+${C(e.free_members)}`:`0`},...s?.paidMembersEnabled?[{icon:(0,X.jsx)(k,{className:`shrink-0 text-muted-foreground`,size:16,strokeWidth:1.5}),label:`Paid`,metric:e.paid_members>0?`+${C(e.paid_members)}`:`0`}]:[]],title:`New members`}),(0,X.jsxs)(`div`,{className:b,children:[(0,X.jsx)(O,{className:`text-muted-foreground group-hover:text-foreground`,size:16,strokeWidth:1.5}),e.members>0?`+${C(e.members)}`:`0`]})]})]})]},e.post_id)),(!e?.stats||e.stats.length===0)&&(0,X.jsx)(L,{className:`w-full pb-10`,title:`No posts ${q(r)}`,children:(0,X.jsx)(j,{strokeWidth:1.5})})]})})]})},$=({className:e,title:t,description:n,url:r,children:i})=>(0,X.jsx)(`a`,{className:b(`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,X.jsxs)(`div`,{className:`flex items-center gap-6`,children:[i,(0,X.jsxs)(`div`,{className:`flex flex-col gap-0.5 leading-tight`,children:[(0,X.jsx)(`span`,{className:`text-base font-semibold`,children:t}),(0,X.jsx)(`span`,{className:`text-sm font-normal text-gray-700`,children:n})]})]})}),Te=()=>{let{appSettings:e}=z(),{range:t}=H(),{statsConfig:n,isLoading:i}=K(),{startDate:a,endDate:o,timezone:c}=ne(t),{isLoading:l,chartData:u,totals:d,currencySymbol:f}=fe(t),{data:p,isLoading:m}=ve(),{data:h,isLoading:_}=ue({searchParams:{date_from:U(a),date_to:U(o),limit:`5`,timezone:c}}),{data:v,loading:y}=r({endpoint:`api_kpis`,statsConfig:n,params:{site_uuid:n?.id||``,date_from:U(a),date_to:U(o),timezone:c,member_status:ge(ae)}}),b=(0,Y.useMemo)(()=>W(v||[],t,`visits`,`sum`)?.map(e=>{let t=Number(e.visits),n=isNaN(t)?0:t;return{date:String(e.date),value:n,formattedValue:C(n),label:`Visitors`}}),[v,t]),x=(0,Y.useMemo)(()=>{let e=[0,1];if(!b||b.length===0)return e;let t=b.map(e=>e.value).filter(e=>e>=0);return t.length===0?e:[0,Math.max(...t)||e[1]]},[b]),w=(0,Y.useMemo)(()=>{if(!u||u.length===0)return[];let e=[];return e=W(u,t,`value`,`exact`),e.map(e=>({date:e.date,value:e.free+e.paid,formattedValue:C(e.free+e.paid),label:`Members`}))},[u,t]),T=(0,Y.useMemo)(()=>{if(!e?.paidMembersEnabled||!u||u.length===0)return[];let n=[];return n=W(u,t,`mrr`,`exact`),n.map(e=>({date:e.date,value:G(e.mrr),formattedValue:`${f}${C(G(e.mrr))}`,label:`MRR`}))},[u,t,f,e]),E=(0,Y.useMemo)(()=>v?.length?{visits:C(v.reduce((e,t)=>{let n=Number(t.visits);return e+(isNaN(n)?0:n)},0))}:{visits:`0`},[v]);return(0,X.jsxs)(se,{children:[(0,X.jsx)(ce,{children:(0,X.jsx)(s,{children:(0,X.jsx)(oe,{excludeRanges:[`today`]})})}),(0,X.jsxs)(le,{isLoading:i,loadingComponent:(0,X.jsx)(X.Fragment,{}),children:[(0,X.jsx)(Se,{currencySymbol:f,growthTotals:d,isLoading:y||l,kpiValues:E,membersChartData:w,mrrChartData:T,visitorsChartData:b,visitorsYRange:x}),(0,X.jsx)(be,{isLoading:m,latestPostStats:p}),(0,X.jsx)(we,{isLoading:_,topPostsData:h}),(0,X.jsxs)(`div`,{className:`grid grid-cols-1 gap-6 lg:grid-cols-2`,children:[(0,X.jsx)(re,{className:`mt-4 -mb-4 lg:col-span-2`,children:`Grow your audience`}),(0,X.jsx)($,{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,X.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,X.jsx)(g,{className:`text-[#00BBA7]`,size:20,strokeWidth:1.5})})}),(0,X.jsx)($,{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,X.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,X.jsx)(S,{className:`text-[#FE9A00]`,size:20,strokeWidth:1.5})})})]})]})]})};export{Te as default};