ghost 6.52.0 → 6.52.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. package/components/tryghost-kg-card-factory-5.2.3.tgz +0 -0
  2. package/components/tryghost-kg-clean-basic-html-4.3.3.tgz +0 -0
  3. package/components/tryghost-kg-converters-1.2.3.tgz +0 -0
  4. package/components/tryghost-kg-default-cards-10.3.3.tgz +0 -0
  5. package/components/tryghost-kg-default-nodes-2.1.3.tgz +0 -0
  6. package/components/tryghost-kg-default-transforms-1.3.3.tgz +0 -0
  7. package/components/tryghost-kg-html-to-lexical-1.3.3.tgz +0 -0
  8. package/components/tryghost-kg-lexical-html-renderer-1.4.3.tgz +0 -0
  9. package/components/tryghost-kg-markdown-html-renderer-7.2.3.tgz +0 -0
  10. package/components/tryghost-kg-utils-1.1.3.tgz +0 -0
  11. package/core/built/admin/assets/Growth-CczbRexv.js +3 -0
  12. package/core/built/admin/assets/Newsletters-rFycX4x8.js +1 -0
  13. package/core/built/admin/assets/Overview-DFubBJaR.js +1 -0
  14. package/core/built/admin/assets/Web-BDE2lN4_.js +2 -0
  15. package/core/built/admin/assets/{account-migration-DiS76mRS.js → account-migration-gvH5a8ea.js} +1 -1
  16. package/core/built/admin/assets/audience-CMWMCxFS.js +1 -0
  17. package/core/built/admin/assets/{automated-emails-Cel18g7S.js → automated-emails-293Lcj5S.js} +1 -1
  18. package/core/built/admin/assets/automations-BxnjfCKn.js +1 -0
  19. package/core/built/admin/assets/automations-kPr44AmD.js +1 -0
  20. package/core/built/admin/assets/bluesky-sharing-Cww54F3Y.js +1 -0
  21. package/core/built/admin/assets/{chunk.912.9d6df5a6da679d905bbf.js → chunk.251.dd82df30188bb633b4ae.js} +9 -9
  22. package/core/built/admin/assets/{chunk.730.2457b7fede040aa52c88.js → chunk.341.20e7d2936dfa5877deea.js} +3 -3
  23. package/core/built/admin/assets/{chunk.524.d6d399b571454ea0234d.js → chunk.524.697bf0ded48e7c994fc3.js} +5 -5
  24. package/core/built/admin/assets/{chunk.582.50a9a5cbab6996daf0fe.js → chunk.582.6b742e9ba932688c442c.js} +6 -6
  25. package/core/built/admin/assets/{code-editor-view-BLGzcLub.js → code-editor-view-DSY5RHLf.js} +1 -1
  26. package/core/built/admin/assets/comments-BwNUmaNM.js +1 -0
  27. package/core/built/admin/assets/constants-c-JNF9c2.js +1 -0
  28. package/core/built/admin/assets/container-CD33Rm0u.js +1 -0
  29. package/core/built/admin/assets/content-helpers-CNBPrwsi.js +1 -0
  30. package/core/built/admin/assets/date-range-select-BkkNN98H.js +1 -0
  31. package/core/built/admin/assets/disabled-sources-indicator-ChHTF69d.js +1 -0
  32. package/core/built/admin/assets/{domain-2REz20SO.js → domain-CGk9SMa-.js} +1 -1
  33. package/core/built/admin/assets/dropzone-9zocztX0.js +5 -0
  34. package/core/built/admin/assets/{edit-profile-7QEh0VtN.js → edit-profile-C0B2Kbsl.js} +1 -1
  35. package/core/built/admin/assets/editor-Bz2Sm2O8.js +8 -0
  36. package/core/built/admin/assets/{esm-CEtFqV1y.js → esm-CsHLKmLh.js} +1 -1
  37. package/core/built/admin/assets/explore-CpRAMnx7.js +1 -0
  38. package/core/built/admin/assets/feed-BRoOWghO.js +1 -0
  39. package/core/built/admin/assets/filter-sources-DhxqZID1.js +1 -0
  40. package/core/built/admin/assets/{filters-DUy8rzI5.js → filters-B8nLLYGO.js} +1 -1
  41. package/core/built/admin/assets/{gh-chart-DdBGmBS8.js → gh-chart-Cqy9gGq7.js} +1 -1
  42. package/core/built/admin/assets/{gift-link-modal-CSgyxenA.js → gift-link-modal-v55u0VUL.js} +1 -1
  43. package/core/built/admin/assets/growth-BIfM3w1p.js +1 -0
  44. package/core/built/admin/assets/{inbox-CTD-ix6u.js → inbox-CDX57fXK.js} +11 -11
  45. package/core/built/admin/assets/index-B5yxmQNp.js +69 -0
  46. package/core/built/admin/assets/inline-DdrWe7D3.js +1 -0
  47. package/core/built/admin/assets/{input-group-DkR63-nk.js → input-group-DUPGQck1.js} +1 -1
  48. package/core/built/admin/assets/{koenig-lexical-D09TwwLs.js → koenig-lexical-CUVpp-dC.js} +1 -1
  49. package/core/built/admin/assets/{kpi-card-Fr_HJH78.js → kpi-card-DyDbok3h.js} +1 -1
  50. package/core/built/admin/assets/kpi-helpers-Bx9IHIMq.js +1 -0
  51. package/core/built/admin/assets/{kpi-tabs-Dc4Nt4a5.js → kpi-tabs-DmUcThFc.js} +1 -1
  52. package/core/built/admin/assets/labels-DLL8dl-7.js +1 -0
  53. package/core/built/admin/assets/layout-B7K3SmL0.js +1 -0
  54. package/core/built/admin/assets/{links-CfAB2Yeq.js → link-helpers-DHG_8GIT.js} +1 -1
  55. package/core/built/admin/assets/list-page-COAUFrmV.js +1 -0
  56. package/core/built/admin/assets/members-BxWs_mjq.js +10 -0
  57. package/core/built/admin/assets/{modals-Bu-1Uxdc.js → modals-DF2sECo6.js} +4 -4
  58. package/core/built/admin/assets/moderation-DYKTx5x0.js +1 -0
  59. package/core/built/admin/assets/newsletter-C-ZD1dI8.js +1 -0
  60. package/core/built/admin/assets/note-oaRdU_5z.js +1 -0
  61. package/core/built/admin/assets/notifications-BF4fAiP1.js +1 -0
  62. package/core/built/admin/assets/{nql-lang-CvCSOQG3.js → nql-lang-BoHzkNg5.js} +1 -1
  63. package/core/built/admin/assets/{onboarding-route-BDaa9hd3.js → onboarding-route-SS-e9Aeb.js} +1 -1
  64. package/core/built/admin/assets/overview-Cbn6bIoR.js +1 -0
  65. package/core/built/admin/assets/post-analytics-Bk9-KEgB.js +1 -0
  66. package/core/built/admin/assets/post-analytics-context-C8t_048I.js +1 -0
  67. package/core/built/admin/assets/post-analytics-header-xTjcg4H0.js +1 -0
  68. package/core/built/admin/assets/post-analytics-provider-CqnWwLMk.js +1 -0
  69. package/core/built/admin/assets/{post-share-modal-59Ujf4t1.js → post-share-modal-ZUCX7JZo.js} +1 -1
  70. package/core/built/admin/assets/preferences-BgjgxiBB.js +5 -0
  71. package/core/built/admin/assets/profile-qIwaxKTm.js +1 -0
  72. package/core/built/admin/assets/{router-provider-DcttGCQn.js → router-provider-S8Wf6jdu.js} +1 -1
  73. package/core/built/admin/assets/select-Cp27ScMR.js +1 -0
  74. package/core/built/admin/assets/{settings-dLraw6et.js → settings-CdDfyF90.js} +1 -1
  75. package/core/built/admin/assets/{settings-CIslWMfh.js → settings-CynBh-YN.js} +4 -4
  76. package/core/built/admin/assets/{share-modal-CI3E67kW.js → share-modal-DTIFYNI1.js} +1 -1
  77. package/core/built/admin/assets/social-urls-DVvRfwEp.js +16 -0
  78. package/core/built/admin/assets/{sort-button-BYwI0xdN.js → sort-button-BHh5Ba1K.js} +1 -1
  79. package/core/built/admin/assets/source-icon--egCE7iN.js +1 -0
  80. package/core/built/admin/assets/stats-DkqCtrPh.js +1 -0
  81. package/core/built/admin/assets/stats-view-BvWWxegf.js +1 -0
  82. package/core/built/admin/assets/step-1-DWjw7rIn.js +1 -0
  83. package/core/built/admin/assets/{step-2-CVOvLQ2n.js → step-2-D1LrETIB.js} +1 -1
  84. package/core/built/admin/assets/{step-3-BsVXcpWU.js → step-3-BAdJdZw4.js} +2 -2
  85. package/core/built/admin/assets/{tabs-Bw8aEqsd.js → tabs-DSrHPjWP.js} +1 -1
  86. package/core/built/admin/assets/tags-BWZqBj19.js +1 -0
  87. package/core/built/admin/assets/{textarea-CNaqhk5P.js → textarea-CUVQjsrM.js} +1 -1
  88. package/core/built/admin/assets/{toggle-group-CMp1taHd.js → toggle-group-CrFpl-Xz.js} +1 -1
  89. package/core/built/admin/assets/{topic-filter-D2_9eEw4.js → topic-filter-jAxwwd9I.js} +1 -1
  90. package/core/built/admin/assets/types-uYQ1HgqL.js +1 -0
  91. package/core/built/admin/assets/url-helpers-CCyfRrKj.js +1 -0
  92. package/core/built/admin/assets/use-analytics-data-DXG7mpgK.js +1 -0
  93. package/core/built/admin/assets/use-filter-params-EoQBXfP3.js +1 -0
  94. package/core/built/admin/assets/use-growth-stats-DJoXxVfD.js +1 -0
  95. package/core/built/admin/assets/use-post-referrers-B-onYbuS.js +1 -0
  96. package/core/built/admin/assets/use-reply-chain-data-D8IFALoz.js +1 -0
  97. package/core/built/admin/assets/{use-tinybird-query-CNCaUn39.js → use-tinybird-query-BSL3iVCc.js} +1 -1
  98. package/core/built/admin/assets/{use-tinybird-token-1T80Odca.js → use-tinybird-token-DHgOnrNu.js} +1 -1
  99. package/core/built/admin/assets/virtual-list-AQrbRAXP.js +1 -0
  100. package/core/built/admin/assets/web-zEFi98DS.js +1 -0
  101. package/core/built/admin/index.html +6 -6
  102. package/core/server/services/automations/automations-api.js +20 -0
  103. package/core/server/services/automations/automations-api.ts +31 -0
  104. package/core/server/services/automations/poll.js +7 -7
  105. package/core/server/services/automations/poll.ts +12 -9
  106. package/core/server/services/email-analytics/email-analytics-provider-mailgun.js +2 -2
  107. package/core/server/services/email-analytics/email-analytics-service-wrapper.js +1 -4
  108. package/core/server/services/email-analytics/email-analytics-service.js +5 -7
  109. package/core/server/services/webhooks/serialize.js +6 -5
  110. package/package.json +1 -1
  111. package/pnpm-lock.yaml +14 -14
  112. package/pnpm-workspace.yaml +5 -0
  113. package/core/built/admin/assets/Growth-Dx0vv-BS.js +0 -3
  114. package/core/built/admin/assets/Newsletters-v1GnbUjW.js +0 -1
  115. package/core/built/admin/assets/Overview-BgM7o-Z8.js +0 -1
  116. package/core/built/admin/assets/Web-DRv-83Ow.js +0 -2
  117. package/core/built/admin/assets/automations-DFLgH14-.js +0 -1
  118. package/core/built/admin/assets/automations-Dc4DUKBb.js +0 -1
  119. package/core/built/admin/assets/bluesky-sharing-Dk1RTUaz.js +0 -1
  120. package/core/built/admin/assets/comments-DgH1rC7w.js +0 -1
  121. package/core/built/admin/assets/constants-BlvYJTqz.js +0 -1
  122. package/core/built/admin/assets/content-helpers-BEgGpvyE.js +0 -1
  123. package/core/built/admin/assets/editor-u3BPqQed.js +0 -8
  124. package/core/built/admin/assets/en-DA2zVD_n.js +0 -1
  125. package/core/built/admin/assets/explore-BgHmdFVz.js +0 -1
  126. package/core/built/admin/assets/feed-Cs7-F3I5.js +0 -1
  127. package/core/built/admin/assets/filter-query-core-D6GjHUFB.js +0 -1
  128. package/core/built/admin/assets/growth-IkQZ1ZV9.js +0 -1
  129. package/core/built/admin/assets/index-BMhs4O3N.js +0 -69
  130. package/core/built/admin/assets/inline-C1CpHxuO.js +0 -1
  131. package/core/built/admin/assets/kpis-BTZ8cyw-.js +0 -1
  132. package/core/built/admin/assets/labels-sA9m188H.js +0 -5
  133. package/core/built/admin/assets/layout-szLkuQ88.js +0 -1
  134. package/core/built/admin/assets/list-page-DWkOdljb.js +0 -1
  135. package/core/built/admin/assets/main-layout-B-K8KliJ.js +0 -1
  136. package/core/built/admin/assets/members-PNNhalbu.js +0 -10
  137. package/core/built/admin/assets/moderation-DqnsNTiw.js +0 -1
  138. package/core/built/admin/assets/newsletter-BhuQeWFL.js +0 -1
  139. package/core/built/admin/assets/note-DFy2JTpP.js +0 -1
  140. package/core/built/admin/assets/notifications-BVu-JOkB.js +0 -1
  141. package/core/built/admin/assets/overview-Bhg8M7VS.js +0 -1
  142. package/core/built/admin/assets/pagemenu-C4paivNj.js +0 -1
  143. package/core/built/admin/assets/post-analytics-BhQUmZyA.js +0 -1
  144. package/core/built/admin/assets/post-analytics-context-Dy17HR1_.js +0 -1
  145. package/core/built/admin/assets/post-analytics-header-DAQep1VQ.js +0 -1
  146. package/core/built/admin/assets/posts/_react-dom-Blmuc0OL.js +0 -21
  147. package/core/built/admin/assets/posts/alert-dialog-DBJeQQTK.js +0 -154
  148. package/core/built/admin/assets/posts/app-provider-BJr9fdEC.js +0 -22
  149. package/core/built/admin/assets/posts/app-utils-9O53Czfw.js +0 -83
  150. package/core/built/admin/assets/posts/automations-BM0oBTjO.js +0 -275
  151. package/core/built/admin/assets/posts/automations-Dbp-gdHS.js +0 -223
  152. package/core/built/admin/assets/posts/avatar-kOk1tTvT.js +0 -144
  153. package/core/built/admin/assets/posts/badge-DnByIHe9.js +0 -25
  154. package/core/built/admin/assets/posts/button-Dd8Xreln.js +0 -40844
  155. package/core/built/admin/assets/posts/chunk-KS7C4IRE-ECXkcZq6.js +0 -7740
  156. package/core/built/admin/assets/posts/comments-D-7hbbdw.js +0 -8032
  157. package/core/built/admin/assets/posts/data-list-DdD_glQ-.js +0 -14219
  158. package/core/built/admin/assets/posts/dialog-DDkTy_np.js +0 -229
  159. package/core/built/admin/assets/posts/editor-D7-01KV_.js +0 -14633
  160. package/core/built/admin/assets/posts/empty-indicator-Ze-bwJ27.js +0 -38
  161. package/core/built/admin/assets/posts/filters-CmKfKtpS.js +0 -5611
  162. package/core/built/admin/assets/posts/get-site-timezone-DVbWc-NA.js +0 -39
  163. package/core/built/admin/assets/posts/growth-DlhFUzVg.js +0 -299
  164. package/core/built/admin/assets/posts/heading-BBl-8tMC.js +0 -92
  165. package/core/built/admin/assets/posts/hooks-gZAmj4Al.js +0 -5429
  166. package/core/built/admin/assets/posts/input-DuPLeCGW.js +0 -16
  167. package/core/built/admin/assets/posts/input-surface-ClwNIxfd.js +0 -17
  168. package/core/built/admin/assets/posts/jsx-runtime-BfZnKD4L.js +0 -95
  169. package/core/built/admin/assets/posts/koenig-lexical-DCHiJJou.js +0 -77579
  170. package/core/built/admin/assets/posts/kpis-Fsx0XmYK.js +0 -2061
  171. package/core/built/admin/assets/posts/label-D1wSl69p.js +0 -32
  172. package/core/built/admin/assets/posts/links-DLozzgMh.js +0 -1243
  173. package/core/built/admin/assets/posts/loading-indicator-BgU2kK3v.js +0 -44
  174. package/core/built/admin/assets/posts/main-layout-DDlTMrnF.js +0 -15
  175. package/core/built/admin/assets/posts/newsletter-DAQJ1GLe.js +0 -736
  176. package/core/built/admin/assets/posts/overview-G3MfRm-S.js +0 -426
  177. package/core/built/admin/assets/posts/page-header-CanFyB95.js +0 -284
  178. package/core/built/admin/assets/posts/popover-Cta8ZDHJ.js +0 -221
  179. package/core/built/admin/assets/posts/post-analytics-cS07-wo_.js +0 -121
  180. package/core/built/admin/assets/posts/post-analytics-context-D868SMoq.js +0 -150
  181. package/core/built/admin/assets/posts/post-analytics-header-CZYiuaEL.js +0 -42249
  182. package/core/built/admin/assets/posts/post-share-modal-BJfswZzf.js +0 -352
  183. package/core/built/admin/assets/posts/posts-CpusjBC0.js +0 -37
  184. package/core/built/admin/assets/posts/posts-app-context-CPC7dOlt.js +0 -26
  185. package/core/built/admin/assets/posts/posts.js +0 -145
  186. package/core/built/admin/assets/posts/router-provider-DrqpOc8m.js +0 -114
  187. package/core/built/admin/assets/posts/separator-DAZNzARU.js +0 -37
  188. package/core/built/admin/assets/posts/settings-CMfUn5Hq.js +0 -66
  189. package/core/built/admin/assets/posts/shade-app-DLbeExcd-NeEZjE3R.js +0 -4764
  190. package/core/built/admin/assets/posts/sheet-CEuv-0a5.js +0 -62
  191. package/core/built/admin/assets/posts/site-WJ6ldary.js +0 -10
  192. package/core/built/admin/assets/posts/skeleton-CO0qCdQF.js +0 -2426
  193. package/core/built/admin/assets/posts/source-icon-Bs6o84W3.js +0 -143
  194. package/core/built/admin/assets/posts/stats-B1Z8H0JT.js +0 -92
  195. package/core/built/admin/assets/posts/table-CbJ9bOpM.js +0 -77
  196. package/core/built/admin/assets/posts/tabs-BvzzwQ4P.js +0 -242
  197. package/core/built/admin/assets/posts/tags-D-4TwsD0.js +0 -462
  198. package/core/built/admin/assets/posts/tooltip-BI7VtFUY.js +0 -380
  199. package/core/built/admin/assets/posts/update-queries-DiUznIQ1.js +0 -60
  200. package/core/built/admin/assets/posts/users-UgRPrTKW.js +0 -83
  201. package/core/built/admin/assets/posts/value-DF_wOhJe.js +0 -415
  202. package/core/built/admin/assets/posts/virtual-list-window-DP63Onpm.js +0 -853
  203. package/core/built/admin/assets/posts/web-axp2l3kK.js +0 -8077
  204. package/core/built/admin/assets/preferences-ChOzBKcF.js +0 -5
  205. package/core/built/admin/assets/profile-DlcrYKay.js +0 -1
  206. package/core/built/admin/assets/select-BbtNHCBq.js +0 -1
  207. package/core/built/admin/assets/social-urls-DVzIHh2W.js +0 -16
  208. package/core/built/admin/assets/source-icon-Uuhttjun.js +0 -1
  209. package/core/built/admin/assets/source-utils-BchD0sF0.js +0 -1
  210. package/core/built/admin/assets/stats-CrlPzgdd.js +0 -1
  211. package/core/built/admin/assets/stats-view-UNMhTMCZ.js +0 -1
  212. package/core/built/admin/assets/step-1-C2HY6pyi.js +0 -1
  213. package/core/built/admin/assets/tags-DjCsJo0X.js +0 -1
  214. package/core/built/admin/assets/typeof-Ca-duI-z.js +0 -1
  215. package/core/built/admin/assets/url-helpers-DxA844rA.js +0 -1
  216. package/core/built/admin/assets/use-growth-stats-DNIGdI8h.js +0 -1
  217. package/core/built/admin/assets/use-reply-chain-data-DtEC2Azp.js +0 -1
  218. package/core/built/admin/assets/virtual-list-window-BTXGwpf5.js +0 -1
  219. package/core/built/admin/assets/web-Cj8VEw3s.js +0 -1
  220. /package/core/built/admin/assets/{chunk.912.9d6df5a6da679d905bbf.js.LICENSE.txt → chunk.251.dd82df30188bb633b4ae.js.LICENSE.txt} +0 -0
