ghost 6.18.2 → 6.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. package/components/tryghost-i18n-6.19.0.tgz +0 -0
  2. package/components/tryghost-parse-email-address-6.19.0.tgz +0 -0
  3. package/core/built/admin/assets/{PolarAngleAxis-DALH8FDm.js → PolarAngleAxis-CGprvq8M.js} +1 -1
  4. package/core/built/admin/assets/{_baseAssignValue-D_UsvJRN.js → _baseAssignValue-Bwn07Ln5.js} +1 -1
  5. package/core/built/admin/assets/{a-large-small-DVyx4GMu.js → a-large-small-p58xibEK.js} +1 -1
  6. package/core/built/admin/assets/admin-x-settings/admin-x-settings.js +1 -1
  7. package/core/built/admin/assets/admin-x-settings/{code-editor-view-DBrulgE8.mjs → code-editor-view-DCKvO1TY.mjs} +2 -2
  8. package/core/built/admin/assets/admin-x-settings/{index-DgGwb1L-.mjs → index-BxWVtVnD.mjs} +6 -6
  9. package/core/built/admin/assets/admin-x-settings/{index-Cypgljb3.mjs → index-DyZIONe1.mjs} +2 -2
  10. package/core/built/admin/assets/admin-x-settings/{index-CsGHbqSU.mjs → index-HfMJcj2U.mjs} +2 -2
  11. package/core/built/admin/assets/admin-x-settings/{modals-rdo7i0D3.mjs → modals-CIiqfKY0.mjs} +7593 -7509
  12. package/core/built/admin/assets/{at-sign-CGNkBrZS.js → at-sign-BZPuAx5m.js} +1 -1
  13. package/core/built/admin/assets/audience-Cy9gLIa9.js +1 -0
  14. package/core/built/admin/assets/{avatar-flipboard-jqr9Aapd.js → avatar-flipboard-CLmWb5Xn.js} +1 -1
  15. package/core/built/admin/assets/{bluesky-sharing-C2749SVt.js → bluesky-sharing-BHt0oiii.js} +1 -1
  16. package/core/built/admin/assets/{chart-BAQCVPCH.js → chart--RFLGIL4.js} +1 -1
  17. package/core/built/admin/assets/{chunk.524.428356d01feabbc7b932.js → chunk.524.5c5c3f3273a86d1d9913.js} +7 -7
  18. package/core/built/admin/assets/{chunk.582.b8b41ba720f49d724992.js → chunk.582.e6c787cdf7e6de7819e0.js} +9 -9
  19. package/core/built/admin/assets/{code-editor-view-YNhJ1w71.js → code-editor-view-BW9y0JXN.js} +1 -1
  20. package/core/built/admin/assets/comments-C_lilDBp.js +1 -0
  21. package/core/built/admin/assets/content-helpers-BOnQQADZ.js +1 -0
  22. package/core/built/admin/assets/{copy-CNsHZEFR.js → copy-Bi7VpgPR.js} +1 -1
  23. package/core/built/admin/assets/{data-list-Dn5MkmyD.js → data-list-Bu3jzs1s.js} +1 -1
  24. package/core/built/admin/assets/{deleted-feed-item-Dmm_clMl.js → deleted-feed-item-B-doIIKc.js} +1 -1
  25. package/core/built/admin/assets/{edit-profile-BLSdtROQ.js → edit-profile-ZBdjFfvL.js} +1 -1
  26. package/core/built/admin/assets/{empty-indicator-C2Z0dddU.js → empty-indicator-C6BBh99D.js} +1 -1
  27. package/core/built/admin/assets/{en-DuTkaMAI.js → en-C7eSFQRw.js} +1 -1
  28. package/core/built/admin/assets/{feed-B4Xp4C2J.js → feed-CAioauwD.js} +1 -1
  29. package/core/built/admin/assets/{filters-gnOx5Z45.js → filters-DEKF0tIB.js} +1 -1
  30. package/core/built/admin/assets/{gh-chart-B2aWYkGg.js → gh-chart-D9KI0_sO.js} +1 -1
  31. package/core/built/admin/assets/{ghost-29f8f3c80e41126ba5e3c52ad5727e8a.js → ghost-6bff5c535ef015b0ed9421ceb6c699a7.js} +220 -211
  32. package/core/built/admin/assets/{growth-BysawIWe.js → growth-C6XGchvT.js} +1 -1
  33. package/core/built/admin/assets/{hash-j3sh-UI3.js → hash-DFhnGHId.js} +1 -1
  34. package/core/built/admin/assets/{inbox-1cUdr8Mm.js → inbox-p-Y5uScT.js} +1 -1
  35. package/core/built/admin/assets/{index-BVoBTlp_.js → index--VlvGKWi.js} +1 -1
  36. package/core/built/admin/assets/{index-DGBK5k9H.js → index-3uU4zg_6.js} +1 -1
  37. package/core/built/admin/assets/index-4ZkTY34B.css +1 -0
  38. package/core/built/admin/assets/{index-BhY_SbGB.js → index-BWnrLoWI.js} +1 -1
  39. package/core/built/admin/assets/{index-I9n711UW.js → index-BzU2odQq.js} +1 -1
  40. package/core/built/admin/assets/{index-mhojl7aD.js → index-CIZ_upe2.js} +1 -1
  41. package/core/built/admin/assets/{index-WjY3mGep.js → index-CS4XqyC-.js} +2 -2
  42. package/core/built/admin/assets/{index-BgrwCpgw.js → index-D17PEsUB.js} +1 -1
  43. package/core/built/admin/assets/{index-B8G0f0hb.js → index-DCTdAEHx.js} +3 -3
  44. package/core/built/admin/assets/{index-DarAAzVH.js → index-FPf-AERu.js} +1 -1
  45. package/core/built/admin/assets/index-JmqyGBro.js +1 -0
  46. package/core/built/admin/assets/{index-DKAlEWM4.js → index-LyfDjTto.js} +1 -1
  47. package/core/built/admin/assets/index-S62-c8TV.js +13 -0
  48. package/core/built/admin/assets/{index-D8CXbJm4.js → index-Wx8_AGZX.js} +1 -1
  49. package/core/built/admin/assets/{index-CkAUXgAi.js → index-jAidr8jI.js} +1 -1
  50. package/core/built/admin/assets/{index-Dz8eTtOq.js → index-lPLmWtv0.js} +1 -1
  51. package/core/built/admin/assets/koenig-lexical/index.css +1 -1
  52. package/core/built/admin/assets/koenig-lexical/koenig-lexical.js +1853 -1863
  53. package/core/built/admin/assets/koenig-lexical/koenig-lexical.umd.js +94 -94
  54. package/core/built/admin/assets/{koenig-lexical-coiS9dIC.js → koenig-lexical-CWnkYKQt.js} +77 -77
  55. package/core/built/admin/assets/{kpi-card-BEFHo2gr.js → kpi-card-B5UaJgOT.js} +1 -1
  56. package/core/built/admin/assets/{kpis-D-gz-lUk.js → kpis-Cc2RxnvZ.js} +1 -1
  57. package/core/built/admin/assets/{label-BvlHzzcJ.js → label-CW7Kmp9w.js} +1 -1
  58. package/core/built/admin/assets/{links-tdJvBrsT.js → links-wWNc9Uat.js} +1 -1
  59. package/core/built/admin/assets/{list-filter-DPE4Xj2T.js → list-filter-3EF6cVg-.js} +1 -1
  60. package/core/built/admin/assets/{lucide-react-ClQ3Iy7l.js → lucide-react-DtMIZssr.js} +214 -214
  61. package/core/built/admin/assets/{main-layout-DY96wK-_.js → main-layout-BFYhCrLn.js} +1 -1
  62. package/core/built/admin/assets/{message-square-text-Dd1XS5-H.js → message-square-text-BDZtUW-2.js} +1 -1
  63. package/core/built/admin/assets/{minus-CyEc3BE5.js → minus-CSphShdJ.js} +1 -1
  64. package/core/built/admin/assets/modals-CDWP04Iy.js +77 -0
  65. package/core/built/admin/assets/{moderation-B0fdmlig.js → moderation-qcng2_lB.js} +1 -1
  66. package/core/built/admin/assets/{newsletter-Byg3ARa5.js → newsletter-R-IYcV4M.js} +1 -1
  67. package/core/built/admin/assets/{newsletters-DbH39vgA.js → newsletters-BB4e24i1.js} +1 -1
  68. package/core/built/admin/assets/{note-Cwy-rIAF.js → note-B_bpRX66.js} +1 -1
  69. package/core/built/admin/assets/overview-Nh-IoP-v.js +1 -0
  70. package/core/built/admin/assets/{pagemenu-CkzsZrHC.js → pagemenu-Cd45frnF.js} +1 -1
  71. package/core/built/admin/assets/{post-analytics-context-BLkup0Xh.js → post-analytics-context-BST4bzps.js} +1 -1
  72. package/core/built/admin/assets/post-analytics-header-DAZPp6M8.js +1 -0
  73. package/core/built/admin/assets/{post-analytics-aA-nG9Fq.js → post-analytics-jHZOhQ8L.js} +1 -1
  74. package/core/built/admin/assets/{post-share-modal-CkvJtrRw.js → post-share-modal-D1JQfuYx.js} +1 -1
  75. package/core/built/admin/assets/posts/{comments-Bn_vn_sb.mjs → comments-C0ntS6jH.mjs} +678 -692
  76. package/core/built/admin/assets/posts/{dialog-CKPcMrj7.mjs → dialog-CXEmd-rC.mjs} +3 -3
  77. package/core/built/admin/assets/posts/{empty-indicator-kkrhP6K_.mjs → empty-indicator-CY1NEQZt.mjs} +2 -2
  78. package/core/built/admin/assets/posts/{filters-DHsxxy0F.mjs → filters-CWWDQAf0.mjs} +6 -6
  79. package/core/built/admin/assets/posts/{growth-D7ACh-oR.mjs → growth-DUnL-W24.mjs} +20 -19
  80. package/core/built/admin/assets/posts/{heading-BrKVbOxA.mjs → heading-DZWin3nG.mjs} +2 -2
  81. package/core/built/admin/assets/posts/{hooks-BBEMuLiW.mjs → hooks-DQYjPsLg.mjs} +2 -2
  82. package/core/built/admin/assets/posts/{index-C0rRguZx.mjs → index-BiGQFQkQ.mjs} +9 -9
  83. package/core/built/admin/assets/posts/{kpis-1o524OIK.mjs → kpis-DNnkyd0U.mjs} +10 -10
  84. package/core/built/admin/assets/posts/{links-JpeATx1f.mjs → links-D3nSZFlJ.mjs} +4 -4
  85. package/core/built/admin/assets/posts/{loading-indicator-BHAmSf8j.mjs → loading-indicator-CZQmPRvv.mjs} +3 -3
  86. package/core/built/admin/assets/posts/{main-layout-BTItAOQE.mjs → main-layout-D5WnaGr4.mjs} +2 -2
  87. package/core/built/admin/assets/posts/{newsletter-CQdsCEHv.mjs → newsletter-C5eikVBq.mjs} +13 -13
  88. package/core/built/admin/assets/posts/{overview-sYh4JN1D.mjs → overview-C5mCMPJY.mjs} +113 -112
  89. package/core/built/admin/assets/posts/{post-analytics-DtLt2SWx.mjs → post-analytics-Cc2NCQis.mjs} +6 -6
  90. package/core/built/admin/assets/posts/{post-analytics-context-CB1yM9fk.mjs → post-analytics-context-qXWjDzSt.mjs} +44 -41
  91. package/core/built/admin/assets/posts/{post-analytics-header-BYaWuL9W.mjs → post-analytics-header-QGsYyvhA.mjs} +11 -11
  92. package/core/built/admin/assets/posts/{post-share-modal-V0HTOBaf.mjs → post-share-modal-B9Q7FJsH.mjs} +4 -4
  93. package/core/built/admin/assets/posts/posts-C2SKGLoU.mjs +17 -0
  94. package/core/built/admin/assets/posts/posts.js +1 -1
  95. package/core/built/admin/assets/posts/{search-CLjC37AT.mjs → search-C8k0TFkh.mjs} +2 -2
  96. package/core/built/admin/assets/posts/{separator-KNoTIaJx.mjs → separator-CJnnsW1a.mjs} +5 -5
  97. package/core/built/admin/assets/posts/{sheet-DBg_SCDt.mjs → sheet-HDzKgNHc.mjs} +3 -3
  98. package/core/built/admin/assets/posts/{skeleton-DvsoolWu.mjs → skeleton-BlZGKNzB.mjs} +3 -3
  99. package/core/built/admin/assets/posts/{source-icon-OmRaTU2G.mjs → source-icon-DjBIjtaY.mjs} +3 -3
  100. package/core/built/admin/assets/posts/{stats-BC2DzntY.mjs → stats-BRVHejqx.mjs} +4 -4
  101. package/core/built/admin/assets/posts/{table-CxX9OKAj.mjs → table-D7AEpPWL.mjs} +2 -2
  102. package/core/built/admin/assets/posts/{tabs-B1jw7cBi.mjs → tabs-RcpmzDgr.mjs} +10 -10
  103. package/core/built/admin/assets/posts/{tags-BitrLT_j.mjs → tags-8k1xw8R8.mjs} +2 -2
  104. package/core/built/admin/assets/posts/{tags-BBilTo1a.mjs → tags-DNY2rBlf.mjs} +11 -11
  105. package/core/built/admin/assets/posts/{use-infinite-virtual-scroll-DaijA1ao.mjs → use-infinite-virtual-scroll-CMiIpcDA.mjs} +3 -3
  106. package/core/built/admin/assets/posts/{web-CKmyC4Xj.mjs → web-BCl5J6bB.mjs} +15 -15
  107. package/core/built/admin/assets/{posts-DDkuYoN7.js → posts-DFiJPOft.js} +1 -1
  108. package/core/built/admin/assets/{repeat-B-SL0yPM.js → repeat-Smml9n0k.js} +1 -1
  109. package/core/built/admin/assets/{reply-BdCPoUQ9.js → reply-CooY4lmk.js} +1 -1
  110. package/core/built/admin/assets/{select-C7aNW8QS.js → select-WwMsbBbg.js} +1 -1
  111. package/core/built/admin/assets/{settings-D-dhma2e.js → settings-CQEhPDQU.js} +4 -4
  112. package/core/built/admin/assets/{settings-Bzy1GNfD.js → settings-CxWtvcUf.js} +1 -1
  113. package/core/built/admin/assets/{sort-button-Dv8vjh13.js → sort-button-DFr8vezl.js} +1 -1
  114. package/core/built/admin/assets/{source-icon-DTz4isLK.js → source-icon-VpYWpwYb.js} +1 -1
  115. package/core/built/admin/assets/{sprout-BwLQTzMf.js → sprout-DRqlFJSK.js} +1 -1
  116. package/core/built/admin/assets/{square-YF1YE9ex.js → square-CwHQ9sJ2.js} +1 -1
  117. package/core/built/admin/assets/stats/audience-Caf7BjaU.mjs +269 -0
  118. package/core/built/admin/assets/stats/{url-helpers-Drq3xg0l.mjs → content-helpers-MbtAvUJh.mjs} +83 -106
  119. package/core/built/admin/assets/stats/{index-CcCyLMxL.mjs → index-BGqKbF1D.mjs} +8 -8
  120. package/core/built/admin/assets/stats/{index-DXU2rE9t.mjs → index-BTjfXOi6.mjs} +30 -30
  121. package/core/built/admin/assets/stats/{index-K7ASx7EG.mjs → index-ChjIxhHy.mjs} +5 -5
  122. package/core/built/admin/assets/stats/{index-D5mlMG4l.mjs → index-DMkZbbZs.mjs} +14 -14
  123. package/core/built/admin/assets/stats/{index-CUuQaROI.mjs → index-wT0OIw_N.mjs} +355 -335
  124. package/core/built/admin/assets/stats/{sort-button-CELUx6Zp.mjs → sort-button-B8n8fYMi.mjs} +23 -23
  125. package/core/built/admin/assets/stats/{stats-d_u_in4l.mjs → stats-CGH-0JNs.mjs} +120 -119
  126. package/core/built/admin/assets/stats/stats.js +1 -1
  127. package/core/built/admin/assets/stats/{tabs-3wLZsy0v.mjs → tabs-EQCUj3Y9.mjs} +19 -19
  128. package/core/built/admin/assets/stats/{use-growth-stats-28Sr42va.mjs → use-growth-stats--CIfag21.mjs} +3 -3
  129. package/core/built/admin/assets/{stats-C5ad0fgQ.js → stats-lnFiOQZx.js} +1 -1
  130. package/core/built/admin/assets/{stats-view-BvkxPYNX.js → stats-view-BJVawuIv.js} +1 -1
  131. package/core/built/admin/assets/{step-1-D7_s-D99.js → step-1-Bx8MiQVF.js} +1 -1
  132. package/core/built/admin/assets/{step-2-B94Yf7FF.js → step-2-CLLXppER.js} +1 -1
  133. package/core/built/admin/assets/{step-3-DswXYYf4.js → step-3-C5WrQe8u.js} +2 -2
  134. package/core/built/admin/assets/{table-D30IXfUP.js → table-2waWpIF5.js} +1 -1
  135. package/core/built/admin/assets/{tabs-CjNdfW0y.js → tabs-CBD0hW8V.js} +1 -1
  136. package/core/built/admin/assets/{tags-B0ux9_dT.js → tags-Bgw5Hrb5.js} +1 -1
  137. package/core/built/admin/assets/{tags-PGeGAafJ.js → tags-CKrBptuC.js} +1 -1
  138. package/core/built/admin/assets/{tiers-BaXK0JoI.js → tiers-CO-pz1FX.js} +1 -1
  139. package/core/built/admin/assets/{toggle-group-DdY8HF3Y.js → toggle-group-BXAZzvJ9.js} +1 -1
  140. package/core/built/admin/assets/{topic-filter-Boh22uGD.js → topic-filter-U3qUH2P_.js} +1 -1
  141. package/core/built/admin/assets/{trash-D7ZWrnDq.js → trash-CJY1Wro_.js} +1 -1
  142. package/core/built/admin/assets/{use-growth-stats-Bg0nE0WG.js → use-growth-stats-BrLZI7da.js} +1 -1
  143. package/core/built/admin/assets/{use-infinite-virtual-scroll-DoeI5IY-.js → use-infinite-virtual-scroll-CiRn3kpz.js} +2 -2
  144. package/core/built/admin/assets/{use-simple-pagination-BJzBULR3.js → use-simple-pagination-CskJ0MDP.js} +1 -1
  145. package/core/built/admin/assets/{user-round-check-BLc3L-ei.js → user-round-check-zOuzV3OS.js} +1 -1
  146. package/core/built/admin/assets/{wallet-cards-xX4QZik7.js → wallet-cards-ddLuIN-b.js} +1 -1
  147. package/core/built/admin/assets/{web-DQ2qBymm.js → web-CGbkZWn3.js} +1 -1
  148. package/core/built/admin/index.html +6 -5
  149. package/core/frontend/services/theme-engine/i18n/i18n.js +9 -14
  150. package/core/server/api/endpoints/settings-public.js +3 -1
  151. package/core/server/api/endpoints/utils/serializers/input/settings.js +6 -1
  152. package/core/server/data/migrations/versions/6.19/2026-02-10-12-00-00-add-transistor-portal-settings.js +39 -0
  153. package/core/server/data/schema/default-settings/default-settings.json +28 -0
  154. package/core/server/data/schema/schema.js +2 -2
  155. package/core/server/data/seeders/importers/offers-importer.js +2 -2
  156. package/core/server/data/tinybird/endpoints/api_top_pages_router.pipe +28 -0
  157. package/core/server/data/tinybird/endpoints/api_top_pages_v3.pipe +8 -4
  158. package/core/server/data/tinybird/tests/api_top_pages_router.yaml +74 -0
  159. package/core/server/services/comments/comments-service-emails.js +1 -4
  160. package/core/server/services/email-service/email-templates/partials/styles.hbs +43 -0
  161. package/core/server/services/koenig/node-renderers/transistor-renderer.js +23 -17
  162. package/core/server/services/members/members-api/repositories/member-repository.js +30 -6
  163. package/core/server/services/members/members-api/services/next-payment-calculator.js +28 -20
  164. package/core/server/services/members/members-api/services/payments-service.js +1 -1
  165. package/core/server/services/members/members-api/utils/add-calendar-months.js +49 -0
  166. package/core/server/services/offers/application/offer-mapper.js +2 -2
  167. package/core/server/services/offers/domain/models/offer-amount.js +16 -0
  168. package/core/server/services/offers/domain/models/offer-duration.js +3 -4
  169. package/core/server/services/offers/domain/models/offer-type.js +5 -3
  170. package/core/server/services/offers/domain/models/offer.js +8 -1
  171. package/core/server/services/staff/staff-service-emails.js +2 -0
  172. package/core/server/services/stripe/stripe-api.js +19 -0
  173. package/core/shared/config/defaults.json +1 -1
  174. package/core/shared/labs.js +0 -1
  175. package/core/shared/settings-cache/cache-manager.js +8 -0
  176. package/core/shared/settings-cache/public.js +5 -0
  177. package/package.json +5 -5
  178. package/yarn.lock +4 -4
  179. package/components/tryghost-i18n-6.18.2.tgz +0 -0
  180. package/components/tryghost-parse-email-address-6.18.2.tgz +0 -0
  181. package/core/built/admin/assets/audience-CJHVR7kD.js +0 -1
  182. package/core/built/admin/assets/comments-CPd_iCc3.js +0 -1
  183. package/core/built/admin/assets/index-B2yksBz4.js +0 -13
  184. package/core/built/admin/assets/index-Cl_EPbQ2.js +0 -1
  185. package/core/built/admin/assets/index-D_sGUCda.css +0 -1
  186. package/core/built/admin/assets/modals-C06GcVIm.js +0 -77
  187. package/core/built/admin/assets/overview-CVMLGrVt.js +0 -1
  188. package/core/built/admin/assets/post-analytics-header-D9srAPT5.js +0 -1
  189. package/core/built/admin/assets/posts/posts-DeQT3knv.mjs +0 -21
  190. package/core/built/admin/assets/stats/audience-BWqU7WWT.mjs +0 -245
  191. package/core/built/admin/assets/url-helpers-mt6MBIi0.js +0 -1
