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
@@ -0,0 +1,3 @@
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-DSrHPjWP.js";import{C as s,S as c,b as l,d as u,g as d,l as f,n as p,v as m,y as h}from"./stats-DkqCtrPh.js";import{t as g}from"./currency-CQsJu8iC.js";import{r as _,t as v}from"./source-icon--egCE7iN.js";import{g as y}from"./chunk-KS7C4IRE-DG9HTHQ3.js";import{a as b}from"./router-provider-S8Wf6jdu.js";import{Cn as x,Sn as S,Xn as C,bn as w,ir as T,j as E,qn as ee,qt as te,rr as D,t as ne}from"./button-DiwO9Rof.js";import{E as re}from"./_baseAssignValue-C_vooEQc.js";import{$ as O,C as ie,E as ae,I as oe,J as k,K as A,P as j,S as se,U as ce,V as le,W as ue,Y as de,Z as fe,_ as pe,a as me,at as he,b as ge,et as _e,g as ve,i as ye,n as be,nt as xe,ot as Se,q as M,r as Ce,rt as we,tt as N,w as Te,x as Ee,y as De}from"./chart-DmRrxCRv.js";import{n as Oe,t as ke}from"./PolarAngleAxis-D4SNKRGT.js";import{a as Ae,i as je,o as Me,t as Ne}from"./gh-chart-Cqy9gGq7.js";import{n as Pe,t as P}from"./sort-button-BHh5Ba1K.js";import{i as Fe,n as Ie,o as Le,s as Re,t as ze}from"./select-Cp27ScMR.js";import{t as Be}from"./empty-indicator-Cl63eDpB.js";import{a as F,c as I,i as Ve,n as L,r as R,s as He,t as Ue}from"./table-rH2MyJm6.js";import{Ar as We,Cn as Ge,Dn as Ke,Er as qe,Nr as Je,Or as Ye,Pi as Xe,Sn as Ze,ar as z,bn as Qe,c as B,cr as V,d as $e,jn as et,kn as tt,or as H,r as nt,ur as rt,wn as it,xn as at,yn as ot}from"./index-B5yxmQNp.js";import{a as st}from"./tiers-74aPYtWv.js";import{a as U,c as ct,i as lt,n as ut,o as dt,r as ft,t as pt}from"./stats-view-BvWWxegf.js";import{t as mt}from"./disabled-sources-indicator-ChHTF69d.js";import{t as ht}from"./use-growth-stats-DJoXxVfD.js";import{n as gt,r as W,t as _t}from"./kpi-tabs-DmUcThFc.js";import{t as vt}from"./use-analytics-data-DXG7mpgK.js";import{n as yt}from"./audience-CMWMCxFS.js";import{n as bt}from"./referrers-B0RVWBfE.js";import{i as xt,r as St,t as G}from"./content-helpers-CNBPrwsi.js";import{t as Ct}from"./url-helpers-CCyfRrKj.js";var K=e(t()),wt=e(Se()),Tt=e(oe()),q=e(he()),Et=e(re()),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`,we(`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=k(this.props,!1),c=k(r,!1),l=k(i,!1),u=r&&r.offsetRadius||20,d=e.map(function(e,n){var d=(e.startAngle+e.endAngle)/2,f=ae(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:[ae(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(M,{key:`label-${e.startAngle}-${e.endAngle}-${e.midAngle}-${n}`},i&&t.renderLabelLineItem(i,m,`line`),t.renderLabelItem(r,p,j(e,h)))});return K.createElement(M,{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(M,Y({ref:function(e){e&&!t.sectorRefs.includes(e)&&t.sectorRefs.push(e)},tabIndex:-1,className:`recharts-pie-sector`},fe(t.props,n,o),{key:`sector-${n?.startAngle}-${n?.endAngle}-${n.midAngle}-${o}`}),K.createElement(pe,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(De,{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=_e(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=_e(0,u-d)(r),p=X(X({},e),{},{startAngle:a+o,endAngle:a+f+o});i.push(p),a=p.endAngle}}),K.createElement(M,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||!N(s)||!N(c)||!N(l)||!N(u))return null;var p=r(`recharts-pie`,a);return K.createElement(M,{tabIndex:this.props.rootTabIndex,className:p,ref:function(t){e.pieRef=t}},this.renderSectors(),o&&this.renderLabels(i),se.renderCallByParent(this.props,null,!1),(!d||f)&&Ee.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(ge,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(le,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:!ue.isSsr,animationBegin:400,animationDuration:1500,animationEasing:`ease`,nameKey:`name`,blendStroke:!1,rootTabIndex:0}),Z(Q,`parseDeltaAngle`,function(e,t){return xe(t-e)*Math.min(Math.abs(t-e),360)}),Z(Q,`getRealPieData`,function(e){var t=e.data,n=e.children,r=k(e,!1),i=de(n,ce);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=Te(i,a);return{cx:r+O(e.cx,i,i/2),cy:n+O(e.cy,a,a/2),innerRadius:O(e.innerRadius,o,0),outerRadius:O(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)?(A(!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)&&(A(!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 j(e,_,0)!==0}).length,y=(g>=360?v:v-1)*c,b=g-v*p-y,x=i.reduce(function(e,t){var n=j(t,_,0);return e+(N(n)?n:0)},0),S;if(x>0){var C;S=i.map(function(e,t){var n=j(e,_,0),r=j(e,u,t),i=(N(n)?n:0)/x,s=t?C.endAngle+xe(h)*c*(n===0?0:1):o,l=s+xe(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:ae(m.cx,m.cy,g,d)},e),m),{},{value:j(e,_),startAngle:s,endAngle:l,payload:e,paddingAngle:xe(h)*c}),C})}return X(X({},m),{},{sectors:S,data:i})});var Vt=me({chartName:`PieChart`,GraphicalChild:Q,validateTooltipEventTypes:[`item`],defaultTooltipEventType:`item`,legendContent:`children`,axisComponents:[{axisType:`angleAxis`,AxisComp:ke},{axisType:`radiusAxis`,AxisComp:Oe}],formatAxisMap:ie,defaultProps:{layout:`centric`,startAngle:0,endAngle:360,cx:`50%`,cy:`50%`,innerRadius:0,outerRadius:`80%`}}),$=n(),Ht=e=>e===`total-members`||e===`free-members`||e===`paid-members`||e===`mrr`,Ut=({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:C(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?C(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?C(l):`0`})]})}),(0,$.jsx)(et,{})]}),(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})]})]})]})]})},Wt=({chartData:e,totals:t,initialTab:n,currencySymbol:r,isLoading:i,onTabChange:s})=>{let c=Ht(n)?n:`total-members`,[l,u]=(0,K.useState)(c),{range:d}=$e(),{appSettings:f}=Xe(),p=b(),[m]=y();(0,K.useEffect)(()=>{u(c)},[c]);let h=e=>{u(e);let t=new URLSearchParams(m);t.set(`tab`,e),p(`?${t.toString()}`,{replace:!0}),s&&s(e)},{totalMembers:g,freeMembers:_,paidMembers:v,mrr:x,percentChanges:S,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=dt(e,d,n,`exact`);let i=[];switch(l){case`free-members`:i=t.map(e=>({...e,value:e.free,formattedValue:C(e.free),label:`Free members`}));break;case`paid-members`:i=t.map(e=>({...e,value:e.paid,formattedValue:C(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:z(e.mrr),formattedValue:`${r}${C(z(e.mrr))}`,label:`MRR`}));break;default:i=t.map(e=>{let t=e.free+e.paid;return{...e,value:t,formattedValue:C(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)(Ke,{})}):(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&&h(`total-members`)},children:(0,$.jsx)(W,{color:`var(--chart-darkblue)`,diffDirection:d===B.allTime.value?`hidden`:w.total,diffValue:S.total,label:`Total members`,value:C(g)})}),f?.paidMembersEnabled&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(gt,{value:`free-members`,onClick:()=>{h(`free-members`)},children:(0,$.jsx)(W,{color:`var(--chart-blue)`,diffDirection:d===B.allTime.value?`hidden`:w.free,diffValue:S.free,label:`Free members`,value:C(_)})}),(0,$.jsx)(gt,{value:`paid-members`,onClick:()=>{h(`paid-members`)},children:(0,$.jsx)(W,{color:`var(--chart-purple)`,diffDirection:d===B.allTime.value?`hidden`:w.paid,diffValue:S.paid,label:`Paid members`,value:C(v)})}),(0,$.jsx)(gt,{value:`mrr`,onClick:()=>{h(`mrr`)},children:(0,$.jsx)(W,{color:`var(--chart-teal)`,diffDirection:d===B.allTime.value?`hidden`:w.mrr,diffValue:S.mrr,label:`MRR`,value:`${r}${C(z(x))}`})})]})]}),f?.paidMembersEnabled&&(0,$.jsxs)(qe,{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===B.allTime.value?`hidden`:w.total,diffValue:S.total,label:`Total members`,value:C(g)}),l===`free-members`&&(0,$.jsx)(W,{color:`var(--chart-blue)`,diffDirection:d===B.allTime.value?`hidden`:w.free,diffValue:S.free,label:`Free members`,value:C(_)}),l===`paid-members`&&(0,$.jsx)(W,{color:`var(--chart-purple)`,diffDirection:d===B.allTime.value?`hidden`:w.paid,diffValue:S.paid,label:`Paid members`,value:C(v)}),l===`mrr`&&(0,$.jsx)(W,{color:`var(--chart-teal)`,diffDirection:d===B.allTime.value?`hidden`:w.mrr,diffValue:S.mrr,label:`MRR`,value:`${r}${C(z(x))}`})]})}),(0,$.jsxs)(Ye,{align:`end`,className:`w-56`,children:[(0,$.jsx)(We,{onClick:()=>h(`total-members`),children:`Total members`}),(0,$.jsx)(We,{onClick:()=>h(`free-members`),children:`Free members`}),(0,$.jsx)(We,{onClick:()=>h(`paid-members`),children:`Paid members`}),(0,$.jsx)(We,{onClick:()=>h(`mrr`),children:`MRR`})]})]}),(0,$.jsx)(`div`,{className:`my-4 [&_.recharts-cartesian-axis-tick-value]:fill-gray-500`,children:(0,$.jsx)(Ne,{className:`-mb-3 h-[16vw] max-h-[320px] w-full min-h-[180px]`,color:E[l].color,data:T,dataFormatter:l===`mrr`?e=>`${r}${C(e)}`:C,id:l,range:d,tooltipContent:l===`paid-members`?(0,$.jsx)(Ut,{color:E[`paid-members`].color,range:d,showBreakdown:!0}):void 0})})]})},Gt=(e,t=`signups desc`,n=50)=>{let{startDate:r,endDate:i,timezone:a}=rt(e),o={date_from:V(r),date_to:V(i),member_status:yt(nt),order:t,limit:n.toString()};return a&&(o.timezone=a),bt({searchParams:o})},Kt=({data:e,currencySymbol:t,limit:n,defaultSourceIconUrl:r})=>{let i=n?e.slice(0,n):e,{appSettings:a}=Xe();return(0,$.jsx)(L,{children:i.map(e=>(0,$.jsxs)(I,{className:`last:border-none`,children:[(0,$.jsx)(R,{className:`font-medium`,children:(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(v,{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)(R,{className:`text-right font-mono text-sm`,children:[`+`,C(e.free_members)]}),a?.paidMembersEnabled&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(R,{className:`text-right font-mono text-sm`,children:[`+`,C(e.paid_members)]}),(0,$.jsxs)(R,{className:`text-right font-mono text-sm`,children:[`+`,t,C(z(e.mrr))]})]})]},e.source))})},qt=({range:e,limit:t=20,showViewAll:n=!1,sortBy:r,setSortBy:i})=>{let{site:a}=vt(),{data:o}=p(),{appSettings:s}=Xe(),[c,l]=(0,K.useState)(`free_members desc`),u=r||c,d=i||l,{data:f,isLoading:m}=Gt(e,u.replace(`free_members`,`signups`).replace(`paid_members`,`paid_conversions`),t),h=a.url,v=`https://www.google.com/s2/favicons?domain=ghost.org&sz=64`,y=K.useMemo(()=>{if(o?.stats&&o?.meta?.totals){let e=o.meta.totals,t=e[0];if(!t)return g(`usd`);for(let n of e)n.mrr>t.mrr&&(t=n);return g(t.currency)}return g(`usd`)},[o]),b=K.useMemo(()=>f?.stats?f.stats.map(e=>{let t=e.source||`Direct`,{domain:n}=_(t,h),r=n?`https://www.faviconextractor.com/favicon/${n}?larger=true`:v,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,h]),x=`Where did your growth come from ${U(e)}`;return s?.analytics.membersTrackSources?m?(0,$.jsx)(L,{children:(0,$.jsx)(I,{className:`last:border-none`,children:(0,$.jsx)(R,{className:`border-none py-2`,colSpan:1,children:(0,$.jsx)(tt,{containerClassName:`space-y-2`,count:5,maxWidth:75,randomize:!0})})})}):(0,$.jsxs)($.Fragment,{children:[b.length>0?(0,$.jsx)(Kt,{currencySymbol:y,data:b,defaultSourceIconUrl:v,limit:t}):(0,$.jsx)(L,{children:(0,$.jsx)(I,{className:`last:border-none`,children:(0,$.jsx)(R,{className:`border-none py-12 group-hover:bg-transparent!`,colSpan:s?.paidMembersEnabled?4:2,children:(0,$.jsx)(Be,{description:`Try adjusting your date range to see more data.`,title:`No conversions ${U(e)}`,children:(0,$.jsx)(te,{strokeWidth:1.5})})})})}),n&&b.length>t&&(0,$.jsx)(Ve,{className:`border-none bg-transparent hover:bg-transparent!`,children:(0,$.jsx)(I,{children:(0,$.jsx)(R,{className:`border-none bg-transparent px-0 pb-0 hover:bg-transparent!`,colSpan:4,children:(0,$.jsxs)(ot,{children:[(0,$.jsx)(it,{asChild:!0,children:(0,$.jsxs)(ne,{variant:`outline`,children:[`View all `,(0,$.jsx)(E,{})]})}),(0,$.jsxs)(Qe,{className:`overflow-y-auto pt-0 sm:max-w-[420px]`,children:[(0,$.jsxs)(Ze,{className:`sticky top-0 z-40 -mx-6 bg-surface-elevated/60 p-6 backdrop-blur`,children:[(0,$.jsx)(Ge,{children:`Top sources`}),(0,$.jsx)(at,{children:x})]}),(0,$.jsx)(`div`,{className:`group/datalist`,children:(0,$.jsxs)(Ue,{children:[(0,$.jsx)(He,{children:(0,$.jsxs)(I,{children:[(0,$.jsx)(F,{children:`Source`}),(0,$.jsx)(F,{className:`w-[110px] text-right`,children:(0,$.jsx)(P,{activeSortBy:u,setSortBy:d,sortBy:`free_members desc`,children:`Free members`})}),s?.paidMembersEnabled&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(F,{className:`w-[110px] text-right`,children:(0,$.jsx)(P,{activeSortBy:u,setSortBy:d,sortBy:`paid_members desc`,children:`Paid members`})}),(0,$.jsx)(F,{className:`w-[110px] text-right`,children:(0,$.jsx)(P,{activeSortBy:u,setSortBy:d,sortBy:`mrr desc`,children:`MRR impact`})})]})]})}),(0,$.jsx)(Kt,{currencySymbol:y,data:b,defaultSourceIconUrl:v})]})})]})]})})})})]}):(0,$.jsx)(L,{children:(0,$.jsx)(I,{className:`last:border-none`,children:(0,$.jsx)(R,{className:`border-none py-12 group-hover:bg-transparent!`,colSpan:s?.paidMembersEnabled?4:2,children:(0,$.jsx)(mt,{})})})})};T();var Jt=({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:C(e.value)})]})})}return null},Yt=({isLoading:e,range:t})=>{let{data:n}=f(),{data:{tiers:r=[]}={}}=st(),[i,a]=(0,K.useState)(`billing-period`),{startDate:o,endDate:u}=(0,K.useMemo)(()=>rt(t),[t]),d=(0,K.useMemo)(()=>V(o),[o]),p=(0,K.useMemo)(()=>V(u),[u]),g=(0,K.useMemo)(()=>r.filter(e=>e.type===`paid`&&e.active).map(e=>({id:e.id,name:e.name})),[r]),_=(0,K.useMemo)(()=>{if(!n?.stats)return[];let e=D(d),t=D(p),r=n.stats.filter(n=>{let r=D(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,d,p]),v=(0,K.useMemo)(()=>{if(!n?.stats||g.length===0)return[];let e=D(d),t=D(p),r=n.stats.filter(n=>{let r=D(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[...g.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,g,d,p]),y=i===`billing-period`?_:v,b=(0,K.useMemo)(()=>y.reduce((e,t)=>e+t.count,0),[y]),x=(0,K.useMemo)(()=>{let e={count:{label:`Subscriptions`}};return y.forEach(t=>{e[t.id]={label:t.name,color:t.color}}),e},[y]),S=(0,K.useMemo)(()=>b===0?[]:y.map(e=>({label:e.name,count:e.count,percentage:e.count/b*100,color:e.color})),[y,b]);if(e||!n?.stats)return null;let T=y.length>0&&b>0;return(0,$.jsxs)(m,{children:[(0,$.jsx)(c,{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)(s,{children:`Paid subscription breakdown`}),(0,$.jsxs)(l,{children:[`New paid subscriptions `,U(t)]})]}),g.length>1&&(0,$.jsx)(`div`,{children:(0,$.jsxs)(ze,{value:i,onValueChange:e=>a(e),children:[(0,$.jsx)(Le,{className:`w-full`,children:(0,$.jsx)(Re,{})}),(0,$.jsxs)(Ie,{align:`end`,children:[(0,$.jsx)(Fe,{value:`billing-period`,children:`Billing period`}),(0,$.jsx)(Fe,{value:`tiers`,children:`Tiers`})]})]})})]})}),(0,$.jsx)(h,{children:T?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(be,{className:`mx-auto aspect-square h-[250px] min-h-[250px] w-full`,config:x,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)(Ce,{content:(0,$.jsx)(Jt,{}),cursor:!1}),(0,$.jsx)(Q,{animationBegin:0,animationDuration:1e3,data:y,dataKey:`count`,innerRadius:70,nameKey:`name`,stroke:`var(--card)`,strokeWidth:5,children:(0,$.jsx)(se,{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:C(b)}),(0,$.jsx)(`tspan`,{className:`fill-muted-foreground`,x:e.cx,y:(e.cy||0)+20,children:`Total`})]})}})})]})}),S.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:S.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)(Be,{description:`No new paid subscriptions ${U(t)}.`,title:`No new subscribers`,children:(0,$.jsx)(w,{strokeWidth:1.5})})})})]})};T();var Xt=(e,t,n)=>{if(t===1){let t=D().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}=rt(t),a=lt(t,D(i).diff(D(r),`days`),`sum`,n),o=new Map(e.map(e=>[e.date,e])),s=[],c=new Set;if(a===`monthly`){let e=D(r).startOf(`month`),t=D(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=D(r).startOf(`week`),t=D(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=D(r),t=D(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},Zt=e=>{if(e===-1){let{startDate:t,endDate:n}=rt(e);return D(n).diff(D(t),`days`)}return e},Qt=e=>{let t=Zt(e);return t<30?[`daily`]:t>=91?[`weekly`,`monthly`]:[`daily`,`weekly`]},$t=e=>{let t=Zt(e);return t<30?`daily`:t>=91?`monthly`:`weekly`},en=({subscriptionData:e,memberData:t,range:n,isLoading:r})=>{let[i,a]=(0,K.useState)(()=>$t(n));(0,K.useEffect)(()=>{a($t(n))},[n]);let o=(0,K.useMemo)(()=>Qt(n),[n]),u=(0,K.useMemo)(()=>{switch(i){case`daily`:return`none`;case`weekly`:return`weekly`;case`monthly`:return`monthly`}},[i]),d=(0,K.useMemo)(()=>{if(e&&e.length>0){if(n===1){let t=D().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=dt(e,n,`signups`,`sum`,u),r=dt(e,n,`cancellations`,`sum`,u),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()),Xt(o,n,u).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=D().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=dt(t,n,`paid_subscribed`,`sum`,u),r=dt(t,n,`paid_canceled`,`sum`,u),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,u,i]),f={new:{label:`New`,color:`var(--chart-teal)`},cancelled:{label:`Cancelled`,color:`var(--chart-rose)`}},p=(0,K.useMemo)(()=>({new:d.reduce((e,t)=>e+t.new,0),cancelled:d.reduce((e,t)=>e+Math.abs(t.cancelled),0)}),[d]);if(r)return null;let g=d.length>0&&(p.new>0||p.cancelled>0),_=e=>e.charAt(0).toUpperCase()+e.slice(1);return(0,$.jsxs)(m,{"data-testid":`paid-members-change-card`,children:[(0,$.jsx)(c,{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)(s,{children:`Paid subscriptions`}),(0,$.jsxs)(l,{children:[`New and cancelled paid subscriptions `,U(n)]})]}),o.length>1&&(0,$.jsx)(`div`,{children:(0,$.jsxs)(ze,{value:i,onValueChange:e=>a(e),children:[(0,$.jsx)(Le,{className:`w-[110px]`,children:(0,$.jsx)(Re,{})}),(0,$.jsx)(Ie,{align:`end`,children:o.map(e=>(0,$.jsx)(Fe,{value:e,children:_(e)},e))})]})})]})}),(0,$.jsx)(h,{children:g?(0,$.jsxs)(`div`,{children:[(0,$.jsx)(be,{className:`aspect-auto h-[200px] w-full md:h-[220px] xl:h-[260px]`,config:f,children:(0,$.jsxs)(Pe,{data:d,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)(Me,{stroke:`var(--border)`,vertical:!1}),(0,$.jsx)(Ae,{axisLine:!1,dataKey:`date`,tickFormatter:()=>``,tickLine:!1,tickMargin:10}),(0,$.jsx)(je,{axisLine:!1,tickFormatter:e=>C(e<0?e*-1:e),tickLine:!1}),(0,$.jsx)(Ce,{content:(0,$.jsx)(ye,{className:`min-w-[120px]! px-3 py-2`,formatter:(e,t,n,r)=>{let a=Number(e),o=`0`;o=a===0?`0`:C(a<0?a*-1:a);let s=n?.payload,c=Number(s?.new||0)+Number(s?.cancelled||0),l=c===0?`0`:c>0?`+${C(c)}`:C(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:f[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)(ve,{activeBar:{fillOpacity:1},dataKey:`new`,fill:`url(#tealGradient)`,fillOpacity:.75,maxBarSize:32,minPointSize:3,radius:[4,4,0,0],stackId:`a`}),(0,$.jsx)(ve,{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:f.new.color}}),(0,$.jsx)(`span`,{children:`New`}),(0,$.jsx)(`span`,{className:`font-medium text-foreground`,children:C(p.new)})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`span`,{className:`size-2 rounded-full opacity-50`,style:{backgroundColor:f.cancelled.color}}),(0,$.jsx)(`span`,{children:`Cancelled`}),(0,$.jsx)(`span`,{className:`font-medium text-foreground`,children:C(p.cancelled)})]})]})]}):(0,$.jsx)(`div`,{className:`py-12`,children:(0,$.jsx)(Be,{description:`No paid subscription changes ${U(n)}.`,title:`No paid member changes`,children:(0,$.jsx)(S,{strokeWidth:1.5})})})})]})},tn=(e,t,n)=>{let r=e??30,i=t??`mrr desc`,{startDate:a,endDate:o}=(0,K.useMemo)(()=>rt(r),[r]),s=(0,K.useMemo)(()=>{let e={date_from:V(a),date_to:V(o),order:i};return n===`posts`?e.post_type=`post`:n===`pages`&&(e.post_type=`page`),e},[a,o,i,n]);return u({searchParams:Object.fromEntries(Object.entries(s).filter(([,e])=>e!==void 0))})},nn=()=>{let{range:e}=$e(),{site:t,settings:n}=vt(),r=String(n.find(e=>e.key===`timezone`)?.value||`Etc/UTC`),u=b(),[f,p]=(0,K.useState)(`free_members desc`),[g,_]=(0,K.useState)(G.POSTS_AND_PAGES),[v]=y(),{appSettings:S}=Xe(),w=v.get(`tab`)||`total-members`,[T,E]=(0,K.useState)(w);(0,K.useEffect)(()=>{w!==T&&E(w)},[w]);let{isLoading:te,chartData:D,totals:re,currencySymbol:O,subscriptionData:ie}=ht(e),{data:ae,isLoading:oe}=tn(e,f,g),k=(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 f.includes(`free_members`)&&n>0?t=e.free_members/n:f.includes(`paid_members`)&&r>0?t=e.paid_members/r:f.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,f]),A=te,j=te||oe;return(0,$.jsxs)(ut,{children:[(0,$.jsx)(ft,{children:(0,$.jsx)(d,{children:(0,$.jsx)(ct,{})})}),(0,$.jsxs)(pt,{data:A?void 0:D,isLoading:!1,loadingComponent:(0,$.jsx)($.Fragment,{}),children:[(0,$.jsx)(m,{"data-testid":`total-members-card`,children:(0,$.jsx)(h,{children:(0,$.jsx)(Wt,{chartData:D,currencySymbol:O,initialTab:w,isLoading:A,totals:re,onTabChange:E})})}),S?.paidMembersEnabled&&T===`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)(en,{isLoading:A,memberData:D,range:e,subscriptionData:ie}),(0,$.jsx)(Yt,{isLoading:A,range:e})]}),(0,$.jsxs)(m,{className:`w-full overflow-x-auto`,"data-testid":`top-content-card`,children:[(0,$.jsxs)(c,{children:[(0,$.jsx)(s,{children:St(g)}),(0,$.jsx)(l,{children:xt(g,e,U)})]}),(0,$.jsx)(h,{children:(0,$.jsxs)(Ue,{children:[(0,$.jsx)(He,{children:(0,$.jsxs)(I,{className:`[&>th]:h-auto [&>th]:pt-0 [&>th]:pb-2`,children:[(0,$.jsx)(F,{className:`min-w-[320px] pl-0`,children:(0,$.jsx)(o,{defaultValue:g,variant:`button-sm`,onValueChange:e=>{_(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)(F,{className:`w-[140px] text-right`,children:S?.paidMembersEnabled?(0,$.jsx)(P,{activeSortBy:f,setSortBy:p,sortBy:`free_members desc`,children:`Free members`}):(0,$.jsx)($.Fragment,{children:`Free members`})}),S?.paidMembersEnabled&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(F,{className:`w-[140px] text-right`,children:(0,$.jsx)(P,{activeSortBy:f,setSortBy:p,sortBy:`paid_members desc`,children:`Paid members`})}),(0,$.jsx)(F,{className:`w-[140px] text-right`,children:(0,$.jsx)(P,{activeSortBy:f,setSortBy:p,sortBy:`mrr desc`,children:`MRR impact`})})]})]})}),g===G.SOURCES?(0,$.jsx)(qt,{limit:20,range:e,setSortBy:e=>p(e),showViewAll:!0,sortBy:f}):(0,$.jsx)(L,{children:j?(0,$.jsx)(I,{className:`last:border-none`,children:(0,$.jsx)(R,{className:`border-none py-2`,colSpan:1,children:(0,$.jsx)(tt,{containerClassName:`space-y-2`,count:5,maxWidth:75,randomize:!0})})}):S?.analytics.membersTrackSources?k.length>0?k.map((e,n)=>(0,$.jsxs)(I,{className:`last:border-none`,children:[(0,$.jsx)(R,{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)(ne,{className:`h-auto p-0 text-left leading-tight font-medium whitespace-normal hover:underline!`,title:`View post analytics`,variant:`link`,onClick:Ct(e.attribution_url,e.post_id,t.url||``,u,e.attribution_type),children:e.title}):(0,$.jsx)(`span`,{className:`font-medium`,children:e.title}),e.published_at&&ee&&new Date(e.published_at).getTime()>0&&(0,$.jsxs)(`span`,{className:`text-muted-foreground`,children:[`Published on `,ee(e.published_at,r)]})]})}),(0,$.jsxs)(R,{className:`text-right font-mono text-sm`,children:[e.free_members>0&&`+`,C(e.free_members)]}),S?.paidMembersEnabled&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(R,{className:`text-right font-mono text-sm`,children:[e.paid_members>0&&`+`,C(e.paid_members)]}),(0,$.jsxs)(R,{className:`text-right font-mono text-sm`,children:[e.mrr>0&&`+`,O,C(z(e.mrr))]})]})]},`${g}-${e.post_id||`${e.title}-${n}`}`)):(0,$.jsx)(I,{className:`border-none`,children:(0,$.jsx)(R,{className:`py-12 group-hover:bg-transparent!`,colSpan:S?.paidMembersEnabled?4:2,children:(0,$.jsx)(Be,{description:`Try adjusting your date range to see more data.`,title:`No conversions ${U(e)}`,children:(0,$.jsx)(x,{strokeWidth:1.5})})})}):(0,$.jsx)(I,{className:`last:border-none`,children:(0,$.jsx)(R,{className:`border-none py-12 group-hover:bg-transparent!`,colSpan:S?.paidMembersEnabled?4:2,children:(0,$.jsx)(mt,{})})})})]})})]})]})]})};export{nn as default};
@@ -0,0 +1 @@
1
+ import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{t as n}from"./jsx-runtime-CtMZ-PAS.js";import{r,t as i}from"./tabs-DSrHPjWP.js";import{C as a,S as o,b as s,c,g as l,i as u,r as d,v as f,y as p}from"./stats-DkqCtrPh.js";import{g as m}from"./chunk-KS7C4IRE-DG9HTHQ3.js";import{a as h,t as g}from"./router-provider-S8Wf6jdu.js";import{Ct as _,Xn as v,Zn as y,qn as b,t as x,wt as S}from"./button-DiwO9Rof.js";import{g as ee,n as te,o as ne,r as re}from"./chart-DmRrxCRv.js";import{a as ie,i as ae,o as oe,t as se}from"./gh-chart-Cqy9gGq7.js";import{n as ce,t as C}from"./sort-button-BHh5Ba1K.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-Cp27ScMR.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 le}from"./table-rH2MyJm6.js";import{An as L,Ar as R,Dn as z,Er as ue,Nr as de,Or as fe,Pi as B,cr as V,d as H,ir as pe,ur as U}from"./index-B5yxmQNp.js";import{r as me}from"./newsletters-BEvO0JE3.js";import{a as W,c as he,n as ge,o as G,r as _e,t as ve}from"./stats-view-BvWWxegf.js";import{n as K,r as q,t as ye}from"./kpi-tabs-DmUcThFc.js";import{t as be}from"./use-analytics-data-DXG7mpgK.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 `,b(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:v(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:[v(n.total_opens),` / `]}),y(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:[v(n.total_clicks),` / `]}),y(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,d]=(0,J.useState)(!1),{range:f}=H(),p=h(),[g]=m(),{appSettings:_}=B(),{emailTrackClicks:b,emailTrackOpens:x}=_?.analytics||{},{totalSubscribers:C,avgOpenRate:w,avgClickRate:T}=n,E=(0,J.useMemo)(()=>{if(!e||e.length===0)return[];let t=[];return t=G(e,f,`value`,`exact`),t.map(e=>({...e,formattedValue:v(e.value),label:`Total Subscribers`}))},[e,f]),D=(0,J.useMemo)(()=>{if(!E||E.length<=1)return{direction:`same`,value:`0%`};let e=E[0]?.value??0,t=E[E.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}},[E]);(0,J.useEffect)(()=>{l(s)},[s]);let O=e=>{l(e);let t=new URLSearchParams(g);t.set(`tab`,e),p(`?${t.toString()}`,{replace:!0})},k={open_rate:{label:`Open rate`}},A=(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:M,barTicks:N}=(0,J.useMemo)(()=>{if(!t||t.length===0||c===`total-subscribers`)return{barDomain:[0,1],barTicks:[0,1]};let e=A[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`?w:T,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,A,w,T]);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 P=`grid-cols-3`;(!b||!x)&&(P=`grid-cols-2`),!b&&!x&&(P=`grid-cols-1`);let F=c===`avg-open-rate`&&w>M[0]&&w<M[1]||c===`avg-click-rate`&&T>M[0]&&T<M[1],I=c===`avg-open-rate`?w:T;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! ${P}`,children:[(0,Y.jsx)(K,{className:`${!x&&!b&&`cursor-auto after:hidden`}`,value:`total-subscribers`,onClick:()=>{O(`total-subscribers`)},children:(0,Y.jsx)(q,{color:A[`total-subscribers`].color,"data-testid":`total-subscribers-value`,diffDirection:D.direction,diffValue:D.value,label:`Total subscribers`,value:v(C)})}),x&&(0,Y.jsx)(K,{value:`avg-open-rate`,onClick:()=>{O(`avg-open-rate`)},children:(0,Y.jsx)(q,{className:o?`opacity-50`:``,color:A[`avg-open-rate`].color,label:`Avg. open rate`,value:y(w)})}),b&&(0,Y.jsx)(K,{value:`avg-click-rate`,onClick:()=>{O(`avg-click-rate`)},children:(0,Y.jsx)(q,{className:o?`opacity-50`:``,color:A[`avg-click-rate`].color,label:`Avg. click rate`,value:y(T)})})]}),(0,Y.jsxs)(ue,{children:[(0,Y.jsx)(de,{className:`md:hidden`,asChild:!0,children:(0,Y.jsxs)(ye,{children:[c===`total-subscribers`&&(0,Y.jsx)(q,{color:A[`total-subscribers`].color,label:`Total subscribers`,value:v(C)}),c===`avg-open-rate`&&x&&(0,Y.jsx)(q,{className:o?`opacity-50`:``,color:A[`avg-open-rate`].color,label:`Avg. open rate`,value:y(w)}),c===`avg-click-rate`&&b&&(0,Y.jsx)(q,{className:o?`opacity-50`:``,color:A[`avg-click-rate`].color,label:`Avg. click rate`,value:y(T)})]})}),(0,Y.jsxs)(fe,{align:`end`,className:`w-56`,children:[(0,Y.jsx)(R,{onClick:()=>O(`total-subscribers`),children:`Total subscribers`}),x&&(0,Y.jsx)(R,{onClick:()=>O(`avg-open-rate`),children:`Avg. open rate`}),b&&(0,Y.jsx)(R,{onClick:()=>O(`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)(se,{className:`-mb-3 h-[16vw] max-h-[320px] min-h-[180px] w-full`,color:A[`total-subscribers`].color,data:E,id:`mrr`,range:f}),(c===`avg-open-rate`&&x||c===`avg-click-rate`&&b)&&(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)(te,{className:`aspect-auto h-[200px] w-full md:h-[220px] xl:h-[320px]`,config:k,children:(0,Y.jsxs)(ce,{className:u?`cursor-pointer!`:``,data:t,margin:{top:20},onClick:e=>{let t=(e.activePayload?.[0])?.payload?.post_id;t&&p(`/posts/analytics/${t}`,{crossApp:!0})},onMouseLeave:()=>d(!1),onMouseMove:e=>{let t=(e.activePayload?.[0])?.payload?.post_id;d(!!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:A[c].color,stopOpacity:.8}),(0,Y.jsx)(`stop`,{offset:`100%`,stopColor:A[c].color,stopOpacity:.6})]})}),(0,Y.jsx)(oe,{horizontal:!0,stroke:`var(--border)`,vertical:!1}),(0,Y.jsx)(ie,{axisLine:{stroke:`var(--border)`,strokeWidth:1},dataKey:`post_id`,interval:0,stroke:`var(--border)`,tickFormatter:()=>``,tickLine:!1,tickMargin:10}),(0,Y.jsx)(ae,{axisLine:!1,domain:M,tickFormatter:e=>y(e),tickLine:!1,ticks:N,width:pe(N,e=>y(e))}),(0,Y.jsx)(re,{content:(0,Y.jsx)(xe,{}),cursor:!1,isAnimationActive:!1,position:{y:10}}),F&&(0,Y.jsx)(ne,{label:{value:`${y(I)}`,position:`left`,offset:8,fill:`var(--muted-foreground)`},opacity:.5,stroke:`var(--muted-foreground)`,strokeDasharray:`4 4`,y:I}),(0,Y.jsx)(ee,{activeBar:{fillOpacity:1},dataKey:A[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 ${W(f)}`,children:(0,Y.jsx)(S,{strokeWidth:1.5})})})]})]})},Ce=({newsletters:e})=>{let{selectedNewsletterId:t,setSelectedNewsletterId:n}=H(),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)(_,{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)(()=>U(r),[r]),o=c({searchParams:(0,J.useMemo)(()=>{let e={date_from:V(i),date_to:V(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)(()=>U(i),[i]),c=d({searchParams:(0,J.useMemo)(()=>{let e={date_from:V(o),date_to:V(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=u({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=h(),{settings:a}=be(),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}=B(),{emailTrackClicks:d,emailTrackOpens:f}=u?.analytics||{},p=(0,J.useMemo)(()=>s?.stats||[],[s]),m=f&&d?5:f||d?4:3,g=(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:m,children:(0,Y.jsx)(L,{className:`mt-5`})})})}),[m]),_=(0,J.useMemo)(()=>p.length>0?(0,Y.jsx)(Y.Fragment,{children:p.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)(x,{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:b(e.send_date,o)}),(0,Y.jsx)(F,{className:`text-right font-mono text-sm`,children:v(e.sent_to)}),f&&(0,Y.jsxs)(F,{className:`text-right font-mono text-sm`,children:[(0,Y.jsx)(`span`,{className:`group-hover:hidden`,children:y(e.open_rate)}),(0,Y.jsx)(`span`,{className:`hidden group-hover:visible! group-hover:block!`,children:v(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:y(e.click_rate)}),(0,Y.jsx)(`span`,{className:`hidden group-hover:visible! group-hover:block!`,children:v(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:m,children:(0,Y.jsx)(j,{className:`size-full py-20`,title:`No newsletters ${W(e)}`,children:(0,Y.jsx)(S,{strokeWidth:1.5})})})}),[p,l,i,d,f,e]);return c||!s?g:_});Z.displayName=`NewsletterTableRows`;var Q=J.memo(({sortBy:e,setSortBy:t,range:n})=>{let r=(0,J.useMemo)(()=>(0,Y.jsxs)(o,{children:[(0,Y.jsx)(a,{children:`Top newsletters`}),(0,Y.jsxs)(s,{children:[` Your best performing newsletters `,W(n)]})]}),[n]),{appSettings:i}=B(),{emailTrackClicks:c,emailTrackOpens:l}=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`})}),l&&(0,Y.jsx)(M,{className:`w-[90px] text-right`,children:(0,Y.jsx)(C,{activeSortBy:e,setSortBy:t,sortBy:`open_rate desc`,children:`Opens`})}),c&&(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)(f,{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)(p,{children:(0,Y.jsxs)(le,{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}=H(),[n]=m(),{appSettings:r}=B(),i=n.get(`tab`)||`total-subscribers`,{data:a,isLoading:o}=me({searchParams:{limit:`50`}}),s=!o&&a&&a.newsletters.length>0&&!!t,{data:c,isLoading:u}=we(e,t||void 0,s||!1),{data:d,isLoading:h,isClicksLoading:_}=X(e,`date asc`,t||void 0,s||!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||c?.stats?.[0]?.total||0,t=0,n=0;if(d?.stats&&d.stats.length>0){let e=d.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,c,d]),b=(0,J.useMemo)(()=>{if(!c?.stats?.[0]?.values||c.stats[0].values.length===0){let{startDate:t,endDate:n}=U(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=c.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},[c,e]),x=(0,J.useMemo)(()=>d?.stats?d.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})):[],[d]),S=u||_||h;return r&&!r.newslettersEnabled?(0,Y.jsx)(g,{to:`/analytics`}):(0,Y.jsxs)(ge,{children:[(0,Y.jsx)(_e,{children:(0,Y.jsxs)(l,{children:[(0,Y.jsx)(Ce,{newsletters:a?.newsletters}),(0,Y.jsx)(he,{})]})}),(0,Y.jsx)(ve,{isLoading:!1,loadingComponent:(0,Y.jsx)(Y.Fragment,{}),children:(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(f,{"data-testid":`newsletters-card`,children:(0,Y.jsx)(p,{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:!!s})]})})]})};export{De as default};
@@ -0,0 +1 @@
1
+ import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{t as n}from"./jsx-runtime-CtMZ-PAS.js";import{t as r}from"./use-tinybird-query-BSL3iVCc.js";import{C as i,S as a,b as o,f as s,g as c,s as l,v as u,w as d,y as f}from"./stats-DkqCtrPh.js";import{n as p}from"./posts-D_gBhqmK.js";import{t as m}from"./analytics-53FOa2wq.js";import{a as h,t as g}from"./post-helpers-C5OQMBoi.js";import{a as _}from"./router-provider-S8Wf6jdu.js";import{Cn as v,Et as y,Gn as b,I as x,Kn as S,Pt as C,Rt as w,Xn as T,Zn as E,c as D,it as ee,lt as O,m as k,nn as A,qn as j,qt as M,r as N,t as P,ut as te,vn as F,xn as ne,z as I}from"./button-DiwO9Rof.js";import{t as L}from"./gh-chart-Cqy9gGq7.js";import{t as R}from"./empty-indicator-Cl63eDpB.js";import{An as re,Dn as ie,Pi as z,ar as B,c as V,cr as H,d as U,kn as W,pr as G,r as ae,ri as oe,ur as se}from"./index-B5yxmQNp.js";import{a as K,c as ce,n as le,r as ue,t as de}from"./stats-view-BvWWxegf.js";import{t as fe}from"./use-growth-stats-DJoXxVfD.js";import{n as pe,r as me,t as he}from"./kpi-card-DyDbok3h.js";import{t as q}from"./use-analytics-data-DXG7mpgK.js";import{n as ge}from"./audience-CMWMCxFS.js";import{n as J}from"./url-helpers-CCyfRrKj.js";import{t as _e}from"./post-share-modal-ZUCX7JZo.js";var Y=e(t()),ve=()=>{let{data:{posts:[e]}={posts:[]},isLoading:t}=p({searchParams:{filter:`status:[published,sent]`,order:`published_at DESC`,limit:`1`,include:`authors,email,count.clicks`}}),n=e,{data:r,isLoading:i}=l(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=_(),[r,s]=(0,Y.useState)(!1),{site:c,settings:l}=q(),{appSettings:d}=z(),{emailTrackClicks:p,emailTrackOpens:h,webAnalytics:v=!1,membersTrackSources:b=!1}=d?.analytics||{};(0,Y.useEffect)(()=>{r&&m(`Share Modal Opened`,{giftLinkShown:!1,source:`stats-overview`})},[r]);let C=c.title||String(l.find(e=>e.key===`title`)?.value||`Ghost Site`),D=String(l.find(e=>e.key===`timezone`)?.value||`Etc/UTC`),O=e?g(e,{membersTrackSources:b}):null,A=`group mr-2 flex flex-col gap-1.5 hover:cursor-pointer`,N=!!e?.email,F=J({postId:e?.id,hasEmailData:N,analytics:{webAnalytics:v,membersTrackSources:b}}),I=F.startsWith(`/editor/`);return(0,X.jsxs)(u,{className:`group/card`,"data-testid":`latest-post`,children:[(0,X.jsxs)(a,{children:[(0,X.jsx)(i,{className:`flex items-baseline justify-between leading-snug font-medium text-muted-foreground`,children:`Latest post performance`}),(0,X.jsx)(o,{className:`hidden`,children:`How your last post did`})]}),(0,X.jsxs)(f,{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)(W,{className:`aspect-[16/10] rounded-md`})}),(0,X.jsxs)(`div`,{className:`w-full grow`,children:[(0,X.jsx)(W,{className:`w-full max-w-[420px]`}),(0,X.jsx)(W,{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)(W,{className:`w-3/4`}),(0,X.jsx)(W,{className:`h-10 w-1/3`})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(W,{className:`w-3/4`}),(0,X.jsx)(W,{className:`h-10 w-1/3`})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(W,{className:`w-3/4`}),(0,X.jsx)(W,{className:`h-10 w-1/3`})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(W,{className:`w-3/4`}),(0,X.jsx)(W,{className:`h-10 w-1/3`})]})]})})]}),!t&&e&&O?(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(F,{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(`, `),` – `,j(e.published_at,D)]}),(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:c.icon||``,featureImageURL:e.feature_image||``,open:r,postExcerpt:e.excerpt||``,postTitle:e.title,postURL:e.url||``,siteTitle:C,onClose:()=>s(!1),onOpenChange:s,children:(0,X.jsxs)(P,{onClick:()=>s(!0),children:[(0,X.jsx)(x,{}),` Share post`]})}),(0,X.jsx)(P,{className:e.email_only?`w-full`:``,variant:`outline`,onClick:()=>{n(F,{crossApp:!0})},children:I?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(ee,{}),(0,X.jsx)(`span`,{className:`hidden md:visible! md:block!`,children:`Edit post`})]}):(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(ne,{}),(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:[O.showWebMetrics&&v&&(0,X.jsxs)(`div`,{className:A,"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)(w,{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:T(e.visitors)})]}),O.showMemberGrowth&&(0,X.jsxs)(`div`,{className:S(A,O.showEmailMetrics&&(!O.showWebMetrics||!v)&&`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)(k,{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:[`+`,T(e.member_delta)]}):0})]}),O.showEmailMetrics&&e.email&&(0,X.jsxs)(X.Fragment,{children:[h&&(0,X.jsxs)(`div`,{className:A,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)(y,{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?E((e.email.opened_count||0)/e.email.email_count):`0%`})]}),p&&(0,X.jsxs)(`div`,{className:A,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)(te,{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?E((e.count.clicks||0)/e.email.email_count):`0%`})]})]})]})})]}):!t&&(0,X.jsx)(R,{actions:(0,X.jsx)(P,{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)(M,{strokeWidth:1.5})})]})]})},xe=()=>{let{config:e}=q();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:s,diffValue:c,formattedValue:l,trendingFromValue:d,children:p,onClick:m})=>{let{range:h}=U(),g=t&&N[t],_=Y.useMemo(()=>{if(!s||s===`empty`||h===V.allTime.value||!c)return``;let e=s===`up`?`up`:s===`down`?`down`:`at`,t=K(h).replace(`in the `,``).replace(/^\(|\)$/g,``);return s===`same`?(0,X.jsxs)(`span`,{children:[`You're trending at the same level as `,(0,X.jsx)(`span`,{className:`font-semibold`,children:l}),` 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,` `,c]}),` from `,(0,X.jsx)(`span`,{className:`font-semibold`,children:d}),` compared to the `,t]})},[s,c,d,l,h]);return(0,X.jsxs)(u,{className:`group`,"data-testid":e,children:[(0,X.jsxs)(a,{className:`hidden`,children:[(0,X.jsx)(i,{children:e}),(0,X.jsx)(o,{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`:s,diffTooltip:_,diffValue:c,value:l})]}),m&&(0,X.jsx)(P,{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)(f,{children:p})]})},Se=({kpiValues:e,visitorsChartData:t,visitorsYRange:n,growthTotals:r,membersChartData:s,mrrChartData:c,currencySymbol:l,isLoading:p})=>{let m=_(),{range:h}=U(),{appSettings:g}=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)(d,{className:`flex h-[calc(10vw+116px)] max-h-[416px] min-h-20 items-center justify-center hover:cursor-pointer!`,children:(0,X.jsx)(ie,{})});let b=g?.analytics.webAnalytics,x=v&&!b,S=g?.paidMembersEnabled,C=[b,x,!0,S].filter(Boolean).length,w=`lg:grid-cols-3`;return C===2?w=`lg:grid-cols-2`:C===1&&(w=`lg:grid-cols-1`),(0,X.jsxs)(`div`,{className:`flex flex-col lg:grid ${w} 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)(L,{className:y,color:`var(--chart-blue)`,data:t,id:`visitors`,range:h,showHorizontalLines:!0,showYAxisValues:!1,syncId:`overview-charts`,yAxisRange:n})}),x&&(0,X.jsxs)(u,{children:[(0,X.jsxs)(a,{className:`hidden`,children:[(0,X.jsx)(i,{children:`Unlock web analytics`}),(0,X.jsx)(o,{children:`Get the full picture of what's working with detailed, cookie-free traffic analytics.`})]}),(0,X.jsx)(f,{className:`flex h-full items-center justify-center p-6`,children:(0,X.jsx)(R,{actions:(0,X.jsx)(P,{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)(F,{})})})]}),(0,X.jsx)(Z,{description:`How number of members of your publication changed over time`,diffDirection:r.directions.total,diffValue:r.percentChanges.total,formattedValue:T(r.totalMembers),iconName:`User`,linkto:`/analytics/growth/`,title:`Members`,trendingFromValue:`${T(s[0].value)}`,onClick:()=>{m(`/analytics/growth/?tab=total-members`)},children:(0,X.jsx)(L,{className:y,color:`var(--chart-darkblue)`,data:s,id:`members`,range:h,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:`${l}${T(B(r.mrr))}`,iconName:`Coins`,linkto:`/analytics/growth/`,title:`MRR`,trendingFromValue:`${l}${T(c[0].value)}`,onClick:()=>{m(`/analytics/growth/?tab=mrr`)},children:(0,X.jsx)(L,{className:y,color:`var(--chart-teal)`,data:c,id:`mrr`,range:h,showHorizontalLines:!0,showYAxisValues:!1,syncId:`overview-charts`})})]})},Ce=({className:e})=>(0,X.jsx)(`div`,{className:S(`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)(C,{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:S(`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=_(),{range:r}=U(),{settings:s}=q(),{appSettings:c}=z(),l=String(s.find(e=>e.key===`timezone`)?.value||`Etc/UTC`),{webAnalytics:d=!1,membersTrackSources:p=!1,emailTrackClicks:m=!1,emailTrackOpens:g=!1}=c?.analytics||{},v=`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)(u,{className:`group/card w-full lg:col-span-2`,"data-testid":`top-posts-card`,children:[(0,X.jsxs)(a,{children:[(0,X.jsxs)(i,{className:`flex items-baseline justify-between leading-snug font-medium text-muted-foreground`,children:[`Top posts `,K(r)]}),(0,X.jsx)(o,{className:`hidden`,children:`Most viewed posts in this period`})]}),(0,X.jsx)(f,{children:t?(0,X.jsx)(re,{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:d,membersTrackSources:p}}),{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,` – `,j(e.published_at,l)]}),(0,X.jsx)(`span`,{className:`text text-muted-foreground`,children:h(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:[d&&(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)(w,{className:`shrink-0 text-muted-foreground`,size:16,strokeWidth:1.5}),label:`Unique visitors`,metric:T(e.views)}],title:`Web traffic`}),(0,X.jsxs)(`div`,{className:v,children:[(0,X.jsx)(w,{className:`text-muted-foreground group-hover:text-foreground`,size:16,strokeWidth:1.5}),b(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:`${p?``:`right-0 left-auto translate-x-0`}`,metrics:[{icon:(0,X.jsx)(I,{className:`shrink-0 text-muted-foreground`,size:16,strokeWidth:1.5}),label:`Sent`,metric:T(e.sent_count||0)},...g?[{icon:(0,X.jsx)(y,{className:`shrink-0 text-muted-foreground`,size:16,strokeWidth:1.5}),label:`Opens`,metric:T(e.opened_count||0)}]:[],...m?[{icon:(0,X.jsx)(O,{className:`shrink-0 text-muted-foreground`,size:16,strokeWidth:1.5}),label:`Clicks`,metric:T(e.clicked_count||0)}]:[]],title:`Newsletter performance`}),(0,X.jsx)(`div`,{className:v,children:g?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(y,{className:`text-muted-foreground group-hover:text-foreground`,size:16,strokeWidth:1.5}),e.open_rate?`${Math.round(e.open_rate)}%`:`0%`]}):m?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(O,{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)(I,{className:`text-muted-foreground group-hover:text-foreground`,size:16,strokeWidth:1.5}),b(e.sent_count||0)]})})]}),p&&(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)(D,{className:`shrink-0 text-muted-foreground`,size:16,strokeWidth:1.5}),label:`Free`,metric:e.free_members>0?`+${T(e.free_members)}`:`0`},...c?.paidMembersEnabled?[{icon:(0,X.jsx)(A,{className:`shrink-0 text-muted-foreground`,size:16,strokeWidth:1.5}),label:`Paid`,metric:e.paid_members>0?`+${T(e.paid_members)}`:`0`}]:[]],title:`New members`}),(0,X.jsxs)(`div`,{className:v,children:[(0,X.jsx)(k,{className:`text-muted-foreground group-hover:text-foreground`,size:16,strokeWidth:1.5}),e.members>0?`+${T(e.members)}`:`0`]})]})]})]},e.post_id)),(!e?.stats||e.stats.length===0)&&(0,X.jsx)(R,{className:`w-full pb-10`,title:`No posts ${K(r)}`,children:(0,X.jsx)(M,{strokeWidth:1.5})})]})})]})},$=({className:e,title:t,description:n,url:r,children:i})=>(0,X.jsx)(`a`,{className:S(`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}=U(),{statsConfig:n,isLoading:i}=q(),{startDate:a,endDate:o,timezone:l}=se(t),{isLoading:u,chartData:d,totals:f,currencySymbol:p}=fe(t),{data:m,isLoading:h}=ve(),{data:g,isLoading:_}=s({searchParams:{date_from:H(a),date_to:H(o),limit:`5`,timezone:l}}),{data:y,loading:b}=r({endpoint:`api_kpis`,statsConfig:n,params:{site_uuid:n?.id||``,date_from:H(a),date_to:H(o),timezone:l,member_status:ge(ae)}}),x=(0,Y.useMemo)(()=>G(y||[],t,`visits`,`sum`)?.map(e=>{let t=Number(e.visits),n=isNaN(t)?0:t;return{date:String(e.date),value:n,formattedValue:T(n),label:`Visitors`}}),[y,t]),S=(0,Y.useMemo)(()=>{let e=[0,1];if(!x||x.length===0)return e;let t=x.map(e=>e.value).filter(e=>e>=0);return t.length===0?e:[0,Math.max(...t)||e[1]]},[x]),C=(0,Y.useMemo)(()=>{if(!d||d.length===0)return[];let e=[];return e=G(d,t,`value`,`exact`),e.map(e=>({date:e.date,value:e.free+e.paid,formattedValue:T(e.free+e.paid),label:`Members`}))},[d,t]),E=(0,Y.useMemo)(()=>{if(!e?.paidMembersEnabled||!d||d.length===0)return[];let n=[];return n=G(d,t,`mrr`,`exact`),n.map(e=>({date:e.date,value:B(e.mrr),formattedValue:`${p}${T(B(e.mrr))}`,label:`MRR`}))},[d,t,p,e]),D=(0,Y.useMemo)(()=>y?.length?{visits:T(y.reduce((e,t)=>{let n=Number(t.visits);return e+(isNaN(n)?0:n)},0))}:{visits:`0`},[y]);return(0,X.jsxs)(le,{children:[(0,X.jsx)(ue,{children:(0,X.jsx)(c,{children:(0,X.jsx)(ce,{excludeRanges:[`today`]})})}),(0,X.jsxs)(de,{isLoading:i,loadingComponent:(0,X.jsx)(X.Fragment,{}),children:[(0,X.jsx)(Se,{currencySymbol:p,growthTotals:f,isLoading:b||u,kpiValues:D,membersChartData:C,mrrChartData:E,visitorsChartData:x,visitorsYRange:S}),(0,X.jsx)(be,{isLoading:h,latestPostStats:m}),(0,X.jsx)(we,{isLoading:_,topPostsData:g}),(0,X.jsxs)(`div`,{className:`grid grid-cols-1 gap-6 lg:grid-cols-2`,children:[(0,X.jsx)(oe,{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)(v,{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)(w,{className:`text-[#FE9A00]`,size:20,strokeWidth:1.5})})})]})]})]})};export{Te as default};