ghost 6.18.1 → 6.18.2

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 (131) hide show
  1. package/components/tryghost-i18n-6.18.2.tgz +0 -0
  2. package/components/{tryghost-parse-email-address-6.18.1.tgz → tryghost-parse-email-address-6.18.2.tgz} +0 -0
  3. package/content/themes/source/package.json +1 -1
  4. package/core/built/admin/assets/{PolarAngleAxis-Dod0DwfL.js → PolarAngleAxis-DALH8FDm.js} +1 -1
  5. package/core/built/admin/assets/{_baseAssignValue-DnkbkowM.js → _baseAssignValue-D_UsvJRN.js} +1 -1
  6. package/core/built/admin/assets/{a-large-small-C5mgFBRg.js → a-large-small-DVyx4GMu.js} +1 -1
  7. package/core/built/admin/assets/admin-x-settings/admin-x-settings.js +2 -2
  8. package/core/built/admin/assets/admin-x-settings/{code-editor-view-BWi3-ftq.mjs → code-editor-view-DBrulgE8.mjs} +12 -12
  9. package/core/built/admin/assets/admin-x-settings/{index-B3PtvbUw.mjs → index-CsGHbqSU.mjs} +2 -2
  10. package/core/built/admin/assets/admin-x-settings/{index-Did70N9h.mjs → index-Cypgljb3.mjs} +2 -2
  11. package/core/built/admin/assets/admin-x-settings/{index-JaMlaX9G.mjs → index-DgGwb1L-.mjs} +1390 -1381
  12. package/core/built/admin/assets/admin-x-settings/{modals-Bwrf9ptQ.mjs → modals-rdo7i0D3.mjs} +9320 -8655
  13. package/core/built/admin/assets/{at-sign-Bz-SU-S_.js → at-sign-CGNkBrZS.js} +1 -1
  14. package/core/built/admin/assets/{audience-DmVdEmIe.js → audience-CJHVR7kD.js} +1 -1
  15. package/core/built/admin/assets/{avatar-flipboard-C7sxDVEM.js → avatar-flipboard-jqr9Aapd.js} +1 -1
  16. package/core/built/admin/assets/{bluesky-sharing-DJniSF6N.js → bluesky-sharing-C2749SVt.js} +1 -1
  17. package/core/built/admin/assets/{chart-mYz3IJwm.js → chart-BAQCVPCH.js} +1 -1
  18. package/core/built/admin/assets/{chunk.524.9d300778a63b42b0de62.js → chunk.524.428356d01feabbc7b932.js} +7 -7
  19. package/core/built/admin/assets/{chunk.582.2e363cd976d9bba998b9.js → chunk.582.b8b41ba720f49d724992.js} +9 -9
  20. package/core/built/admin/assets/{code-editor-view-BIQWFJ01.js → code-editor-view-YNhJ1w71.js} +1 -1
  21. package/core/built/admin/assets/{comments-B_-hdjc6.js → comments-CPd_iCc3.js} +1 -1
  22. package/core/built/admin/assets/{copy-Bpq3uhnh.js → copy-CNsHZEFR.js} +1 -1
  23. package/core/built/admin/assets/{data-list-BYNMbRIq.js → data-list-Dn5MkmyD.js} +1 -1
  24. package/core/built/admin/assets/{deleted-feed-item-B_AwUKZy.js → deleted-feed-item-Dmm_clMl.js} +1 -1
  25. package/core/built/admin/assets/{edit-profile-DZo2ZcOu.js → edit-profile-BLSdtROQ.js} +1 -1
  26. package/core/built/admin/assets/{empty-indicator-Bn5wG9-T.js → empty-indicator-C2Z0dddU.js} +1 -1
  27. package/core/built/admin/assets/{en-D4zIrMLN.js → en-DuTkaMAI.js} +1 -1
  28. package/core/built/admin/assets/{feed-Bgq4RarU.js → feed-B4Xp4C2J.js} +1 -1
  29. package/core/built/admin/assets/{filters-CpVwu1Gk.js → filters-gnOx5Z45.js} +1 -1
  30. package/core/built/admin/assets/{gh-chart-Br7NXn_b.js → gh-chart-B2aWYkGg.js} +1 -1
  31. package/core/built/admin/assets/{ghost-98a3c5fd6235ebd344594f491cb6d17b.js → ghost-29f8f3c80e41126ba5e3c52ad5727e8a.js} +176 -176
  32. package/core/built/admin/assets/ghost-transistor-BXCFhTPG.png +0 -0
  33. package/core/built/admin/assets/{growth-CiPDnWxJ.js → growth-BysawIWe.js} +1 -1
  34. package/core/built/admin/assets/{hash-Bc1e38oH.js → hash-j3sh-UI3.js} +1 -1
  35. package/core/built/admin/assets/{inbox-BcZNBNhk.js → inbox-1cUdr8Mm.js} +1 -1
  36. package/core/built/admin/assets/index-B2yksBz4.js +13 -0
  37. package/core/built/admin/assets/{index-CMTzNTew.js → index-B8G0f0hb.js} +3 -3
  38. package/core/built/admin/assets/{index-DU3bv9jz.js → index-BVoBTlp_.js} +1 -1
  39. package/core/built/admin/assets/{index-ETsoQLbU.js → index-BgrwCpgw.js} +1 -1
  40. package/core/built/admin/assets/{index-Bm5ZeLtt.js → index-BhY_SbGB.js} +1 -1
  41. package/core/built/admin/assets/index-CkAUXgAi.js +1 -0
  42. package/core/built/admin/assets/index-Cl_EPbQ2.js +1 -0
  43. package/core/built/admin/assets/{index-B_7QsC5T.js → index-D8CXbJm4.js} +1 -1
  44. package/core/built/admin/assets/index-DGBK5k9H.js +1 -0
  45. package/core/built/admin/assets/{index-D212VvOz.js → index-DKAlEWM4.js} +1 -1
  46. package/core/built/admin/assets/index-D_sGUCda.css +1 -0
  47. package/core/built/admin/assets/{index-BFEx_ouC.js → index-DarAAzVH.js} +1 -1
  48. package/core/built/admin/assets/{index-Brg4tecQ.js → index-Dz8eTtOq.js} +1 -1
  49. package/core/built/admin/assets/{index-Cn32t_gv.js → index-I9n711UW.js} +1 -1
  50. package/core/built/admin/assets/{index-CsidX7Si.js → index-WjY3mGep.js} +2 -2
  51. package/core/built/admin/assets/{index-Dv13wKfX.js → index-mhojl7aD.js} +1 -1
  52. package/core/built/admin/assets/{koenig-lexical-DZUWzN0P.js → koenig-lexical-coiS9dIC.js} +1 -1
  53. package/core/built/admin/assets/{kpi-card-DENsK2xK.js → kpi-card-BEFHo2gr.js} +1 -1
  54. package/core/built/admin/assets/{kpis-CDrs2iS1.js → kpis-D-gz-lUk.js} +1 -1
  55. package/core/built/admin/assets/{label-BznQtEEo.js → label-BvlHzzcJ.js} +1 -1
  56. package/core/built/admin/assets/{links-lpAC3T1p.js → links-tdJvBrsT.js} +1 -1
  57. package/core/built/admin/assets/list-filter-DPE4Xj2T.js +6 -0
  58. package/core/built/admin/assets/{lucide-react-CBigk-fq.js → lucide-react-ClQ3Iy7l.js} +1448 -1453
  59. package/core/built/admin/assets/{main-layout-_SYQRjIl.js → main-layout-DY96wK-_.js} +1 -1
  60. package/core/built/admin/assets/{message-square-text-cV8O_qKq.js → message-square-text-Dd1XS5-H.js} +1 -1
  61. package/core/built/admin/assets/{minus-NvnQTlW7.js → minus-CyEc3BE5.js} +1 -1
  62. package/core/built/admin/assets/modals-C06GcVIm.js +77 -0
  63. package/core/built/admin/assets/moderation-B0fdmlig.js +1 -0
  64. package/core/built/admin/assets/newsletter-Byg3ARa5.js +1 -0
  65. package/core/built/admin/assets/{newsletters-BexdXUhn.js → newsletters-DbH39vgA.js} +1 -1
  66. package/core/built/admin/assets/{note-DuaUGOeZ.js → note-Cwy-rIAF.js} +1 -1
  67. package/core/built/admin/assets/overview-CVMLGrVt.js +1 -0
  68. package/core/built/admin/assets/{pagemenu-CZyroidv.js → pagemenu-CkzsZrHC.js} +1 -1
  69. package/core/built/admin/assets/{post-analytics-DLK2SOSQ.js → post-analytics-aA-nG9Fq.js} +1 -1
  70. package/core/built/admin/assets/{post-analytics-context-CF7C67-0.js → post-analytics-context-BLkup0Xh.js} +1 -1
  71. package/core/built/admin/assets/{post-analytics-header-7GtJCx0W.js → post-analytics-header-D9srAPT5.js} +1 -1
  72. package/core/built/admin/assets/{post-share-modal-D8R7DUZP.js → post-share-modal-CkvJtrRw.js} +1 -1
  73. package/core/built/admin/assets/{posts-CL9UDYoW.js → posts-DDkuYoN7.js} +1 -1
  74. package/core/built/admin/assets/{repeat-DgH39UKE.js → repeat-B-SL0yPM.js} +1 -1
  75. package/core/built/admin/assets/{reply-DAaNxiy8.js → reply-BdCPoUQ9.js} +1 -1
  76. package/core/built/admin/assets/{select-Cor2wFXT.js → select-C7aNW8QS.js} +1 -1
  77. package/core/built/admin/assets/{settings-xRx917Gj.js → settings-Bzy1GNfD.js} +1 -1
  78. package/core/built/admin/assets/{settings-BeumESEN.js → settings-D-dhma2e.js} +23 -23
  79. package/core/built/admin/assets/{sort-button-BNW3i4Lb.js → sort-button-Dv8vjh13.js} +1 -1
  80. package/core/built/admin/assets/{source-icon-DvDuzw73.js → source-icon-DTz4isLK.js} +1 -1
  81. package/core/built/admin/assets/{sprout-C3cc0c-K.js → sprout-BwLQTzMf.js} +1 -1
  82. package/core/built/admin/assets/{square-tZp0_n7e.js → square-YF1YE9ex.js} +1 -1
  83. package/core/built/admin/assets/{stats-2Jelnn-Q.js → stats-C5ad0fgQ.js} +1 -1
  84. package/core/built/admin/assets/{stats-view-CESy8ELH.js → stats-view-BvkxPYNX.js} +1 -1
  85. package/core/built/admin/assets/{step-1-DrqdolAh.js → step-1-D7_s-D99.js} +1 -1
  86. package/core/built/admin/assets/{step-2-DmEpKck5.js → step-2-B94Yf7FF.js} +1 -1
  87. package/core/built/admin/assets/{step-3-Bus-0o0n.js → step-3-DswXYYf4.js} +1 -1
  88. package/core/built/admin/assets/{table-BQUcKHfm.js → table-D30IXfUP.js} +1 -1
  89. package/core/built/admin/assets/{tabs-BmdL0X4U.js → tabs-CjNdfW0y.js} +1 -1
  90. package/core/built/admin/assets/{tags-EchqlZUJ.js → tags-B0ux9_dT.js} +1 -1
  91. package/core/built/admin/assets/{tags-CLxXZlOO.js → tags-PGeGAafJ.js} +1 -1
  92. package/core/built/admin/assets/{tiers-nCGyTly9.js → tiers-BaXK0JoI.js} +1 -1
  93. package/core/built/admin/assets/{toggle-group-CM5uf7J1.js → toggle-group-DdY8HF3Y.js} +1 -1
  94. package/core/built/admin/assets/{topic-filter-LTRvZ8aU.js → topic-filter-Boh22uGD.js} +1 -1
  95. package/core/built/admin/assets/{trash-u5BxolyH.js → trash-D7ZWrnDq.js} +1 -1
  96. package/core/built/admin/assets/{url-helpers-D41fEt51.js → url-helpers-mt6MBIi0.js} +1 -1
  97. package/core/built/admin/assets/{use-growth-stats-BJ0O9ewi.js → use-growth-stats-Bg0nE0WG.js} +1 -1
  98. package/core/built/admin/assets/{use-infinite-virtual-scroll-APZWciOk.js → use-infinite-virtual-scroll-DoeI5IY-.js} +1 -1
  99. package/core/built/admin/assets/{use-simple-pagination-DVRHeaAR.js → use-simple-pagination-BJzBULR3.js} +1 -1
  100. package/core/built/admin/assets/{user-round-check-B6j98D6d.js → user-round-check-BLc3L-ei.js} +1 -1
  101. package/core/built/admin/assets/{wallet-cards-KmOh29LP.js → wallet-cards-xX4QZik7.js} +1 -1
  102. package/core/built/admin/assets/web-DQ2qBymm.js +1 -0
  103. package/core/built/admin/index.html +5 -5
  104. package/core/server/lib/image/cached-image-size-from-url.js +37 -25
  105. package/core/server/lib/lexical.js +1 -0
  106. package/core/server/lib/mobiledoc.js +1 -0
  107. package/core/server/services/email-service/email-renderer.js +6 -2
  108. package/core/server/services/email-service/email-service-wrapper.js +2 -2
  109. package/core/server/services/koenig/node-renderers/call-to-action-renderer.js +2 -2
  110. package/core/server/services/koenig/node-renderers/gallery-renderer.js +3 -3
  111. package/core/server/services/koenig/node-renderers/image-renderer.js +3 -3
  112. package/core/server/services/koenig/render-utils/is-content-image.js +18 -0
  113. package/core/server/services/koenig/render-utils/srcset-attribute.js +4 -4
  114. package/core/server/services/members/members-api/controllers/router-controller.js +21 -36
  115. package/core/server/services/members/members-api/repositories/member-repository.js +8 -1
  116. package/core/server/services/offers/offer-bookshelf-repository.js +3 -3
  117. package/core/shared/config/defaults.json +1 -1
  118. package/core/shared/labs.js +2 -1
  119. package/package.json +5 -5
  120. package/components/tryghost-i18n-6.18.1.tgz +0 -0
  121. package/core/built/admin/assets/index-BBrewxpF.css +0 -1
  122. package/core/built/admin/assets/index-BpcL7RmI.js +0 -13
  123. package/core/built/admin/assets/index-CTfJflJ2.js +0 -1
  124. package/core/built/admin/assets/index-D67LJ_H4.js +0 -1
  125. package/core/built/admin/assets/index-ZYDRMgcT.js +0 -1
  126. package/core/built/admin/assets/modals-XRSkribf.js +0 -77
  127. package/core/built/admin/assets/moderation-BQp1GEWG.js +0 -1
  128. package/core/built/admin/assets/newsletter-foM6KNNV.js +0 -1
  129. package/core/built/admin/assets/overview-DgKBNqyc.js +0 -1
  130. package/core/built/admin/assets/web-Cclotbnz.js +0 -1
  131. package/core/server/services/koenig/render-utils/is-local-content-image.js +0 -9
