ghost 6.17.0 → 6.17.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 (103) hide show
  1. package/components/tryghost-i18n-6.17.1.tgz +0 -0
  2. package/components/{tryghost-parse-email-address-6.17.0.tgz → tryghost-parse-email-address-6.17.1.tgz} +0 -0
  3. package/core/built/admin/assets/{PolarAngleAxis-sYvwhg8d.js → PolarAngleAxis-DVj7Sw2n.js} +1 -1
  4. package/core/built/admin/assets/{_baseAssignValue-DKQ9pw63.js → _baseAssignValue-CrCkbXur.js} +1 -1
  5. package/core/built/admin/assets/{a-large-small-CCJbivJB.js → a-large-small-BLquRSNr.js} +1 -1
  6. package/core/built/admin/assets/admin-x-settings/admin-x-settings.js +2 -2
  7. package/core/built/admin/assets/admin-x-settings/{code-editor-view-CdDTmDO_.mjs → code-editor-view-BzvYs1fs.mjs} +2 -2
  8. package/core/built/admin/assets/admin-x-settings/{index-D19Kl7F3.mjs → index-BXChUyr6.mjs} +5703 -5668
  9. package/core/built/admin/assets/admin-x-settings/{index-NuuHxngw.mjs → index-DYEF3NiM.mjs} +2 -2
  10. package/core/built/admin/assets/admin-x-settings/{index-DWAeZxhW.mjs → index-DdMo_pvD.mjs} +2 -2
  11. package/core/built/admin/assets/admin-x-settings/{modals-C-PAZhri.mjs → modals-Ck3AHDx3.mjs} +8065 -8057
  12. package/core/built/admin/assets/{at-sign-BpRvqAQI.js → at-sign-Cj4_ORaa.js} +1 -1
  13. package/core/built/admin/assets/{audience-DyCuv1si.js → audience-ACTBvUSt.js} +1 -1
  14. package/core/built/admin/assets/{avatar-flipboard-BfziFfAR.js → avatar-flipboard-BeKL4BEF.js} +1 -1
  15. package/core/built/admin/assets/{bluesky-sharing-D-LC_G4e.js → bluesky-sharing-CP7ej5rz.js} +1 -1
  16. package/core/built/admin/assets/{chart-BvckKrZJ.js → chart-B6jk72FT.js} +1 -1
  17. package/core/built/admin/assets/{chunk.524.c76823170fc310a35d9a.js → chunk.524.6c12997c856012ea06f5.js} +7 -7
  18. package/core/built/admin/assets/{chunk.582.78cee8a07d88a486d8d3.js → chunk.582.a0abd5b93eb1bc50335a.js} +10 -10
  19. package/core/built/admin/assets/{code-editor-view-BEwQJYgg.js → code-editor-view-CVRtsOBM.js} +1 -1
  20. package/core/built/admin/assets/{comments-1fqIGh0f.js → comments-CxjhZH_T.js} +1 -1
  21. package/core/built/admin/assets/{copy-BywnwlHN.js → copy-YhtJexiS.js} +1 -1
  22. package/core/built/admin/assets/{data-list--hSCIzLC.js → data-list-BPSXm3ej.js} +1 -1
  23. package/core/built/admin/assets/{deleted-feed-item-DYKurQBy.js → deleted-feed-item-D8BHDEHh.js} +1 -1
  24. package/core/built/admin/assets/{edit-profile-yzEMlJ_t.js → edit-profile-FrkkXMG7.js} +1 -1
  25. package/core/built/admin/assets/{empty-indicator-1p7S45xr.js → empty-indicator-SsCyCd50.js} +1 -1
  26. package/core/built/admin/assets/{en-DtAty2DP.js → en-ZWZBSdFY.js} +1 -1
  27. package/core/built/admin/assets/{feed-DB25J9B-.js → feed-BvVJCTy8.js} +1 -1
  28. package/core/built/admin/assets/{filters-cN8zP798.js → filters-BupJ4mUj.js} +1 -1
  29. package/core/built/admin/assets/{gh-chart-CVItDGhq.js → gh-chart-Dp9VXeON.js} +1 -1
  30. package/core/built/admin/assets/{ghost-f424e37f7e8f90122e3a13866d2b1f91.css → ghost-78b420974adc056bf1c9570275a46535.css} +1 -1
  31. package/core/built/admin/assets/{ghost-10e648bbdbb5f2e55418e88f15d302e2.js → ghost-a9268074d0a9b02198594a05ecd7a626.js} +2 -2
  32. package/core/built/admin/assets/{growth-Lbkwu9SJ.js → growth-CRDHOGrZ.js} +1 -1
  33. package/core/built/admin/assets/{hash-BQl75WLf.js → hash-CPAX2PwN.js} +1 -1
  34. package/core/built/admin/assets/{inbox-BMxFzv7J.js → inbox-DuT2edmx.js} +1 -1
  35. package/core/built/admin/assets/{index-oARkCq-e.js → index--Nwo3958.js} +1 -1
  36. package/core/built/admin/assets/{index-SafJnMjy.js → index-8ECl7z0l.js} +1 -1
  37. package/core/built/admin/assets/{index-CIheyf0S.js → index-B1rQYn0h.js} +1 -1
  38. package/core/built/admin/assets/{index-BQ6KbriB.js → index-B2oDZJ9B.js} +1 -1
  39. package/core/built/admin/assets/{index-KqwA5am_.css → index-BBrewxpF.css} +1 -1
  40. package/core/built/admin/assets/{index-oanahlHO.js → index-BPYePamp.js} +1 -1
  41. package/core/built/admin/assets/{index-8pnhFllL.js → index-BX3kQzlo.js} +1 -1
  42. package/core/built/admin/assets/{index-CoyIDbjB.js → index-BwUQiVrX.js} +1 -1
  43. package/core/built/admin/assets/{index-C5Mf4zlN.js → index-ByYZ5TiM.js} +1 -1
  44. package/core/built/admin/assets/{index-DG5ENBXM.js → index-CQP2hNBo.js} +1 -1
  45. package/core/built/admin/assets/{index-voIsrI4j.js → index-CeFAaI2v.js} +1 -1
  46. package/core/built/admin/assets/{index-DQny1_Ij.js → index-CjzFwwKZ.js} +1 -1
  47. package/core/built/admin/assets/{index-DR3xU0-B.js → index-Dk-Wh_Fw.js} +1 -1
  48. package/core/built/admin/assets/{index-C6_sy_zU.js → index-DnY4rls4.js} +1 -1
  49. package/core/built/admin/assets/{index-BrYABbTV.js → index-bl5YmBtG.js} +1 -1
  50. package/core/built/admin/assets/{index-BeAhXwae.js → index-exFCQBCk.js} +9 -9
  51. package/core/built/admin/assets/{koenig-lexical-uhDY2cN7.js → koenig-lexical-eRS1y7PS.js} +1 -1
  52. package/core/built/admin/assets/{kpi-card-DieTCZ1Z.js → kpi-card-DShFKtte.js} +1 -1
  53. package/core/built/admin/assets/{kpis-Dg2Sav4t.js → kpis-Bxyr_zYY.js} +1 -1
  54. package/core/built/admin/assets/{label-Cs4FoZGu.js → label-hgdYQhmm.js} +1 -1
  55. package/core/built/admin/assets/{links-DwbtAH6y.js → links-5NNDFN65.js} +1 -1
  56. package/core/built/admin/assets/{lucide-react-CTYGYE5A.js → lucide-react-f58FO8MB.js} +1 -1
  57. package/core/built/admin/assets/{main-layout-DgFdHzFw.js → main-layout-BDz_2UZs.js} +1 -1
  58. package/core/built/admin/assets/{message-square-text-42zfcaLO.js → message-square-text-6dTKbQKA.js} +1 -1
  59. package/core/built/admin/assets/{minus-vbx9q5AE.js → minus-D2C19Fiu.js} +1 -1
  60. package/core/built/admin/assets/{modals-B1LK0GFs.js → modals-DzetQgXf.js} +2 -2
  61. package/core/built/admin/assets/{moderation-DBHou9Tg.js → moderation-87QsKbyf.js} +1 -1
  62. package/core/built/admin/assets/{newsletter-C_C5cbBQ.js → newsletter-BhI9Lgkn.js} +1 -1
  63. package/core/built/admin/assets/{newsletters-COhRGj2b.js → newsletters-adLgF_Re.js} +1 -1
  64. package/core/built/admin/assets/{note-Bs7yEUc9.js → note-BbPR57Yw.js} +1 -1
  65. package/core/built/admin/assets/{overview-DgkHUK_G.js → overview-CqyRlIVM.js} +1 -1
  66. package/core/built/admin/assets/{pagemenu-aMfaU2cA.js → pagemenu-DlQF5jN4.js} +1 -1
  67. package/core/built/admin/assets/{post-analytics-BFOeo-LR.js → post-analytics-BudH7GCA.js} +1 -1
  68. package/core/built/admin/assets/{post-analytics-context-BR5b-9nb.js → post-analytics-context-CxuzZluw.js} +1 -1
  69. package/core/built/admin/assets/{post-analytics-header-Cj_Vf_UF.js → post-analytics-header-BV_8onIF.js} +1 -1
  70. package/core/built/admin/assets/{post-share-modal-CP1NDQhS.js → post-share-modal-CnM21JFK.js} +1 -1
  71. package/core/built/admin/assets/{posts-BQJit53V.js → posts-C5zAbpdG.js} +1 -1
  72. package/core/built/admin/assets/{repeat-DBbPJ4Vq.js → repeat-BbSnXois.js} +1 -1
  73. package/core/built/admin/assets/{reply-DlcWrPL1.js → reply-CuCJJfZj.js} +1 -1
  74. package/core/built/admin/assets/{select-wir-gl-P.js → select-Bv-dkHeU.js} +1 -1
  75. package/core/built/admin/assets/{settings-CpDtcACU.js → settings-Cit2-dRQ.js} +25 -25
  76. package/core/built/admin/assets/{settings-CtzZEQJ2.js → settings-wlK_oNsg.js} +1 -1
  77. package/core/built/admin/assets/{sort-button-CecMSgfo.js → sort-button-Dmyldyzm.js} +1 -1
  78. package/core/built/admin/assets/{source-icon-CveBuH3b.js → source-icon-DjyV6RS6.js} +1 -1
  79. package/core/built/admin/assets/{sprout-Beunj00B.js → sprout-jOQR37se.js} +1 -1
  80. package/core/built/admin/assets/{square-DTB79BvA.js → square-IrYxuAJL.js} +1 -1
  81. package/core/built/admin/assets/{stats-C2A4PNUn.js → stats-C4LbW8IV.js} +1 -1
  82. package/core/built/admin/assets/{stats-view-XXduvFiP.js → stats-view-BwaLDryw.js} +1 -1
  83. package/core/built/admin/assets/{step-1-Dhctc4sb.js → step-1-C0QApeYD.js} +1 -1
  84. package/core/built/admin/assets/{step-2-CfG-dkZM.js → step-2-h0b6Njyb.js} +1 -1
  85. package/core/built/admin/assets/{step-3-D_7ttapi.js → step-3-CaM-Hz3F.js} +1 -1
  86. package/core/built/admin/assets/{table-D-JhwxMn.js → table-P4FGxGxN.js} +1 -1
  87. package/core/built/admin/assets/{tabs-DvTZ848X.js → tabs-Cj65mCsJ.js} +1 -1
  88. package/core/built/admin/assets/{tags-Pad-cSDy.js → tags-CDvEkvxr.js} +1 -1
  89. package/core/built/admin/assets/{tags-dgsPPBjR.js → tags-Dnv6zTag.js} +1 -1
  90. package/core/built/admin/assets/{tiers-DFi-MWJ-.js → tiers-Y3OCOT03.js} +1 -1
  91. package/core/built/admin/assets/{toggle-group-DMvy3Ce1.js → toggle-group-kZZo_vdJ.js} +1 -1
  92. package/core/built/admin/assets/{topic-filter-Is3xj8qt.js → topic-filter-Cn1_Z9I7.js} +1 -1
  93. package/core/built/admin/assets/{trash-CT37Asdf.js → trash-ln90Rlgi.js} +1 -1
  94. package/core/built/admin/assets/{url-helpers-Bf57BBzr.js → url-helpers-B5_oMSPb.js} +1 -1
  95. package/core/built/admin/assets/{use-growth-stats-DXoeaAKq.js → use-growth-stats-DQsJauHH.js} +1 -1
  96. package/core/built/admin/assets/{use-infinite-virtual-scroll-COKeWLQm.js → use-infinite-virtual-scroll-4OIpSNMH.js} +1 -1
  97. package/core/built/admin/assets/{use-simple-pagination-BQBxprZe.js → use-simple-pagination-BedA-MMT.js} +1 -1
  98. package/core/built/admin/assets/{user-round-check-C5Iux98g.js → user-round-check-CYI147XP.js} +1 -1
  99. package/core/built/admin/assets/{wallet-cards-Hfikexmn.js → wallet-cards-xpilOd6G.js} +1 -1
  100. package/core/built/admin/assets/{web-B-GYQeG7.js → web-VPMnLvnh.js} +1 -1
  101. package/core/built/admin/index.html +6 -6
  102. package/package.json +5 -5
  103. package/components/tryghost-i18n-6.17.0.tgz +0 -0