@@ -1,19 +1,19 @@
1
- import { c as Y, d as K, a as f, j as e, f as C, e as y, g as re, h as ie, i as le, k as F, s as ne, b as ce } from "./index-C0rRguZx.mjs";
2
- import { K as L, a as _, b as T, c as R } from "./stats-BC2DzntY.mjs";
3
- import { B as O, H as J } from "./heading-BrKVbOxA.mjs";
4
- import { C as P, a as V, b as z, M as oe, c as k, K as I, d as A, e as D, G as q, u as U, h as de, i as me, P as he, f as xe, S as ue } from "./post-analytics-header-BYaWuL9W.mjs";
5
- import { D as pe, a as je, b as ge, c as fe, d as ve, e as be, f as Ne, g as ye } from "./tabs-B1jw7cBi.mjs";
6
- import { B as E } from "./loading-indicator-BHAmSf8j.mjs";
7
- import { S } from "./separator-KNoTIaJx.mjs";
8
- import { u as we, p as ke, N as Ce, c as Le } from "./links-JpeATx1f.mjs";
9
- import { L as _e } from "./post-share-modal-V0HTOBaf.mjs";
10
- import { G as Te, S as Re, K as Ie } from "./kpis-1o524OIK.mjs";
11
- import { E as Ae } from "./empty-indicator-kkrhP6K_.mjs";
12
- import { u as X, S as De } from "./post-analytics-context-CB1yM9fk.mjs";
13
- import { S as Q } from "./skeleton-DvsoolWu.mjs";
14
- import { u as Se, c as Ke } from "./growth-D7ACh-oR.mjs";
15
- const Oe = ({ post: d, isNewsletterStatsLoading: n, isWebShown: u }) => {
16
- const { postId: s } = Y(), t = K(), r = f(() => {
1
+ import { c as J, d as V, a as g, j as e, f as T, e as y, g as ie, h as le, i as ne, k as q, s as ce, b as oe } from "./index-BiGQFQkQ.mjs";
2
+ import { u as de, c as me, D as he } from "./growth-DUnL-W24.mjs";
3
+ import { K as R, a as I, b as D, c as S } from "./stats-BRVHejqx.mjs";
4
+ import { B as z, H as X } from "./heading-DZWin3nG.mjs";
5
+ import { C as E, a as $, b as M, M as xe, c as C, K as A, d as K, e as O, G as U, u as Q, h as ue, i as pe, P as je, f as fe, S as ge } from "./post-analytics-header-QGsYyvhA.mjs";
6
+ import { D as ve, a as be, b as Ne, c as ye, d as we, e as ke, f as Ce, g as Le } from "./tabs-RcpmzDgr.mjs";
7
+ import { B as W } from "./loading-indicator-CZQmPRvv.mjs";
8
+ import { S as P } from "./separator-CJnnsW1a.mjs";
9
+ import { u as _e, p as Te, N as Re, c as Ie } from "./links-D3nSZFlJ.mjs";
10
+ import { L as De } from "./post-share-modal-B9Q7FJsH.mjs";
11
+ import { G as Se, S as Ae, K as Ke } from "./kpis-DNnkyd0U.mjs";
12
+ import { E as Oe } from "./empty-indicator-CY1NEQZt.mjs";
13
+ import { u as Z, S as Pe } from "./post-analytics-context-qXWjDzSt.mjs";
14
+ import { S as Y } from "./skeleton-BlZGKNzB.mjs";
15
+ const Ve = ({ post: d, isNewsletterStatsLoading: n, isWebShown: u }) => {
16
+ const { postId: s } = J(), t = V(), r = g(() => {
17
17
  var v, b, N;
18
18
  const o = ((v = d.email) == null ? void 0 : v.opened_count) || 0, i = ((b = d.email) == null ? void 0 : b.email_count) || 0, x = ((N = d.count) == null ? void 0 : N.clicks) || 0;
19
19
  return {
@@ -23,11 +23,11 @@ const Oe = ({ post: d, isNewsletterStatsLoading: n, isWebShown: u }) => {
23
23
  clickedRate: i > 0 ? x / i : 0,
24
24
  sent: i
25
25
  };
26
- }, [d]), { data: l } = we({
26
+ }, [d]), { data: l } = _e({
27
27
  searchParams: {
28
28
  filter: `post_id:'${s}'`
29
29
  }
30
- }), p = f(() => ke(l), [l]), m = [
30
+ }), p = g(() => Te(l), [l]), m = [
31
31
  { datatype: "Clicked", value: r.clickedRate, fill: "url(#gradientTeal)", color: "hsl(var(--chart-teal))" },
32
32
  { datatype: "Opened", value: r.openedRate, fill: "url(#gradientBlue)", color: "hsl(var(--chart-blue))" }
33
33
  ], a = {
@@ -41,41 +41,41 @@ const Oe = ({ post: d, isNewsletterStatsLoading: n, isWebShown: u }) => {
41
41
  label: "Opened"
42
42
  }
43
43
  }, c = d.email_only || !u;
44
- return /* @__PURE__ */ e.jsxs(P, { className: `group/datalist overflow-hidden ${c && "col-span-2"}`, children: [
44
+ return /* @__PURE__ */ e.jsxs(E, { className: `group/datalist overflow-hidden ${c && "col-span-2"}`, children: [
45
45
  /* @__PURE__ */ e.jsxs("div", { className: "relative flex items-center justify-between gap-6", children: [
46
- /* @__PURE__ */ e.jsx(V, { children: /* @__PURE__ */ e.jsxs(z, { className: "flex items-center gap-1.5 text-lg", children: [
47
- /* @__PURE__ */ e.jsx(oe, { size: 16, strokeWidth: 1.5 }),
46
+ /* @__PURE__ */ e.jsx($, { children: /* @__PURE__ */ e.jsxs(M, { className: "flex items-center gap-1.5 text-lg", children: [
47
+ /* @__PURE__ */ e.jsx(xe, { size: 16, strokeWidth: 1.5 }),
48
48
  "Newsletter performance"
49
49
  ] }) }),
50
- /* @__PURE__ */ e.jsx(O, { className: "absolute right-6 translate-x-10 opacity-0 transition-all duration-300 group-hover/datalist:translate-x-0 group-hover/datalist:opacity-100", size: "sm", variant: "outline", onClick: () => {
50
+ /* @__PURE__ */ e.jsx(z, { className: "absolute right-6 translate-x-10 opacity-0 transition-all duration-300 group-hover/datalist:translate-x-0 group-hover/datalist:opacity-100", size: "sm", variant: "outline", onClick: () => {
51
51
  t(`/posts/analytics/${s}/newsletter`);
52
52
  }, children: "View more" })
53
53
  ] }),
54
- n ? /* @__PURE__ */ e.jsx(k, { children: /* @__PURE__ */ e.jsx("div", { className: "mx-auto flex min-h-[250px] items-center justify-center xl:size-full", children: /* @__PURE__ */ e.jsx(E, {}) }) }) : /* @__PURE__ */ e.jsxs(k, { className: `${c && "grid grid-cols-2"}`, children: [
54
+ n ? /* @__PURE__ */ e.jsx(C, { children: /* @__PURE__ */ e.jsx("div", { className: "mx-auto flex min-h-[250px] items-center justify-center xl:size-full", children: /* @__PURE__ */ e.jsx(W, {}) }) }) : /* @__PURE__ */ e.jsxs(C, { className: `${c && "grid grid-cols-2"}`, children: [
55
55
  /* @__PURE__ */ e.jsxs("div", { className: `${c && "border-r pr-6"}`, children: [
56
56
  /* @__PURE__ */ e.jsxs("div", { className: "grid grid-cols-2 gap-6", children: [
57
- /* @__PURE__ */ e.jsx(I, { className: "group relative flex grow flex-row items-start justify-between gap-5 border-none px-0 pt-0", children: /* @__PURE__ */ e.jsxs("div", { className: "flex grow flex-col gap-1.5 border-none pb-0", children: [
58
- /* @__PURE__ */ e.jsx(A, { color: "hsl(var(--chart-blue))", children: "Open rate" }),
57
+ /* @__PURE__ */ e.jsx(A, { className: "group relative flex grow flex-row items-start justify-between gap-5 border-none px-0 pt-0", children: /* @__PURE__ */ e.jsxs("div", { className: "flex grow flex-col gap-1.5 border-none pb-0", children: [
58
+ /* @__PURE__ */ e.jsx(K, { color: "hsl(var(--chart-blue))", children: "Open rate" }),
59
59
  /* @__PURE__ */ e.jsx(
60
- D,
60
+ O,
61
61
  {
62
- value: C(r.openedRate)
62
+ value: T(r.openedRate)
63
63
  }
64
64
  )
65
65
  ] }) }),
66
- /* @__PURE__ */ e.jsx(I, { className: "group relative flex grow flex-row items-start justify-between gap-5 border-none px-0 pt-0", children: /* @__PURE__ */ e.jsxs("div", { className: "flex grow flex-col gap-1.5 border-none pb-0", children: [
67
- /* @__PURE__ */ e.jsx(A, { color: "hsl(var(--chart-teal))", children: "Click rate" }),
66
+ /* @__PURE__ */ e.jsx(A, { className: "group relative flex grow flex-row items-start justify-between gap-5 border-none px-0 pt-0", children: /* @__PURE__ */ e.jsxs("div", { className: "flex grow flex-col gap-1.5 border-none pb-0", children: [
67
+ /* @__PURE__ */ e.jsx(K, { color: "hsl(var(--chart-teal))", children: "Click rate" }),
68
68
  /* @__PURE__ */ e.jsx(
69
- D,
69
+ O,
70
70
  {
71
- value: C(r.clickedRate)
71
+ value: T(r.clickedRate)
72
72
  }
73
73
  )
74
74
  ] }) })
75
75
  ] }),
76
- !c && /* @__PURE__ */ e.jsx(S, {}),
76
+ !c && /* @__PURE__ */ e.jsx(P, {}),
77
77
  /* @__PURE__ */ e.jsx("div", { className: "mx-auto my-6 h-[240px]", children: /* @__PURE__ */ e.jsx(
78
- Ce,
78
+ Re,
79
79
  {
80
80
  className: "pointer-events-none aspect-square h-[240px]",
81
81
  config: a,
@@ -85,20 +85,20 @@ const Oe = ({ post: d, isNewsletterStatsLoading: n, isWebShown: u }) => {
85
85
  ) })
86
86
  ] }),
87
87
  /* @__PURE__ */ e.jsxs("div", { className: `${c && "pl-6"}`, children: [
88
- !c && /* @__PURE__ */ e.jsx(S, {}),
88
+ !c && /* @__PURE__ */ e.jsx(P, {}),
89
89
  /* @__PURE__ */ e.jsxs("div", { className: c ? "" : "pt-3", children: [
90
90
  /* @__PURE__ */ e.jsxs("div", { className: `flex items-center justify-between gap-3 ${c ? "pb-3" : "py-3"}`, children: [
91
91
  /* @__PURE__ */ e.jsx("span", { className: "font-medium text-muted-foreground", children: "Top clicked links in this email" }),
92
- /* @__PURE__ */ e.jsx(J, { children: "Members" })
92
+ /* @__PURE__ */ e.jsx(X, { children: "Members" })
93
93
  ] }),
94
- p.length > 0 ? /* @__PURE__ */ e.jsx(pe, { className: "", children: /* @__PURE__ */ e.jsx(je, { children: p.slice(0, c ? 10 : 5).map((o) => {
94
+ p.length > 0 ? /* @__PURE__ */ e.jsx(ve, { className: "", children: /* @__PURE__ */ e.jsx(be, { children: p.slice(0, c ? 10 : 5).map((o) => {
95
95
  const i = r.clicked > 0 ? o.count / r.clicked : 0;
96
- return /* @__PURE__ */ e.jsxs(ge, { children: [
97
- /* @__PURE__ */ e.jsx(fe, { style: {
96
+ return /* @__PURE__ */ e.jsxs(Ne, { children: [
97
+ /* @__PURE__ */ e.jsx(ye, { style: {
98
98
  width: `${i ? Math.round(i * 100) : 0}%`
99
99
  } }),
100
- /* @__PURE__ */ e.jsx(ve, { children: /* @__PURE__ */ e.jsxs("div", { className: "flex items-center space-x-2 overflow-hidden", children: [
101
- /* @__PURE__ */ e.jsx(_e, { className: "shrink-0 text-muted-foreground", size: 16, strokeWidth: 1.5 }),
100
+ /* @__PURE__ */ e.jsx(we, { children: /* @__PURE__ */ e.jsxs("div", { className: "flex items-center space-x-2 overflow-hidden", children: [
101
+ /* @__PURE__ */ e.jsx(De, { className: "shrink-0 text-muted-foreground", size: 16, strokeWidth: 1.5 }),
102
102
  /* @__PURE__ */ e.jsx(
103
103
  "a",
104
104
  {
@@ -107,13 +107,13 @@ const Oe = ({ post: d, isNewsletterStatsLoading: n, isWebShown: u }) => {
107
107
  rel: "noreferrer",
108
108
  target: "_blank",
109
109
  title: o.link.to,
110
- children: Le(o.link.to, !0)
110
+ children: Ie(o.link.to, !0)
111
111
  }
112
112
  )
113
113
  ] }) }),
114
- /* @__PURE__ */ e.jsxs(be, { children: [
115
- /* @__PURE__ */ e.jsx(Ne, { children: y(o.count || 0) }),
116
- /* @__PURE__ */ e.jsx(ye, { children: C(i) })
114
+ /* @__PURE__ */ e.jsxs(ke, { children: [
115
+ /* @__PURE__ */ e.jsx(Ce, { children: y(o.count || 0) }),
116
+ /* @__PURE__ */ e.jsx(Le, { children: T(i) })
117
117
  ] })
118
118
  ] }, o.link.link_id);
119
119
  }) }) }) : /* @__PURE__ */ e.jsx("div", { className: "py-20 text-center text-sm text-gray-700", children: "You have no links in your post." })
@@ -121,32 +121,32 @@ const Oe = ({ post: d, isNewsletterStatsLoading: n, isWebShown: u }) => {
121
121
  ] })
122
122
  ] })
123
123
  ] });
124
- }, Pe = ({ chartData: d, range: n, isLoading: u, visitors: s, sourcesData: t, isNewsletterShown: r = !0 }) => {
125
- const { postId: l } = Y(), p = K(), { data: m } = X(), a = m == null ? void 0 : m.url, c = m == null ? void 0 : m.icon, o = f(() => t ? t.reduce((i, x) => i + Number(x.visits || 0), 0) : 0, [t]);
126
- return /* @__PURE__ */ e.jsx(e.Fragment, { children: /* @__PURE__ */ e.jsxs(P, { className: `group/datalist overflow-hidden ${!r && "col-span-2"}`, "data-testid": "web-performance", children: [
124
+ }, ze = ({ chartData: d, range: n, isLoading: u, visitors: s, sourcesData: t, isNewsletterShown: r = !0 }) => {
125
+ const { postId: l } = J(), p = V(), { data: m } = Z(), a = m == null ? void 0 : m.url, c = m == null ? void 0 : m.icon, o = g(() => t ? t.reduce((i, x) => i + Number(x.visits || 0), 0) : 0, [t]);
126
+ return /* @__PURE__ */ e.jsx(e.Fragment, { children: /* @__PURE__ */ e.jsxs(E, { className: `group/datalist overflow-hidden ${!r && "col-span-2"}`, "data-testid": "web-performance", children: [
127
127
  /* @__PURE__ */ e.jsxs("div", { className: "relative flex items-center justify-between gap-6", children: [
128
- /* @__PURE__ */ e.jsx(V, { children: /* @__PURE__ */ e.jsxs(z, { className: "flex items-center gap-1.5 text-lg", children: [
129
- /* @__PURE__ */ e.jsx(q, { size: 16, strokeWidth: 1.5 }),
128
+ /* @__PURE__ */ e.jsx($, { children: /* @__PURE__ */ e.jsxs(M, { className: "flex items-center gap-1.5 text-lg", children: [
129
+ /* @__PURE__ */ e.jsx(U, { size: 16, strokeWidth: 1.5 }),
130
130
  "Web performance"
131
131
  ] }) }),
132
- /* @__PURE__ */ e.jsx(O, { className: "absolute right-6 translate-x-10 opacity-0 transition-all duration-300 group-hover/datalist:translate-x-0 group-hover/datalist:opacity-100", size: "sm", variant: "outline", onClick: () => {
132
+ /* @__PURE__ */ e.jsx(z, { className: "absolute right-6 translate-x-10 opacity-0 transition-all duration-300 group-hover/datalist:translate-x-0 group-hover/datalist:opacity-100", size: "sm", variant: "outline", onClick: () => {
133
133
  p(`/posts/analytics/${l}/web`);
134
134
  }, children: "View more" })
135
135
  ] }),
136
- /* @__PURE__ */ e.jsxs(k, { children: [
136
+ /* @__PURE__ */ e.jsxs(C, { children: [
137
137
  /* @__PURE__ */ e.jsxs("div", { children: [
138
- /* @__PURE__ */ e.jsx(I, { className: "group relative flex grow flex-row items-start justify-between gap-5 border-none px-0 pt-0", "data-testid": "unique-visitors", children: /* @__PURE__ */ e.jsxs("div", { className: "flex grow flex-col gap-1.5 border-none pb-0", children: [
139
- /* @__PURE__ */ e.jsx(A, { color: "hsl(var(--chart-blue))", children: "Unique visitors" }),
138
+ /* @__PURE__ */ e.jsx(A, { className: "group relative flex grow flex-row items-start justify-between gap-5 border-none px-0 pt-0", "data-testid": "unique-visitors", children: /* @__PURE__ */ e.jsxs("div", { className: "flex grow flex-col gap-1.5 border-none pb-0", children: [
139
+ /* @__PURE__ */ e.jsx(K, { color: "hsl(var(--chart-blue))", children: "Unique visitors" }),
140
140
  /* @__PURE__ */ e.jsx(
141
- D,
141
+ O,
142
142
  {
143
143
  value: y(s)
144
144
  }
145
145
  )
146
146
  ] }) }),
147
- /* @__PURE__ */ e.jsx(S, {}),
148
- /* @__PURE__ */ e.jsx("div", { className: "max-h-[288px] py-6 [&_.recharts-cartesian-axis-tick-value]:fill-gray-500", children: u ? /* @__PURE__ */ e.jsx("div", { className: "flex h-[16vw] min-h-[240px] items-center justify-center", children: /* @__PURE__ */ e.jsx(E, {}) }) : /* @__PURE__ */ e.jsx(
149
- Te,
147
+ /* @__PURE__ */ e.jsx(P, {}),
148
+ /* @__PURE__ */ e.jsx("div", { className: "max-h-[288px] py-6 [&_.recharts-cartesian-axis-tick-value]:fill-gray-500", children: u ? /* @__PURE__ */ e.jsx("div", { className: "flex h-[16vw] min-h-[240px] items-center justify-center", children: /* @__PURE__ */ e.jsx(W, {}) }) : /* @__PURE__ */ e.jsx(
149
+ Se,
150
150
  {
151
151
  className: "aspect-auto h-[240px] w-full",
152
152
  color: "hsl(var(--chart-blue))",
@@ -160,10 +160,10 @@ const Oe = ({ post: d, isNewsletterStatsLoading: n, isWebShown: u }) => {
160
160
  r && /* @__PURE__ */ e.jsxs("div", { className: r ? "border-t pt-3" : "-mt-3", children: [
161
161
  /* @__PURE__ */ e.jsx("div", { children: /* @__PURE__ */ e.jsxs("div", { className: "flex items-center justify-between gap-3 py-3", children: [
162
162
  /* @__PURE__ */ e.jsx("span", { className: "font-medium text-muted-foreground", children: "How readers found this post" }),
163
- /* @__PURE__ */ e.jsx(J, { children: "Visitors" })
163
+ /* @__PURE__ */ e.jsx(X, { children: "Visitors" })
164
164
  ] }) }),
165
165
  t && t.length > 0 ? /* @__PURE__ */ e.jsx(
166
- Re,
166
+ Ae,
167
167
  {
168
168
  data: t,
169
169
  range: n,
@@ -174,24 +174,24 @@ const Oe = ({ post: d, isNewsletterStatsLoading: n, isWebShown: u }) => {
174
174
  totalVisitors: o
175
175
  }
176
176
  ) : /* @__PURE__ */ e.jsx(
177
- Ae,
177
+ Oe,
178
178
  {
179
179
  className: "h-full py-10",
180
180
  description: "Once someone visits this post, sources will show here",
181
181
  title: "No visitors since you published this post",
182
- children: /* @__PURE__ */ e.jsx(q, { strokeWidth: 1.5 })
182
+ children: /* @__PURE__ */ e.jsx(U, { strokeWidth: 1.5 })
183
183
  }
184
184
  )
185
185
  ] })
186
186
  ] })
187
187
  ] }) });
188
- }, Je = () => {
189
- var G;
190
- const d = K(), { statsConfig: n, isLoading: u, post: s, isPostLoading: t, postId: r } = X(), { totals: l, isLoading: p, currencySymbol: m } = Se(r), { appSettings: a } = re(), { emailTrackClicks: c, emailTrackOpens: o } = (a == null ? void 0 : a.analytics) || {}, i = f(() => s != null && s.published_at ? ie(s.published_at) : De.ALL_TIME.value, [s == null ? void 0 : s.published_at]), { startDate: x, endDate: v, timezone: b } = le(i), N = f(() => {
188
+ }, Ze = () => {
189
+ var H;
190
+ const d = V(), { statsConfig: n, isLoading: u, post: s, isPostLoading: t, postId: r } = Z(), { totals: l, isLoading: p, currencySymbol: m } = de(r), { appSettings: a } = ie(), { emailTrackClicks: c, emailTrackOpens: o } = (a == null ? void 0 : a.analytics) || {}, i = g(() => s != null && s.published_at ? le(s.published_at) : Pe.ALL_TIME.value, [s == null ? void 0 : s.published_at]), { startDate: x, endDate: v, timezone: b } = ne(i), N = g(() => {
191
191
  const h = {
192
192
  site_uuid: (n == null ? void 0 : n.id) || "",
193
- date_from: F(x),
194
- date_to: F(v),
193
+ date_from: q(x),
194
+ date_to: q(v),
195
195
  timezone: b,
196
196
  post_uuid: ""
197
197
  };
@@ -199,87 +199,88 @@ const Oe = ({ post: d, isNewsletterStatsLoading: n, isWebShown: u }) => {
199
199
  ...h,
200
200
  post_uuid: s.uuid
201
201
  } : h;
202
- }, [t, s, n == null ? void 0 : n.id, x, v, b]), { data: j, loading: $ } = U({
202
+ }, [t, s, n == null ? void 0 : n.id, x, v, b]), { data: j, loading: G } = Q({
203
203
  endpoint: "api_kpis",
204
204
  statsConfig: n || { id: "" },
205
205
  params: N
206
- }), Z = f(() => j != null && j.length ? j.reduce((h, g) => {
207
- const H = Number(g.visits);
208
- return h + (isNaN(H) ? 0 : H);
209
- }, 0) : 0, [j]), w = Ie.visits, ee = (G = ne(j || [], i, w.dataKey, "sum")) == null ? void 0 : G.map((h) => {
210
- const g = Number(h[w.dataKey]);
206
+ }), ee = g(() => j != null && j.length ? j.reduce((h, f) => {
207
+ const F = Number(f.visits);
208
+ return h + (isNaN(F) ? 0 : F);
209
+ }, 0) : 0, [j]), w = Ke.visits, se = (H = ce(j || [], i, w.dataKey, "sum")) == null ? void 0 : H.map((h) => {
210
+ const f = Number(h[w.dataKey]);
211
211
  return {
212
212
  date: String(h.date),
213
- value: g,
214
- formattedValue: w.formatter(g),
213
+ value: f,
214
+ formattedValue: w.formatter(f),
215
215
  label: w.label
216
216
  };
217
- }), { data: se, loading: ae } = U({
217
+ }), { data: ae, loading: te } = Q({
218
218
  endpoint: "api_top_sources",
219
219
  statsConfig: n || { id: "" },
220
220
  params: N
221
- }), M = u || p || t || $, te = t || u || $, W = de(s) && o && c, B = !(s != null && s.email_only) && (a == null ? void 0 : a.analytics.webAnalytics);
222
- return ce(() => {
223
- !t && s && me(s) && !(a != null && a.analytics.webAnalytics) && d(`/posts/analytics/${r}/growth`);
224
- }, [t, s, a == null ? void 0 : a.analytics.webAnalytics, d, r]), t ? /* @__PURE__ */ e.jsx(E, {}) : /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
225
- /* @__PURE__ */ e.jsx(he, { currentTab: "Overview" }),
226
- /* @__PURE__ */ e.jsx(xe, { children: /* @__PURE__ */ e.jsxs("div", { className: "flex flex-col gap-6 lg:grid lg:grid-cols-2", children: [
227
- B && /* @__PURE__ */ e.jsx(
228
- Pe,
221
+ }), B = u || p || t || G, re = t || u || G, L = ue(s) && o && c, _ = !(s != null && s.email_only) && (a == null ? void 0 : a.analytics.webAnalytics), k = a == null ? void 0 : a.analytics.membersTrackSources;
222
+ return oe(() => {
223
+ !t && s && pe(s) && !(a != null && a.analytics.webAnalytics) && k && d(`/posts/analytics/${r}/growth`, { replace: !0 });
224
+ }, [t, s, a == null ? void 0 : a.analytics.webAnalytics, d, r, k]), t ? /* @__PURE__ */ e.jsx(W, {}) : /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
225
+ /* @__PURE__ */ e.jsx(je, { currentTab: "Overview" }),
226
+ /* @__PURE__ */ e.jsx(fe, { children: /* @__PURE__ */ e.jsxs("div", { className: "flex flex-col gap-6 lg:grid lg:grid-cols-2", children: [
227
+ _ && /* @__PURE__ */ e.jsx(
228
+ ze,
229
229
  {
230
- chartData: ee,
231
- isLoading: te || M || ae,
232
- isNewsletterShown: W,
230
+ chartData: se,
231
+ isLoading: re || B || te,
232
+ isNewsletterShown: L,
233
233
  range: i,
234
- sourcesData: se,
235
- visitors: Z
234
+ sourcesData: ae,
235
+ visitors: ee
236
236
  }
237
237
  ),
238
- W && /* @__PURE__ */ e.jsx(
239
- Oe,
238
+ L && /* @__PURE__ */ e.jsx(
239
+ Ve,
240
240
  {
241
241
  isNewsletterStatsLoading: t,
242
- isWebShown: B,
242
+ isWebShown: _,
243
243
  post: s
244
244
  }
245
245
  ),
246
- /* @__PURE__ */ e.jsxs(P, { className: "group col-span-2 overflow-hidden p-0", "data-testid": "growth", children: [
246
+ k && /* @__PURE__ */ e.jsxs(E, { className: "group col-span-2 overflow-hidden p-0", "data-testid": "growth", children: [
247
247
  /* @__PURE__ */ e.jsxs("div", { className: "relative flex items-center justify-between gap-6", children: [
248
- /* @__PURE__ */ e.jsx(V, { children: /* @__PURE__ */ e.jsxs(z, { className: "flex items-center gap-1.5 text-lg", children: [
249
- /* @__PURE__ */ e.jsx(ue, { size: 16, strokeWidth: 1.5 }),
248
+ /* @__PURE__ */ e.jsx($, { children: /* @__PURE__ */ e.jsxs(M, { className: "flex items-center gap-1.5 text-lg", children: [
249
+ /* @__PURE__ */ e.jsx(ge, { size: 16, strokeWidth: 1.5 }),
250
250
  "Growth"
251
251
  ] }) }),
252
- /* @__PURE__ */ e.jsx(O, { className: "absolute right-6 translate-x-10 opacity-0 transition-all duration-200 group-hover:translate-x-0 group-hover:opacity-100", size: "sm", variant: "outline", onClick: () => {
252
+ /* @__PURE__ */ e.jsx(z, { className: "absolute right-6 translate-x-10 opacity-0 transition-all duration-200 group-hover:translate-x-0 group-hover:opacity-100", size: "sm", variant: "outline", onClick: () => {
253
253
  d(`/posts/analytics/${r}/growth`);
254
254
  }, children: "View more" })
255
255
  ] }),
256
- /* @__PURE__ */ e.jsx(k, { className: "flex flex-col gap-6 px-0 md:grid md:grid-cols-3 md:items-stretch md:gap-0", children: M ? Array.from({ length: 3 }, (h, g) => /* @__PURE__ */ e.jsxs("div", { className: "h-[98px] gap-1 border-r px-6 py-5 last:border-r-0", children: [
257
- /* @__PURE__ */ e.jsx(Q, { className: "w-2/3" }),
258
- /* @__PURE__ */ e.jsx(Q, { className: "h-7 w-12" })
259
- ] }, g)) : /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
260
- /* @__PURE__ */ e.jsxs(L, { className: "grow gap-1 py-0", children: [
261
- /* @__PURE__ */ e.jsx(_, { children: "Free members" }),
262
- /* @__PURE__ */ e.jsx(T, { children: /* @__PURE__ */ e.jsx(R, { className: "text-[2.2rem]", children: y((l == null ? void 0 : l.free_members) || 0) }) })
256
+ /* @__PURE__ */ e.jsx(C, { className: "flex flex-col gap-6 px-0 md:grid md:grid-cols-3 md:items-stretch md:gap-0", children: B ? Array.from({ length: 3 }, (h, f) => /* @__PURE__ */ e.jsxs("div", { className: "h-[98px] gap-1 border-r px-6 py-5 last:border-r-0", children: [
257
+ /* @__PURE__ */ e.jsx(Y, { className: "w-2/3" }),
258
+ /* @__PURE__ */ e.jsx(Y, { className: "h-7 w-12" })
259
+ ] }, f)) : /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
260
+ /* @__PURE__ */ e.jsxs(R, { className: "grow gap-1 py-0", children: [
261
+ /* @__PURE__ */ e.jsx(I, { children: "Free members" }),
262
+ /* @__PURE__ */ e.jsx(D, { children: /* @__PURE__ */ e.jsx(S, { className: "text-[2.2rem]", children: y((l == null ? void 0 : l.free_members) || 0) }) })
263
263
  ] }),
264
264
  (a == null ? void 0 : a.paidMembersEnabled) && /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
265
- /* @__PURE__ */ e.jsxs(L, { className: "grow gap-1 py-0", children: [
266
- /* @__PURE__ */ e.jsx(_, { children: "Paid members" }),
267
- /* @__PURE__ */ e.jsx(T, { children: /* @__PURE__ */ e.jsx(R, { className: "text-[2.2rem]", children: y((l == null ? void 0 : l.paid_members) || 0) }) })
265
+ /* @__PURE__ */ e.jsxs(R, { className: "grow gap-1 py-0", children: [
266
+ /* @__PURE__ */ e.jsx(I, { children: "Paid members" }),
267
+ /* @__PURE__ */ e.jsx(D, { children: /* @__PURE__ */ e.jsx(S, { className: "text-[2.2rem]", children: y((l == null ? void 0 : l.paid_members) || 0) }) })
268
268
  ] }),
269
- /* @__PURE__ */ e.jsxs(L, { className: "grow gap-1 py-0", children: [
270
- /* @__PURE__ */ e.jsx(_, { children: "MRR impact" }),
271
- /* @__PURE__ */ e.jsx(T, { children: /* @__PURE__ */ e.jsxs(R, { className: "text-[2.2rem]", children: [
269
+ /* @__PURE__ */ e.jsxs(R, { className: "grow gap-1 py-0", children: [
270
+ /* @__PURE__ */ e.jsx(I, { children: "MRR impact" }),
271
+ /* @__PURE__ */ e.jsx(D, { children: /* @__PURE__ */ e.jsxs(S, { className: "text-[2.2rem]", children: [
272
272
  m,
273
- y(Ke((l == null ? void 0 : l.mrr) || 0))
273
+ y(me((l == null ? void 0 : l.mrr) || 0))
274
274
  ] }) })
275
275
  ] })
276
276
  ] })
277
277
  ] }) })
278
- ] })
278
+ ] }),
279
+ !_ && !L && !k && /* @__PURE__ */ e.jsx(he, { className: "col-span-2 py-20" })
279
280
  ] }) })
280
281
  ] });
281
282
  };
282
283
  export {
283
- Je as default
284
+ Ze as default
284
285
  };
285
- //# sourceMappingURL=overview-sYh4JN1D.mjs.map
286
+ //# sourceMappingURL=overview-C5mCMPJY.mjs.map
@@ -1,8 +1,8 @@
1
- import { j as u, u as b, a as L, b as x, R as i, O } from "./index-C0rRguZx.mjs";
2
- import { M as C } from "./main-layout-BTItAOQE.mjs";
3
- import { P as k } from "./post-share-modal-V0HTOBaf.mjs";
4
- import { u as T } from "./posts-DeQT3knv.mjs";
5
- import { u as I } from "./post-analytics-context-CB1yM9fk.mjs";
1
+ import { j as u, u as b, a as L, b as x, R as i, O } from "./index-BiGQFQkQ.mjs";
2
+ import { M as C } from "./main-layout-D5WnaGr4.mjs";
3
+ import { P as k } from "./post-share-modal-B9Q7FJsH.mjs";
4
+ import { u as T } from "./posts-C2SKGLoU.mjs";
5
+ import { u as I } from "./post-analytics-context-qXWjDzSt.mjs";
6
6
  const U = ({ children: n }) => /* @__PURE__ */ u.jsx(C, { children: /* @__PURE__ */ u.jsx("div", { className: "grid w-full grow", children: /* @__PURE__ */ u.jsx("div", { className: "flex h-full flex-col px-8", children: n }) }) }), $ = () => {
7
7
  var y;
8
8
  const [n, r] = b(!1), [p, h] = b(null), [l, f] = b(null), { site: a } = I(), { data: g } = T({
@@ -96,4 +96,4 @@ const U = ({ children: n }) => /* @__PURE__ */ u.jsx(C, { children: /* @__PURE__
96
96
  export {
97
97
  G as default
98
98
  };
99
- //# sourceMappingURL=post-analytics-DtLt2SWx.mjs.map
99
+ //# sourceMappingURL=post-analytics-Cc2NCQis.mjs.map
@@ -1,30 +1,33 @@
1
- import { E as C, D as N, c as B, u as O, j as R } from "./index-C0rRguZx.mjs";
2
- import { b as U, u as Y } from "./posts-DeQT3knv.mjs";
3
- import { a as l } from "./hooks-BBEMuLiW.mjs";
4
- const x = "TinybirdTokenResponseType", G = {
1
+ import { E as w, D as N, c as B, u as O, j as R } from "./index-BiGQFQkQ.mjs";
2
+ import { a as c } from "./hooks-DQYjPsLg.mjs";
3
+ import { u as U } from "./posts-C2SKGLoU.mjs";
4
+ const Y = "TinybirdTokenResponseType", x = {
5
5
  refetchInterval: 120 * 60 * 1e3,
6
6
  // 2 hours — tokens expire after 3 hours
7
7
  refetchIntervalInBackground: !0,
8
8
  staleTime: 110 * 60 * 1e3
9
9
  // 110 minutes - shorter than refetch interval so automatic refresh works
10
- }, j = l({
11
- dataType: x,
10
+ }, G = c({
11
+ dataType: Y,
12
12
  path: "/tinybird/token/"
13
- }), Q = (t = {}) => j({
14
- ...G,
13
+ }), j = (t = {}) => G({
14
+ ...x,
15
15
  ...t
16
16
  });
17
17
  let v = !1;
18
- const F = (t = {}) => {
18
+ const Q = (t = {}) => {
19
19
  var a, o;
20
- const { enabled: e = !0 } = t, s = Q({ enabled: e }), n = (o = (a = s.data) == null ? void 0 : a.tinybird) == null ? void 0 : o.token, r = s.error;
20
+ const { enabled: e = !0 } = t, s = j({ enabled: e }), n = (o = (a = s.data) == null ? void 0 : a.tinybird) == null ? void 0 : o.token, r = s.error;
21
21
  return !s.isLoading && e && s.data && !n && !v && (console.warn("Tinybird analytics: No valid token received. Check your Tinybird configuration (workspaceId and adminToken must be non-empty strings)."), v = !0), {
22
22
  token: n && typeof n == "string" ? n : void 0,
23
23
  isLoading: s.isLoading,
24
24
  error: r,
25
25
  refetch: s.refetch
26
26
  };
27
- }, M = {
27
+ }, F = "ConfigResponseType", M = c({
28
+ dataType: F,
29
+ path: "/config/"
30
+ }), W = {
28
31
  TODAY: { name: "Today", value: 1 },
29
32
  LAST_7_DAYS: { name: "Last 7 days", value: 7 },
30
33
  LAST_30_DAYS: { name: "Last 30 days", value: 31 },
@@ -32,7 +35,7 @@ const F = (t = {}) => {
32
35
  YEAR_TO_DATE: { name: "Year to date", value: 366 },
33
36
  LAST_12_MONTHS: { name: "Last 12 months", value: 12 * 31 },
34
37
  ALL_TIME: { name: "All time", value: 1e3 }
35
- }, Z = {
38
+ }, tt = {
36
39
  // Countries
37
40
  US: "United States",
38
41
  TWN: "Taiwan",
@@ -49,54 +52,54 @@ const F = (t = {}) => {
49
52
  "bsky.app": "Bluesky",
50
53
  "yahoo.com": "Yahoo",
51
54
  "duckduckgo.com": "DuckDuckGo"
52
- }, tt = ["NULL", "ᴺᵁᴸᴸ", "", "Others", "Other"], i = {
55
+ }, et = ["NULL", "ᴺᵁᴸᴸ", "", "Others", "Other"], i = {
53
56
  PUBLIC: 1,
54
57
  // 1
55
58
  FREE: 2,
56
59
  // 2
57
60
  PAID: 4
58
61
  // 4
59
- }, et = i.PUBLIC | i.FREE | i.PAID, st = [
62
+ }, st = i.PUBLIC | i.FREE | i.PAID, ot = [
60
63
  { name: "Public visitors", value: "undefined", bit: i.PUBLIC },
61
64
  { name: "Free members", value: "free", bit: i.FREE },
62
65
  { name: "Paid members", value: "paid", bit: i.PAID }
63
- ], W = "SettingsResponseType", $ = l({
64
- dataType: W,
66
+ ], $ = "SettingsResponseType", q = c({
67
+ dataType: $,
65
68
  path: "/settings/",
66
69
  defaultSearchParams: {
67
70
  group: "site,theme,private,members,portal,newsletter,email,labs,slack,unsplash,views,firstpromoter,editor,comments,analytics,announcement,pintura,donations,security,social_web,explore,transistor"
68
71
  }
69
- }), q = "SiteResponseType", z = l({
70
- dataType: q,
72
+ }), z = "SiteResponseType", H = c({
73
+ dataType: z,
71
74
  path: "/site/"
72
- }), L = N(void 0), H = () => {
73
- const t = C(L);
75
+ }), L = N(void 0), K = () => {
76
+ const t = w(L);
74
77
  if (!t)
75
78
  throw new Error("useGlobalData must be used within a PostAnalyticsProvider");
76
79
  return t;
77
- }, K = ({ children: t }) => {
78
- var T, p, y, b, f, A, S;
80
+ }, V = ({ children: t }) => {
81
+ var m, p, y, b, f, A, S;
79
82
  const { postId: a } = B();
80
83
  if (!a)
81
84
  throw new Error("Post ID is required for PostAnalyticsProvider");
82
- const o = U(), e = z(), [s, n] = O(M.LAST_30_DAYS.value), r = $(), c = !!((p = (T = o.data) == null ? void 0 : T.config) != null && p.stats), d = F({ enabled: c }), { data: { posts: [_] } = { posts: [] }, isLoading: h } = Y({
85
+ const o = M(), e = H(), [s, n] = O(W.LAST_30_DAYS.value), r = q(), d = !!((p = (m = o.data) == null ? void 0 : m.config) != null && p.stats), u = Q({ enabled: d }), { data: { posts: [_] } = { posts: [] }, isLoading: h } = U({
83
86
  searchParams: {
84
87
  filter: `id:${a}`,
85
88
  include: "email,authors,tags,tiers,count.clicks,count.signups,count.paid_conversions,count.positive_feedback,count.negative_feedback,newsletter"
86
89
  }
87
- }), m = [o, e, r], P = m.map((u) => u.error).find(Boolean), k = c ? d.error : null, g = P || k, E = m.some((u) => u.isLoading), I = c ? d.isLoading : !1, D = E || I;
88
- if (g)
89
- throw g;
90
- const w = (y = e.data) != null && y.site ? {
90
+ }), g = [o, e, r], P = g.map((l) => l.error).find(Boolean), k = d ? u.error : null, T = P || k, E = g.some((l) => l.isLoading), I = d ? u.isLoading : !1, D = E || I;
91
+ if (T)
92
+ throw T;
93
+ const C = (y = e.data) != null && y.site ? {
91
94
  url: e.data.site.url,
92
95
  icon: e.data.site.icon,
93
96
  title: e.data.site.title
94
97
  } : void 0;
95
98
  return /* @__PURE__ */ R.jsx(L.Provider, { value: {
96
99
  data: (b = o.data) == null ? void 0 : b.config,
97
- site: w,
100
+ site: C,
98
101
  statsConfig: (A = (f = o.data) == null ? void 0 : f.config) == null ? void 0 : A.stats,
99
- tinybirdToken: d.token,
102
+ tinybirdToken: u.token,
100
103
  isLoading: D,
101
104
  range: s,
102
105
  setRange: n,
@@ -105,20 +108,20 @@ const F = (t = {}) => {
105
108
  post: _,
106
109
  isPostLoading: h
107
110
  }, children: t });
108
- }, ot = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
111
+ }, at = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
109
112
  __proto__: null,
110
- default: K,
111
- useGlobalData: H
113
+ default: V,
114
+ useGlobalData: K
112
115
  }, Symbol.toStringTag, { value: "Module" }));
113
116
  export {
114
- et as A,
115
- M as S,
116
- tt as U,
117
- Z as a,
118
- st as b,
117
+ st as A,
118
+ W as S,
119
+ et as U,
120
+ tt as a,
121
+ ot as b,
119
122
  i as c,
120
- F as d,
121
- ot as p,
122
- H as u
123
+ Q as d,
124
+ at as p,
125
+ K as u
123
126
  };
124
- //# sourceMappingURL=post-analytics-context-CB1yM9fk.mjs.map
127
+ //# sourceMappingURL=post-analytics-context-qXWjDzSt.mjs.map
@@ -1,11 +1,11 @@
1
- import { b as dT, c as YL, e as $L, j as XL, i as Xe, k as pT, S as ZL, B as bf, l as qL } from "./heading-BrKVbOxA.mjs";
2
- import { D as Wg, R as aa, b as wf, W as Hd, E as Tl, p as Ar, a as gT, q as fv, X as jL, u as yo, j as z, o as Xt, S as KL, n as Bt, V as _h, G as hv, H as t0, d as JL, g as QL, e as tP, Y as vv, Z as cv } from "./index-C0rRguZx.mjs";
3
- import { _ as eP, b as e0, c as yT, d as rP, e as aP, W as nP, f as iP, T as oP, g as sP, i as mT, O as lP, j as uP } from "./dialog-CKPcMrj7.mjs";
4
- import { f as fP, D as _T, b as ST, E as xT, d as bT, e as Ju, i as r0, h as hP, j as vP } from "./separator-KNoTIaJx.mjs";
5
- import { P as cP } from "./post-share-modal-V0HTOBaf.mjs";
6
- import { d as dP, u as pP } from "./post-analytics-context-CB1yM9fk.mjs";
7
- import { s as gP, u as yP } from "./hooks-BBEMuLiW.mjs";
8
- import { a as mP } from "./posts-DeQT3knv.mjs";
1
+ import { b as dT, c as YL, e as $L, j as XL, i as Xe, k as pT, S as ZL, B as bf, l as qL } from "./heading-DZWin3nG.mjs";
2
+ import { D as Wg, R as aa, b as wf, W as Hd, E as Tl, p as Ar, a as gT, q as fv, X as jL, u as yo, j as z, o as Xt, S as KL, n as Bt, V as _h, G as hv, H as t0, d as JL, g as QL, e as tP, Y as vv, Z as cv } from "./index-BiGQFQkQ.mjs";
3
+ import { _ as eP, b as e0, c as yT, d as rP, e as aP, W as nP, f as iP, T as oP, g as sP, i as mT, O as lP, j as uP } from "./dialog-CXEmd-rC.mjs";
4
+ import { f as fP, D as _T, b as ST, E as xT, d as bT, e as Ju, i as r0, h as hP, j as vP } from "./separator-CJnnsW1a.mjs";
5
+ import { P as cP } from "./post-share-modal-B9Q7FJsH.mjs";
6
+ import { d as dP, u as pP } from "./post-analytics-context-qXWjDzSt.mjs";
7
+ import { s as gP, u as yP } from "./hooks-DQYjPsLg.mjs";
8
+ import { a as mP } from "./posts-C2SKGLoU.mjs";
9
9
  /*! *****************************************************************************
10
10
  Copyright (c) Microsoft Corporation.
11
11
 
@@ -44796,8 +44796,8 @@ const dZ = ({ children: r, className: e, ...t }) => /* @__PURE__ */ z.jsx("secti
44796
44796
  if (!d)
44797
44797
  return [];
44798
44798
  const C = [];
44799
- return cT(d) && !(n != null && n.analytics.webAnalytics) || (C.push("Overview"), !d.email_only && (n != null && n.analytics.webAnalytics) && C.push("Web")), J$(d) && C.push("Newsletter"), C.push("Growth"), C;
44800
- }, [d, n == null ? void 0 : n.analytics.webAnalytics]), b = () => {
44799
+ return cT(d) && !(n != null && n.analytics.webAnalytics) || (C.push("Overview"), !d.email_only && (n != null && n.analytics.webAnalytics) && C.push("Web")), J$(d) && C.push("Newsletter"), n != null && n.analytics.membersTrackSources && C.push("Growth"), C;
44800
+ }, [d, n == null ? void 0 : n.analytics.webAnalytics, n == null ? void 0 : n.analytics.membersTrackSources]), b = () => {
44801
44801
  d && l(!0);
44802
44802
  }, x = async () => {
44803
44803
  if (d)
@@ -44980,4 +44980,4 @@ export {
44980
44980
  IX as q,
44981
44981
  j$ as u
44982
44982
  };
44983
- //# sourceMappingURL=post-analytics-header-BYaWuL9W.mjs.map
44983
+ //# sourceMappingURL=post-analytics-header-QGsYyvhA.mjs.map
@@ -1,6 +1,6 @@
1
- import { u as k, j as e } from "./index-C0rRguZx.mjs";
2
- import { i as N, B as t, m as w } from "./heading-BrKVbOxA.mjs";
3
- import { k as C, l as y, m as z, X as M, n as H, o as $, p as P, q as D, C as V } from "./dialog-CKPcMrj7.mjs";
1
+ import { u as k, j as e } from "./index-BiGQFQkQ.mjs";
2
+ import { i as N, B as t, m as w } from "./heading-DZWin3nG.mjs";
3
+ import { k as C, l as y, m as z, X as M, n as H, o as $, p as P, q as D, C as V } from "./dialog-CXEmd-rC.mjs";
4
4
  /**
5
5
  * @license lucide-react v0.553.0 - ISC
6
6
  *
@@ -105,4 +105,4 @@ export {
105
105
  I as L,
106
106
  q as P
107
107
  };
108
- //# sourceMappingURL=post-share-modal-V0HTOBaf.mjs.map
108
+ //# sourceMappingURL=post-share-modal-B9Q7FJsH.mjs.map