@@ -1 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{t as n}from"./jsx-runtime-CtMZ-PAS.js";import{G as r,It as i,Mn as a,Pn as o,Xn as s,gn as c,p as l,q as u,t as d}from"./button-DiwO9Rof.js";import{$ as f,An as p,D as m,E as h,G as g,H as _,It as v,K as y,Nt as b,O as x,Q as S,U as C,V as w,Z as T,et as E,k as D,kn as O,vt as k}from"./index-BMhs4O3N.js";import"./layout-szLkuQ88.js";var A=e(t(),1),j=n(),M=({notificationType:e,size:t=`lg`,className:n})=>{let a,s=``,c=`white`,d=t===`sm`?13:20,f=t===`sm`?2:1.5;switch(e){case`follow`:a=(0,j.jsx)(l,{className:`-mt-0.5 -mr-0.5 ${t===`sm`&&`size-[11px]`}`,color:c,size:d,strokeWidth:f}),s=`bg-blue-600`;break;case`like`:a=(0,j.jsx)(i,{className:`${t===`sm`?`size-[11px]`:`mt-px size-5`}`,color:c,strokeWidth:f}),s=`bg-pink-600`;break;case`reply`:a=(0,j.jsx)(r,{className:`mr-px mb-px`,color:c,size:d,strokeWidth:f}),s=`bg-purple-600`;break;case`repost`:a=(0,j.jsx)(u,{color:c,size:d,strokeWidth:f}),s=`bg-green-500`;break;case`mention`:a=(0,j.jsx)(o,{className:`${t===`sm`?`size-[12px]`:`size-5`}`,color:c,size:d,strokeWidth:f}),s=`bg-orange-500`;break}return(0,j.jsx)(`div`,{className:`flex ${t===`sm`?`size-5`:`size-9`} items-center justify-center rounded-full ${s} ${n&&n}`,children:a})},N=A.createContext(void 0),P=({isGrouped:e,centerAlign:t,children:n,onClick:r,url:i,className:a})=>(0,j.jsx)(N.Provider,{value:{onClick:r,url:i},children:(0,j.jsx)(`div`,{className:`group relative -mx-4 -my-px ${e?`grid`:`flex`} ${t?`items-center`:`items-start`} break-anywhere cursor-pointer grid-cols-[auto_1fr] gap-x-4 gap-y-2.5 rounded-lg px-4 py-5 text-left hover:bg-gray-100 ${a}`,role:`button`,onClick:r,children:n})});P.Icon=({size:e=`lg`,type:t})=>(0,j.jsx)(`div`,{className:`col-start-1 row-start-1`,children:(0,j.jsx)(M,{notificationType:t,size:e})}),P.Avatars=({children:e})=>(0,j.jsx)(`div`,{className:`col-start-2 row-start-1 flex gap-2`,children:e}),P.Content=({children:e})=>(0,j.jsx)(`div`,{className:`col-start-2 row-start-2 -mt-0.5 grow overflow-hidden`,children:e});var F=()=>(0,j.jsx)(`div`,{className:`h-px w-full bg-gray-200 dark:bg-gray-950`});function I(e){let t=1440*60*1e3,n=new Date(e).getTime();return(Math.floor(n/t)*t).toString()}function L(e){let t={},n=null,r=0;return e.forEach(e=>{e.type!==n&&(r+=1,n=e.type);let i=``,a=`_${I(e.createdAt)}`,o=`_seq${r}`;switch(e.type){case`like`:e.post?.id&&(i=`like_${e.post.id}${a}${o}`);break;case`reply`:i=`reply_${e.id}`;break;case`repost`:e.post?.id&&(i=`repost_${e.post.id}${a}${o}`);break;case`follow`:i=`follow_${a}${o}`;break;case`mention`:i=`mention_${e.id}`;break}t[i]||(t[i]={id:e.id,type:e.type,actors:[],post:e.post,inReplyTo:e.inReplyTo,createdAt:e.createdAt}),t[i].actors.find(t=>t.id===e.actor.id)||t[i].actors.push(e.actor)}),Object.values(t)}var R=({group:e})=>{let[t,...n]=e.actors,r=n.length>0,i=n.length,a=v(),o=(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(y,{actor:t,align:`center`,isCurrentUser:!1,children:(0,j.jsx)(`span`,{className:`cursor-pointer font-semibold hover:underline text-black dark:text-white`,onClick:e=>{e?.stopPropagation(),t.handle&&C(t.handle,a)},children:t.name})}),r&&` and ${s(i)} ${i>1?`others`:`other`}`]});switch(e.type){case`follow`:return(0,j.jsxs)(j.Fragment,{children:[o,` followed you`]});case`like`:return(0,j.jsxs)(j.Fragment,{children:[o,` liked your `,e.post?.type===`article`?`post`:`note`]});case`repost`:return(0,j.jsxs)(j.Fragment,{children:[o,` reposted your `,e.post?.type===`article`?`post`:`note`]});case`reply`:if(e.inReplyTo&&typeof e.inReplyTo!=`string`)return o;break;case`mention`:return o}return(0,j.jsx)(j.Fragment,{})},z=({content:e,className:t,stripTags:n=[]})=>{let r=(0,A.useRef)(null),i=v();return(0,A.useEffect)(()=>{let e=r.current;if(!e)return;let t=e=>{let t=e.target.closest(`a[data-profile]`);if(t){let n=t.getAttribute(`data-profile`)?.trim();/^@([\w.-]+)@([\w-]+\.[\w.-]+[a-zA-Z])$/.test(n||``)&&n&&(e.preventDefault(),e.stopPropagation(),C(n,i))}};return e.addEventListener(`click`,t),()=>{e.removeEventListener(`click`,t)}},[i,e]),(0,j.jsx)(`div`,{dangerouslySetInnerHTML:{__html:T(S(e||``,n))},ref:r,className:t})},B=()=>{let[e,t]=A.useState({}),n=v(),r=e=>{t(t=>({...t,[e]:!t[e]}))},i=()=>{},{data:o,error:l,fetchNextPage:u,hasNextPage:y,isFetchingNextPage:N,isLoading:I}=k(`index`),B=o?.pages.flatMap(e=>L(e.notifications))??Array(10).fill({actors:[{}]}),V=(0,A.useRef)(null),H=(0,A.useRef)(null);(0,A.useEffect)(()=>(V.current&&V.current.disconnect(),V.current=new IntersectionObserver(e=>{e[0].isIntersecting&&y&&!N&&u()}),H.current&&V.current.observe(H.current),()=>{V.current&&V.current.disconnect()}),[y,N,u]);let U=(e,t)=>{switch(e.type){case`like`:e.post&&n(`/${e.post.type===`article`?`reader`:`notes`}/${encodeURIComponent(e.post.id)}`);break;case`reply`:e.post&&e.inReplyTo&&n(`/notes/${encodeURIComponent(e.post.id)}`);break;case`repost`:e.post&&n(`/${e.post.type===`article`?`reader`:`notes`}/${encodeURIComponent(e.post.id)}`);break;case`follow`:e.actors.length>1?r(e.id||`${e.type}_${t}`):e.actors[0]?.handle&&C(e.actors[0].handle,n);break;case`mention`:e.post&&n(`/notes/${encodeURIComponent(e.post.id)}`);break}};return l&&b(l)?(0,j.jsx)(h,{errorCode:l.code,statusCode:l.statusCode}):(0,j.jsx)(D,{children:(0,j.jsxs)(`div`,{className:`z-0 flex w-full flex-col items-center`,children:[I===!1&&B.length===0&&(0,j.jsxs)(x,{children:[(0,j.jsx)(m,{children:(0,j.jsx)(a,{})}),`Quiet for now, but not for long! When someone likes, boosts, or replies to you, you'll find it here.`]}),B.length>0&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(`div`,{className:`my-8 flex w-full max-w-[620px] flex-col max-md:mt-5`,children:B.map((t,a)=>(0,j.jsxs)(A.Fragment,{children:[(0,j.jsxs)(P,{centerAlign:t.actors.length<2&&t.type===`follow`,className:`hover:bg-gray-100 dark:hover:bg-gray-950`,isGrouped:t.actors.length>1,onClick:()=>U(t,a),children:[I?(0,j.jsx)(p,{className:`rounded-full`,containerClassName:`flex h-10 w-10`}):t.actors.length>1?(0,j.jsx)(P.Icon,{type:t.type}):(0,j.jsxs)(`div`,{className:`relative`,children:[(0,j.jsx)(E,{author:{icon:{url:t.actors[0].avatarUrl||``},name:t.actors[0].name,handle:t.actors[0].handle},size:`notification`},t.actors[0].id),(0,j.jsx)(M,{className:`absolute -right-1 -bottom-1 z-10 border-2 border-white dark:border-black`,notificationType:t.type,size:`sm`})]}),t.actors.length>1&&(0,j.jsx)(P.Avatars,{children:(0,j.jsxs)(`div`,{className:`flex w-full flex-col`,children:[(0,j.jsxs)(`div`,{className:`relative flex w-fit items-center pl-2`,children:[!e[t.id||`${t.type}_${a}`]&&t.actors.slice(0,5).map(e=>(0,j.jsx)(E,{author:{icon:{url:e.avatarUrl||``},name:e.name,handle:e.handle},className:`-ml-2 bg-[#F3F3F3]! outline-2 outline-white group-hover:bg-[#EDEEF0]! group-hover:outline-gray-100 dark:outline-black group-hover:dark:outline-gray-950`,size:`notification`},e.id)),t.actors.length>5&&!e[t.id||`${t.type}_${a}`]&&(0,j.jsx)(`div`,{className:`absolute right-[28px] z-10 flex size-9 items-center justify-center rounded-full bg-black/50 text-base font-semibold tracking-tightest text-white`,children:`+${s(t.actors.length-5)}`}),t.actors.length>1&&(0,j.jsxs)(d,{className:`group flex items-center gap-0.5 text-gray-700 hover:bg-transparent hover:text-black dark:text-gray-600 dark:hover:text-white ${e[t.id||`${t.type}_${a}`]?`ml-[-20px]`:`ml-0 w-[28px]`}`,variant:`ghost`,onClick:e=>{e?.stopPropagation(),r(t.id||`${t.type}_${a}`)},children:[(0,j.jsx)(c,{className:`${e[t.id||`${t.type}_${a}`]?`rotate-180`:``}`,size:20,strokeWidth:1.5}),e[t.id||`${t.type}_${a}`]?`Hide`:(0,j.jsx)(`span`,{className:`sr-only`,children:`Show all`})]})]}),(0,j.jsx)(`div`,{className:`overflow-hidden transition-all duration-300 ease-in-out ${e[t.id||`${t.type}_${a}`]?`mb-2 max-h-[1384px] opacity-100`:`max-h-0 opacity-0`}`,children:e[t.id||`${t.type}_${a}`]&&t.actors.length>1&&(0,j.jsx)(`div`,{className:`flex flex-col gap-2 pt-2`,children:t.actors.map(e=>(0,j.jsxs)(`div`,{className:`group/item break-anywhere flex items-center justify-between gap-4`,onClick:t=>{t?.stopPropagation(),e.handle&&C(e.handle,n)},children:[(0,j.jsxs)(`div`,{className:`flex min-w-0 items-center`,children:[(0,j.jsx)(E,{author:{icon:{url:e.avatarUrl||``},name:e.name,handle:e.handle},size:`xs`}),(0,j.jsx)(`span`,{className:`ml-2 line-clamp-1 text-base font-semibold group-hover/item:underline dark:text-white`,children:e.name}),(0,j.jsx)(`span`,{className:`ml-1 line-clamp-1 text-base text-gray-700 dark:text-gray-600`,children:e.handle})]}),t.type===`follow`&&!e.followedByMe&&e.handle&&(0,j.jsx)(f,{following:!1,handle:e.handle,variant:`link`})]},e.id))})})]})}),(0,j.jsxs)(P.Content,{children:[(0,j.jsx)(`div`,{children:I?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(p,{}),(0,j.jsx)(p,{className:`w-full max-w-60`})]}):(0,j.jsxs)(`div`,{className:`flex justify-between`,children:[(0,j.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,j.jsx)(`span`,{className:`truncate`,children:(0,j.jsx)(R,{group:t})}),t.actors.length<2&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(`span`,{className:`mt-px text-[8px] text-gray-700 dark:text-gray-600`,children:`•`}),(0,j.jsx)(`span`,{className:`mt-0.5 text-sm text-gray-700 dark:text-gray-600`,children:_(t,!1)})]})]}),t.actors.length===1&&(t.type===`follow`||t.type===`reply`||t.type===`mention`)&&!t.actors[0].followedByMe&&t.actors[0].handle&&(0,j.jsx)(f,{following:!1,handle:t.actors[0].handle,variant:`link`})]})}),(t.type===`reply`&&t.inReplyTo||t.type===`mention`||t.type===`like`&&!t.post?.name&&t.post?.content||t.type===`repost`&&!t.post?.name&&t.post?.content)&&(t.type!==`reply`&&t.type!==`mention`?(0,j.jsxs)(`div`,{className:`ap-note-content mt-0.5 line-clamp-1 text-sm text-pretty text-gray-700 dark:text-gray-600`,children:[t.post?.type===`article`&&t.post?.title&&(0,j.jsxs)(j.Fragment,{children:[t.post.title,` — `]}),(0,j.jsx)(`span`,{dangerouslySetInnerHTML:{__html:T(S(t.post?.content||``))}})]}):(0,j.jsx)(j.Fragment,{children:(0,j.jsxs)(`div`,{className:`mt-2.5 rounded-md bg-gray-100 px-5 py-[14px] group-hover:bg-gray-200 dark:bg-gray-950/30 group-hover:dark:bg-black/40`,children:[(0,j.jsx)(z,{className:`ap-note-content text-pretty`,content:t.post?.content||``,stripTags:[`a`]}),t.post&&t.post.attachments&&t.post.attachments.length>0&&(0,j.jsx)(`div`,{className:`notification-attachments mb-1 [&_.attachment-gallery]:flex [&_.attachment-gallery]:flex-wrap [&_img]:aspect-square [&_img]:max-w-[calc(20%-6.4px)]`,children:w({...t.post,type:`Note`,attachment:t.post.attachments})})]})})),(t.type===`reply`&&t.post||t.type===`mention`)&&(0,j.jsx)(`div`,{className:`mt-1.5`,children:(0,j.jsx)(g,{actor:{...t.actors[0],icon:{url:t.actors[0].avatarUrl||``},id:t.actors[0].url,preferredUsername:t.actors[0].handle?.replace(/^@([^@]+)@.*$/,`$1`)||`unknown`},buttonClassName:`hover:bg-gray-200`,commentCount:t.post.replyCount||0,layout:`notification`,likeCount:t.post.likeCount||0,object:{...t.post,liked:t.post.likedByMe,reposted:t.post.repostedByMe},repostCount:t.post.repostCount||0,onLikeClick:i})})]})]}),a<B.length-1&&(0,j.jsx)(`div`,{className:`pl-[52px]`,children:(0,j.jsx)(F,{})})]},t.id||`${t.type}_${a}`))}),(0,j.jsx)(`div`,{ref:H,className:`h-1`}),N&&(0,j.jsx)(`div`,{className:`-mt-4 mb-8 flex flex-col items-center justify-center gap-4 text-center`,children:(0,j.jsx)(O,{size:`md`})})]})]})})};export{B as default};
@@ -1 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{t as n}from"./jsx-runtime-CtMZ-PAS.js";import{t as r}from"./use-tinybird-query-CNCaUn39.js";import{d as i,o as a,s as o,u as s}from"./pagemenu-C4paivNj.js";import{i as c,o as l}from"./post-helpers-C5OQMBoi.js";import{m as u}from"./chunk-KS7C4IRE-DG9HTHQ3.js";import{a as d}from"./router-provider-DcttGCQn.js";import{P as f,Rt as p,Xn as m,Zn as h,jt as g,t as _,wt as v,zt as y}from"./button-DiwO9Rof.js";import{a as b,n as x,o as ee,r as te}from"./links-CfAB2Yeq.js";import{t as S}from"./gh-chart-DdBGmBS8.js";import{n as C,r as ne,t as re}from"./post-analytics-header-DAQep1VQ.js";import{c as w,l as T,n as E,o as ie,r as ae,s as D,t as O,u as k}from"./data-list-D3nkd86L.js";import{t as A}from"./empty-indicator-Cl63eDpB.js";import{An as j,Mn as M,On as N,dr as oe,fr as se,g as ce,lr as P,mr as le,oi as F}from"./index-BMhs4O3N.js";import{n as I,r as L,t as R}from"./kpi-card-Fr_HJH78.js";import{t as ue}from"./gift-links-bR_JDdWo.js";import{o as de}from"./constants-BlvYJTqz.js";import{n as z}from"./post-analytics-context-Dy17HR1_.js";import{a as B,n as V,r as H,t as U}from"./kpi-card-B2y2dMMS.js";import{r as fe,t as pe}from"./gift-link-modal-CSgyxenA.js";import{centsToDollars as me,n as he,t as ge}from"./growth-IkQZ1ZV9.js";import{i as W,t as _e}from"./kpis-BTZ8cyw-.js";var G=e(t(),1),K=n(),ve=({post:e,isNewsletterStatsLoading:t,isWebShown:n})=>{let{postId:r}=u(),c=d(),l=(0,G.useMemo)(()=>{let t=e.email?.opened_count||0,n=e.email?.email_count||0,r=e.count?.clicks||0;return{opened:t,clicked:r,openedRate:n>0?t/n:0,clickedRate:n>0?r/n:0,sent:n}},[e]),{data:f}=x({searchParams:{filter:`post_id:'${r}'`}}),p=(0,G.useMemo)(()=>b(f),[f]),y=[{datatype:`Clicked`,value:l.clickedRate,fill:`url(#gradientTeal)`,color:`var(--chart-teal)`},{datatype:`Opened`,value:l.openedRate,fill:`url(#gradientBlue)`,color:`var(--chart-blue)`}],S={percentage:{label:`Opened`},Average:{label:`Clicked`},"This newsletter":{label:`Opened`}},C=e.email_only||!n;return(0,K.jsxs)(a,{className:`group/datalist overflow-hidden ${C&&`col-span-2`}`,children:[(0,K.jsxs)(`div`,{className:`relative flex items-center justify-between gap-6`,children:[(0,K.jsx)(s,{children:(0,K.jsxs)(i,{className:`flex items-center gap-1.5 text-lg`,children:[(0,K.jsx)(v,{size:16,strokeWidth:1.5}),`Newsletter performance`]})}),(0,K.jsx)(_,{className:`absolute right-6 translate-x-10 opacity-0 transition-all duration-300 group-hover/datalist:translate-x-0 group-hover/datalist:opacity-100 focus-visible:translate-x-0 focus-visible:opacity-100`,size:`sm`,variant:`outline`,onClick:()=>{c(`/posts/analytics/${r}/newsletter`)},children:`View more`})]}),t?(0,K.jsx)(o,{children:(0,K.jsx)(`div`,{className:`mx-auto flex min-h-[250px] items-center justify-center xl:size-full`,children:(0,K.jsx)(N,{})})}):(0,K.jsxs)(o,{className:`${C&&`grid grid-cols-2`}`,children:[(0,K.jsxs)(`div`,{className:`${C&&`border-r pr-6`}`,children:[(0,K.jsxs)(`div`,{className:`grid grid-cols-2 gap-6`,children:[(0,K.jsx)(R,{className:`group relative flex grow flex-row items-start justify-between gap-5 border-none px-0 pt-0`,children:(0,K.jsxs)(`div`,{className:`flex grow flex-col gap-1.5 border-none pb-0`,children:[(0,K.jsx)(I,{color:`var(--chart-blue)`,children:`Open rate`}),(0,K.jsx)(L,{value:h(l.openedRate)})]})}),(0,K.jsx)(R,{className:`group relative flex grow flex-row items-start justify-between gap-5 border-none px-0 pt-0`,children:(0,K.jsxs)(`div`,{className:`flex grow flex-col gap-1.5 border-none pb-0`,children:[(0,K.jsx)(I,{color:`var(--chart-teal)`,children:`Click rate`}),(0,K.jsx)(L,{value:h(l.clickedRate)})]})})]}),!C&&(0,K.jsx)(M,{}),(0,K.jsx)(`div`,{className:`mx-auto my-6 h-[240px]`,children:(0,K.jsx)(ee,{className:`pointer-events-none aspect-square h-[240px]`,config:S,data:y,tooltip:!1})})]}),(0,K.jsxs)(`div`,{className:`${C&&`pl-6`}`,children:[!C&&(0,K.jsx)(M,{}),(0,K.jsxs)(`div`,{className:C?``:`pt-3`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-3 ${C?`pb-3`:`py-3`}`,children:[(0,K.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Top clicked links in this email`}),(0,K.jsx)(F,{children:`Members`})]}),p.length>0?(0,K.jsx)(O,{className:``,children:(0,K.jsx)(ae,{children:p.slice(0,C?10:5).map(e=>{let t=l.clicked>0?e.count/l.clicked:0;return(0,K.jsxs)(k,{children:[(0,K.jsx)(E,{style:{width:`${t?Math.round(t*100):0}%`}}),(0,K.jsx)(ie,{children:(0,K.jsxs)(`div`,{className:`flex items-center space-x-2 overflow-hidden`,children:[(0,K.jsx)(g,{className:`shrink-0 text-muted-foreground`,size:16,strokeWidth:1.5}),(0,K.jsx)(`a`,{className:`block truncate font-medium hover:underline`,href:e.link.to,rel:`noreferrer`,target:`_blank`,title:e.link.to,children:te(e.link.to,!0)})]})}),(0,K.jsxs)(D,{children:[(0,K.jsx)(w,{children:m(e.count||0)}),(0,K.jsx)(T,{children:h(t)})]})]},e.link.link_id)})})}):(0,K.jsx)(`div`,{className:`py-20 text-center text-sm text-gray-700`,children:`You have no links in your post.`})]})]})]})]})},ye=({chartData:e,range:t,isLoading:n,visitors:r,sourcesData:c,isNewsletterShown:l=!0})=>{let{postId:f}=u(),h=d(),{data:g}=z(),v=g?.url,y=g?.icon,b=(0,G.useMemo)(()=>c?c.reduce((e,t)=>e+Number(t.visits||0),0):0,[c]);return(0,K.jsx)(K.Fragment,{children:(0,K.jsxs)(a,{className:`group/datalist overflow-hidden ${!l&&`col-span-2`}`,"data-testid":`web-performance`,children:[(0,K.jsxs)(`div`,{className:`relative flex items-center justify-between gap-6`,children:[(0,K.jsx)(s,{children:(0,K.jsxs)(i,{className:`flex items-center gap-1.5 text-lg`,children:[(0,K.jsx)(p,{size:16,strokeWidth:1.5}),`Web performance`]})}),(0,K.jsx)(_,{className:`absolute right-6 translate-x-10 opacity-0 transition-all duration-300 group-hover/datalist:translate-x-0 group-hover/datalist:opacity-100 focus-visible:translate-x-0 focus-visible:opacity-100`,size:`sm`,variant:`outline`,onClick:()=>{h(`/posts/analytics/${f}/web`)},children:`View more`})]}),(0,K.jsxs)(o,{children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(R,{className:`group relative flex grow flex-row items-start justify-between gap-5 border-none px-0 pt-0`,"data-testid":`unique-visitors`,children:(0,K.jsxs)(`div`,{className:`flex grow flex-col gap-1.5 border-none pb-0`,children:[(0,K.jsx)(I,{color:`var(--chart-blue)`,children:`Unique visitors`}),(0,K.jsx)(L,{value:m(r)})]})}),(0,K.jsx)(M,{}),(0,K.jsx)(`div`,{className:`max-h-[288px] py-6 [&_.recharts-cartesian-axis-tick-value]:fill-gray-500`,children:n?(0,K.jsx)(`div`,{className:`flex h-[16vw] min-h-[240px] items-center justify-center`,children:(0,K.jsx)(N,{})}):(0,K.jsx)(S,{className:`aspect-auto h-[240px] w-full`,color:`var(--chart-blue)`,data:e||[],id:`visitors`,range:t,syncId:`overview-charts`})})]}),l&&(0,K.jsxs)(`div`,{className:l?`border-t pt-3`:`-mt-3`,children:[(0,K.jsx)(`div`,{children:(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-3 py-3`,children:[(0,K.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`How readers found this post`}),(0,K.jsx)(F,{children:`Visitors`})]})}),c&&c.length>0?(0,K.jsx)(W,{data:c,range:t,siteIcon:y,siteUrl:v,tableOnly:!0,topSourcesLimit:5,totalVisitors:b}):(0,K.jsx)(A,{className:`h-full py-10`,description:`Once someone visits this post, sources will show here`,title:`No visitors since you published this post`,children:(0,K.jsx)(p,{strokeWidth:1.5})})]})]})]})})},q=()=>{let e=d(),{statsConfig:t,isLoading:n,post:u,isPostLoading:p,postId:h}=z(),{totals:g,isLoading:v,currencySymbol:b}=ge(h),{appSettings:x}=ce(),{emailTrackClicks:ee,emailTrackOpens:te}=x?.analytics||{},S=x?.analytics?.webAnalytics===!0,w=C(u),{token:T,isLoading:E,error:ie}=ue(h,{enabled:w}),{usage:ae,loading:D,error:O}=fe({postUuid:u?.uuid,token:T,tokenLoading:E,tokenError:ie,enabled:w}),[k,A]=(0,G.useState)(!1),M=(0,G.useMemo)(()=>u?.published_at?se(u.published_at):de.ALL_TIME.value,[u?.published_at]),{startDate:F,endDate:I,timezone:L}=oe(M),R=(0,G.useMemo)(()=>{let e={site_uuid:t?.id||``,date_from:P(F),date_to:P(I),timezone:L,post_uuid:``};return!p&&u?.uuid?{...e,post_uuid:u.uuid}:e},[p,u,t?.id,F,I,L]),{data:W,loading:q}=r({endpoint:`api_kpis`,statsConfig:t,params:R}),be=(0,G.useMemo)(()=>W?.length?W.reduce((e,t)=>{let n=Number(t.visits);return e+(isNaN(n)?0:n)},0):0,[W]),J=_e.visits,xe=le(W||[],M,J.dataKey,`sum`)?.map(e=>{let t=Number(e[J.dataKey]);return{date:String(e.date),value:t,formattedValue:J.formatter(t),label:J.label}}),{data:Se,loading:Ce}=r({endpoint:`api_top_sources`,statsConfig:t,params:R}),Y=n||v||p||q,we=p||n||q,X=l(u)&&te&&ee,Z=!u?.email_only&&S,Q=x?.analytics.membersTrackSources,$=!!(w&&u&&x?.analytics.webAnalytics);return(0,G.useEffect)(()=>{!p&&u&&c(u)&&!S&&Q&&e(`/posts/analytics/${h}/growth`,{replace:!0})},[p,u,S,e,h,Q]),p?(0,K.jsx)(N,{}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(re,{currentTab:`Overview`}),(0,K.jsx)(ne,{children:(0,K.jsxs)(`div`,{className:`flex flex-col gap-6 lg:grid lg:grid-cols-2`,children:[Z&&(0,K.jsx)(ye,{chartData:xe,isLoading:we||Y||Ce,isNewsletterShown:X,range:M,sourcesData:Se,visitors:be}),X&&(0,K.jsx)(ve,{isNewsletterStatsLoading:p,isWebShown:Z,post:u}),(Q||$)&&(0,K.jsxs)(`div`,{className:`col-span-2 flex flex-col gap-6 lg:grid lg:grid-cols-3`,children:[Q&&(0,K.jsxs)(a,{className:`group overflow-hidden p-0 ${$?`lg:col-span-2`:`lg:col-span-3`}`,"data-testid":`growth`,children:[(0,K.jsxs)(`div`,{className:`relative flex items-center justify-between gap-6`,children:[(0,K.jsx)(s,{children:(0,K.jsxs)(i,{className:`flex items-center gap-1.5 text-lg`,children:[(0,K.jsx)(f,{size:16,strokeWidth:1.5}),`Growth`]})}),(0,K.jsx)(_,{className:`absolute right-6 translate-x-10 opacity-0 transition-all duration-200 group-hover:translate-x-0 group-hover:opacity-100 focus-visible:translate-x-0 focus-visible:opacity-100`,size:`sm`,variant:`outline`,onClick:()=>{e(`/posts/analytics/${h}/growth`)},children:`View more`})]}),(0,K.jsx)(o,{className:`flex flex-col gap-6 px-0 md:grid md:grid-cols-3 md:items-stretch md:gap-0`,children:Y?Array.from({length:3},(e,t)=>(0,K.jsxs)(`div`,{className:`h-[98px] gap-1 border-r px-6 py-5 last:border-r-0`,children:[(0,K.jsx)(j,{className:`w-2/3`}),(0,K.jsx)(j,{className:`h-7 w-12`})]},t)):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(U,{className:`grow gap-1 py-0`,children:[(0,K.jsx)(H,{children:`Free members`}),(0,K.jsx)(V,{children:(0,K.jsx)(B,{className:`text-[2.2rem]`,children:m(g?.free_members||0)})})]}),x?.paidMembersEnabled&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(U,{className:`grow gap-1 py-0`,children:[(0,K.jsx)(H,{children:`Paid members`}),(0,K.jsx)(V,{children:(0,K.jsx)(B,{className:`text-[2.2rem]`,children:m(g?.paid_members||0)})})]}),(0,K.jsxs)(U,{className:`grow gap-1 py-0`,children:[(0,K.jsx)(H,{children:`MRR impact`}),(0,K.jsx)(V,{children:(0,K.jsxs)(B,{className:`text-[2.2rem]`,children:[b,m(me(g?.mrr||0))]})})]})]})]})})]}),$&&(0,K.jsxs)(a,{className:`group/datalist overflow-hidden ${Q?`lg:col-span-1`:`lg:col-span-3`}`,"data-testid":`gift-link-card`,children:[(0,K.jsxs)(`div`,{className:`relative flex items-center justify-between gap-6`,children:[(0,K.jsx)(s,{children:(0,K.jsxs)(i,{className:`flex items-center gap-1.5 text-lg`,children:[(0,K.jsx)(y,{size:16,strokeWidth:1.5}),`Gift link`]})}),(0,K.jsx)(_,{className:`absolute right-6 translate-x-10 opacity-0 transition-all duration-300 group-hover/datalist:translate-x-0 group-hover/datalist:opacity-100 focus-visible:translate-x-0 focus-visible:opacity-100`,size:`sm`,variant:`outline`,onClick:()=>A(!0),children:`Share`})]}),!D&&!O&&(0,K.jsxs)(o,{className:`flex flex-col gap-1`,children:[(0,K.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:`Visitors`}),(0,K.jsx)(`span`,{className:`text-[2.2rem] leading-none font-semibold`,"data-testid":`gift-link-card-visitors`,children:m(ae?.visits??0)})]})]})]}),!Z&&!X&&!Q&&!$&&(0,K.jsx)(he,{className:`col-span-2 py-20`})]})}),$&&(0,K.jsx)(pe,{open:k,postId:h,source:`gift-link-card`,onOpenChange:A},h)]})};export{q as default};
@@ -1 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{t as n}from"./jsx-runtime-CtMZ-PAS.js";import{t as r}from"./use-tinybird-query-CNCaUn39.js";import{$t as i,Kn as a,Wn as o,t as s}from"./button-DiwO9Rof.js";import{Dr as c,Pr as l,jr as u,kr as d}from"./index-BMhs4O3N.js";var f=e(t(),1),p=(e={})=>{let{postUuid:t,statsConfig:n,enabled:i=!0}=e,[a,o]=(0,f.useState)(0),[s,c]=(0,f.useState)(null);(0,f.useEffect)(()=>{if(!i)return;let e=setInterval(()=>{o(e=>e+1)},6e4);return()=>clearInterval(e)},[i]);let{data:l,loading:u,error:d}=r({statsConfig:n,endpoint:`api_active_visitors`,params:{site_uuid:n?.id||``,...t&&{post_uuid:t},_refresh:a.toString()},enabled:i}),p=l?.[0]?.active_visitors;return(0,f.useEffect)(()=>{i&&p!==void 0&&typeof p==`number`&&c(p)},[i,p]),{activeVisitors:i&&s||0,isLoading:i&&u&&s===null,error:i?d:null}},m=n(),h=f.createContext(`outline`),g=o(`flex flex-col bg-card text-card-foreground`,{variants:{variant:{outline:`rounded-xl border transition-all hover:shadow-xs`,plain:``}},defaultVariants:{variant:`outline`}}),_=f.forwardRef(({variant:e=`outline`,className:t,...n},r)=>(0,m.jsx)(h.Provider,{value:e,children:(0,m.jsx)(`div`,{ref:r,className:a(g({variant:e,className:t})),...n})}));_.displayName=`Card`;var v=o(`flex flex-col gap-y-1.5`,{variants:{variant:{outline:`p-6`,plain:`border-b py-5`}},defaultVariants:{variant:`outline`}}),y=f.forwardRef(({className:e,...t},n)=>(0,m.jsx)(`div`,{ref:n,className:a(v({variant:f.useContext(h),className:e})),...t}));y.displayName=`CardHeader`;var b=f.forwardRef(({className:e,...t},n)=>(0,m.jsx)(`div`,{ref:n,className:a(`leading-none font-semibold tracking-tight`,e),...t}));b.displayName=`CardTitle`;var x=f.forwardRef(({className:e,...t},n)=>(0,m.jsx)(`div`,{ref:n,className:a(`text-sm text-muted-foreground`,e),...t}));x.displayName=`CardDescription`;var S=o(``,{variants:{variant:{outline:`p-6 pt-0`,plain:`border-b`}},defaultVariants:{variant:`outline`}}),C=f.forwardRef(({className:e,...t},n)=>(0,m.jsx)(`div`,{ref:n,className:a(S({variant:f.useContext(h),className:e})),...t}));C.displayName=`CardContent`;var w=o(`flex w-full items-center`,{variants:{variant:{outline:`p-6 pt-0`,plain:`py-5`}},defaultVariants:{variant:`outline`}}),T=f.forwardRef(({className:e,...t},n)=>(0,m.jsx)(`div`,{className:`flex grow items-end`,children:(0,m.jsx)(`div`,{ref:n,className:a(w({variant:f.useContext(h),className:e})),...t})}));T.displayName=`CardFooter`;var E=f.forwardRef(({className:e,...t},n)=>(0,m.jsx)(`div`,{ref:n,className:a(`flex flex-col rounded-xl border bg-card p-6 text-card-foreground transition-all hover:shadow-xs`,e),...t}));E.displayName=`EmptyCard`;var D=f.forwardRef(({children:e,className:t,...n},r)=>(0,m.jsx)(`div`,{ref:r,className:a(`mt-3 flex items-center gap-2 [grid-area:actions] lg:mt-0`,t),"data-navbar":`navbar-actions`,...n,children:e}));D.displayName=`NavbarActions`;var O=f.forwardRef(({children:e,className:t,...n},r)=>(0,m.jsx)(`div`,{ref:r,className:a(`[grid-area:navigation]`,t),"data-navbar":`navbar-navigation`,...n,children:e}));O.displayName=`NavbarNavigation`;var k=f.forwardRef(({children:e,className:t,...n},r)=>(0,m.jsx)(`div`,{ref:r,className:a(`grid grid-cols-[1fr] justify-between gap-x-5 gap-y-2 border-b [grid-template-areas:'navigation''actions''subactions'] lg:grid-cols-[1fr_auto] lg:[grid-template-areas:'navigation_actions''subactions_subactions']`,t),"data-navbar":`navbar`,...n,children:e}));k.displayName=`Navbar`;var A=f.createContext(null),j=f.forwardRef(({children:e,responsive:t=!1,value:n,defaultValue:r,onValueChange:o,className:p,...h},g)=>{let[_,v]=f.useState(f.Children.count(e)),[y,b]=f.useState(0),x=f.useRef(null),S=f.useRef(null);f.useLayoutEffect(()=>{if(!t||!x.current||!S.current){v(f.Children.count(e));return}requestAnimationFrame(()=>{if(!x.current||!S.current)return;let e=x.current,t=S.current,n=e.clientWidth,r=Array.from(t.children),i=0;for(let e=0;e<r.length;e++){let t=r[e].getBoundingClientRect().width;i+=(e>0?6:0)+t}if(i<=n-8){v(r.length);return}let a=0,o=0;for(let e=0;e<r.length;e++){let t=r[e].getBoundingClientRect().width,i=a+(e>0?6:0)+t;if(i+60<=n)a=i,o+=1;else break}v(o)})},[t,e,y]),f.useLayoutEffect(()=>{if(!t||!x.current)return;let e=new ResizeObserver(()=>{b(e=>e+1)});return e.observe(x.current),()=>e.disconnect()},[t]);let C=f.Children.toArray(e),w=C.slice(0,_),T=C.slice(_),E=T.length>0,D=T.find(e=>f.isValidElement(e)&&e.props?.value===n);return t?(0,m.jsxs)(A.Provider,{value:{defaultValue:r},children:[(0,m.jsx)(`div`,{ref:S,"aria-hidden":`true`,className:`pointer-events-none absolute flex items-center gap-2 opacity-0`,style:{top:-9999,left:-9999},children:e}),(0,m.jsxs)(`div`,{ref:x,className:`flex w-full min-w-0 flex-1 items-center gap-2`,children:[(0,m.jsx)(`div`,{ref:g,className:a(`flex min-w-0 items-center gap-2`,p),...h,children:w}),E&&(0,m.jsxs)(c,{children:[(0,m.jsx)(l,{asChild:!0,children:(0,m.jsx)(s,{className:a(`h-[30px] flex-shrink-0 px-3 py-2`,D&&`bg-accent text-accent-foreground`),variant:`ghost`,children:D?(0,m.jsx)(`span`,{className:`max-w-[100px] truncate`,children:D.props.children}):(0,m.jsx)(i,{className:`size-6`})})}),(0,m.jsx)(d,{align:`end`,children:T.map((e,t)=>!f.isValidElement(e)||!e.props?.value?null:(0,m.jsx)(u,{className:a(e.props.value===n&&`bg-accent text-accent-foreground`),onClick:()=>{o?.(e.props.value),e.props.onClick?.()},children:e.props.children},e.props.value||t))})]})]})]}):(0,m.jsx)(A.Provider,{value:{defaultValue:r},children:(0,m.jsx)(`div`,{ref:g,className:a(`flex items-center gap-2`,p),...h,children:e})})});j.displayName=`PageMenu`;var M=f.forwardRef(({children:e,value:t,className:n,...r},i)=>{let o=f.useContext(A)?.defaultValue===t;return(0,m.jsx)(s,{ref:i,className:a(`relative gap-1.5 px-3 text-control font-medium text-text-secondary hover:text-foreground focus-visible:ring-0`,`data-[state=active]:bg-muted-foreground/10 data-[state=active]:text-foreground`,`dark:hover:bg-tab-hover dark:data-[state=active]:bg-tab-active dark:data-[state=active]:hover:bg-tab-active`,n),"data-state":o?`active`:void 0,variant:`ghost`,...r,children:e})});M.displayName=`PageMenuItem`;export{O as a,x as c,b as d,E as f,D as i,T as l,M as n,_ as o,p,k as r,C as s,j as t,y as u};
@@ -1 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{t as n}from"./jsx-runtime-CtMZ-PAS.js";import{n as r}from"./posts-D_gBhqmK.js";import{t as i}from"./analytics-53FOa2wq.js";import{r as a}from"./chunk-KS7C4IRE-DG9HTHQ3.js";import{t as o}from"./post-share-modal-59Ujf4t1.js";import{n as s}from"./post-analytics-context-Dy17HR1_.js";import{t as c}from"./main-layout-B-K8KliJ.js";var l=e(t(),1),u=n(),d=({children:e})=>(0,u.jsx)(c,{children:(0,u.jsx)(`div`,{className:`grid w-full grow`,children:(0,u.jsx)(`div`,{className:`flex h-full flex-col px-8`,children:e})})}),f=()=>{let[e,t]=(0,l.useState)(!1),[n,i]=(0,l.useState)(null),[a,o]=(0,l.useState)(null),{site:c}=s(),{data:u}=r({searchParams:n?{filter:`id:${n.id}`,include:`authors,newsletter,email`}:{},enabled:!!n}),{data:d}=r({searchParams:{filter:`status:[published,sent]`,limit:`1`,fields:`id`},enabled:!!n}),f=u?.posts?.[0],p=e=>`${e.toLocaleString()} subscriber${e===1?``:`s`}`,m=e=>new Date(e).toLocaleTimeString(`en-US`,{hour:`2-digit`,minute:`2-digit`,hour12:!1}),h=e=>e?.map(e=>e.name).join(`, `)||``,g=(0,l.useMemo)(()=>{if(!f)return null;let n=!!a,r=()=>{let e=[];if(f.email_only?e.push(`Your email was sent to`):f.email?.email_count?e.push(`Your post was published on your site and sent to`):e.push(`Your post was published on your site`),f.email?.email_count){let t=p(f.email.email_count);e.push(` `),e.push(l.createElement(`strong`,{key:`subscriber-count`},t)),f.newsletter?.name&&(e.push(` of `),e.push(l.createElement(`strong`,{key:`newsletter-name`},f.newsletter.name))),e.push(`,`)}if(f.published_at){let t=new Date(f.published_at);t.toDateString()===new Date().toDateString()?(e.push(` `),e.push(l.createElement(`strong`,{key:`today`},`today`))):(e.push(` on `),e.push(l.createElement(`strong`,{key:`date`},t.toLocaleDateString(`en-US`,{month:`long`,day:`numeric`})))),e.push(` at `),e.push(l.createElement(`strong`,{key:`time`},m(f.published_at)))}return e.push(`.`),l.createElement(`span`,{},...e)},s=()=>{t(!1),i(null),o(null)};return{open:e,onOpenChange:e=>{e||s()},emailOnly:f.email_only,postURL:f.url||``,primaryTitle:`Boom! It's out there.`,secondaryTitle:n&&a?`That's ${a.toLocaleString()} post${a===1?``:`s`} published.`:`Spread the word!`,description:r(),featureImageURL:f.feature_image||``,postTitle:f.title||``,postExcerpt:f.excerpt||``,faviconURL:c?.icon||``,siteTitle:c?.title||``,author:h(f.authors),onClose:s}},[f,e,a,c?.title]);return(0,l.useEffect)(()=>{let e=()=>{try{let e=localStorage.getItem(`ghost-last-published-post`);if(e){let n=JSON.parse(e);i(n),t(!0),localStorage.removeItem(`ghost-last-published-post`)}}catch{}};e();let n=setTimeout(e,100);return()=>clearTimeout(n)},[]),(0,l.useEffect)(()=>{d?.meta?.pagination?.total&&o(d.meta.pagination.total)},[d]),{isModalOpen:e,post:f,postCount:a,showPostCount:!!a,closeModal:()=>{t(!1),i(null),o(null)},modalProps:g}},p=()=>{let{isModalOpen:e,modalProps:t}=f(),n=e&&!!t;return(0,l.useEffect)(()=>{n&&i(`Share Modal Opened`,{giftLinkShown:!1,source:`publish-flow`})},[n]),(0,u.jsxs)(d,{children:[(0,u.jsx)(a,{}),e&&t&&(0,u.jsx)(o,{...t})]})};export{p as default};
@@ -1 +0,0 @@
1
- import{o as e,r as t}from"./rolldown-runtime-DAXXjFlN.js";import{t as n}from"./react-Bb3IsNbi.js";import{t as r}from"./jsx-runtime-CtMZ-PAS.js";import{t as i}from"./use-tinybird-token-1T80Odca.js";import{n as a}from"./posts-D_gBhqmK.js";import{m as o}from"./chunk-KS7C4IRE-DG9HTHQ3.js";import{hn as s,ln as c,pi as l}from"./index-BMhs4O3N.js";import{i as u,o as d}from"./constants-BlvYJTqz.js";var f=t({default:()=>_,useGlobalData:()=>g}),p=e(n(),1),m=r(),h=(0,p.createContext)(void 0),g=()=>{let e=(0,p.useContext)(h);if(!e)throw Error(`useGlobalData must be used within a PostAnalyticsProvider`);return e},_=({children:e})=>{let{postId:t}=o();if(!t)throw Error(`Post ID is required for PostAnalyticsProvider`);let n=l(),r=c(),[f,g]=(0,p.useState)(d.LAST_30_DAYS.value),_=s(),v=!!n.data?.config?.stats,y=i({enabled:v}),{data:{posts:[b]}={posts:[]},isLoading:x}=a({searchParams:{filter:`id:${t}`,include:u}}),S=[n,r,_],C=S.map(e=>e.error).find(Boolean),w=v?y.error:null,T=C||w,E=S.some(e=>e.isLoading),D=v?y.isLoading:!1,O=E||D;if(T)throw T;let k=r.data?.site?{url:r.data.site.url,icon:r.data.site.icon,title:r.data.site.title}:void 0;return(0,m.jsx)(h.Provider,{value:{data:n.data?.config,site:k,statsConfig:n.data?.config?.stats,tinybirdToken:y.token,isLoading:O,range:f,setRange:g,settings:_.data?.settings||[],postId:t,post:b,isPostLoading:x},children:e})};export{g as n,f as t};
@@ -1 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{a as n,p as r}from"./hooks-tBACnBdQ.js";import{t as i}from"./jsx-runtime-CtMZ-PAS.js";import{t as a}from"./dist-B7kX8alP.js";import{n as o,p as ee,r as te,t as ne}from"./pagemenu-C4paivNj.js";import{i as re}from"./posts-D_gBhqmK.js";import{t as s}from"./analytics-53FOa2wq.js";import{i as c,n as l,o as ie,r as ae}from"./post-helpers-C5OQMBoi.js";import{a as oe}from"./router-provider-DcttGCQn.js";import{$t as u,I as d,Jn as f,Kn as p,Qt as se,S as ce,Xn as le,it as ue,mn as m,qn as h,t as g}from"./button-DiwO9Rof.js";import{r as _}from"./users-Y8qhvF1q.js";import{Ar as v,Bn as y,Dr as b,Gn as x,Hn as de,Kn as fe,Mr as pe,Pr as me,Un as he,Vn as ge,Wn as _e,g as ve,jr as S,kr as C,ni as w,zn as T}from"./index-BMhs4O3N.js";import{t as E}from"./post-share-modal-59Ujf4t1.js";import{n as D}from"./post-analytics-context-Dy17HR1_.js";import{i as O,t as k}from"./gift-link-modal-CSgyxenA.js";import{t as A}from"./get-site-timezone-HgL0jI_F.js";var j=e(t(),1),M=i(),N=j.forwardRef(({...e},t)=>(0,M.jsx)(`nav`,{ref:t,"aria-label":`breadcrumb`,...e}));N.displayName=`Breadcrumb`;var P=j.forwardRef(({className:e,...t},n)=>(0,M.jsx)(`ol`,{ref:n,className:p(`flex h-(--control-height) flex-wrap items-center gap-1.5 text-lg font-medium break-words text-muted-foreground sm:gap-2.5`,e),...t}));P.displayName=`BreadcrumbList`;var F=j.forwardRef(({className:e,...t},n)=>(0,M.jsx)(`li`,{ref:n,className:p(`inline-flex items-center gap-1.5`,e),...t}));F.displayName=`BreadcrumbItem`;var I=j.forwardRef(({asChild:e,className:t,...n},r)=>(0,M.jsx)(e?a:`a`,{ref:r,className:p(`inline-flex items-center gap-1 transition-colors hover:text-foreground`,t),...n}));I.displayName=`BreadcrumbLink`;var L=j.forwardRef(({className:e,...t},n)=>(0,M.jsx)(`span`,{ref:n,"aria-current":`page`,"aria-disabled":`true`,className:p(`font-medium text-foreground`,e),role:`link`,...t}));L.displayName=`BreadcrumbPage`;var R=({children:e,className:t,...n})=>(0,M.jsx)(`li`,{"aria-hidden":`true`,className:p(`[&>svg]:size-3.5`,t),role:`presentation`,...n,children:e??(0,M.jsx)(m,{})});R.displayName=`BreadcrumbSeparator`;var z=({className:e,...t})=>(0,M.jsxs)(`span`,{"aria-hidden":`true`,className:p(`flex size-9 items-center justify-center`,e),role:`presentation`,...t,children:[(0,M.jsx)(u,{className:`size-4`}),(0,M.jsx)(`span`,{className:`sr-only`,children:`More`})]});z.displayName=`BreadcrumbElipssis`;var B=(0,j.forwardRef)(({children:e,className:t,...n},r)=>(0,M.jsx)(`section`,{ref:r,className:p(`flex size-full grow flex-col gap-6 py-8`,t),...n,children:e}));B.displayName=`PostAnalyticsContent`;var V=e=>{let{data:t}=n();return!e||!t?!1:e.status===`published`&&!!e.visibility&&e.visibility!==`public`&&_(t)},H=({currentTab:e,children:t})=>{let n=oe(),{fromAnalytics:i,appSettings:a}=ve(),{mutateAsync:p}=re(),m=r(),[_,z]=(0,j.useState)(!1),[B,H]=(0,j.useState)(!1),[ye,U]=(0,j.useState)(!1),{settings:be,site:W,statsConfig:xe,post:G,isPostLoading:K,postId:q}=D(),J=V(G),Y=A(be),X=(0,j.useRef)(!1);(0,j.useEffect)(()=>{if(!B){X.current=!1;return}X.current||(X.current=!0,s(`Share Modal Opened`,{giftLinkShown:J,source:`post-analytics`}))},[B,J]);let{activeVisitors:Z,isLoading:Q}=ee({postUuid:G?.uuid,statsConfig:xe,enabled:a?.analytics?.webAnalytics??!1}),$=(0,j.useMemo)(()=>{if(!G)return[];let e=[];return c(G)&&!a?.analytics.webAnalytics||(e.push(`Overview`),!G.email_only&&a?.analytics.webAnalytics&&e.push(`Web`)),ie(G)&&e.push(`Newsletter`),a?.analytics.membersTrackSources&&e.push(`Growth`),e},[G,a?.analytics.webAnalytics,a?.analytics.membersTrackSources]);return(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(`header`,{className:`z-50 -mx-8 bg-white/70 backdrop-blur-md dark:bg-background`,children:(0,M.jsx)(`div`,{className:`relative flex min-h-[102px] w-full items-start justify-between gap-5 px-8 pt-8 pb-0`,"data-header":`header`,children:(0,M.jsxs)(`div`,{className:`flex w-full flex-col gap-6`,children:[(0,M.jsxs)(`div`,{className:`flex w-full flex-col justify-between md:flex-row md:items-center`,children:[(0,M.jsx)(N,{children:(0,M.jsxs)(P,{children:[i?(0,M.jsx)(F,{children:(0,M.jsx)(I,{className:`cursor-pointer leading-[24px]`,onClick:()=>n(`/analytics/`,{crossApp:!0}),children:`Analytics`})}):(0,M.jsx)(F,{children:(0,M.jsx)(I,{className:`cursor-pointer leading-[24px]`,onClick:()=>n(`/posts/`,{crossApp:!0}),children:`Posts`})}),(0,M.jsx)(R,{}),(0,M.jsx)(F,{children:(0,M.jsx)(L,{className:`leading-[24px]`,children:`Post analytics`})})]})}),(0,M.jsxs)(`div`,{className:`flex w-full items-center gap-2 md:w-auto`,children:[a?.analytics.webAnalytics&&!G?.email_only&&(0,M.jsx)(`div`,{className:`mr-3 flex grow items-center gap-2 md:grow-0`,children:(0,M.jsxs)(`div`,{className:`flex items-center gap-2 text-muted-foreground`,title:`Active readers in the last 5 minutes · Updates every 60 seconds`,children:[(0,M.jsxs)(`span`,{children:[Q?``:le(Z),` reading now`]}),(0,M.jsx)(`div`,{className:`size-2 rounded-full ${Q?`animate-pulse bg-muted`:Z?`bg-green-500`:`border border-muted-foreground`}`})]})}),!K&&(0,M.jsxs)(M.Fragment,{children:[!G?.email_only&&(0,M.jsx)(E,{author:G?.authors?.[0]?.name||``,canShareAsGift:J,description:``,faviconURL:W?.icon||``,featureImageURL:G?.feature_image,giftAccessLabel:O(G?.visibility),open:B,postExcerpt:G?.excerpt||``,postTitle:G?.title,postURL:G?.url,siteTitle:W?.title||``,onClose:()=>H(!1),onOpenChange:H,onShareAsGift:()=>{H(!1),U(!0)},children:(0,M.jsxs)(g,{variant:`outline`,onClick:()=>H(!0),children:[(0,M.jsx)(d,{}),` Share`]})}),(0,M.jsxs)(b,{children:[(0,M.jsx)(me,{asChild:!0,children:(0,M.jsx)(g,{variant:`outline`,children:(0,M.jsx)(u,{})})}),(0,M.jsxs)(C,{align:`end`,children:[(0,M.jsxs)(v,{children:[(0,M.jsx)(S,{asChild:!0,children:(0,M.jsxs)(`a`,{href:G?.url,rel:`noopener noreferrer`,target:`_blank`,children:[(0,M.jsx)(se,{}),`View in browser`]})}),(0,M.jsxs)(S,{onClick:()=>{n(`/editor/post/${q}`,{crossApp:!0})},children:[(0,M.jsx)(ue,{}),`Edit post`]})]}),(0,M.jsx)(pe,{}),(0,M.jsx)(v,{children:(0,M.jsxs)(S,{className:`text-destructive focus:text-destructive`,onClick:()=>{G&&z(!0)},children:[(0,M.jsx)(ce,{}),`Delete post`]})})]})]})]})]})]}),!K&&(0,M.jsxs)(`div`,{className:`flex items-start gap-6 md:items-center`,children:[G?.feature_image&&(0,M.jsx)(`div`,{className:`aspect-[16/10] w-full max-w-[100px] rounded-md bg-cover bg-center md:max-w-[132px]`,style:{backgroundImage:`url(${G.feature_image})`}}),(0,M.jsxs)(`div`,{children:[(0,M.jsx)(w,{className:`-ml-px max-w-[920px] indent-0 !text-xl md:leading-[1.2em]`,"data-header":`header-title`,children:G?.title}),G?.published_at&&(0,M.jsxs)(`div`,{className:`mt-0.5 flex items-center justify-start leading-[1.65em] text-muted-foreground`,children:[l(G)&&`Sent on ${h(G.published_at,Y)} at ${f(G.published_at,Y)}`,c(G)&&`Published on your site on ${h(G.published_at,Y)} at ${f(G.published_at,Y)}`,ae(G)&&`Published and sent on ${h(G.published_at,Y)} at ${f(G.published_at,Y)}`]})]})]})]})})}),(0,M.jsxs)(te,{className:`sticky top-0 z-50 -mb-8 transform-gpu flex-col items-start gap-y-0 border-none bg-white/70 py-8 backdrop-blur-md lg:flex-row lg:items-center dark:bg-background`,children:[!K&&(0,M.jsxs)(ne,{className:`min-h-[34px]`,defaultValue:e,responsive:!0,children:[$.includes(`Overview`)&&(0,M.jsx)(o,{value:`Overview`,onClick:()=>{n(`/posts/analytics/${q}`)},children:`Overview`}),$.includes(`Web`)&&(0,M.jsx)(o,{value:`Web`,onClick:()=>{n(`/posts/analytics/${q}/web`)},children:`Web traffic`}),$.includes(`Newsletter`)&&(0,M.jsx)(o,{value:`Newsletter`,onClick:()=>{n(`/posts/analytics/${q}/newsletter`)},children:`Newsletter`}),$.includes(`Growth`)&&(0,M.jsx)(o,{value:`Growth`,onClick:()=>{n(`/posts/analytics/${q}/growth`)},children:`Growth`})]}),t]}),J&&q&&(0,M.jsx)(k,{open:ye,postId:q,source:`share-modal`,onOpenChange:U},q),(0,M.jsx)(T,{open:_,onOpenChange:z,children:(0,M.jsxs)(de,{children:[(0,M.jsxs)(x,{children:[(0,M.jsx)(fe,{children:`Are you sure you want to delete this post?`}),(0,M.jsxs)(he,{children:[`You're about to delete "`,(0,M.jsx)(`strong`,{children:G?.title}),`". This is permanent! We warned you, k?`]})]}),(0,M.jsxs)(_e,{children:[(0,M.jsx)(ge,{children:`Cancel`}),(0,M.jsx)(y,{className:`bg-red-600 text-white hover:bg-red-700`,onClick:async()=>{if(G)try{await p(q),z(!1),n(`/posts/`,{crossApp:!0})}catch(e){m(e)}},children:`Delete`})]})]})})]})};export{V as n,B as r,H as t};
@@ -1,21 +0,0 @@
1
- import { M as e, j as t } from "./jsx-runtime-BfZnKD4L.js";
2
- //#region \0react-dom
3
- var n = /* @__PURE__ */ e({
4
- __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: () => r,
5
- createPortal: () => i,
6
- createRoot: () => a,
7
- default: () => o,
8
- findDOMNode: () => s,
9
- flushSync: () => c,
10
- hydrate: () => l,
11
- hydrateRoot: () => u,
12
- render: () => d,
13
- unmountComponentAtNode: () => f,
14
- unstable_batchedUpdates: () => p,
15
- unstable_renderSubtreeIntoContainer: () => m,
16
- version: () => h
17
- }), r, i, a, o, s, c, l, u, d, f, p, m, h, g = t((() => {
18
- r = ReactDOM.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, i = ReactDOM.createPortal, a = ReactDOM.createRoot, o = ReactDOM, s = ReactDOM.findDOMNode, c = ReactDOM.flushSync, l = ReactDOM.hydrate, u = ReactDOM.hydrateRoot, d = ReactDOM.render, f = ReactDOM.unmountComponentAtNode, p = ReactDOM.unstable_batchedUpdates, m = ReactDOM.unstable_renderSubtreeIntoContainer, h = ReactDOM.version;
19
- }));
20
- //#endregion
21
- export { g as a, c as i, n, i as r, o as t };
@@ -1,154 +0,0 @@
1
- import { E as e, f as t, p as n, t as r } from "./jsx-runtime-BfZnKD4L.js";
2
- import { Nt as i, Pt as a, Vt as o, n as s } from "./button-Dd8Xreln.js";
3
- import { s as c, t as l } from "./shade-app-DLbeExcd-NeEZjE3R.js";
4
- import { c as u, d, f, g as p, h as m, l as h, m as g, p as ee, u as te } from "./dialog-DDkTy_np.js";
5
- //#region ../../node_modules/.pnpm/@radix-ui+react-alert-dialog@1.1.18_@types+react-dom@18.3.7_@types+react@18.3.31__@type_6219ffd5c85ad0b85061ea739c6eab31/node_modules/@radix-ui/react-alert-dialog/dist/index.mjs
6
- n();
7
- var _ = r(), v = "AlertDialog", [y, ne] = i(v, [p]), b = p(), x = (e) => {
8
- let { __scopeAlertDialog: t, ...n } = e, r = b(t);
9
- return /* @__PURE__ */ (0, _.jsx)(u, {
10
- ...r,
11
- ...n,
12
- modal: !0
13
- });
14
- };
15
- x.displayName = v;
16
- var re = "AlertDialogTrigger", ie = t((e, t) => {
17
- let { __scopeAlertDialog: n, ...r } = e, i = b(n);
18
- return /* @__PURE__ */ (0, _.jsx)(m, {
19
- ...i,
20
- ...r,
21
- ref: t
22
- });
23
- });
24
- ie.displayName = re;
25
- var S = "AlertDialogPortal", C = (e) => {
26
- let { __scopeAlertDialog: t, ...n } = e, r = b(t);
27
- return /* @__PURE__ */ (0, _.jsx)(ee, {
28
- ...r,
29
- ...n
30
- });
31
- };
32
- C.displayName = S;
33
- var w = "AlertDialogOverlay", T = t((e, t) => {
34
- let { __scopeAlertDialog: n, ...r } = e, i = b(n);
35
- return /* @__PURE__ */ (0, _.jsx)(f, {
36
- ...i,
37
- ...r,
38
- ref: t
39
- });
40
- });
41
- T.displayName = w;
42
- var E = "AlertDialogContent", [D, O] = y(E), k = t((t, n) => {
43
- let { __scopeAlertDialog: r, children: i, ...s } = t, c = b(r), l = o(n, e(null)), u = e(null);
44
- return /* @__PURE__ */ (0, _.jsx)(D, {
45
- scope: r,
46
- cancelRef: u,
47
- children: /* @__PURE__ */ (0, _.jsx)(te, {
48
- role: "alertdialog",
49
- ...c,
50
- ...s,
51
- ref: l,
52
- onOpenAutoFocus: a(s.onOpenAutoFocus, (e) => {
53
- e.preventDefault(), u.current?.focus({ preventScroll: !0 });
54
- }),
55
- onPointerDownOutside: (e) => e.preventDefault(),
56
- onInteractOutside: (e) => e.preventDefault(),
57
- children: i
58
- })
59
- });
60
- });
61
- k.displayName = E;
62
- var A = "AlertDialogTitle", j = t((e, t) => {
63
- let { __scopeAlertDialog: n, ...r } = e, i = b(n);
64
- return /* @__PURE__ */ (0, _.jsx)(g, {
65
- ...i,
66
- ...r,
67
- ref: t
68
- });
69
- });
70
- j.displayName = A;
71
- var ae = "AlertDialogDescription", M = t((e, t) => {
72
- let { __scopeAlertDialog: n, ...r } = e, i = b(n);
73
- return /* @__PURE__ */ (0, _.jsx)(d, {
74
- ...i,
75
- ...r,
76
- ref: t
77
- });
78
- });
79
- M.displayName = ae;
80
- var oe = "AlertDialogAction", N = t((e, t) => {
81
- let { __scopeAlertDialog: n, ...r } = e, i = b(n);
82
- return /* @__PURE__ */ (0, _.jsx)(h, {
83
- ...i,
84
- ...r,
85
- ref: t
86
- });
87
- });
88
- N.displayName = oe;
89
- var P = "AlertDialogCancel", F = t((e, t) => {
90
- let { __scopeAlertDialog: n, ...r } = e, { cancelRef: i } = O(P, n), a = b(n), s = o(t, i);
91
- return /* @__PURE__ */ (0, _.jsx)(h, {
92
- ...a,
93
- ...r,
94
- ref: s
95
- });
96
- });
97
- F.displayName = P;
98
- var I = x, L = C, R = T, z = k, B = N, V = F, H = j, U = M;
99
- //#endregion
100
- //#region ../shade/es/components/ui/alert-dialog.js
101
- n();
102
- var W = I, G = L, K = t(({ className: e, ...t }, n) => /* @__PURE__ */ (0, _.jsx)(R, {
103
- className: c("fixed inset-0 z-50 transform-gpu bg-black/30 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0 dark:bg-black/60", e),
104
- ...t,
105
- ref: n
106
- }));
107
- K.displayName = R.displayName;
108
- var q = t(({ className: e, ...t }, n) => /* @__PURE__ */ (0, _.jsx)(G, { children: /* @__PURE__ */ (0, _.jsxs)("div", {
109
- className: l,
110
- children: [/* @__PURE__ */ (0, _.jsx)(K, { onClick: (e) => e.stopPropagation() }), /* @__PURE__ */ (0, _.jsx)(z, {
111
- ref: n,
112
- className: c("fixed top-[20%] left-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-20%] gap-6 bg-surface-elevated-2 p-6 shadow-lg duration-200 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=closed]:slide-out-to-top-[18%] data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=open]:slide-in-from-top-[18%] sm:rounded-lg", e),
113
- ...t
114
- })]
115
- }) }));
116
- q.displayName = z.displayName;
117
- var J = ({ className: e, ...t }) => /* @__PURE__ */ (0, _.jsx)("div", {
118
- className: c("flex flex-col gap-y-2 text-center sm:text-left", e),
119
- ...t
120
- });
121
- J.displayName = "AlertDialogHeader";
122
- var Y = ({ className: e, ...t }) => /* @__PURE__ */ (0, _.jsx)("div", {
123
- className: c("flex flex-col-reverse sm:flex-row sm:justify-end sm:gap-2 [&>button]:min-w-20", e),
124
- ...t
125
- });
126
- Y.displayName = "AlertDialogFooter";
127
- var X = t(({ className: e, ...t }, n) => /* @__PURE__ */ (0, _.jsx)(H, {
128
- ref: n,
129
- className: c("text-xl font-semibold", e),
130
- ...t
131
- }));
132
- X.displayName = H.displayName;
133
- var Z = t(({ className: e, ...t }, n) => /* @__PURE__ */ (0, _.jsx)(U, {
134
- ref: n,
135
- className: c("text-base", e),
136
- ...t
137
- }));
138
- Z.displayName = U.displayName;
139
- var Q = t(({ className: e, ...t }, n) => /* @__PURE__ */ (0, _.jsx)(B, {
140
- ref: n,
141
- className: c(s(), e),
142
- ...t
143
- }));
144
- Q.displayName = B.displayName;
145
- var $ = t(({ className: e, ...t }, n) => /* @__PURE__ */ (0, _.jsx)(V, {
146
- ref: n,
147
- className: c(s({ variant: "outline" }), "mt-2 sm:mt-0", e),
148
- ...t
149
- }));
150
- $.displayName = V.displayName;
151
- //#endregion
152
- export { Z as a, X as c, q as i, Q as n, Y as o, $ as r, J as s, W as t };
153
-
154
- //# sourceMappingURL=alert-dialog-DBJeQQTK.js.map
@@ -1,22 +0,0 @@
1
- import { p as e, t, u as n, v as r } from "./jsx-runtime-BfZnKD4L.js";
2
- //#region ../admin-x-framework/dist/providers/app-provider.js
3
- e();
4
- var i = t(), a = n(void 0), o = ({ appSettings: e, children: t }) => {
5
- let n = {
6
- appSettings: e,
7
- externalNavigate: (e) => {
8
- window.location.href = e;
9
- }
10
- };
11
- return /* @__PURE__ */ (0, i.jsx)(a.Provider, {
12
- value: n,
13
- children: t
14
- });
15
- }, s = () => {
16
- let e = r(a);
17
- return e ? e.appSettings?.analytics?.webAnalytics === !0 : !0;
18
- };
19
- //#endregion
20
- export { o as n, s as r, a as t };
21
-
22
- //# sourceMappingURL=app-provider-BJr9fdEC.js.map
@@ -1,83 +0,0 @@
1
- import { F as e } from "./jsx-runtime-BfZnKD4L.js";
2
- import { c as t, g as n } from "./shade-app-DLbeExcd-NeEZjE3R.js";
3
- //#region ../shade/es/lib/app-utils.js
4
- var r = /* @__PURE__ */ e(n(), 1), i = (e) => e.format("YYYY-MM-DD"), a = (e) => {
5
- if (!e.length) return {
6
- min: 0,
7
- max: 1
8
- };
9
- let t = e.map((e) => Number(e.value)), n = Math.min(...t), r = Math.max(...t);
10
- if (n === r) {
11
- let e = n;
12
- return {
13
- min: Math.max(0, e - 1),
14
- max: e + 1
15
- };
16
- }
17
- let i = .02;
18
- n = Math.max(0, n - n * i), r += r * i;
19
- let a = r - n, o = 10 ** Math.floor(Math.log10(a)), s = Math.round(r / o) * o;
20
- r = s < r ? Math.ceil(r / o) * o : s;
21
- let c = Math.round(n / o) * o;
22
- if (n = c > n ? Math.floor(n / o) * o : c, n = Math.max(0, n), n === r) {
23
- let e = (n + r) / 2, t = Math.max(Math.abs(e) * i, o);
24
- n = Math.max(0, Math.floor(e - t)), r = Math.ceil(e + t);
25
- }
26
- return n = Math.max(0, n), {
27
- min: n,
28
- max: r
29
- };
30
- }, o = (e, t) => {
31
- if (!e.length) return 40;
32
- let n = Math.max(...e.map((e) => t(e).length));
33
- return Math.max(20, n * 8 + 20);
34
- }, s = (e) => {
35
- let t = Intl.DateTimeFormat().resolvedOptions().timeZone, n = (0, r.default)(e).tz(t).startOf("day"), i = (0, r.default)().tz(t).startOf("day").diff(n, "days") + 1;
36
- return Math.max(i, 1);
37
- }, c = (e) => {
38
- let t = Intl.DateTimeFormat().resolvedOptions().timeZone, n = (0, r.default)().tz(t).endOf("day"), i;
39
- return i = e === -1 ? (0, r.default)().tz(t).startOf("year") : (0, r.default)().tz(t).subtract(e - 1, "days").startOf("day"), {
40
- startDate: i,
41
- endDate: n,
42
- timezone: t
43
- };
44
- }, l = (e, t, n = "value", i = "avg") => {
45
- if (!e.length) return [];
46
- if (t >= 91 && t <= 356) {
47
- let t = [], a = (0, r.default)(e[0].date).startOf("week"), o = 0, s = 0, c = 0;
48
- return e.forEach((l, u) => {
49
- let d = (0, r.default)(l.date);
50
- d.isSame(a, "week") ? (o += Number(l[n]), s += 1, c = Number(l[n])) : (t.push({
51
- ...e[u - 1],
52
- date: a.format("YYYY-MM-DD"),
53
- [n]: i === "sum" ? o : i === "avg" ? s > 0 ? o / s : 0 : c
54
- }), a = d.startOf("week"), o = Number(l[n]), s = 1, c = Number(l[n])), u === e.length - 1 && t.push({
55
- ...l,
56
- date: a.format("YYYY-MM-DD"),
57
- [n]: i === "sum" ? o : i === "avg" ? s > 0 ? o / s : 0 : c
58
- });
59
- }), t;
60
- } else if (t > 356) {
61
- let t = [], a = (0, r.default)(e[0].date).startOf("month"), o = 0, s = 0, c = 0;
62
- return e.forEach((l, u) => {
63
- let d = (0, r.default)(l.date);
64
- d.isSame(a, "month") ? (o += Number(l[n]), s += 1, c = Number(l[n])) : (t.push({
65
- ...e[u - 1],
66
- date: a.format("YYYY-MM-DD"),
67
- [n]: i === "sum" ? o : i === "avg" ? s > 0 ? o / s : 0 : c
68
- }), a = d.startOf("month"), o = Number(l[n]), s = 1, c = Number(l[n])), u === e.length - 1 && t.push({
69
- ...l,
70
- date: a.format("YYYY-MM-DD"),
71
- [n]: i === "sum" ? o : i === "avg" ? s > 0 ? o / s : 0 : c
72
- });
73
- }), t;
74
- }
75
- return e;
76
- }, u = (e, n, i = !1, a = !1) => n === 1 && a ? (0, r.default)(e).format("h:mma") : n === 1 && i ? (0, r.default)(e).format("MMM D, h:mma") : n > 365 ? (0, r.default)(e).format("MMM YYYY") : n >= 91 ? `Week of ${t(e)}` : t(e), d = (e) => e.name && e.name.trim() || e.email || "Unknown Member", f = (e) => {
77
- let t = d(e), n = t.split(" ");
78
- return n.length >= 2 ? (n[0][0] + n[n.length - 1][0]).toUpperCase() : t.substring(0, 2).toUpperCase();
79
- };
80
- //#endregion
81
- export { f as a, a as c, i, l, u as n, c as o, d as r, s, o as t };
82
-
83
- //# sourceMappingURL=app-utils-9O53Czfw.js.map