@@ -1 +1 @@
1
- import{r as v,aq as N,ar as P,j as u,as as S,at as w,au as p,av as x,aw as F,ax as D,ay as T,az as V}from"./index-BeAhXwae.js";var g="Tabs",[G]=S(g,[x]),C=x(),[L,m]=G(g),h=v.forwardRef((e,n)=>{const{__scopeTabs:i,value:a,onValueChange:r,defaultValue:c,orientation:t="horizontal",dir:d,activationMode:b="automatic",...f}=e,s=N(d),[o,l]=P({prop:a,onChange:r,defaultProp:c??"",caller:g});return u.jsx(L,{scope:i,baseId:w(),value:o,onValueChange:l,orientation:t,dir:s,activationMode:b,children:u.jsx(p.div,{dir:s,"data-orientation":t,...f,ref:n})})});h.displayName=g;var I="TabsList",R=v.forwardRef((e,n)=>{const{__scopeTabs:i,loop:a=!0,...r}=e,c=m(I,i),t=C(i);return u.jsx(F,{asChild:!0,...t,orientation:c.orientation,dir:c.dir,loop:a,children:u.jsx(p.div,{role:"tablist","aria-orientation":c.orientation,...r,ref:n})})});R.displayName=I;var y="TabsTrigger",_=v.forwardRef((e,n)=>{const{__scopeTabs:i,value:a,disabled:r=!1,...c}=e,t=m(y,i),d=C(i),b=j(t.baseId,a),f=M(t.baseId,a),s=a===t.value;return u.jsx(D,{asChild:!0,...d,focusable:!r,active:s,children:u.jsx(p.button,{type:"button",role:"tab","aria-selected":s,"aria-controls":f,"data-state":s?"active":"inactive","data-disabled":r?"":void 0,disabled:r,id:b,...c,ref:n,onMouseDown:T(e.onMouseDown,o=>{!r&&o.button===0&&o.ctrlKey===!1?t.onValueChange(a):o.preventDefault()}),onKeyDown:T(e.onKeyDown,o=>{[" ","Enter"].includes(o.key)&&t.onValueChange(a)}),onFocus:T(e.onFocus,()=>{const o=t.activationMode!=="manual";!s&&!r&&o&&t.onValueChange(a)})})})});_.displayName=y;var A="TabsContent",E=v.forwardRef((e,n)=>{const{__scopeTabs:i,value:a,forceMount:r,children:c,...t}=e,d=m(A,i),b=j(d.baseId,a),f=M(d.baseId,a),s=a===d.value,o=v.useRef(s);return v.useEffect(()=>{const l=requestAnimationFrame(()=>o.current=!1);return()=>cancelAnimationFrame(l)},[]),u.jsx(V,{present:r||s,children:({present:l})=>u.jsx(p.div,{"data-state":s?"active":"inactive","data-orientation":d.orientation,role:"tabpanel","aria-labelledby":b,hidden:!l,id:f,tabIndex:0,...t,ref:n,style:{...e.style,animationDuration:o.current?"0s":void 0},children:l&&c})})});E.displayName=A;function j(e,n){return`${e}-trigger-${n}`}function M(e,n){return`${e}-content-${n}`}var k=h,K=R,q=_,z=E;export{z as C,K as L,k as R,q as T};
1
+ import{r as v,aq as N,ar as P,j as u,as as S,at as w,au as p,av as x,aw as F,ax as D,ay as T,az as V}from"./index-exFCQBCk.js";var g="Tabs",[G]=S(g,[x]),C=x(),[L,m]=G(g),h=v.forwardRef((e,n)=>{const{__scopeTabs:i,value:a,onValueChange:r,defaultValue:c,orientation:t="horizontal",dir:d,activationMode:b="automatic",...f}=e,s=N(d),[o,l]=P({prop:a,onChange:r,defaultProp:c??"",caller:g});return u.jsx(L,{scope:i,baseId:w(),value:o,onValueChange:l,orientation:t,dir:s,activationMode:b,children:u.jsx(p.div,{dir:s,"data-orientation":t,...f,ref:n})})});h.displayName=g;var I="TabsList",R=v.forwardRef((e,n)=>{const{__scopeTabs:i,loop:a=!0,...r}=e,c=m(I,i),t=C(i);return u.jsx(F,{asChild:!0,...t,orientation:c.orientation,dir:c.dir,loop:a,children:u.jsx(p.div,{role:"tablist","aria-orientation":c.orientation,...r,ref:n})})});R.displayName=I;var y="TabsTrigger",_=v.forwardRef((e,n)=>{const{__scopeTabs:i,value:a,disabled:r=!1,...c}=e,t=m(y,i),d=C(i),b=j(t.baseId,a),f=M(t.baseId,a),s=a===t.value;return u.jsx(D,{asChild:!0,...d,focusable:!r,active:s,children:u.jsx(p.button,{type:"button",role:"tab","aria-selected":s,"aria-controls":f,"data-state":s?"active":"inactive","data-disabled":r?"":void 0,disabled:r,id:b,...c,ref:n,onMouseDown:T(e.onMouseDown,o=>{!r&&o.button===0&&o.ctrlKey===!1?t.onValueChange(a):o.preventDefault()}),onKeyDown:T(e.onKeyDown,o=>{[" ","Enter"].includes(o.key)&&t.onValueChange(a)}),onFocus:T(e.onFocus,()=>{const o=t.activationMode!=="manual";!s&&!r&&o&&t.onValueChange(a)})})})});_.displayName=y;var A="TabsContent",E=v.forwardRef((e,n)=>{const{__scopeTabs:i,value:a,forceMount:r,children:c,...t}=e,d=m(A,i),b=j(d.baseId,a),f=M(d.baseId,a),s=a===d.value,o=v.useRef(s);return v.useEffect(()=>{const l=requestAnimationFrame(()=>o.current=!1);return()=>cancelAnimationFrame(l)},[]),u.jsx(V,{present:r||s,children:({present:l})=>u.jsx(p.div,{"data-state":s?"active":"inactive","data-orientation":d.orientation,role:"tabpanel","aria-labelledby":b,hidden:!l,id:f,tabIndex:0,...t,ref:n,style:{...e.style,animationDuration:o.current?"0s":void 0},children:l&&c})})});E.displayName=A;function j(e,n){return`${e}-trigger-${n}`}function M(e,n){return`${e}-content-${n}`}var k=h,K=R,q=_,z=E;export{z as C,K as L,k as R,q as T};
@@ -1 +1 @@
1
- import{r as c,bV as G,aP as te,bG as se,bW as K,aj as D,j as e,aQ as ee,ai as y,bH as pe,ap as he,bI as xe,bJ as Y,bX as fe,bR as ae,af as Q,ag as $,bY as ge,e as U,bE as be,B as je}from"./index-BeAhXwae.js";import{s as ve,g as J,S as ke,a as we,D as Ne,b as Se}from"./stats-view-XXduvFiP.js";import{C as ye,a as _e,R as Ce,B as Te}from"./chart-BvckKrZJ.js";import{E as re}from"./empty-indicator-1p7S45xr.js";import{G as De,C as Me,X as Le,Y as Re}from"./gh-chart-CVItDGhq.js";import{T as Ee,a as Be,K as X,d as B,e as Pe}from"./tabs-DvTZ848X.js";import{B as Oe,S as H}from"./sort-button-CecMSgfo.js";import{M as ne}from"./wallet-cards-Hfikexmn.js";import{S as Ae,a as Ve,b as ze,c as He,d as We,e as $e,f as Ge}from"./select-wir-gl-P.js";import{M as Ke}from"./lucide-react-CTYGYE5A.js";import{j as Fe,C as le,c as ie,a as Ie,b as Ye,f as Xe}from"./pagemenu-aMfaU2cA.js";import{a as Qe,e as Ue,b as Je,c as W,d as O,f as L}from"./table-D-JhwxMn.js";import{u as qe}from"./newsletters-COhRGj2b.js";import{e as Ze,f as et,g as tt}from"./stats-C2A4PNUn.js";import"./message-square-text-42zfcaLO.js";import"./sprout-Beunj00B.js";import"./_baseAssignValue-DKQ9pw63.js";import"./index-C6_sy_zU.js";import"./a-large-small-CCJbivJB.js";import"./at-sign-BpRvqAQI.js";import"./copy-BywnwlHN.js";import"./hash-BQl75WLf.js";import"./inbox-BMxFzv7J.js";import"./minus-vbx9q5AE.js";import"./tags-dgsPPBjR.js";import"./square-DTB79BvA.js";import"./user-round-check-C5Iux98g.js";import"./repeat-DBbPJ4Vq.js";import"./reply-DlcWrPL1.js";import"./trash-CT37Asdf.js";const st=({active:a,payload:s})=>{if(!a||!s?.length)return null;const r=s[0].payload,l=r.send_date;return e.jsxs("div",{className:"min-w-[220px] max-w-[240px] rounded-lg border bg-background px-3 py-2 shadow-lg",children:[e.jsxs("div",{className:"mb-2 flex w-full flex-col border-b pb-2",children:[e.jsx("span",{className:"text-sm font-semibold leading-tight",children:r.post_title}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["Sent on ",ae(l)]})]}),e.jsxs("div",{className:"mb-1 flex w-full justify-between",children:[e.jsx("span",{className:"font-medium text-muted-foreground",children:"Sent"}),e.jsx("div",{className:"ml-2 w-full text-right font-mono",children:D(r.sent_to)})]}),e.jsxs("div",{className:"mb-1 flex w-full justify-between",children:[e.jsx("span",{className:"font-medium text-muted-foreground",children:"Opens"}),e.jsxs("div",{className:"ml-2 w-full text-right font-mono",children:[e.jsxs("span",{className:"text-muted-foreground",children:[D(r.total_opens)," / "]}),y(r.open_rate)]})]}),e.jsxs("div",{className:"mb-1 flex w-full justify-between",children:[e.jsx("span",{className:"font-medium text-muted-foreground",children:"Clicks"}),e.jsxs("div",{className:"ml-2 w-full text-right font-mono",children:[e.jsxs("span",{className:"text-muted-foreground",children:[D(r.total_clicks)," / "]}),y(r.click_rate)]})]})]})},at=({subscribersData:a,avgsData:s,totals:r,isLoading:l,isAvgsLoading:t,initialTab:i="total-subscribers"})=>{const[n,h]=c.useState(i),[p,j]=c.useState(!1),{range:u}=G(),w=te(),[g]=se(),{appSettings:N}=K(),{emailTrackClicks:v,emailTrackOpens:S}=N?.analytics||{},{totalSubscribers:R,avgOpenRate:m,avgClickRate:d}=r,f=c.useMemo(()=>{if(!a||a.length===0)return[];let o=[];return o=ve(a,u,"value","exact"),o.map(M=>({...M,formattedValue:D(M.value),label:"Total Subscribers"}))},[a,u]),_=c.useMemo(()=>{if(!f||f.length<=1)return{direction:"same",value:"0%"};const o=f[0]?.value??0,k=f[f.length-1]?.value??0;let M="same";k>o?M="up":k<o&&(M="down");let P;if(o===0)P=k===0?"0%":"+100%";else{const A=(k-o)/o*100,V=Math.round(A*10)/10;P=`${A>=0?"+":""}${V}%`}return{direction:M,value:P}},[f]);c.useEffect(()=>{h(i)},[i]);const x=o=>{h(o);const k=new URLSearchParams(g);k.set("tab",o),w(`?${k.toString()}`,{replace:!0})},C={open_rate:{label:"Open rate"}},b=c.useMemo(()=>({"total-subscribers":{color:"hsl(var(--chart-darkblue))",datakey:"value"},"avg-open-rate":{color:"hsl(var(--chart-blue))",datakey:"open_rate"},"avg-click-rate":{color:"hsl(var(--chart-teal))",datakey:"click_rate"}}),[]),{barDomain:T,barTicks:E}=c.useMemo(()=>{if(!s||s.length===0||n==="total-subscribers")return{barDomain:[0,1],barTicks:[0,1]};const o=b[n]?.datakey;if(!o)return{barDomain:[0,1],barTicks:[0,1]};const k=s.map(I=>I[o]).filter(I=>typeof I=="number");if(k.length===0)return{barDomain:[0,1],barTicks:[0,1]};const M=Math.min(...k),P=Math.max(...k),A=Math.floor(M*10)/10,V=Math.ceil(P*10)/10,z=Math.max(0,A),Z=V===z?z+.1:V;return{barDomain:[z,Z],barTicks:[z,Z]}},[s,n,b]);if(l)return e.jsx("div",{className:"-mb-6 flex h-[calc(16vw+132px)] w-full items-start justify-center",children:e.jsx(ee,{})});let F="grid-cols-3";(!v||!S)&&(F="grid-cols-2"),!v&&!S&&(F="grid-cols-1");const ue=n==="avg-open-rate"&&m>T[0]&&m<T[1]||n==="avg-click-rate"&&d>T[0]&&d<T[1],q=n==="avg-open-rate"?m:d;return e.jsxs(Ee,{defaultValue:i,variant:"kpis",children:[e.jsxs(Be,{className:`-mx-6 hidden grid-cols-3 md:!visible md:!grid ${F}`,children:[e.jsx(X,{className:`${!S&&!v&&"cursor-auto after:hidden"}`,value:"total-subscribers",onClick:()=>{x("total-subscribers")},children:e.jsx(B,{color:b["total-subscribers"].color,"data-testid":"total-subscribers-value",diffDirection:_.direction,diffValue:_.value,label:"Total subscribers",value:D(R)})}),S&&e.jsx(X,{value:"avg-open-rate",onClick:()=>{x("avg-open-rate")},children:e.jsx(B,{className:t?"opacity-50":"",color:b["avg-open-rate"].color,label:"Avg. open rate",value:y(m)})}),v&&e.jsx(X,{value:"avg-click-rate",onClick:()=>{x("avg-click-rate")},children:e.jsx(B,{className:t?"opacity-50":"",color:b["avg-click-rate"].color,label:"Avg. click rate",value:y(d)})})]}),e.jsxs(pe,{children:[e.jsx(he,{className:"md:hidden",asChild:!0,children:e.jsxs(Pe,{children:[n==="total-subscribers"&&e.jsx(B,{color:b["total-subscribers"].color,label:"Total subscribers",value:D(R)}),n==="avg-open-rate"&&S&&e.jsx(B,{className:t?"opacity-50":"",color:b["avg-open-rate"].color,label:"Avg. open rate",value:y(m)}),n==="avg-click-rate"&&v&&e.jsx(B,{className:t?"opacity-50":"",color:b["avg-click-rate"].color,label:"Avg. click rate",value:y(d)})]})}),e.jsxs(xe,{align:"end",className:"w-56",children:[e.jsx(Y,{onClick:()=>x("total-subscribers"),children:"Total subscribers"}),S&&e.jsx(Y,{onClick:()=>x("avg-open-rate"),children:"Avg. open rate"}),v&&e.jsx(Y,{onClick:()=>x("avg-click-rate"),children:"Avg. click rate"})]})]}),e.jsxs("div",{className:"my-4 [&_.recharts-cartesian-axis-tick-value]:fill-gray-500",children:[n==="total-subscribers"&&e.jsx(De,{className:"-mb-3 h-[16vw] max-h-[320px] min-h-[180px] w-full",color:b["total-subscribers"].color,data:f,id:"mrr",range:u}),(n==="avg-open-rate"&&S||n==="avg-click-rate"&&v)&&e.jsx(e.Fragment,{children:t?e.jsx("div",{className:"h-[320px] w-full items-center justify-center",children:e.jsx(ee,{})}):s&&s.length>0?e.jsxs(e.Fragment,{children:[e.jsx(ye,{className:"aspect-auto h-[200px] w-full md:h-[220px] xl:h-[320px]",config:C,children:e.jsxs(Oe,{className:p?"!cursor-pointer":"",data:s,margin:{top:20},onClick:o=>{o.activePayload&&o.activePayload[0].payload.post_id&&w(`/posts/analytics/${o.activePayload[0].payload.post_id}`,{crossApp:!0})},onMouseLeave:()=>j(!1),onMouseMove:o=>{j(!!(o.activePayload&&o.activePayload[0].payload.post_id))},children:[e.jsx("defs",{children:e.jsxs("linearGradient",{id:"barGradient",x1:"0",x2:"0",y1:"0",y2:"1",children:[e.jsx("stop",{offset:"0%",stopColor:b[n].color,stopOpacity:.8}),e.jsx("stop",{offset:"100%",stopColor:b[n].color,stopOpacity:.6})]})}),e.jsx(Me,{horizontal:!0,stroke:"hsl(var(--border))",vertical:!1}),e.jsx(Le,{axisLine:{stroke:"hsl(var(--border))",strokeWidth:1},dataKey:"post_id",interval:0,stroke:"hsl(var(--border))",tickFormatter:()=>"",tickLine:!1,tickMargin:10}),e.jsx(Re,{axisLine:!1,domain:T,tickFormatter:o=>y(o),tickLine:!1,ticks:E,width:fe(E,o=>y(o))}),e.jsx(_e,{content:e.jsx(st,{}),cursor:!1,isAnimationActive:!1,position:{y:10}}),ue&&e.jsx(Ce,{label:{value:`${y(q)}`,position:"left",offset:8,fill:"hsl(var(--muted-foreground))"},opacity:.5,stroke:"hsl(var(--muted-foreground))",strokeDasharray:"4 4",y:q}),e.jsx(Te,{activeBar:{fillOpacity:1},dataKey:b[n].datakey,fill:"url(#barGradient)",fillOpacity:.6,isAnimationActive:!1,maxBarSize:32,minPointSize:3,radius:4})]})}),e.jsxs("div",{className:"-mt-4 text-center text-sm text-muted-foreground",children:["Newsletters ",n==="avg-open-rate"?"opens":"clicks"," in this period"]})]}):e.jsx(re,{className:"size-full py-20",title:`No newsletters ${J(u)}`,children:e.jsx(ne,{strokeWidth:1.5})})})]})]})},rt=({newsletters:a})=>{const{selectedNewsletterId:s,setSelectedNewsletterId:r}=G(),l=c.useMemo(()=>a?.filter(t=>t.status==="active")||[],[a]);return c.useEffect(()=>{if(l.length>0&&!s){const t=l.find(i=>i.sort_order===0);r(t?t.id:l[0].id)}},[l,s,r]),l.length<=1?null:e.jsxs(Ae,{value:s||"",onValueChange:t=>{r(t)},children:[e.jsxs(Ve,{className:"w-auto",children:[e.jsx(Ke,{className:"mr-2",size:16,strokeWidth:1.5}),e.jsx(ze,{placeholder:"Select a newsletter"})]}),e.jsx(He,{align:"end",children:e.jsxs(We,{children:[e.jsx($e,{children:"Newsletters"}),l.map(t=>e.jsx(Ge,{value:t.id,children:t.name},t.id))]})})]})},nt=(a,s,r=!0)=>{const l=a??30,{startDate:t,endDate:i}=c.useMemo(()=>Q(l),[l]),n=c.useMemo(()=>{const p={date_from:$(t),date_to:$(i)};return s&&(p.newsletter_id=s),p},[t,i,s]),h=Ze({searchParams:n,enabled:r});return r?h:{data:void 0,isLoading:!1,error:null,isError:!1,refetch:h.refetch}},lt=(a,s,r,l=!0)=>{const t=a??30,i=s??"date desc",{startDate:n,endDate:h}=c.useMemo(()=>Q(t),[t]),p=c.useMemo(()=>{const u={date_from:$(n),date_to:$(h),order:i};return r&&(u.newsletter_id=r),u},[n,h,i,r]),j=et({searchParams:p,enabled:l});return l?j:{data:void 0,isLoading:!1,error:null,isError:!1,refetch:j.refetch}},it=(a,s=[],r=!0)=>{const l=c.useMemo(()=>{const i={};return a&&(i.newsletter_id=a),s.length>0&&(i.post_ids=s.join(",")),i},[a,s]),t=tt({searchParams:l,enabled:r});return r?t:{data:void 0,isLoading:!1,error:null,isError:!1,refetch:t.refetch}},oe=(a,s,r,l=!0)=>{const t=lt(a,s,r,l),i=c.useMemo(()=>t.data?.stats?t.data.stats.map(p=>p.post_id):[],[t.data]),n=it(r,i,l&&i.length>0);return{data:c.useMemo(()=>{if(!t.data?.stats)return;const p=t.data.stats,j=n.data?.stats||[],u=new Map;j.forEach(g=>{u.set(g.post_id,g)});const w=p.map(g=>{const N=u.get(g.post_id);return{...g,total_clicks:N?.total_clicks||0,click_rate:N?.click_rate||0}});return{...t.data,stats:w}},[t.data,n.data]),isLoading:t.isLoading,isClicksLoading:n.isLoading,error:t.error||n.error,isError:t.isError||n.isError,refetch:()=>{t.refetch(),n.refetch()}}},ce=U.memo(({range:a,selectedNewsletterId:s,shouldFetchStats:r,sortBy:l})=>{const t=te(),{settings:i}=G(),n=String(i.find(m=>m.key==="timezone")?.value||"Etc/UTC"),{data:h,isLoading:p,isClicksLoading:j}=oe(a,l,s||void 0,!!r),{appSettings:u}=K(),{emailTrackClicks:w,emailTrackOpens:g}=u?.analytics||{},N=c.useMemo(()=>h?.stats||[],[h]),v=g&&w?5:g||w?4:3,S=c.useMemo(()=>e.jsx(e.Fragment,{children:e.jsx(W,{className:"last:border-none [&>td]:py-2.5",children:e.jsx(L,{className:"font-medium",colSpan:v,children:e.jsx(be,{className:"mt-5"})})})}),[v]),R=c.useMemo(()=>N.length>0?e.jsx(e.Fragment,{children:N.map(m=>e.jsxs(W,{className:"last:border-none [&>td]:py-2.5",children:[e.jsx(L,{className:"font-medium",children:e.jsx("div",{className:"group/link inline-flex items-center gap-2",children:m.post_id?e.jsx(je,{className:"h-auto whitespace-normal p-0 text-left hover:!underline",title:"View post analytics",variant:"link",onClick:()=>{t(`/posts/analytics/${m.post_id}/`,{crossApp:!0})},children:m.post_title}):e.jsx(e.Fragment,{children:m.post_title})})}),e.jsx(L,{className:"whitespace-nowrap text-sm",children:ae(m.send_date,n)}),e.jsx(L,{className:"text-right font-mono text-sm",children:D(m.sent_to)}),g&&e.jsxs(L,{className:"text-right font-mono text-sm",children:[e.jsx("span",{className:"group-hover:hidden",children:y(m.open_rate)}),e.jsx("span",{className:"hidden group-hover:!visible group-hover:!block",children:D(m.total_opens)})]}),w&&e.jsx(L,{className:"text-right font-mono text-sm",children:j?e.jsx("span",{className:"inline-block h-4 w-8 animate-pulse rounded bg-gray-200"}):e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"group-hover:hidden",children:y(m.click_rate)}),e.jsx("span",{className:"hidden group-hover:!visible group-hover:!block",children:D(m.total_clicks)})]})})]},m.post_id))}):e.jsx(W,{className:"border-none hover:bg-transparent",children:e.jsx(L,{className:"text-center group-hover:!bg-transparent",colSpan:5,children:e.jsx(re,{className:"size-full py-20",title:`No newsletters ${J(a)}`,children:e.jsx(ne,{strokeWidth:1.5})})})}),[N,j,t,w,g,a]);return p||!h?S:R});ce.displayName="NewsletterTableRows";const de=U.memo(({sortBy:a,setSortBy:s,range:r})=>{const l=c.useMemo(()=>e.jsxs(Ie,{children:[e.jsx(Ye,{children:"Top newsletters"}),e.jsxs(Xe,{children:[" Your best performing newsletters ",J(r)]})]}),[r]),{appSettings:t}=K(),{emailTrackClicks:i,emailTrackOpens:n}=t?.analytics||{};return e.jsx(Je,{children:e.jsxs(W,{children:[e.jsx(O,{className:"min-w-[320px]",variant:"cardhead",children:l}),e.jsx(O,{className:"w-[65px]",children:e.jsx(H,{activeSortBy:a,setSortBy:s,sortBy:"date desc",children:"Date"})}),e.jsx(O,{className:"w-[90px] text-right",children:e.jsx(H,{activeSortBy:a,setSortBy:s,sortBy:"sent_to desc",children:"Sent"})}),n&&e.jsx(O,{className:"w-[90px] text-right",children:e.jsx(H,{activeSortBy:a,setSortBy:s,sortBy:"open_rate desc",children:"Opens"})}),i&&e.jsx(O,{className:"w-[90px] text-right",children:e.jsx(H,{activeSortBy:a,setSortBy:s,sortBy:"click_rate desc",children:"Clicks"})})]})})});de.displayName="NewsletterTableHeader";const me=U.memo(({range:a,selectedNewsletterId:s,shouldFetchStats:r})=>{const[l,t]=c.useState("open_rate desc");return e.jsx(le,{className:"w-full max-w-[calc(100vw-64px)] overflow-x-auto sidebar:max-w-[calc(100vw-64px-280px)]","data-testid":"top-newsletters-card",children:e.jsx(ie,{children:e.jsxs(Qe,{children:[e.jsx(de,{range:a,setSortBy:t,sortBy:l}),e.jsx(Ue,{children:e.jsx(ce,{range:a,selectedNewsletterId:s,shouldFetchStats:r,sortBy:l})})]})})})});me.displayName="TopNewslettersTable";const Vt=()=>{const{range:a,selectedNewsletterId:s}=G(),[r]=se(),{appSettings:l}=K(),t=r.get("tab")||"total-subscribers",{data:i,isLoading:n}=qe({searchParams:{limit:"50"}}),h=!n&&i&&i.newsletters.length>0&&!!s,{data:p,isLoading:j}=nt(a,s||void 0,h||!1),{data:u,isLoading:w,isClicksLoading:g}=oe(a,"date asc",s||void 0,h||!1),N=c.useMemo(()=>!i?.newsletters||!s?null:i.newsletters.find(d=>d.id===s)||null,[i,s]),v=c.useMemo(()=>{const d=N?.count?.active_members||p?.stats?.[0]?.total||0;let f=0,_=0;if(u?.stats&&u.stats.length>0){const x=u.stats,C=x.reduce((T,E)=>T+(E.open_rate||0),0),b=x.reduce((T,E)=>T+(E.click_rate||0),0);f=C/x.length,_=b/x.length}return{totalSubscribers:d,avgOpenRate:f,avgClickRate:_}},[N,p,u]),S=c.useMemo(()=>{if(!p?.stats?.[0]?.values||p.stats[0].values.length===0){const{startDate:f,endDate:_}=Q(a),x=[],C=new Date(f);for(;C<=_;)x.push({date:C.toISOString().split("T")[0],value:0}),C.setDate(C.getDate()+1);return x}const d=p.stats[0].values;if(d.length===1){const f=d[0],_=new Date,x=a,C=new Date(_.getTime()-x*24*60*60*1e3);return[{...f,date:C.toISOString().split("T")[0]},{...f,date:_.toISOString().split("T")[0]}]}return d},[p,a]),R=c.useMemo(()=>u?.stats?u.stats.map(d=>({post_id:d.post_id,post_title:d.post_title,send_date:d.send_date,sent_to:d.sent_to,total_opens:d.total_opens,open_rate:d.open_rate,total_clicks:d.total_clicks||0,click_rate:d.click_rate||0})):[],[u]),m=j||g||w;return l&&!l.newslettersEnabled?e.jsx(ge,{to:"/analytics"}):e.jsxs(ke,{children:[e.jsx(we,{children:e.jsxs(Fe,{children:[e.jsx(rt,{newsletters:i?.newsletters}),e.jsx(Ne,{})]})}),e.jsx(Se,{isLoading:!1,loadingComponent:e.jsx(e.Fragment,{}),children:e.jsxs(e.Fragment,{children:[e.jsx(le,{"data-testid":"newsletters-card",children:e.jsx(ie,{children:e.jsx(at,{avgsData:R,initialTab:t,isAvgsLoading:!1,isLoading:m,subscribersData:S,totals:v})})}),e.jsx(me,{range:a,selectedNewsletterId:s,shouldFetchStats:!!h})]})})]})};export{Vt as default};
1
+ import{r as c,bV as G,aP as te,bG as se,bW as K,aj as D,j as e,aQ as ee,ai as y,bH as pe,ap as he,bI as xe,bJ as Y,bX as fe,bR as ae,af as Q,ag as $,bY as ge,e as U,bE as be,B as je}from"./index-exFCQBCk.js";import{s as ve,g as J,S as ke,a as we,D as Ne,b as Se}from"./stats-view-BwaLDryw.js";import{C as ye,a as _e,R as Ce,B as Te}from"./chart-B6jk72FT.js";import{E as re}from"./empty-indicator-SsCyCd50.js";import{G as De,C as Me,X as Le,Y as Re}from"./gh-chart-Dp9VXeON.js";import{T as Ee,a as Be,K as X,d as B,e as Pe}from"./tabs-Cj65mCsJ.js";import{B as Oe,S as H}from"./sort-button-Dmyldyzm.js";import{M as ne}from"./wallet-cards-xpilOd6G.js";import{S as Ae,a as Ve,b as ze,c as He,d as We,e as $e,f as Ge}from"./select-Bv-dkHeU.js";import{M as Ke}from"./lucide-react-f58FO8MB.js";import{j as Fe,C as le,c as ie,a as Ie,b as Ye,f as Xe}from"./pagemenu-DlQF5jN4.js";import{a as Qe,e as Ue,b as Je,c as W,d as O,f as L}from"./table-P4FGxGxN.js";import{u as qe}from"./newsletters-adLgF_Re.js";import{e as Ze,f as et,g as tt}from"./stats-C4LbW8IV.js";import"./message-square-text-6dTKbQKA.js";import"./sprout-jOQR37se.js";import"./_baseAssignValue-CrCkbXur.js";import"./index-DnY4rls4.js";import"./a-large-small-BLquRSNr.js";import"./at-sign-Cj4_ORaa.js";import"./copy-YhtJexiS.js";import"./hash-CPAX2PwN.js";import"./inbox-DuT2edmx.js";import"./minus-D2C19Fiu.js";import"./tags-Dnv6zTag.js";import"./square-IrYxuAJL.js";import"./user-round-check-CYI147XP.js";import"./repeat-BbSnXois.js";import"./reply-CuCJJfZj.js";import"./trash-ln90Rlgi.js";const st=({active:a,payload:s})=>{if(!a||!s?.length)return null;const r=s[0].payload,l=r.send_date;return e.jsxs("div",{className:"min-w-[220px] max-w-[240px] rounded-lg border bg-background px-3 py-2 shadow-lg",children:[e.jsxs("div",{className:"mb-2 flex w-full flex-col border-b pb-2",children:[e.jsx("span",{className:"text-sm font-semibold leading-tight",children:r.post_title}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["Sent on ",ae(l)]})]}),e.jsxs("div",{className:"mb-1 flex w-full justify-between",children:[e.jsx("span",{className:"font-medium text-muted-foreground",children:"Sent"}),e.jsx("div",{className:"ml-2 w-full text-right font-mono",children:D(r.sent_to)})]}),e.jsxs("div",{className:"mb-1 flex w-full justify-between",children:[e.jsx("span",{className:"font-medium text-muted-foreground",children:"Opens"}),e.jsxs("div",{className:"ml-2 w-full text-right font-mono",children:[e.jsxs("span",{className:"text-muted-foreground",children:[D(r.total_opens)," / "]}),y(r.open_rate)]})]}),e.jsxs("div",{className:"mb-1 flex w-full justify-between",children:[e.jsx("span",{className:"font-medium text-muted-foreground",children:"Clicks"}),e.jsxs("div",{className:"ml-2 w-full text-right font-mono",children:[e.jsxs("span",{className:"text-muted-foreground",children:[D(r.total_clicks)," / "]}),y(r.click_rate)]})]})]})},at=({subscribersData:a,avgsData:s,totals:r,isLoading:l,isAvgsLoading:t,initialTab:i="total-subscribers"})=>{const[n,h]=c.useState(i),[p,j]=c.useState(!1),{range:u}=G(),w=te(),[g]=se(),{appSettings:N}=K(),{emailTrackClicks:v,emailTrackOpens:S}=N?.analytics||{},{totalSubscribers:R,avgOpenRate:m,avgClickRate:d}=r,f=c.useMemo(()=>{if(!a||a.length===0)return[];let o=[];return o=ve(a,u,"value","exact"),o.map(M=>({...M,formattedValue:D(M.value),label:"Total Subscribers"}))},[a,u]),_=c.useMemo(()=>{if(!f||f.length<=1)return{direction:"same",value:"0%"};const o=f[0]?.value??0,k=f[f.length-1]?.value??0;let M="same";k>o?M="up":k<o&&(M="down");let P;if(o===0)P=k===0?"0%":"+100%";else{const A=(k-o)/o*100,V=Math.round(A*10)/10;P=`${A>=0?"+":""}${V}%`}return{direction:M,value:P}},[f]);c.useEffect(()=>{h(i)},[i]);const x=o=>{h(o);const k=new URLSearchParams(g);k.set("tab",o),w(`?${k.toString()}`,{replace:!0})},C={open_rate:{label:"Open rate"}},b=c.useMemo(()=>({"total-subscribers":{color:"hsl(var(--chart-darkblue))",datakey:"value"},"avg-open-rate":{color:"hsl(var(--chart-blue))",datakey:"open_rate"},"avg-click-rate":{color:"hsl(var(--chart-teal))",datakey:"click_rate"}}),[]),{barDomain:T,barTicks:E}=c.useMemo(()=>{if(!s||s.length===0||n==="total-subscribers")return{barDomain:[0,1],barTicks:[0,1]};const o=b[n]?.datakey;if(!o)return{barDomain:[0,1],barTicks:[0,1]};const k=s.map(I=>I[o]).filter(I=>typeof I=="number");if(k.length===0)return{barDomain:[0,1],barTicks:[0,1]};const M=Math.min(...k),P=Math.max(...k),A=Math.floor(M*10)/10,V=Math.ceil(P*10)/10,z=Math.max(0,A),Z=V===z?z+.1:V;return{barDomain:[z,Z],barTicks:[z,Z]}},[s,n,b]);if(l)return e.jsx("div",{className:"-mb-6 flex h-[calc(16vw+132px)] w-full items-start justify-center",children:e.jsx(ee,{})});let F="grid-cols-3";(!v||!S)&&(F="grid-cols-2"),!v&&!S&&(F="grid-cols-1");const ue=n==="avg-open-rate"&&m>T[0]&&m<T[1]||n==="avg-click-rate"&&d>T[0]&&d<T[1],q=n==="avg-open-rate"?m:d;return e.jsxs(Ee,{defaultValue:i,variant:"kpis",children:[e.jsxs(Be,{className:`-mx-6 hidden grid-cols-3 md:!visible md:!grid ${F}`,children:[e.jsx(X,{className:`${!S&&!v&&"cursor-auto after:hidden"}`,value:"total-subscribers",onClick:()=>{x("total-subscribers")},children:e.jsx(B,{color:b["total-subscribers"].color,"data-testid":"total-subscribers-value",diffDirection:_.direction,diffValue:_.value,label:"Total subscribers",value:D(R)})}),S&&e.jsx(X,{value:"avg-open-rate",onClick:()=>{x("avg-open-rate")},children:e.jsx(B,{className:t?"opacity-50":"",color:b["avg-open-rate"].color,label:"Avg. open rate",value:y(m)})}),v&&e.jsx(X,{value:"avg-click-rate",onClick:()=>{x("avg-click-rate")},children:e.jsx(B,{className:t?"opacity-50":"",color:b["avg-click-rate"].color,label:"Avg. click rate",value:y(d)})})]}),e.jsxs(pe,{children:[e.jsx(he,{className:"md:hidden",asChild:!0,children:e.jsxs(Pe,{children:[n==="total-subscribers"&&e.jsx(B,{color:b["total-subscribers"].color,label:"Total subscribers",value:D(R)}),n==="avg-open-rate"&&S&&e.jsx(B,{className:t?"opacity-50":"",color:b["avg-open-rate"].color,label:"Avg. open rate",value:y(m)}),n==="avg-click-rate"&&v&&e.jsx(B,{className:t?"opacity-50":"",color:b["avg-click-rate"].color,label:"Avg. click rate",value:y(d)})]})}),e.jsxs(xe,{align:"end",className:"w-56",children:[e.jsx(Y,{onClick:()=>x("total-subscribers"),children:"Total subscribers"}),S&&e.jsx(Y,{onClick:()=>x("avg-open-rate"),children:"Avg. open rate"}),v&&e.jsx(Y,{onClick:()=>x("avg-click-rate"),children:"Avg. click rate"})]})]}),e.jsxs("div",{className:"my-4 [&_.recharts-cartesian-axis-tick-value]:fill-gray-500",children:[n==="total-subscribers"&&e.jsx(De,{className:"-mb-3 h-[16vw] max-h-[320px] min-h-[180px] w-full",color:b["total-subscribers"].color,data:f,id:"mrr",range:u}),(n==="avg-open-rate"&&S||n==="avg-click-rate"&&v)&&e.jsx(e.Fragment,{children:t?e.jsx("div",{className:"h-[320px] w-full items-center justify-center",children:e.jsx(ee,{})}):s&&s.length>0?e.jsxs(e.Fragment,{children:[e.jsx(ye,{className:"aspect-auto h-[200px] w-full md:h-[220px] xl:h-[320px]",config:C,children:e.jsxs(Oe,{className:p?"!cursor-pointer":"",data:s,margin:{top:20},onClick:o=>{o.activePayload&&o.activePayload[0].payload.post_id&&w(`/posts/analytics/${o.activePayload[0].payload.post_id}`,{crossApp:!0})},onMouseLeave:()=>j(!1),onMouseMove:o=>{j(!!(o.activePayload&&o.activePayload[0].payload.post_id))},children:[e.jsx("defs",{children:e.jsxs("linearGradient",{id:"barGradient",x1:"0",x2:"0",y1:"0",y2:"1",children:[e.jsx("stop",{offset:"0%",stopColor:b[n].color,stopOpacity:.8}),e.jsx("stop",{offset:"100%",stopColor:b[n].color,stopOpacity:.6})]})}),e.jsx(Me,{horizontal:!0,stroke:"hsl(var(--border))",vertical:!1}),e.jsx(Le,{axisLine:{stroke:"hsl(var(--border))",strokeWidth:1},dataKey:"post_id",interval:0,stroke:"hsl(var(--border))",tickFormatter:()=>"",tickLine:!1,tickMargin:10}),e.jsx(Re,{axisLine:!1,domain:T,tickFormatter:o=>y(o),tickLine:!1,ticks:E,width:fe(E,o=>y(o))}),e.jsx(_e,{content:e.jsx(st,{}),cursor:!1,isAnimationActive:!1,position:{y:10}}),ue&&e.jsx(Ce,{label:{value:`${y(q)}`,position:"left",offset:8,fill:"hsl(var(--muted-foreground))"},opacity:.5,stroke:"hsl(var(--muted-foreground))",strokeDasharray:"4 4",y:q}),e.jsx(Te,{activeBar:{fillOpacity:1},dataKey:b[n].datakey,fill:"url(#barGradient)",fillOpacity:.6,isAnimationActive:!1,maxBarSize:32,minPointSize:3,radius:4})]})}),e.jsxs("div",{className:"-mt-4 text-center text-sm text-muted-foreground",children:["Newsletters ",n==="avg-open-rate"?"opens":"clicks"," in this period"]})]}):e.jsx(re,{className:"size-full py-20",title:`No newsletters ${J(u)}`,children:e.jsx(ne,{strokeWidth:1.5})})})]})]})},rt=({newsletters:a})=>{const{selectedNewsletterId:s,setSelectedNewsletterId:r}=G(),l=c.useMemo(()=>a?.filter(t=>t.status==="active")||[],[a]);return c.useEffect(()=>{if(l.length>0&&!s){const t=l.find(i=>i.sort_order===0);r(t?t.id:l[0].id)}},[l,s,r]),l.length<=1?null:e.jsxs(Ae,{value:s||"",onValueChange:t=>{r(t)},children:[e.jsxs(Ve,{className:"w-auto",children:[e.jsx(Ke,{className:"mr-2",size:16,strokeWidth:1.5}),e.jsx(ze,{placeholder:"Select a newsletter"})]}),e.jsx(He,{align:"end",children:e.jsxs(We,{children:[e.jsx($e,{children:"Newsletters"}),l.map(t=>e.jsx(Ge,{value:t.id,children:t.name},t.id))]})})]})},nt=(a,s,r=!0)=>{const l=a??30,{startDate:t,endDate:i}=c.useMemo(()=>Q(l),[l]),n=c.useMemo(()=>{const p={date_from:$(t),date_to:$(i)};return s&&(p.newsletter_id=s),p},[t,i,s]),h=Ze({searchParams:n,enabled:r});return r?h:{data:void 0,isLoading:!1,error:null,isError:!1,refetch:h.refetch}},lt=(a,s,r,l=!0)=>{const t=a??30,i=s??"date desc",{startDate:n,endDate:h}=c.useMemo(()=>Q(t),[t]),p=c.useMemo(()=>{const u={date_from:$(n),date_to:$(h),order:i};return r&&(u.newsletter_id=r),u},[n,h,i,r]),j=et({searchParams:p,enabled:l});return l?j:{data:void 0,isLoading:!1,error:null,isError:!1,refetch:j.refetch}},it=(a,s=[],r=!0)=>{const l=c.useMemo(()=>{const i={};return a&&(i.newsletter_id=a),s.length>0&&(i.post_ids=s.join(",")),i},[a,s]),t=tt({searchParams:l,enabled:r});return r?t:{data:void 0,isLoading:!1,error:null,isError:!1,refetch:t.refetch}},oe=(a,s,r,l=!0)=>{const t=lt(a,s,r,l),i=c.useMemo(()=>t.data?.stats?t.data.stats.map(p=>p.post_id):[],[t.data]),n=it(r,i,l&&i.length>0);return{data:c.useMemo(()=>{if(!t.data?.stats)return;const p=t.data.stats,j=n.data?.stats||[],u=new Map;j.forEach(g=>{u.set(g.post_id,g)});const w=p.map(g=>{const N=u.get(g.post_id);return{...g,total_clicks:N?.total_clicks||0,click_rate:N?.click_rate||0}});return{...t.data,stats:w}},[t.data,n.data]),isLoading:t.isLoading,isClicksLoading:n.isLoading,error:t.error||n.error,isError:t.isError||n.isError,refetch:()=>{t.refetch(),n.refetch()}}},ce=U.memo(({range:a,selectedNewsletterId:s,shouldFetchStats:r,sortBy:l})=>{const t=te(),{settings:i}=G(),n=String(i.find(m=>m.key==="timezone")?.value||"Etc/UTC"),{data:h,isLoading:p,isClicksLoading:j}=oe(a,l,s||void 0,!!r),{appSettings:u}=K(),{emailTrackClicks:w,emailTrackOpens:g}=u?.analytics||{},N=c.useMemo(()=>h?.stats||[],[h]),v=g&&w?5:g||w?4:3,S=c.useMemo(()=>e.jsx(e.Fragment,{children:e.jsx(W,{className:"last:border-none [&>td]:py-2.5",children:e.jsx(L,{className:"font-medium",colSpan:v,children:e.jsx(be,{className:"mt-5"})})})}),[v]),R=c.useMemo(()=>N.length>0?e.jsx(e.Fragment,{children:N.map(m=>e.jsxs(W,{className:"last:border-none [&>td]:py-2.5",children:[e.jsx(L,{className:"font-medium",children:e.jsx("div",{className:"group/link inline-flex items-center gap-2",children:m.post_id?e.jsx(je,{className:"h-auto whitespace-normal p-0 text-left hover:!underline",title:"View post analytics",variant:"link",onClick:()=>{t(`/posts/analytics/${m.post_id}/`,{crossApp:!0})},children:m.post_title}):e.jsx(e.Fragment,{children:m.post_title})})}),e.jsx(L,{className:"whitespace-nowrap text-sm",children:ae(m.send_date,n)}),e.jsx(L,{className:"text-right font-mono text-sm",children:D(m.sent_to)}),g&&e.jsxs(L,{className:"text-right font-mono text-sm",children:[e.jsx("span",{className:"group-hover:hidden",children:y(m.open_rate)}),e.jsx("span",{className:"hidden group-hover:!visible group-hover:!block",children:D(m.total_opens)})]}),w&&e.jsx(L,{className:"text-right font-mono text-sm",children:j?e.jsx("span",{className:"inline-block h-4 w-8 animate-pulse rounded bg-gray-200"}):e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"group-hover:hidden",children:y(m.click_rate)}),e.jsx("span",{className:"hidden group-hover:!visible group-hover:!block",children:D(m.total_clicks)})]})})]},m.post_id))}):e.jsx(W,{className:"border-none hover:bg-transparent",children:e.jsx(L,{className:"text-center group-hover:!bg-transparent",colSpan:5,children:e.jsx(re,{className:"size-full py-20",title:`No newsletters ${J(a)}`,children:e.jsx(ne,{strokeWidth:1.5})})})}),[N,j,t,w,g,a]);return p||!h?S:R});ce.displayName="NewsletterTableRows";const de=U.memo(({sortBy:a,setSortBy:s,range:r})=>{const l=c.useMemo(()=>e.jsxs(Ie,{children:[e.jsx(Ye,{children:"Top newsletters"}),e.jsxs(Xe,{children:[" Your best performing newsletters ",J(r)]})]}),[r]),{appSettings:t}=K(),{emailTrackClicks:i,emailTrackOpens:n}=t?.analytics||{};return e.jsx(Je,{children:e.jsxs(W,{children:[e.jsx(O,{className:"min-w-[320px]",variant:"cardhead",children:l}),e.jsx(O,{className:"w-[65px]",children:e.jsx(H,{activeSortBy:a,setSortBy:s,sortBy:"date desc",children:"Date"})}),e.jsx(O,{className:"w-[90px] text-right",children:e.jsx(H,{activeSortBy:a,setSortBy:s,sortBy:"sent_to desc",children:"Sent"})}),n&&e.jsx(O,{className:"w-[90px] text-right",children:e.jsx(H,{activeSortBy:a,setSortBy:s,sortBy:"open_rate desc",children:"Opens"})}),i&&e.jsx(O,{className:"w-[90px] text-right",children:e.jsx(H,{activeSortBy:a,setSortBy:s,sortBy:"click_rate desc",children:"Clicks"})})]})})});de.displayName="NewsletterTableHeader";const me=U.memo(({range:a,selectedNewsletterId:s,shouldFetchStats:r})=>{const[l,t]=c.useState("open_rate desc");return e.jsx(le,{className:"w-full max-w-[calc(100vw-64px)] overflow-x-auto sidebar:max-w-[calc(100vw-64px-280px)]","data-testid":"top-newsletters-card",children:e.jsx(ie,{children:e.jsxs(Qe,{children:[e.jsx(de,{range:a,setSortBy:t,sortBy:l}),e.jsx(Ue,{children:e.jsx(ce,{range:a,selectedNewsletterId:s,shouldFetchStats:r,sortBy:l})})]})})})});me.displayName="TopNewslettersTable";const Vt=()=>{const{range:a,selectedNewsletterId:s}=G(),[r]=se(),{appSettings:l}=K(),t=r.get("tab")||"total-subscribers",{data:i,isLoading:n}=qe({searchParams:{limit:"50"}}),h=!n&&i&&i.newsletters.length>0&&!!s,{data:p,isLoading:j}=nt(a,s||void 0,h||!1),{data:u,isLoading:w,isClicksLoading:g}=oe(a,"date asc",s||void 0,h||!1),N=c.useMemo(()=>!i?.newsletters||!s?null:i.newsletters.find(d=>d.id===s)||null,[i,s]),v=c.useMemo(()=>{const d=N?.count?.active_members||p?.stats?.[0]?.total||0;let f=0,_=0;if(u?.stats&&u.stats.length>0){const x=u.stats,C=x.reduce((T,E)=>T+(E.open_rate||0),0),b=x.reduce((T,E)=>T+(E.click_rate||0),0);f=C/x.length,_=b/x.length}return{totalSubscribers:d,avgOpenRate:f,avgClickRate:_}},[N,p,u]),S=c.useMemo(()=>{if(!p?.stats?.[0]?.values||p.stats[0].values.length===0){const{startDate:f,endDate:_}=Q(a),x=[],C=new Date(f);for(;C<=_;)x.push({date:C.toISOString().split("T")[0],value:0}),C.setDate(C.getDate()+1);return x}const d=p.stats[0].values;if(d.length===1){const f=d[0],_=new Date,x=a,C=new Date(_.getTime()-x*24*60*60*1e3);return[{...f,date:C.toISOString().split("T")[0]},{...f,date:_.toISOString().split("T")[0]}]}return d},[p,a]),R=c.useMemo(()=>u?.stats?u.stats.map(d=>({post_id:d.post_id,post_title:d.post_title,send_date:d.send_date,sent_to:d.sent_to,total_opens:d.total_opens,open_rate:d.open_rate,total_clicks:d.total_clicks||0,click_rate:d.click_rate||0})):[],[u]),m=j||g||w;return l&&!l.newslettersEnabled?e.jsx(ge,{to:"/analytics"}):e.jsxs(ke,{children:[e.jsx(we,{children:e.jsxs(Fe,{children:[e.jsx(rt,{newsletters:i?.newsletters}),e.jsx(Ne,{})]})}),e.jsx(Se,{isLoading:!1,loadingComponent:e.jsx(e.Fragment,{}),children:e.jsxs(e.Fragment,{children:[e.jsx(le,{"data-testid":"newsletters-card",children:e.jsx(ie,{children:e.jsx(at,{avgsData:R,initialTab:t,isAvgsLoading:!1,isLoading:m,subscribersData:S,totals:v})})}),e.jsx(me,{range:a,selectedNewsletterId:s,shouldFetchStats:!!h})]})})]})};export{Vt as default};