@@ -1 +1 @@
1
- import{aP as U,j as s,B as F,aU as T,e as _,y as I,by as V,bz as q,bA as J,bB as Q,bC as X,bD as Y,aj as b,r as g,u as Z,S as E,aR as A,bE as ss,bK as es}from"./index-CMTzNTew.js";import{E as G}from"./empty-indicator-Bn5wG9-T.js";import{A as rs,U as as,a as ts,W as ns,C as os}from"./wallet-cards-KmOh29LP.js";import{S as D}from"./source-icon-DvDuzw73.js";import{p as cs,e as is}from"./source-utils-B1S3ZHA2.js";import{C as N,a as w,b as S,f as v,c as C,g as ls}from"./pagemenu-CZyroidv.js";import{a as ds,b as ms,c as L,d as f,e as hs,f as y}from"./table-BQUcKHfm.js";import{K as M,d as H,a as R,b as $,c as k}from"./kpi-card-DENsK2xK.js";import{P as xs,a as ps}from"./post-analytics-header-7GtJCx0W.js";import{u as us}from"./post-analytics-context-CF7C67-0.js";import{g as P}from"./currency-fEUUCkj0.js";import{c as js,d as bs,a as gs}from"./stats-2Jelnn-Q.js";const fs=({className:o})=>{const t=U();return s.jsx(G,{actions:s.jsx(F,{variant:"outline",onClick:()=>t("/settings/analytics",{crossApp:!0}),children:"Open settings"}),className:o,description:"Enable member source tracking in settings to see which content drives member growth.",title:"Member sources have been disabled",children:s.jsx(rs,{})})},K="https://www.google.com/s2/favicons?domain=ghost.org&sz=64",W=({headerStyle:o="table",children:t="Source",data:h,mode:r,defaultSourceIconUrl:a=K})=>{const{appSettings:c}=T();if(r==="growth")return s.jsxs(ds,{children:[s.jsx(ms,{children:s.jsxs(L,{children:[s.jsx(f,{className:"min-w-[320px]",variant:o==="table"?"default":"cardhead",children:t}),s.jsx(f,{className:"w-[110px] text-right",children:"Free members"}),c?.paidMembersEnabled&&s.jsxs(s.Fragment,{children:[s.jsx(f,{className:"w-[110px] text-right",children:"Paid members"}),s.jsx(f,{className:"w-[100px] text-right",children:"MRR impact"})]})]})}),s.jsx(hs,{children:h?.map(e=>{const l=d=>Math.round(d/100);return s.jsxs(L,{className:"last:border-none",children:[s.jsx(y,{children:e.linkUrl?s.jsxs("a",{className:"group flex items-center gap-2",href:e.linkUrl,rel:"noreferrer",target:"_blank",children:[s.jsx(D,{defaultSourceIconUrl:a,displayName:e.displayName,iconSrc:e.iconSrc}),s.jsx("span",{className:"group-hover:underline",children:e.displayName})]}):s.jsxs("span",{className:"flex items-center gap-2",children:[s.jsx(D,{defaultSourceIconUrl:a,displayName:e.displayName,iconSrc:e.iconSrc}),s.jsx("span",{children:e.displayName})]})}),s.jsxs(y,{className:"text-right font-mono text-sm",children:["+",b(e.free_members||0)]}),c?.paidMembersEnabled&&s.jsxs(s.Fragment,{children:[s.jsxs(y,{className:"text-right font-mono text-sm",children:["+",b(e.paid_members||0)]}),s.jsxs(y,{className:"text-right font-mono text-sm",children:["+$",b(l(e.mrr||0))]})]})]},e.source)})})]})},ys=({title:o="Top sources",description:t,data:h,mode:r="visits",range:a=30,totalVisitors:c=0,siteUrl:e,siteIcon:l,defaultSourceIconUrl:d=K,getPeriodText:i,className:p})=>{const{appSettings:x}=T(),n=_.useMemo(()=>cs({data:h,mode:r,siteUrl:e,siteIcon:l,defaultSourceIconUrl:d}),[h,e,l,r,d]),m=_.useMemo(()=>is({processedData:n,totalVisitors:c,mode:r}),[n,c,r]),u=m.slice(0,10),j=t||(r==="growth"?"Where did your growth come from?":`How readers found your ${a?"site":"post"}${a&&i?` ${i(a)}`:""}`),B=r==="growth"?"Sources":"Top sources",z=r==="growth"?"Where did your growth come from?":`How readers found your ${a?"site":"post"}${a&&i?` ${i(a)}`:""}`;return s.jsxs(N,{className:I("group/datalist w-full max-w-[calc(100vw-64px)] overflow-x-auto sidebar:max-w-[calc(100vw-64px-280px)]",p),"data-testid":"top-sources-card",children:[u.length<=0&&s.jsxs(w,{children:[s.jsx(S,{children:o}),s.jsx(v,{children:j})]}),s.jsx(C,{children:r==="growth"&&!x?.analytics.membersTrackSources?s.jsx(fs,{className:"py-10"}):u.length>0?s.jsx(W,{data:u,defaultSourceIconUrl:d,getPeriodText:i,headerStyle:"card",mode:r,range:a,children:s.jsxs(w,{children:[s.jsx(S,{children:o}),s.jsx(v,{children:j})]})}):s.jsx("div",{className:"py-20 text-center text-sm text-gray-700",children:s.jsx(G,{className:"h-full",description:r==="growth"&&"Once someone signs up on this post, sources will show here",title:`No sources data available ${i?i(a):""}`,children:s.jsx(as,{strokeWidth:1.5})})})}),m.length>10&&s.jsx(ls,{children:s.jsxs(V,{children:[s.jsx(q,{asChild:!0,children:s.jsxs(F,{variant:"outline",children:["View all ",s.jsx(ts,{})]})}),s.jsxs(J,{className:"overflow-y-auto pt-0 sm:max-w-[600px]",children:[s.jsxs(Q,{className:"sticky top-0 z-40 -mx-6 bg-background/60 p-6 backdrop-blur",children:[s.jsx(X,{children:B}),s.jsx(Y,{children:z})]}),s.jsx("div",{className:"group/datalist",children:s.jsx(W,{data:m,defaultSourceIconUrl:d,getPeriodText:i,mode:r,range:a})})]})]})})]})},Ns=o=>{const{data:t,isLoading:h}=js(o),{data:r,isLoading:a}=bs(o),{data:c,isLoading:e}=gs(),l=g.useMemo(()=>t?.stats||[],[t]),d=g.useMemo(()=>r?.stats.length===0?{free_members:0,paid_members:0,mrr:0}:r?.stats[0],[r]),{selectedCurrency:i,currencySymbol:p}=g.useMemo(()=>{if(c?.stats&&c?.meta?.totals){const n=c.meta.totals;let m=n[0];if(!m)return{selectedCurrency:"usd",currencySymbol:P("usd")};for(const j of n)j.mrr>m.mrr&&(m=j);const u=m.currency;return{selectedCurrency:u,currencySymbol:P(u)}}return{selectedCurrency:"usd",currencySymbol:P("usd")}},[c]);return{isLoading:g.useMemo(()=>h||a||e,[h,a,e]),stats:l,totals:d,selectedCurrency:i,currencySymbol:p}},O=o=>Math.round(o/100),Cs=()=>{const{data:o}=us(),{postId:t}=Z(),{stats:h,totals:r,isLoading:a,currencySymbol:c}=Ns(t||""),{appSettings:e}=T(),l=U(),d=o?.url,i=o?.icon;let p="flex flex-col items-stretch gap-6",x="";return e?.paidMembersEnabled||(p="grid grid-cols-1 border rounded-md",x="border-none hover:shadow-none"),s.jsxs(s.Fragment,{children:[s.jsx(xs,{currentTab:"Growth"}),s.jsx(ps,{children:a?s.jsxs("div",{className:p,children:[s.jsx(N,{className:x,children:s.jsx(C,{className:"grid grid-cols-3 p-0",children:Array.from({length:3},(n,m)=>s.jsxs("div",{className:"h-[98px] gap-1 border-r px-6 py-5 last:border-r-0",children:[s.jsx(E,{className:"w-2/3"}),s.jsx(E,{className:"h-7 w-12"})]},m))})}),s.jsxs(N,{className:x,children:[s.jsxs(w,{children:[s.jsx(S,{children:"Top sources"}),s.jsx(v,{children:"Where did your growth come from?"})]}),s.jsxs(C,{children:[s.jsx(A,{}),s.jsx(ss,{className:"pt-6"})]})]})]}):s.jsxs("div",{className:p,children:[s.jsxs(N,{className:x,"data-testid":"members-card",children:[s.jsxs(w,{className:"hidden",children:[s.jsx(S,{children:"Newsletters"}),s.jsx(v,{children:"How did this post perform"})]}),s.jsx(C,{className:"p-0",children:s.jsxs("div",{className:`flex flex-col md:grid md:items-stretch ${e?.paidMembersEnabled?"md:grid-cols-3":"md:grid-cols-1"}`,children:[s.jsxs(M,{className:"grow",children:[s.jsx(H,{onClick:()=>{const n=encodeURIComponent(`signup:'${t}'+conversion:-'${t}'`);l(`/members?filterParam=${n}`,{crossApp:!0})},children:"View members →"}),s.jsxs(R,{onClick:()=>{const n=encodeURIComponent(`signup:'${t}'+conversion:-'${t}'`);l(`/members?filterParam=${n}`,{crossApp:!0})},children:[s.jsx(es,{strokeWidth:1.5}),"Free members"]}),s.jsx($,{children:s.jsx(k,{children:b(r?.free_members||0)})})]}),e?.paidMembersEnabled&&s.jsxs(s.Fragment,{children:[s.jsxs(M,{className:"grow",children:[s.jsx(H,{onClick:()=>{const n=encodeURIComponent(`conversion:'${t}'`);l(`/members?filterParam=${n}`,{crossApp:!0})},children:"View members →"}),s.jsxs(R,{onClick:()=>{const n=encodeURIComponent(`conversion:'${t}'`);l(`/members?filterParam=${n}`,{crossApp:!0})},children:[s.jsx(ns,{strokeWidth:1.5}),"Paid members"]}),s.jsx($,{children:s.jsx(k,{children:b(r?.paid_members||0)})})]}),s.jsxs(M,{className:"grow",children:[s.jsxs(R,{children:[s.jsx(os,{strokeWidth:1.5}),"MRR"]}),s.jsx($,{children:s.jsxs(k,{children:["+",c,O(r?.mrr||0)]})})]})]})]})})]}),!e?.paidMembersEnabled&&s.jsx(A,{}),s.jsx(ys,{className:x,data:h,mode:"growth",siteIcon:i,siteUrl:d})]})})]})},Ds=Object.freeze(Object.defineProperty({__proto__:null,centsToDollars:O,default:Cs},Symbol.toStringTag,{value:"Module"}));export{O as c,Ds as g,Ns as u};
1
+ import{aP as U,j as s,B as F,aU as T,e as _,y as I,by as V,bz as q,bA as J,bB as Q,bC as X,bD as Y,aj as b,r as g,u as Z,S as E,aR as A,bE as ss,bK as es}from"./index-B8G0f0hb.js";import{E as G}from"./empty-indicator-C2Z0dddU.js";import{A as rs,U as as,a as ts,W as ns,C as os}from"./wallet-cards-xX4QZik7.js";import{S as D}from"./source-icon-DTz4isLK.js";import{p as cs,e as is}from"./source-utils-B1S3ZHA2.js";import{C as N,a as w,b as S,f as v,c as C,g as ls}from"./pagemenu-CkzsZrHC.js";import{a as ds,b as ms,c as L,d as f,e as hs,f as y}from"./table-D30IXfUP.js";import{K as M,d as H,a as R,b as $,c as k}from"./kpi-card-BEFHo2gr.js";import{P as xs,a as ps}from"./post-analytics-header-D9srAPT5.js";import{u as us}from"./post-analytics-context-BLkup0Xh.js";import{g as P}from"./currency-fEUUCkj0.js";import{c as js,d as bs,a as gs}from"./stats-C5ad0fgQ.js";const fs=({className:o})=>{const t=U();return s.jsx(G,{actions:s.jsx(F,{variant:"outline",onClick:()=>t("/settings/analytics",{crossApp:!0}),children:"Open settings"}),className:o,description:"Enable member source tracking in settings to see which content drives member growth.",title:"Member sources have been disabled",children:s.jsx(rs,{})})},K="https://www.google.com/s2/favicons?domain=ghost.org&sz=64",W=({headerStyle:o="table",children:t="Source",data:h,mode:r,defaultSourceIconUrl:a=K})=>{const{appSettings:c}=T();if(r==="growth")return s.jsxs(ds,{children:[s.jsx(ms,{children:s.jsxs(L,{children:[s.jsx(f,{className:"min-w-[320px]",variant:o==="table"?"default":"cardhead",children:t}),s.jsx(f,{className:"w-[110px] text-right",children:"Free members"}),c?.paidMembersEnabled&&s.jsxs(s.Fragment,{children:[s.jsx(f,{className:"w-[110px] text-right",children:"Paid members"}),s.jsx(f,{className:"w-[100px] text-right",children:"MRR impact"})]})]})}),s.jsx(hs,{children:h?.map(e=>{const l=d=>Math.round(d/100);return s.jsxs(L,{className:"last:border-none",children:[s.jsx(y,{children:e.linkUrl?s.jsxs("a",{className:"group flex items-center gap-2",href:e.linkUrl,rel:"noreferrer",target:"_blank",children:[s.jsx(D,{defaultSourceIconUrl:a,displayName:e.displayName,iconSrc:e.iconSrc}),s.jsx("span",{className:"group-hover:underline",children:e.displayName})]}):s.jsxs("span",{className:"flex items-center gap-2",children:[s.jsx(D,{defaultSourceIconUrl:a,displayName:e.displayName,iconSrc:e.iconSrc}),s.jsx("span",{children:e.displayName})]})}),s.jsxs(y,{className:"text-right font-mono text-sm",children:["+",b(e.free_members||0)]}),c?.paidMembersEnabled&&s.jsxs(s.Fragment,{children:[s.jsxs(y,{className:"text-right font-mono text-sm",children:["+",b(e.paid_members||0)]}),s.jsxs(y,{className:"text-right font-mono text-sm",children:["+$",b(l(e.mrr||0))]})]})]},e.source)})})]})},ys=({title:o="Top sources",description:t,data:h,mode:r="visits",range:a=30,totalVisitors:c=0,siteUrl:e,siteIcon:l,defaultSourceIconUrl:d=K,getPeriodText:i,className:p})=>{const{appSettings:x}=T(),n=_.useMemo(()=>cs({data:h,mode:r,siteUrl:e,siteIcon:l,defaultSourceIconUrl:d}),[h,e,l,r,d]),m=_.useMemo(()=>is({processedData:n,totalVisitors:c,mode:r}),[n,c,r]),u=m.slice(0,10),j=t||(r==="growth"?"Where did your growth come from?":`How readers found your ${a?"site":"post"}${a&&i?` ${i(a)}`:""}`),B=r==="growth"?"Sources":"Top sources",z=r==="growth"?"Where did your growth come from?":`How readers found your ${a?"site":"post"}${a&&i?` ${i(a)}`:""}`;return s.jsxs(N,{className:I("group/datalist w-full max-w-[calc(100vw-64px)] overflow-x-auto sidebar:max-w-[calc(100vw-64px-280px)]",p),"data-testid":"top-sources-card",children:[u.length<=0&&s.jsxs(w,{children:[s.jsx(S,{children:o}),s.jsx(v,{children:j})]}),s.jsx(C,{children:r==="growth"&&!x?.analytics.membersTrackSources?s.jsx(fs,{className:"py-10"}):u.length>0?s.jsx(W,{data:u,defaultSourceIconUrl:d,getPeriodText:i,headerStyle:"card",mode:r,range:a,children:s.jsxs(w,{children:[s.jsx(S,{children:o}),s.jsx(v,{children:j})]})}):s.jsx("div",{className:"py-20 text-center text-sm text-gray-700",children:s.jsx(G,{className:"h-full",description:r==="growth"&&"Once someone signs up on this post, sources will show here",title:`No sources data available ${i?i(a):""}`,children:s.jsx(as,{strokeWidth:1.5})})})}),m.length>10&&s.jsx(ls,{children:s.jsxs(V,{children:[s.jsx(q,{asChild:!0,children:s.jsxs(F,{variant:"outline",children:["View all ",s.jsx(ts,{})]})}),s.jsxs(J,{className:"overflow-y-auto pt-0 sm:max-w-[600px]",children:[s.jsxs(Q,{className:"sticky top-0 z-40 -mx-6 bg-background/60 p-6 backdrop-blur",children:[s.jsx(X,{children:B}),s.jsx(Y,{children:z})]}),s.jsx("div",{className:"group/datalist",children:s.jsx(W,{data:m,defaultSourceIconUrl:d,getPeriodText:i,mode:r,range:a})})]})]})})]})},Ns=o=>{const{data:t,isLoading:h}=js(o),{data:r,isLoading:a}=bs(o),{data:c,isLoading:e}=gs(),l=g.useMemo(()=>t?.stats||[],[t]),d=g.useMemo(()=>r?.stats.length===0?{free_members:0,paid_members:0,mrr:0}:r?.stats[0],[r]),{selectedCurrency:i,currencySymbol:p}=g.useMemo(()=>{if(c?.stats&&c?.meta?.totals){const n=c.meta.totals;let m=n[0];if(!m)return{selectedCurrency:"usd",currencySymbol:P("usd")};for(const j of n)j.mrr>m.mrr&&(m=j);const u=m.currency;return{selectedCurrency:u,currencySymbol:P(u)}}return{selectedCurrency:"usd",currencySymbol:P("usd")}},[c]);return{isLoading:g.useMemo(()=>h||a||e,[h,a,e]),stats:l,totals:d,selectedCurrency:i,currencySymbol:p}},O=o=>Math.round(o/100),Cs=()=>{const{data:o}=us(),{postId:t}=Z(),{stats:h,totals:r,isLoading:a,currencySymbol:c}=Ns(t||""),{appSettings:e}=T(),l=U(),d=o?.url,i=o?.icon;let p="flex flex-col items-stretch gap-6",x="";return e?.paidMembersEnabled||(p="grid grid-cols-1 border rounded-md",x="border-none hover:shadow-none"),s.jsxs(s.Fragment,{children:[s.jsx(xs,{currentTab:"Growth"}),s.jsx(ps,{children:a?s.jsxs("div",{className:p,children:[s.jsx(N,{className:x,children:s.jsx(C,{className:"grid grid-cols-3 p-0",children:Array.from({length:3},(n,m)=>s.jsxs("div",{className:"h-[98px] gap-1 border-r px-6 py-5 last:border-r-0",children:[s.jsx(E,{className:"w-2/3"}),s.jsx(E,{className:"h-7 w-12"})]},m))})}),s.jsxs(N,{className:x,children:[s.jsxs(w,{children:[s.jsx(S,{children:"Top sources"}),s.jsx(v,{children:"Where did your growth come from?"})]}),s.jsxs(C,{children:[s.jsx(A,{}),s.jsx(ss,{className:"pt-6"})]})]})]}):s.jsxs("div",{className:p,children:[s.jsxs(N,{className:x,"data-testid":"members-card",children:[s.jsxs(w,{className:"hidden",children:[s.jsx(S,{children:"Newsletters"}),s.jsx(v,{children:"How did this post perform"})]}),s.jsx(C,{className:"p-0",children:s.jsxs("div",{className:`flex flex-col md:grid md:items-stretch ${e?.paidMembersEnabled?"md:grid-cols-3":"md:grid-cols-1"}`,children:[s.jsxs(M,{className:"grow",children:[s.jsx(H,{onClick:()=>{const n=encodeURIComponent(`signup:'${t}'+conversion:-'${t}'`);l(`/members?filterParam=${n}`,{crossApp:!0})},children:"View members →"}),s.jsxs(R,{onClick:()=>{const n=encodeURIComponent(`signup:'${t}'+conversion:-'${t}'`);l(`/members?filterParam=${n}`,{crossApp:!0})},children:[s.jsx(es,{strokeWidth:1.5}),"Free members"]}),s.jsx($,{children:s.jsx(k,{children:b(r?.free_members||0)})})]}),e?.paidMembersEnabled&&s.jsxs(s.Fragment,{children:[s.jsxs(M,{className:"grow",children:[s.jsx(H,{onClick:()=>{const n=encodeURIComponent(`conversion:'${t}'`);l(`/members?filterParam=${n}`,{crossApp:!0})},children:"View members →"}),s.jsxs(R,{onClick:()=>{const n=encodeURIComponent(`conversion:'${t}'`);l(`/members?filterParam=${n}`,{crossApp:!0})},children:[s.jsx(ns,{strokeWidth:1.5}),"Paid members"]}),s.jsx($,{children:s.jsx(k,{children:b(r?.paid_members||0)})})]}),s.jsxs(M,{className:"grow",children:[s.jsxs(R,{children:[s.jsx(os,{strokeWidth:1.5}),"MRR"]}),s.jsx($,{children:s.jsxs(k,{children:["+",c,O(r?.mrr||0)]})})]})]})]})})]}),!e?.paidMembersEnabled&&s.jsx(A,{}),s.jsx(ys,{className:x,data:h,mode:"growth",siteIcon:i,siteUrl:d})]})})]})},Ds=Object.freeze(Object.defineProperty({__proto__:null,centsToDollars:O,default:Cs},Symbol.toStringTag,{value:"Module"}));export{O as c,Ds as g,Ns as u};
@@ -1,4 +1,4 @@
1
- import{aA as e}from"./index-CMTzNTew.js";/**
1
+ import{aA as e}from"./index-B8G0f0hb.js";/**
2
2
  * @license lucide-react v0.553.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- import{aA as o}from"./index-CMTzNTew.js";/**
1
+ import{aA as o}from"./index-B8G0f0hb.js";/**
2
2
  * @license lucide-react v0.553.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.