PageSourceSearch

https://circleboom.com/_next/static/chunks/455-486a07de450f42e4.js

js circleboom.com collected 2026-10-01 11:34:01 UTC 68,993 bytes, 1 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[455],{1131:(e,a,t)=>{"use strict";t.d(a,{U:()=>m});var s=t(37876),r=t(14232),l=t(81047),n=t(31134),o=t(94646),i=t(19562),c=t(79331),d=t(95502);function m(e){let{chart:a,themePreset:t="sky"}=e,l=(0,c.sc)(t),[m,h]=(0,r.useState)(()=>(0,o.di)(a)),p=(0,o.d4)(a,m),[u,g]=(0,o.eo)(`${m||"default"}|${p.labels.length}`,p.labels.length),v=(0,r.useRef)(null),b=(0,r.useRef)(null);(0,o.Wm)(v,b);let[x,w]=(0,r.useState)(0),y=(0,o.Cl)(l,p.datasets.length),j=Math.max(1,x/Math.max(1,u.end-u.start+1)),N=j*o.ib/Math.max(p.datasets.length,1),f=(0,o.S2)(j,{datasetCount:p.datasets.length,categoryPercentage:o.ib}),k=(0,o.xE)(N,{bounds:[16,56],ratio:.92});(0,r.useEffect)(()=>{let e=v.current;if(!e||"undefined"==typeof ResizeObserver)return;let a=new ResizeObserver(e=>{let[a]=e,t=Math.round(a.contentRect.width);w(e=>e===t?e:t)});return a.observe(e),()=>a.disconnect()},[]);let S=p.labels.length>1?{min:0,max:p.labels.length-1,start:u.start,end:u.end,onStartChange:e=>{g(a=>(0,o.id)(e,a.end,p.labels.length))},onEndChange:e=>{g(a=>(0,o.id)(a.start,e,p.labels.length))}}:null,C={labels:p.labels,datasets:p.datasets.map((e,a)=>(0,o.uB)({...e,backgroundColor:y[a%y.length],borderRadius:0,maxBarThickness:k,categoryPercentage:o.ib,barPercentage:f}))},A={responsive:!1,maintainAspectRatio:!1,font:{family:i.A5},animation:{duration:700,easing:"easeOutQuart"},onClick:i.a5,onHover:i.kw,plugins:{legend:{position:"bottom",...i.Nm,labels:(0,i.R5)({theme:l,padding:18})},tooltip:(0,i.U_)({theme:l})},scales:{x:{stacked:!1,min:u.start,max:u.end,ticks:{color:l.muted},grid:{display:!1},border:{display:!1}},y:{stacked:!1,ticks:{color:l.muted},grid:{color:l.grid},border:{display:!1}}}};return(0,s.jsx)(d.j,{title:a.title,subtitle:a.subtitle,toggleLabels:a.toggleLabels,toggleV
1alue:m,onToggleChange:h,viewportControl:S,children:(0,s.jsx)("div",{ref:v,style:{minHeight:320},children:(0,s.jsx)(n.yP,{ref:b,data:C,options:A,width:x||960,height:320,style:{width:"100%",height:"100%"}})})})}l.t1.register(l.PP,l.kc,l.E8,l.m_,l.s$)},13662:(e,a,t)=>{"use strict";t.d(a,{N:()=>d});var s=t(37876),r=t(91635),l=t(25179),n=t(32076),o=t.n(n);let i=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:90,t=String(e||"").replace(/\s+/g," ").trim();return t.length>a?`${t.slice(0,a)}…`:t};function c(e){let{account:a,tweet:t,columns:n}=e;return(0,s.jsxs)("div",{className:o().tableRow,children:[(0,s.jsx)(r.Wi,{account:a}),(0,s.jsx)(l.i,{text:t.text,tweetUrl:t.tweetUrl,children:(0,s.jsx)("a",{className:o().tableTweetText,href:t.tweetUrl||void 0,target:t.tweetUrl?"_blank":void 0,rel:t.tweetUrl?"noreferrer":void 0,children:i(t.text)})}),n.map(e=>(0,s.jsx)("strong",{className:o().tableMetricCell,children:Number(t[e.key]||0).toLocaleString("en-US")},e.key))]})}function d(e){let{title:a,subtitle:t,tooltip:l,rows:n,columns:i,isSingleScope:d}=e;if(!n?.length)return null;let m=d?n.flatMap(e=>(e.tweets||[]).map((a,t)=>({account:e,tweet:a,key:a.tweetId||`${e.handle}-${t}`}))):n.map(e=>({account:e,tweet:(e.tweets||[])[0],key:e.handle})).filter(e=>e.tweet);return m.length?(0,s.jsxs)("section",{className:o().card,children:[(0,s.jsxs)("div",{className:o().cardHeader,children:[(0,s.jsx)(r._x,{title:a,tooltip:l,className:o().cardTitleRow}),(0,s.jsx)("p",{className:o().cardSubtitle,children:t})]}),(0,s.jsxs)("div",{className:o().table,children:[(0,s.jsxs)("div",{className:`${o().tableRow} ${o().tableHeadRow}`,children:[(0,s.jsx)("span",{className:o().tableAccountHead}),(0,s.jsx)("span",{className:o().tableTweetHead}),i.map(e=>(0,s.jsx)("span",{className:o().tableMetricHead,children:e.label},e.key))]}),m.map(e=>{let{account:a,tweet:t,key:r}=e;return(0,s.jsx)(c,{account:a,tweet:t,columns:i},r)})]})]}):null}},15467:(e,a,t)=>{"use strict";t.d(a,{Q:()=>m});var s=t(37876),r=t(14232),l=t(81047),n=t(31134),o=t(94646),i=t(19562),c=t(79331),d=t(95502);function m(e){let{chart:a,themePreset:t="sky"}=e,l=(0,c.sc)(t),[m,h]=(0,r.useState)(()=>(0,o.di)(a)),p=(0,o.d4)(a,m),u=(0,o.Cl)(l,p.values.length),g={labels:p.labels,datasets:[{data:p.values,backgroundColor:u,borderColor:p.values.map(()=>l.panel),borderWidth:3,hoverOffset:4}]},v={responsive:!0,maintainAspectRatio:!1,font:{family:i.A5},cutout:"68%",animation:{duration:700,easing:"easeOutQuart"},onClick:i.sR,onHover:i.kw,plugins:{legend:{position:"bottom",...i.Nm,labels:(0,i.R5)({theme:l,padding:16})},tooltip:(0,i.U_)({theme:l})}};return(0,s.jsx)(d.j,{title:a.title,subtitle:a.subtitle,toggleLabels:a.toggleLabels,toggleV
1alue:m,onToggleChange:h,children:(0,s.jsx)(n.nu,{data:g,options:v})})}l.t1.register(l.Bs,l.m_,l.s$)},25082:(e,a,t)=>{"use strict";t.d(a,{d0:()=>h,yG:()=>l});let s={followers:"Followers",following:"Following"},r=e=>e.reportViewOptions.filter(e=>"full-report"!==e.value),l=e=>r(e)[0]?.value||e.selectedReportView,n=(e,a,t)=>{if(!e)return e;let s={...e},r=t.map(e=>e.handle),l=["human-vs-fake-breakdown","active-inactive-breakdown","ordinary-vs-overactive-breakdown","quality-tier-breakdown","verified-badge-breakdown"].includes(e.type);l&&Array.isArray(s.labels)&&(s.labels=r);let n=t.some(e=>e.characteristics),o=function(e){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"Followers",s="Following"===a?"following":"followers";return t.map(a=>{let t=a.characteristics?.[s];if(!t)return null;switch(e){case"human-vs-fake-breakdown":return{Human:t.humanPercent,"Fake/Bot":t.fakePercent};case"active-inactive-breakdown":return{Active:t.activePercent,Inactive:t.inactivePercent};case"ordinary-vs-overactive-breakdown":return{Ordinary:t.ordinaryPercent,Overactive:t.overactivePercent};case"quality-tier-breakdown":{let e=Math.max(0,t.humanPercent-t.inactivePercent-t.overactivePercent),a=Math.max(0,100-e-t.fakePercent);return{High:Math.min(e,100),Medium:Math.min(a,100),Low:t.fakePercent}}case"verified-badge-breakdown":{let e=t.total||0,a=t.verified||0,s=t.verifiedBlue||0,r=t.verifiedBusiness||0,l=t.verifiedGovernment||0,n=e>0?Number((a/e*100).toFixed(1)):t.verifiedPercent||0,o=e>0?Number((s/e*100).toFixed(1)):.85*n,i=e>0?Number(((r+l)/e*100).toFixed(1)):.15*n;return{"Total Verified":n,Blue:o,"Gold/Gray":i}}default:return null}})},i=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"Followers",a="Following"===e?"following":"followers";return t.map(e=>{let t=e.characteristics?.[a];if(!t)return null;let s=t.total||0,r=t.verified||0;return{Blue:s>0?Number((t.verifiedBlue/s*100).toFixed(1)):0,Gold:s>0?Number((t.verifiedBusiness/s*100).toFixed(1)):0,Gray:s>0?Number((t.verifiedGovernment/s*100).toFixed(1)):0,"Total Verified":s>0?Number((r/s*100).toFixed(1)):0}})};if(n&&l&&e.id){let a=o(e.id,"Followers"),t=o(e.id,"Following"),l="verified-badge-breakdown"===e.id?i("Followers"):null,n="verified-badge-breakdown"===e.id?i("Following"):null;a.some(e=>null!==e)&&(s.datasets=s.datasets.map(e=>({...e,data:a.map((a,t)=>a?a[e.label]??e.data[t]:e.data[t]??0)})),Array.isArray(s.tableDatasets)&&l&&(s.tableDatasets=s.tableDatasets.map(e=>({...e,data:l.map((a,t)=>a?a[e.label]??e.data[t]:e.data[t]??0)}))),s.scopes?.Following&&(s.scopes={...s.scopes,Following:{...s.scopes.Following,labels:r,datasets:s.scopes.Following.datasets.map(e=>({...e,data:t.map((a,t)=>a?a[e.label]??e.data[t]:e.data[t]??0)})),tableDatasets:Array.isArray(s.scopes.Following.tableDatasets)&&n?s.scopes.Following.tableDatasets.map(e=>({...e,data:n.map((a,t)=>a?a[e.label]??e.data[t]:e.data[t]??0)})):s.scopes.Following.tableDatasets}}))}else if(Array.isArray(s.datasets)&&(s.datasets=s.datasets.map(e=>({...e,data:Array.isArray(e.data)?e.data.slice(0,a):e.data}))),Array.isArray(s.tableDatasets)&&(s.tableDatasets=s.tableDatasets.map(e=>({...e,data:Array.isArray(e.data)?e.data.slice(0,a):e.data}))),s.scopes){let e={};Object.keys(s.scopes).forEach(t=>{let n=s.scopes[t];e[t]={...n,labels:l?r:n.labels,datasets:Array.isArray(n.datasets)?n.datasets.map(e=>({...e,data:Array.isArray(e.data)?e.data.slice(0,a):e.data})):n.datasets,tableDatasets:Array.isArray(n.tableDatasets)?n.tableDatasets.map(e=>({...e,data:Array.isArray(e.data)?e.data.slice(0,a):e.data})):n.tableDatasets}}),s.scopes=e}return s},o=(e,a)=>Array.isArray(e)?a.map(a=>e[a]).filter(e=>void 0!==e):e,i=(e,a,t)=>{if(!e||"object"!=typeof e)return e;let s={...e};return Array.isArray(e.labels)&&(s.labels=o(e.labels,a)),Array.isArray(e.datasets)&&(s.datasets=e.datasets.map(e=>({...e,data:o(e.data,a)}))),Array.isArray(e.rawDatasets)&&(s.rawDatasets=e.rawDatasets.map(e=>({...e,data:o(e.data,a)}))),s},c=(e,a)=>{if(!e||"object"!=typeof e)return e;let t={...e};return e.values&&"object"==typeof e.values&&(t.values=Object.fromEntries(Object.entries(e.values).map(e=>{let[t,s]=e;return[t,o(s,a)]}))),e.rawValues&&"object"==typeof e.rawValues&&(t.rawValues=Object.fromEntries(Object.entries(e.rawValues).map(e=>{let[t,s]=e;return[t,o(s,a)]}))),t},d=e=>String(e||"").replace(/^@/,"").trim().toLowerCase(),m=e=>String(e||"").replace(/^@/,"").trim().toLowerCase(),h=e=>{let{report:a,handles:t,comparisonResults:l,selectedReportView:o,selectedCompetitorScope:h,demographicsData:p,demographicsError:u,hasLoadedDemographics:g,isLoadingDemographics:v,postingBehaviorData:b,postingBehaviorError:x,hasLoadedPostingBehavior:w,isLoadingPostingBehavior:y,contentTypeFormatData:j,contentTypeFormatError:N,hasLoadedContentTypeFormat:f,isLoadingContentTypeFormat:k,engagementData:S,engagementError:C,hasLoadedEngagement:A,isLoadingEngagement:T,reachData:P,reachError:_,hasLoadedReach:R,isLoadingReach:U,videoPerformanceData:L,videoPerformanceError:F,hasLoadedVideoPerformance:H,isLoadingVideoPerformance:B,commonAudienceData:M,commonAudienceError:E,isLoadingCommonAudience:I,commonAudienceTargets:$,selectedCommonAudienceTargetIds:D,contentLeaderboardData:V,contentLeaderboardError:O,isLoadingContentLeaderboard:G,hasLoadedContentLeaderboard:W,loadedDemographicsScopes:K}=e,X=(e=>{let a=e.filter(Boolean).map(e=>`@${e}`);if(0===a.length)return"Competitor Analysis report";if(1===a.length)return`Competitor Analysis report for ${a[0]}`;let t=a[a.length-1],s=a.slice(0,-1).join(", ");return`Competitor Analysis report for ${s} and ${t}`})(t),z=l?.status==="ready",q=l?.resultError||null,Q=z&&l?.accounts?.length>0?l.accounts:[],J=r(a.resultView),Z=J.some(e=>e.value===o)?o:J[0]?.value,Y=((e,a)=>{let t=a.map(e=>
1e.handle).filter(Boolean);if(!t.length)return[];if("all-competitors"===e)return t;let s=[...new Set(Array.isArray(e)?e:e?[e]:[])].filter(e=>a.some(a=>a.handle===e));return s.length?s:t})(h,Q),ee=((e,a)=>{let t=Array.isArray(a)?a:[];return t.length&&t.length!==e.length?e.filter(e=>t.includes(e.handle)):e})(Q,Y),ea=((e,a,t)=>{if(!e||0===t.length||t.length===a.length)return e;let s=t.map(e=>e.handle),r=s.map(e=>a.findIndex(a=>a.handle===e)).filter(e=>e>=0);if(0===r.length)return e;let l=(e,a)=>{if(!e||"object"!=typeof e)return e;let t=a(e);return e.Followers&&(t.Followers=a(e.Followers)),e.Following&&(t.Following=a(e.Following)),t};return{...e,geographicDistribution:l(e.geographicDistribution,e=>c(e,r)),timezoneDistribution:l(e.timezoneDistribution,e=>i(e,r,s)),genderBreakdown:l(e.genderBreakdown,e=>i(e,r,s)),languageBreakdown:l(e.languageBreakdown,e=>c(e,r)),activeTimesHeatmap:l(e.activeTimesHeatmap,e=>i(e,r,s)),bioKeywords:l(e.bioKeywords,e=>((e,a)=>e&&"object"==typeof e?Object.fromEntries(a.flatMap((a,t)=>{let s=a?.handle||"",r=String(s).replace(/^@/,""),l=String(s||"").replace(/^@/,"").trim().toLowerCase(),n=e[s]||e[r]||e[l]||e[t]||[];return[[s,n],[r,n],[l,n],[t,n]]})):e)(e,t))}})(p,Q,ee),et=((e,a,t)=>{if(!e||"object"!=typeof e||0===t.length||t.length===a.length)return e;let s=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(!Array.isArray(e))return e;let a=new Map(e.map(e=>[m(e.username||e.handle),e])),s=t.map(e=>a.get(m(e.handle))).filter(Boolean);return s.length?s:e};return{...e,cadenceConsistency:s(e.cadenceConsistency),postingTimePattern:s(e.postingTimePattern),audienceAlignment:s(e.audienceAlignment)}})(b,Q,ee),es=((e,a,t)=>{if(!e||"object"!=typeof e||0===t.length||t.length===a.length)return e;let s=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(!Array.isArray(e))return e;let a=new Map(e.map(e=>[m(e.username||e.handle),e])),s=t.map(e=>a.get(m(e.handle))).filter(Boolean);return s.length?s:e};return{...e,postFormatMix:s(e.postFormatMix),linkMediaShare:s(e.linkMediaShare),hashtagAverage:s(e.hashtagAverage),tweetTypeDistribution:s(e.tweetTypeDistribution)}})(j,Q,ee),er=((e,a,t)=>{if(!e||"object"!=typeof e||0===t.length||t.length===a.length)return e;let s=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(!Array.isArray(e))return e;let a=new Map(e.map(e=>[m(e.username||e.handle),e])),s=t.map(e=>a.get(m(e.handle))).filter(Boolean);return s.length?s:e};return{...e,summary:s(e.summary),timeseries:s(e.timeseries)}})(S,Q,ee),el=((e,a,t)=>{if(!e||"object"!=typeof e||0===t.length||t.length===a.length)return e;let s=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(!Array.isArray(e))return e;let a=new Map(e.map(e=>[m(e.username||e.handle),e])),s=t.map(e=>a.get(m(e.handle))).filter(Boolean);return s.length?s:e};return{...e,monthly:s(e.monthly),totals:s(e.totals)}})(P,Q,ee),en=((e,a,t)=>{if(!e||"object"!=typeof e||0===t.length||t.length===a.length)return e;let s=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(!Array.isArray(e))return e;let a=new Map(e.map(e=>[m(e.username||e.handle),e])),s=t.map(e=>a.get(m(e.handle))).filter(Boolean);return s.length?s:e};return{...e,postingRate:s(e.postingRate),viewsTimeseries:s(e.viewsTimeseries)}})(L,Q,ee),eo=((e,a)=>{if(!e)return null;let t=(a||[]).map(e=>d(e.handle));if(!t.length)return e;let s=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],a=new Map((e||[]).map(e=>[d(e.handle||e.username),e]));return t.map(e=>a.get(e)).filter(Boolean)};return{leaderboard:s(e.leaderboard),topHead2Head:s(e.topHead2Head),bottomTweets:s(e.bottomTweets)}})(V,ee);return{...a.resultView,heading:X,reportViewOptions:J,selectedReportView:Z,selectedCompetitorScope:Y,competitorScopeOptions:[{value:"all-competitors",label:"All Competitors"},...Q.map(e=>({value:e.handle,label:e.name,username:e.handle,avatarText:e.avatarText,avatarColor:e.avatarColor,kind:"account"}))],accountRows:ee,resultsStatus:l?.status||null,resultError:q,reportDate:l?.searchLog?.searched_at||null,demographicsData:ea,demographicsError:u,hasLoadedDemographics:g,isLoadingDemographics:v,postingBehaviorData:et,postingBehaviorError:x,hasLoadedPostingBehavior:w,isLoadingPostingBehavior:y,contentTypeFormatData:es,contentTypeFormatError:N,hasLoadedContentTypeFormat:f,isLoadingContentTypeFormat:k,engagementData:er,engagementError:C,hasLoadedEngagement:A,isLoadingEngagement:T,reachData:el,reachError:_,hasLoadedReach:R,isLoadingReach:U,videoPerformanceData:en,videoPerformanceError:F,hasLoadedVideoPerformance:H,isLoadingVideoPerformance:B,commonAudienceData:M,commonAudienceError:E,isLoadingCommonAudience:I,commonAudienceTargets:($||[]).map(e=>({...e,active:(D||[]).includes(e.id)}
1)),selectedCommonAudienceTargetIds:D,contentLeaderboardData:eo,contentLeaderboardError:O,isLoadingContentLeaderboard:G,hasLoadedContentLeaderboard:W,isSingleCompetitorScope:1===ee.length,loadedDemographicsScopes:{[s.followers]:K?.[s.followers]||!1,[s.following]:K?.[s.following]||!1},sections:((e,a,t)=>!Array.isArray(e)||a<=0?e:e.map(e=>({...e,chart:n(e.chart,a,t),chartGrid:Array.isArray(e.chartGrid)?e.chartGrid.map(e=>n(e,a,t)):e.chartGrid})))(a.sections,ee.length,ee)}}},44285:(e,a,t)=>{"use strict";t.d(a,{J:()=>u});var s=t(37876),r=t(14232),l=t(24130),n=t(85756),o=t(98338),i=t(91635),c=t(64392),d=t.n(c);function m(e){let{account:a,children:t}=e;return(0,s.jsx)(l.Kq,{delayDuration:120,children:(0,s.jsxs)(l.bL,{children:[(0,s.jsx)(l.l9,{asChild:!0,children:t}),(0,s.jsx)(l.ZL,{children:(0,s.jsxs)(l.UC,{className:d().tooltipContent,sideOffset:8,side:"top",children:[(0,s.jsxs)("div",{className:d().tooltipBody,children:[(0,s.jsx)("strong",{children:a.name}),(0,s.jsx)("span",{children:a.username})]}),(0,s.jsx)(l.i3,{className:d().tooltipArrow})]})})]})})}function h(){return(0,s.jsxs)("div",{className:d().card,children:[(0,s.jsxs)("div",{className:d().contentHeader,children:[(0,s.jsx)("span",{className:d().cardTitleSkeleton}),(0,s.jsx)("span",{className:d().cardTextSkeleton})]}),(0,s.jsxs)("div",{className:d().accountRailSkeleton,children:[(0,s.jsx)("span",{className:d().avatarSkeleton}),(0,s.jsx)("span",{className:d().avatarSkeleton})]}),(0,s.jsx)("div",{className:d().metricsGrid,children:[0,1].map(e=>(0,s.jsxs)("article",{className:d().metricCard,children:[(0,s.jsx)("span",{className:d().lineSkeleton}),(0,s.jsx)("span",{className:d().buttonSkeleton})]},e))})]})}function p(e){let{accounts:a,activeAccounts:t,onAccountToggle:r}=e,l=2===t.length;return(0,s.jsxs)("div",{className:d().accountRail,children:[(0,s.jsx)("div",{className:d().avatarGroup,children:a.map(e=>(0,s.jsx)(m,{account:e,children:(0,s.jsx)("button",{type:"button",className:`${d().avatarButton} ${e.active?d().avatarButtonActive:d().avatarButtonInactive}`,onClick:()=>r?.(e.id),"aria-pressed":e.active,"aria-label":`Toggle ${e.name}`,children:(0,s.jsx)("span",{className:d().avatarCircle,children:((e,a)=>{if(e?.avatarUrl)return(0,s.jsx)("img",{src:e.avatarUrl,alt:e.name});let t=e?.avatarText||(e?.name||e?.username||"?").replace(/^@/,"").trim().slice(0,2).toUpperCase();return(0,s.jsx)("span",{className:a,style:{backgroundColor:e?.avatarColor},children:t})})(e,d().avatarFallback)})})},e.id))}),(0,s.jsx)("p",{className:d().selectionHint,"data-valid-selection":l?"true":"false",children:l?"Comparing exactly two accounts. Click another account to replace the older selection.":"Select exactly two accounts to compare their overlapping audience."})]})}function u(e){let{accounts:a=[],data:t,isLoading:l=!1,error:c=null,onRetry:m,onAccountToggle:u,onViewProfiles:g}=e,v=a.filter(e=>e.active),b=2===v.length,[x,w]=(0,r.useState)(null);return l?(0,s.jsx)("section",{className:d().commonAudienceShell,children:(0,s.jsx)(h,{})}):c?(0,s.jsx)("section",{className:d().commonAudienceShell,children:(0,s.jsxs)("div",{className:d().card,children:[(0,s.jsxs)("div",{className:d().contentHeader,children:[(0,s.jsx)("h2",{children:"Common Audience"}),(0,s.jsx)("p",{children:"Where audiences overlap. The accounts that follow both you and a competitor are the most reachable people in your market: they already care about the category."})]}),(0,s.jsx)(p,{accounts:a,activeAccounts:v,onAccountToggle:u}),(0,s.jsx)(o.KN,{title:c.title,message:c.message,onRetry:null})]})}):t?.targets?.length?(0,s.jsx)("section",{className:d().commonAudienceShell,children:(0,s.jsxs)("div",{className:d().card,children:[(0,s.jsxs)("div",{className:d().contentHeader,children:[(0,s.jsx)("h2",{children:"Common Audience"}),(0,s.jsx)("p",{children:"Where audiences overlap. The accounts that follow both you and a competitor are the most reachable people in your market: they already care about the category."})]}),(0,s.jsx)(p,{accounts:a,activeAccounts:v,onAccountToggle:u}),(0,s.jsx)("div",{className:d().comparisonGrid,children:(0,s.jsx)("article",{className:d().comparisonCard,children:(0,s.jsx)("div",{className:d().metricsGrid,children:[{key:"followers",label:"common followers",buttonLabel:"view common followers",count:t?.commonFollowers?.label||"0",tooltip:"Accounts that follow both selected profiles. This audie
1nce is the cleanest overlap segment for direct reach and category relevance."},{key:"following",label:"common followings",buttonLabel:"view common followings",count:t?.commonFollowing?.label||"0",tooltip:"Accounts followed by both selected profiles. This helps surface shared interests, monitoring habits, and adjacent category signals."}].map(e=>(0,s.jsxs)("article",{className:d().metricCard,children:[(0,s.jsxs)("p",{className:d().metricSummary,children:[(0,s.jsxs)("span",{children:[t.targets.map(e=>e.username).join(", ").replace(/, ([^,]*)$/," and $1")," ","have"]}),(0,s.jsxs)("strong",{children:[e.count," ",e.label]}),(0,s.jsx)(i.ID,{label:e.label,content:e.tooltip})]}),(0,s.jsxs)("span",{type:"button",className:d().metricButton,onClick:()=>{b&&(w(e.key),setTimeout(()=>w(null),1200)),g?.("following"===e.key?"following":"followers")},children:[(0,s.jsx)("span",{children:e.buttonLabel}),x===e.key?(0,s.jsx)("span",{className:d().metricButtonSpinner,"aria-label":"Loading"}):(0,s.jsx)(n.A,{label:"arrow_outward",size:15})]})]},e.key))})})})]})}):(0,s.jsx)("section",{className:d().commonAudienceShell,children:(0,s.jsxs)("div",{className:d().card,children:[(0,s.jsxs)("div",{className:d().contentHeader,children:[(0,s.jsx)("h2",{children:"Common Audience"}),(0,s.jsx)("p",{children:"Where audiences overlap. The accounts that follow both you and a competitor are the most reachable people in your market: they already care about the category."})]}),(0,s.jsx)(p,{accounts:a,activeAccounts:v,onAccountToggle:u}),(0,s.jsx)(o.KN,{title:"No common audience data",message:"Common audience metrics are not available for the selected accounts yet.",onRetry:m})]})})}},44447:(e,a,t)=>{"use strict";t.d(a,{g:()=>v});var s=t(37876),r=t(12740),l=t(67102),n=t(71468),o=t(59013),i=t(33570),c=t(98338),d=t(19228),m=t(41258),h=t.n(m);let p={geographic:d.U["demographics-geographic"],timezone:d.U["demographics-timezone"],gender:d.U["demographics-gender"]?.[0],language:d.U["demographics-language"]?.[0],activeTimes:d.U["demographics-heatmap"]?.[0],bioKeywords:d.U["demographics-wordcloud"]?.[0]},u=function(e){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e||"object"!=typeof e)return[];let t=!!(e.Followers||a.Followers),s=!!(e.Following||a.Following);return t&&s?["Followers","Following"]:[]};function g(){return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("section",{className:h().demographicsSection,children:(0,s.jsx)("div",{className:h().skeletonCard,children:(0,s.jsx)(i.u,{variant:"horizontal"})})}),(0,s.jsxs)("section",{className:h().demographicsTwoColumn,children:[(0,s.jsx)("div",{className:h().demographicsChartCard,children:(0,s.jsx)("div",{className:h().skeletonCard,children:(0,s.jsx)(i.u,{variant:"bar"})})}),(0,s.jsx)("div",{className:h().demographicsChartCard,children:(0,s.jsx)("div",{className:h().skeletonCard,children:(0,s.jsx)(i.u,{variant:"bar"})})})]}),(0,s.jsx)("section",{className:h().demographicsSection,children:(0,s.jsx)("div",{className:h().skeletonCard,children:(0,s.jsx)(i.u,{variant:"horizontal"})})}),(0,s.jsx)("section",{className:h().demographicsSection,children:(0,s.jsx)("div",{className:h().skeletonCard,children:(0,s.jsx)(i.u,{variant:"bar"})})}),(0,s.jsx)("section",{className:h().demographicsSection,children:(0,s.jsx)("div",{className:h().skeletonCard,children:(0,s.jsx)(i.u,{variant:"bar"})})})]})}function v(e){let{demographicsData:a,loadedScopes:t={},accountRows:i=[],themePreset:d="sky",isLoading:m=!1,error:v=null,onRetry:b}=e,{geographicDistribution:x,timezoneDistribution:w,genderBreakdown:y,languageBreakdown:j,activeTimesHeatmap:N,bioKeywords:f}=a||{},k=!!(x||w||y||j||N||f),S=x?.columns||[],C=u(x,t),A=u(w,t),T=u(y,t),P=u(j,t),_=u(N,t),R=u(f,t);return m?(0,s.jsxs)("section",{className:h().demographicsShell,children:[(0,s.jsxs)("header",{className:h().demographicsHeader,children:[(0,s.jsx)("h2",{children:"Audience Demographics & Geography"}),(0,s.jsx)("p",{children:"Who is this audience, and where are they? Understand the demographic and geographic shape of your competitors' followers, and what it means for the markets you both compete in."})]}),(0,s.jsx)(g,{})]}):v?(0,s.jsxs)("section",{className:h().demographicsShell,children:[(0,s.jsxs)("header",{className:h().demographicsHeader,children:[(0,s.jsx)("h2",{children:"Audience Demographics & Geography"}
1),(0,s.jsx)("p",{children:"Who is this audience, and where are they? Understand the demographic and geographic shape of your competitors' followers, and what it means for the markets you both compete in."})]}),(0,s.jsx)(c.KN,{title:v.title,message:v.message,onRetry:b})]}):k?(0,s.jsxs)("section",{className:h().demographicsShell,children:[(0,s.jsxs)("header",{className:h().demographicsHeader,children:[(0,s.jsx)("h2",{children:"Audience Demographics & Geography"}),(0,s.jsx)("p",{children:"Who is this audience, and where are they? Understand the demographic and geographic shape of your competitors' followers, and what it means for the markets you both compete in."})]}),(0,s.jsx)("section",{className:h().demographicsSection,children:(0,s.jsx)(r.H,{title:"Geographic distribution — region",subtitle:"Followers and following by country/region.",infoTooltipByScope:p.geographic,columns:S,data:x,accountRows:i,themePreset:d,toggleLabels:C})}),(0,s.jsxs)("section",{className:h().demographicsTwoColumn,children:[(0,s.jsx)("div",{className:h().demographicsChartCard,children:(0,s.jsx)(l.v,{chart:{id:"timezone-distribution",title:"Time-zone distribution",subtitle:"Followers and following clustered by time zone.",toggleLabels:A,scopes:{Followers:w?.Followers,Following:w?.Following},tooltipLinesByScope:p.timezone,...w||{}},themePreset:d,accountRows:i,legendPosition:"top",legendLabelOptions:{padding:10,boxWidth:18,boxHeight:8},showAccountCards:!0,showValueInTooltip:!1})}),(0,s.jsx)("div",{className:h().demographicsChartCard,children:(0,s.jsx)(l.v,{chart:{id:"gender-breakdown",title:"Gender breakdown",subtitle:"Estimated gender breakdown across followers and following",toggleLabels:T,scopes:{Followers:y?.Followers,Following:y?.Following},tooltipLines:[p.gender],...y||{}},themePreset:d,accountRows:i,legendPosition:"top",showAccountCards:!0,showValueInTooltip:!1})})]}),(0,s.jsx)("section",{className:h().demographicsSection,children:(0,s.jsx)(r.H,{title:"Language breakdown",subtitle:"Estimated language breakdown across followers and following",infoTooltip:p.language,columns:[{key:"english",label:"ENGLISH"},{key:"chinese",label:"CHINESE"},{key:"german",label:"GERMAN"},{key:"spanish",label:"SPANISH"},{key:"french",label:"FRENCH"},{key:"other",label:"Other"}],data:j,accountRows:i,legendLabelOptions:{padding:6,boxWidth:18,boxHeight:8},themePreset:d,toggleLabels:P})}),(0,s.jsx)("section",{className:h().demographicsSection,children:(0,s.jsx)(n.i,{title:"Audience active-times heatmap",subtitle:"We check when every one of your followers and the people you follow actually tweets, hour by hour, day by day. Tweeting times equal online times. Nobody else gives you this data; post during their peak windows.",infoTooltip:p.activeTimes,data:N,accountRows:i,themePreset:d,toggleLabels:_})}),(0,s.jsx)("section",{className:h().demographicsSection,children:(0,s.jsx)(o.T,{title:"Audience bio keywords",subtitle:"The keywords that appear most in the bios of each account's followers and the accounts they follow. See what their audience is about at a glance.",infoTooltip:p.bioKeywords,data:f,accountRows:i,themePreset:d,toggleLabels:R})})]}):(0,s.jsxs)("section",{className:h().demographicsShell,children:[(0,s.jsxs)("header",{className:h().demographicsHeader,children:[(0,s.jsx)("h2",{children:"Audience Demographics & Geography"}),(0,s.jsx)("p",{children:"Who is this audience, and where are they? Understand the demographic and geographic shape of your competitors' followers, and what it means for the markets you both compete in."})]}),(0,s.jsx)(c.KN,{title:"No demographics data",message:"Audience demographics are not available for this comparison yet.",onRetry:b})]})}},47825:(e,a,t)=>{"use strict";t.d(a,{$c:()=>g,H$:()=>m,gZ:()=>h});var s=t(37876),r=t(14232),l=t(98338),n=t(99069),o=t(13662),i=t(19228),c=t(32076),d=t.n(c);let m=[{value:"engagements",label:"Engagements",tweetsKey:"topByEngagements",metricKey:"engagements",metricLabel:"Engagements",title:"Top 5 Tweets by Engagements",subtitle:"Each account's 5 highest-engagement tweets in the analyzed window."},{value:"impressions",label:"Impressions",tweetsKey:"topByImpressions",metricKey:"impressions",metricLabel:"Impressions",title:"Top 5 Tweets by Impressions",subtitle:"Each account's 5 most-seen tweets in the analyzed window."},{value:"replies",label:"Replies",tweetsKey:"topByReplies",metricKey:"replies",metricLabel:"Replies",title:"Top 5 Tweets by Replies",subtitle:"Each account's 5 most-replied tweets in the analyzed window."},{value:"bookmarks",label:"Bookmarks",tweetsKey:"topByBookmarks",metricKey:"bookmarks",metricLabel:"Bookmarks",title:"Top 5 Tweets by Bookmarks",subtitle:"Each account's 5 most-bookmarked tweets in the analyzed window."}],h=[{key:"engagements",label:"Engagements"},{key:"impressions",label:"Impressions"},{key:"replies",label:"Replies"},{key:"bookmarks",label:"Bookmarks"}],p={leaderboard:i.U["content-leaderboards-top-tweets"]?.[0],headToHead:i.U["content-leaderboards-head2head"]?.[0],bottom:i.U["content-leaderboards-bottom"]?.[0]};function u(){return(0,s.jsxs)("div",{className:d().skeletonShell,children:[(0,s.jsx)("span",{className:d().tabSkeleton}),(0,s.jsx)("div",{className:d().card,children:(0,s.jsx)("div",{className:d().cardGridSkeleton,children:[0,1,2].map(e=>(0,s.jsx)("span",{className:d().cardSkeleton},e))})})]})}function g(e){let{data:a,isSingleScope:t=!1,isLoading:i=!1,error:c=null,onRetry:g,hideHeader:v=!1}=e,[b,x]=(0,r.useState)(m[0].value),w=(0,r.useMemo)(()=>m.find(e=>e.value===b)||m[0],[b]);if(i)return(0,s.jsx)("section",{className:d().leaderboardsShell,children:(0,s.jsx)(u,{})});if(c)return(0,s.jsx)("section",{className:d().leaderboardsShell,children:(0,s.jsx)(l.KN,{title:c.title,message:c.message,onRetry:g})});let y=a?.leaderboard?.length>0,j=a?.topHead2Head?.length>0||a?.bottomTweets?.length>0;return y||j?(0,s.jsxs)("section",{className:d().leaderboardsShell,children:[!v&&(0,s.jsxs)("div",{className:d().introHeader,children:[(0,s.jsx)("h1",{children:"Content leaderboards"}),(0,s.jsx)("p",{children:"The top-performing tweets from each account, side by side. The fastest way to learn what works in your category, and what your audience might want from you next."})]}),(0,s.jsx)("div",{className:d().tabBar,role:"tablist","aria-label":"Leaderboard metric",children:m.map(e=>{let a=e.value===b;return(0,s.jsx)("button",{type:"button",role:"tab","aria-selected":a,className:a?d().tabActive:d().tab,onClick:()=>x(e.value),children:e.label},e.value)})}),(0,s.jsx)(n.t,{accounts:a?.leaderboard,tab:w,tooltip:p.leaderboard}),(0,s.jsx)(o.N,{title:"Top tweet head-to-head",subtitle:"Each account's single top-performing tweet, side by side.",tooltip:p.headToHead,rows:a?.topHead2Head,columns:h,isSingleScope:t}),(0,s.jsx)(o.N,{title:"Bottom tweets / under-performers",subtitle:"Lowest-engagement tweets from each account.",tooltip:p.bottom,rows:a?.bottomTweets,columns:h,isSingleScope:t})]}):(0,s.jsx)("section",{className:d().leaderboardsShell,children:(0,s.jsx)(l.KN,{title:"No content leaderboard data",message:"Content leaderboards are not available for this comparison yet.",onRetry:g})})}},54670:(e,a,t)=>{"use strict";t.d(a,{Zv:()=>u,dF:()=>j,od:()=>w,zH:()=>y});var s=t(37876),r=t(14232),l=t(33570),n=t(10947),o=t(98338),i=t(19228),c=t(94646),d=t(15011),m=t.n(d),h=t(1784),p=t.n(h);let u=[{value:"likes",label:"Likes",totalTitle:"Total Likes Over Time",totalSubtitle:"Compare total likes across your selected competitors, month by month.",averageTitle:"Average Likes per Tweet Over Time",averageSubtitle:"Compare average like
1s per tweet across your selected competitors, month by month.",valueType:"number",pointAccessor:(e,a)=>"Average"===a?Number(e.likes?.avgPerPost)||0:Number(e.likes?.total)||0},{value:"reposts",label:"Reposts",totalTitle:"Total Reposts Over Time",totalSubtitle:"Compare total reposts across your selected competitors, month by month.",averageTitle:"Average Reposts per Tweet Over Time",averageSubtitle:"Compare average reposts per tweet across your selected competitors, month by month.",valueType:"number",pointAccessor:(e,a)=>"Average"===a?Number(e.reposts?.avgPerPost)||0:Number(e.reposts?.total)||0},{value:"replies",label:"Replies",totalTitle:"Total Replies Over Time",totalSubtitle:"Compare total replies across your selected competitors, month by month.",averageTitle:"Average Replies per Tweet Over Time",averageSubtitle:"Compare average replies per tweet across your selected competitors, month by month.",valueType:"number",pointAccessor:(e,a)=>"Average"===a?Number(e.replies?.avgPerPost)||0:Number(e.replies?.total)||0},{value:"quotes",label:"Quotes",totalTitle:"Total Quotes Over Time",totalSubtitle:"Compare total quotes across your selected competitors, month by month.",averageTitle:"Average Quotes per Tweet Over Time",averageSubtitle:"Compare average quotes per tweet across your selected competitors, month by month.",valueType:"number",pointAccessor:(e,a)=>"Average"===a?Number(e.quotes?.avgPerPost)||0:Number(e.quotes?.total)||0},{value:"bookmarks",label:"Bookmarks",totalTitle:"Total Bookmarks Over Time",totalSubtitle:"Compare total bookmarks across your selected competitors, month by month.",averageTitle:"Average Bookmarks per Tweet Over Time",averageSubtitle:"Compare average bookmarks per tweet across your selected competitors, month by month.",valueType:"number",pointAccessor:(e,a)=>"Average"===a?Number(e.bookmarks?.avgPerPost)||0:Number(e.bookmarks?.total)||0},{value:"engagements",label:"Total Engagement",totalTitle:"Total Engagement Over Time",totalSubtitle:"Likes, reposts, replies, quotes and bookmarks combined, compared across your selected competitors month by month.",averageTitle:"Average Engagement per Tweet Over Time",averageSubtitle:"Combined engagement divided by number of tweets, compared across your selected competitors month by month.",valueType:"number",pointAccessor:(e,a)=>"Average"===a?Number(e.engagements?.avgPerPost)||0:Number(e.engagements?.total)||0},{value:"engagement-rate",label:"Engagement Rate %",noToggle:!0,chartTitle:"Engagement Rate Over Time",chartSubtitle:"Total engagement divided by total impressions, compared across your selected competitors month by month.",valueType:"percentage",pointAccessor:e=>Number(e.engagementRatePct)||0}],g=e=>new Intl.NumberFormat("en-US",{notation:Math.abs(Number(e)||0)>=1e3?"compact":"standard",maximumFractionDigits:+(Math.abs(Number(e)||0)>=1e3)}).format(Number(e)||0),v=e=>`${(Number(e)||0).toFixed((Number(e)||0)>=10?1:2).replace(/\.00$/,"")}%`,b=e=>{let a=Number(e)||0;if(Math.abs(a)>=1e3)return g(a);let t=a.toFixed(a>=10?1:2);return t.includes(".")?t.replace(/0+$/,"").replace(/\.$/,""):t};function x(){return(0,s.jsxs)("div",{className:m().tableShell,children:[(0,s.jsx)("div",{className:m().tableHeaderSkeleton}),Array.from({length:4},(e,a)=>(0,s.jsx)("div",{className:m().tableRowSkeleton},`engagement-table-skeleton-${a}`))]})}function w(e,a){let t=new Set;e.forEach(e=>{(e.timeseries||[]).forEach(e=>{e.period&&t.add(e.period)})});let s=[...t].sort(),r=t=>e.map(e=>{let r=new Map((e.timeseries||[]).map(e=>[e.period,e]));return{label:e.name,username:e.username,accountHandle:`@${String(e.username||"").replace(/^@/,"")}`,data:s.map(e=>a.pointAccessor(r.get(e)||{},t))}}),l=r("Total"),n=(0,c.aw)(l),{labels:o,datasets:d}=(0,c.SX)(s,l,n);if(a.noToggle)return{id:`engagement-timeseries-${a.value}`,title:a.chartTitle,subtitle:a.chartSubtitle,tooltipLines:i.U[`engagement-${a.value}`],toggleLabels:[],valueType:a.valueType,labels:o,datasets:d};let{datasets:m}=(0,c.SX)(s,r("Average"),n);return{id:`engagement-timeseries-${a.value}`,title:a.totalTitle,subtitle:a.totalSubtitle,tooltipLines:i.U[`engagement-${a.value}`],toggleLabels:["Total","Average"],valueType:a.valueType,labels:o,datasets:d,scopes:{Average:{title:a.averageTitle,subtitle:a.averageSubtitle,datasets:m}}}}function y(e){let{data:a,accountRows:t=[]}=e,l=Array.isArray(a?.summary)?a.summary:[],n=(0,r.useMemo)(()=>new Map(t.map(e=>[String(e.handle||"").replace(/^@/,"").toLowerCase(),e])),[t]);return l.length?(0,s.jsxs)("div",{className:`${m().tableShell} ${m().compactTable}`,children:[(0,s.jsxs)("header",{className:m().tableHeader,children:[(0,s.jsx)("span",{className:m().headerCell,children:"Account"}),(0,s.jsx)("span",{className:m().headerCell,children:"Follower"}),(0,s.jsx)("span",{className:m().headerCell,children:"Avg Likes"}),(0,s.jsx)("span",{className:m().headerCell,children:"Avg Reposts"}),(0,s.jsx)("span",{className:m().headerCell,children:"Avg Replies"}),(0,s.jsx)("span",{className:m().headerCell,children:"Avg Quotes"}),(0,s.jsx)("span",{className:m().headerCell,children:"Avg Bookmarks"}),(0,s.jsx)("span",{className:m().headerCell,children:"Avg Engagement"}),(0,s.jsx)("span",{className:m().headerCell,children:"Engagement Rate %"})]}),l.map((e,a)=>{let t=n.get(String(e.username||"").replace(/^@/,"").toLowerCase()),r=t?.avatarText||e.name.slice(0,2).toUpperCase();return(0,s.jsxs)("article",{className:m().tableRow,children:[(0,s.jsxs)("div",{className:m().accountCell,children:[(0,s.jsx)("span",{className:m().avatarCircle,style:{backgroundColor:t?.avatarUrl||e.profileImageUrl?"transparent":t?.avatarColor||"#dce6ef"},children:t?.avatarUrl||e.profileImageUrl?(0,s.jsx)("img",{src:t?.avatarUrl||e.profileImageUrl,alt:e.name}):r}),(0,s.jsxs)("div",{children:[(0,s.jsx)("strong",{children:e.name}),(0,s.jsxs)("p",{children:["@",String(e.username||"").replace(/^@/,"")]})]})]}),(0,s.jsx)("span",{className:m().metricCell,children:g(e.followers)}),(0,s.jsx)("span",{className:m().metricCell,children:b(e.likes?.avgPerPost)}),(0,s.jsx)("span",{className:m().metricCell,children:b(e.reposts?.avgPerPost)}),(0,s.jsx)("span",{className:m().metricCell,children:b(e.replies?.avgPerPost)}),(0,s.jsx)("span",{className:m().metricCell,children:b(e.quotes?.avgPerPost)}),(0,s.jsx)("span",{className:m().metricCell,children:b(e.bookmarks?.avgPerPost)}),(0,s.jsx)("span",{className:m().metricCell,children:b(e.engagements?.avgPerPost)}),(0,s.jsx)("span",{className:m().rateCell,children:(0,s.jsx)("strong",{children:v(e.engagementRatePct)})})]},`${e.twitterProfileId||e.username||e.name}-${a}`)})]}):null}function j(e){let{data:a,accountRows:t=[],themePreset:i="sky",isLoading:c=!1,error:d=null,onRetry:h}=e,[y,j]=(0,r.useState)(u[0].value),N=Array.isArray(a?.summary)?a.summary:[],f=Array.isArray(a?.timeseries)?a.timeseries:[],k=(0,r.useMemo)(()=>new Map(t.map(e=>[String(e.handle||"").replace(/^@/,"").toLowerCase(),e])),[t]),S=(0,r.useMemo)(()=>u.find(e=>e.value===y)||u[0],[y]),C=(0,r.useMemo)(()=>w(f,S),[S,f]),A=N.length>0||f.length>0;return c?(0,s.jsxs)("section",{className:m().shell,children:[(0,s.jsxs)("header",{className:m().header,children:[(0,s.jsx)("h2",{children:"Engagement"}),(0,s.jsx)("p",{className:m().subtitle,children:"The hard performance numbers, and the test the X algorithm actually runs."}),(0,s.jsx)("p",{className:m().description,children:"X first shows each new tweet to a small group of your followers and watches how they respond. Fast like
1s, replies, reposts, and bookmarks expand reach. Slow signals stop reach from growing. The numbers in this section are the data the algorithm sees on that first pass. Totals show scale; per-post averages show whether the content passed the test. A clean, active audience (see \xa72) makes this test more reliable; sharper hooks make it pass."})]}),(0,s.jsx)("section",{className:m().tableSection,children:(0,s.jsx)(x,{})}),(0,s.jsxs)("section",{className:m().chartSection,children:[(0,s.jsx)("div",{className:m().tabBarSkeleton}),(0,s.jsx)("div",{className:m().chartSkeletonWrap,children:(0,s.jsx)(l.u,{variant:"bar"})})]})]}):d&&!A?(0,s.jsxs)("section",{className:m().shell,children:[(0,s.jsxs)("header",{className:m().header,children:[(0,s.jsx)("h2",{children:"Engagement"}),(0,s.jsx)("p",{className:m().subtitle,children:"The hard performance numbers, and the test the X algorithm actually runs."}),(0,s.jsx)("p",{className:m().description,children:"X first shows each new tweet to a small group of your followers and watches how they respond. Fast likes, replies, reposts, and bookmarks expand reach. Slow signals stop reach from growing. The numbers in this section are the data the algorithm sees on that first pass. Totals show scale; per-post averages show whether the content passed the test. A clean, active audience (see \xa72) makes this test more reliable; sharper hooks make it pass."})]}),(0,s.jsx)(o.KN,{title:d.title,message:d.message,onRetry:h})]}):A?(0,s.jsxs)("section",{className:m().shell,children:[(0,s.jsxs)("header",{className:m().header,children:[(0,s.jsx)("h2",{children:"Engagement"}),(0,s.jsx)("p",{className:m().subtitle,children:"The hard performance numbers, and the test the X algorithm actually runs."}),(0,s.jsx)("p",{className:m().description,children:"X first shows each new tweet to a small group of your followers and watches how they respond. Fast likes, replies, reposts, and bookmarks expand reach. Slow signals stop reach from growing. The numbers in this section are the data the algorithm sees on that first pass. Totals show scale; per-post averages show whether the content passed the test. A clean, active audience makes this test more reliable; sharper hooks make it pass."})]}),(0,s.jsxs)("section",{className:m().tableSection,children:[(0,s.jsx)("p",{className:m().tableLead,children:"Every metric below is the average per tweet over your last 90 days of activity."}),(0,s.jsxs)("div",{className:m().tableShell,children:[(0,s.jsxs)("header",{className:m().tableHeader,children:[(0,s.jsx)("span",{className:m().headerCell,children:"Account"}),(0,s.jsx)("span",{className:m().headerCell,children:"Follower"}),(0,s.jsx)("span",{className:m().headerCell,children:"Avg Likes"}),(0,s.jsx)("span",{className:m().headerCell,children:"Avg Reposts"}),(0,s.jsx)("span",{className:m().headerCell,children:"Avg Replies"}),(0,s.jsx)("span",{className:m().headerCell,children:"Avg Quotes"}),(0,s.jsx)("span",{className:m().headerCell,children:"Avg Bookmarks"}),(0,s.jsx)("span",{className:m().headerCell,children:"Avg Engagement"}),(0,s.jsx)("span",{className:m().headerCell,children:"Engagement Rate %"})]}),N.map((e,a)=>{let t=k.get(String(e.username||"").replace(/^@/,"").toLowerCase()),r=t?.avatarText||e.name.slice(0,2).toUpperCase();return(0,s.jsxs)("article",{className:m().tableRow,children:[(0,s.jsxs)("div",{className:m().accountCell,children:[(0,s.jsx)("span",{className:m().avatarCircle,style:{backgroundColor:t?.avatarUrl||e.profileImageUrl?"transparent":t?.avatarColor||"#dce6ef"},children:t?.avatarUrl||e.profileImageUrl?(0,s.jsx)("img",{src:t?.avatarUrl||e.profileImageUrl,alt:e.name}):r}),(0,s.jsxs)("div",{children:[(0,s.jsx)("strong",{children:e.name}),(0,s.jsxs)("p",{children:["@",String(e.username||"").replace(/^@/,"")]})]})]}),(0,s.jsx)("span",{className:m().metricCell,children:g(e.followers)}),(0,s.jsx)("span",{className:m().metricCell,children:b(e.likes?.avgPerPost)}),(0,s.jsx)("span",{className:m().metricCell,children:b(e.reposts?.avgPerPost)}),(0,s.jsx)("span",{className:m().metricCell,children:b(e.replies?.avgPerPost)}),(0,s.jsx)("span",{className:m().metricCell,children:b(e.quotes?.avgPerPost)}),(0,s.jsx)("span",{className:m().metricCell,children:b(e.bookmarks?.avgPerPost)}),(0,s.jsx)("span",{className:m().metricCell,children:b(e.engagements?.avgPerPost)}),(0,s.jsx)("span",{className:m().rateCell,children:(0,s.jsx)("strong",{children:v(e.engagementRatePct)})})]},`${e.twitterProfileId||e.username||e.name}-${a}`)})]})]}),(0,s.jsxs)("section",{className:m().chartSection,"aria-label":"Engagement breakdown charts",children:[(0,s.jsx)("div",{className:m().chartHeaderSpacer,"aria-hidden":"true"}),(0,s.jsx)("div",{className:p().segmentChipGroup,children:(0,s.jsx)("div",{className:p().segmentChipRow,role:"tablist","aria-label":"Engagement metric tabs",children:u.map(e=>{let a=e.value===y;return(0,s.jsx)("button",{type:"button",role:"tab","aria-selected":a,className:a?p().segmentChipActive:p().segmentChip,onClick:()=>j(e.value),children:e.label},e.value)})})}),(0,s.jsx)(n.g,{chart:C,accountRows:t,themePreset:i})]})]}):(0,s.jsxs)("section",{className:m().shell,children:[(0,s.jsxs)("header",{className:m().header,children:[(0,s.jsx)("h2",{children:"Engagement"}),(0,s.jsx)("p",{className:m().subtitle,children:"The hard performance numbers, and the test the X algorithm actually runs."}),(0,s.jsx)("p",{className:m().description,children:"X first shows each new tweet to a small group of your followers and watches how they respond. Fast like
1s, replies, reposts, and bookmarks expand reach. Slow signals stop reach from growing. The numbers in this section are the data the algorithm sees on that first pass. Totals show scale; per-post averages show whether the content passed the test. A clean, active audience (see \xa72) makes this test more reliable; sharper hooks make it pass."})]}),(0,s.jsx)(o.KN,{title:"No engagement data",message:"Engagement metrics are not available for this comparison yet.",onRetry:h})]})}},54801:(e,a,t)=>{"use strict";t.d(a,{Q:()=>m});var s=t(37876),r=t(14232),l=t(81047),n=t(31134),o=t(94646),i=t(19562),c=t(79331),d=t(95502);function m(e){let{chart:a,themePreset:t="sky"}=e,l=(0,c.sc)(t),[m,h]=(0,r.useState)(()=>(0,o.di)(a)),p=(0,o.d4)(a,m),[u,g]=(0,o.eo)(`${m||"default"}|${p.labels.length}`,p.labels.length),v=(0,o.Cl)(l,p.datasets.length),b=p.labels.length>1?{min:0,max:p.labels.length-1,start:u.start,end:u.end,onStartChange:e=>{g(a=>(0,o.id)(e,a.end,p.labels.length))},onEndChange:e=>{g(a=>(0,o.id)(a.start,e,p.labels.length))}}:null,x={labels:p.labels,datasets:p.datasets.map((e,a)=>({...e,borderColor:v[a%v.length],backgroundColor:`${v[a%v.length]}18`,fill:!0,tension:.28,borderWidth:2,pointRadius:0,pointHoverRadius:3}))},w={responsive:!0,maintainAspectRatio:!1,font:{family:i.A5},animation:{duration:700,easing:"easeOutQuart"},onClick:i.a5,onHover:i.kw,interaction:{intersect:!1,mode:"index"},plugins:{legend:{position:"bottom",...i.Nm,labels:(0,i.R5)({theme:l,padding:18})},tooltip:(0,i.U_)({theme:l,displayColors:!0})},scales:{x:{min:u.start,max:u.end,ticks:{color:l.muted},grid:{color:"transparent"},border:{display:!1}},y:{ticks:{color:l.muted},grid:{color:l.grid},border:{display:!1}}}};return(0,s.jsx)(d.j,{title:a.title,subtitle:a.subtitle,toggleLabels:a.toggleLabels,toggleV
1alue:m,onToggleChange:h,viewportControl:b,children:(0,s.jsx)(n.N1,{data:x,options:w})})}l.t1.register(l.PP,l.kc,l.FN,l.No,l.m_,l.s$,l.dN)},64392:e=>{e.exports={commonAudienceShell:"common-audience-view_commonAudienceShell__9HL4u",card:"common-audience-view_card__S9SDq",contentHeader:"common-audience-view_contentHeader__XLPBw",accountRail:"common-audience-view_accountRail__cc6Bw",accountRailSkeleton:"common-audience-view_accountRailSkeleton__sz8_z",avatarGroup:"common-audience-view_avatarGroup__cPU4n",avatarCircle:"common-audience-view_avatarCircle__fCo0o",avatarSkeleton:"common-audience-view_avatarSkeleton__bIjc2",avatarCircleOffset:"common-audience-view_avatarCircleOffset__1Ft0L",avatarFallback:"common-audience-view_avatarFallback__se_xl",avatarButton:"common-audience-view_avatarButton__yWa8o",avatarButtonActive:"common-audience-view_avatarButtonActive__erGQH",avatarButtonInactive:"common-audience-view_avatarButtonInactive__SHV0F",selectionHint:"common-audience-view_selectionHint__8j8BK",comparisonGrid:"common-audience-view_comparisonGrid__JKnEV",comparisonCard:"common-audience-view_comparisonCard__DO1yN",metricsGrid:"common-audience-view_metricsGrid__MTNlj",metricCard:"common-audience-view_metricCard__j1Xls",metricSummary:"common-audience-view_metricSummary__IdBtj",infoButton:"common-audience-view_infoButton__gl5k9",tooltipContent:"common-audience-view_tooltipContent__X_3VF",tooltipIn:"common-audience-view_tooltipIn__Rr03I",tooltipOut:"common-audience-view_tooltipOut__EqUpc",tooltipArrow:"common-audience-view_tooltipArrow__9J5n6",tooltipBody:"common-audience-view_tooltipBody__ttbvD",metricButton:"common-audience-view_metricButton__HEOi1",metricButtonSpinner:"common-audience-view_metricButtonSpinner__CFFgM",lineSkeleton:"common-audience-view_lineSkeleton__zjDJC",buttonSkeleton:"common-audience-view_buttonSkeleton__52DQN",cardTitleSkeleton:"common-audience-view_cardTitleSkeleton__ORHPd",cardTextSkeleton:"common-audience-view_cardTextSkeleton__MUp0K",commonAudienceShimmer:"common-audience-view_commonAudienceShimmer__t2Nad"}},65308:(e,a,t)=>{"use strict";t.d(a,{Av:()=>b,YL:()=>g,fj:()=>w});var s=t(37876),r=t(14232),l=t(33570),n=t(10947),o=t(98338),i=t(19228),c=t(94646),d=t(15011),m=t.n(d);let h=i.U["reach-average-impressions-per-tweet"],p=i.U["reach-impressions-over-time"],u=e=>String(e||"").replace(/^@/,"").trim().toLowerCase(),g=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],a=new Set;e.forEach(e=>{(e.timeseries||[]).forEach(e=>{e.period&&a.add(e.period)})});let t=[...a].sort(),s=a=>e.map(e=>{let s=new Map((e.timeseries||[]).map(e=>[e.period,e]));return{label:e.name,username:e.username,accountHandle:`@${String(e.username||"").replace(/^@/,"")}`,data:t.map(e=>Number(s.get(e)?.impressions?.[a])||0)}}),r=s("total"),l=(0,c.aw)(r),{labels:n,datasets:o}=(0,c.SX)(t,r,l),{datasets:i}=(0,c.SX)(t,s("avgPerPost"),l);return{id:"reach-average-impressions-per-tweet",title:"Total impressions overtime",subtitle:"Total impressions: the sum of each tweet’s impressions per month.",tooltipLines:h,toggleLabels:["Total","Average"],valueType:"number",labels:n,datasets:o,scopes:{Average:{title:"Average impressions per tweet overtime",subtitle:"See how your average impressions per tweet compare to your competitors.",datasets:i}}}},v=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],a=arguments.length>1?arguments[1]:void 0;return e.map(e=>({label:e[a]||"",value:(Number(e.periodImpressions)||0)/Math.max(Number(e.tweetCount)||0,1)}))},b=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],t=new Set,s=new Set;e.forEach(e=>{v(e.weeklyTimeseries,"weekStart").forEach(e=>{e.label&&t.add(e.label)})}),a.forEach(e=>{(e.timeseries||[]).forEach(e=>{e.period&&s.add(e.period)})});let r=[...t].sort(),l=[...s].sort(),n=e.map(e=>{let a=new Map(v(e.weeklyTimeseries,"weekStart").map(e=>[e.label,e]));return{label:e.name,username:e.username,accountHandle:`@${String(e.username||"").replace(/^@/,"")}`,data:r.map(e=>Number(a.get(e)?.value)||0)}}),o=(0,c.aw)(n),{labels:i,datasets:d}=(0,c.SX)(r,n,o),m=a.map(e=>{let a=new Map((e.timeseries||[]).map(e=>[e.period,e]));return{label:e.name,username:e.username,accountHandle:`@${String(e.username||"").replace(/^@/,"")}`,data:l.map(e=>Number(a.get(e)?.impressions?.avgPerPost)||0)}}),h=(0,c.aw)(m),{labels:u,datasets:g}=(0,c.SX)(l,m,h);return{id:"reach-impressions-over-time",title:"Impressions over time",subtitle:"Weekly and monthly average impressions per tweet, plotted over time.",tooltipLines:p,toggleLabels:["Weekly","Monthly"],valueType:"number",labels:i,datasets:d,scopes:{Monthly:{labels:u,datasets:g}}}};function x(){return(0,s.jsxs)("section",{className:m().chartSection,children:[(0,s.jsx)("div",{className:m().chartSkeletonWrap,children:(0,s.jsx)(l.u,{variant:"bar"})}),(0,s.jsx)("div",{className:m().chartSkeletonWrap,children:(0,s.jsx)(l.u,{variant:"bar"})})]})}function w(e){let{data:a,accountRows:t=[],themePreset:l="sky",isLoading:i=!1,error:c=null,onRetry:d}=e,h=Array.isArray(a?.monthly)?a.monthly:[],p=Array.isArray(a?.totals)?a.totals:[],v=(0,r.useMemo)(()=>new Map(t.map(e=>[u(e.handle||e.username),e])),[t]),w=(0,r.useMemo)(()=>h.map(e=>({...e,profileImageUrl:v.get(u(e.username))?.avatarUrl||e.profileImageUrl||null})),[v,h]),y=(0,r.useMemo)(()=>p.map(e=>({...e,profileImageUrl:v.get(u(e.username))?.avatarUrl||e.profileImageUrl||null})),[v,p]),j=(0,r.useMemo)(()=>g(w),[w]),N=(0,r.useMemo)(()=>b(y,w),[y,w]),f=w.length>0||y.length>0;return i?(0,s.jsxs)("section",{className:m().shell,children:[(0,s.jsxs)("header",{className:m().header,children:[(0,s.jsx)("h2",{children:"Impression/Views"}),(0,s.jsx)("p",{className:m().description,children:"How many eyes actually saw the content. Impressions are the truest visibility metric on X. Engagement is the headline, but impressions are the foundation."})]}),(0,s.jsx)(x,{})]}):c&&!f?(0,s.jsxs)("section",{className:m().shell,children:[(0,s.jsxs)("header",{className:m().header,children:[(0,s.jsx)("h2",{children:"Impression/Views"}),(0,s.jsx)("p",{className:m().description,children:"How many eyes actually saw the content. Impressions are the truest visibility metric on X. Engagement is the headline, but impressions are the foundation."})]}),(0,s.jsx)(o.KN,{title:c.title,message:c.message,onRetry:d})]}):f?(0,s.jsxs)("section",{className:m().shell,children:[(0,s.jsxs)("header",{className:m().header,children:[(0,s.jsx)("h2",{children:"Impression/Views"}),(0,s.jsx)("p",{className:m().description,children:"How many eyes actually saw the content. Impressions are the truest visibility metric on X. Engagement is the headline, but impressions are the foundation."})]}),(0,s.jsxs)("section",{className:m().chartSection,"aria-label":"Reach breakdown charts",children:[(0,s.jsx)(n.g,{chart:j,accountRows:t,themePreset:l}),(0,s.jsx)(n.g,{chart:N,accountRows:t,themePreset:l})]})]}):(0,s.jsxs)("section",{className:m().shell,children:[(0,s.jsxs)("header",{className:m().header,children:[(0,s.jsx)("h2",{children:"Impression/Views"}),(0,s.jsx)("p",{className:m().description,children:"How many eyes actually saw the content. Impressions are the truest visibility metric on X. Engagement is the headline, but impressions are the foundation."})]}),(0,s.jsx)(o.KN,{title:"No reach data",message:"Reach metrics are not available for this comparison yet.",onRetry:d})]})}},79790:(e,a,t)=>{"use strict";t.d(a,{Y:()=>k,c:()=>f});var s=t(37876),r=t(24130),l=t(85756),n=t(7136),o=t(37125),i=t(26820),c=t(20384),d=t(33570),m=t(98338),h=t(44958),p=t(19228),u=t(15531),g=t.n(u);let v={cadence:p.U["posting-behavior-cadence"]?.[0],consistency:p.U["posting-behavior-consistency"]?.[0],consistencyMethod:p.U["posting-behavior-consistency-method"]?.[0],timePattern:p.U["posting-behavior-heatmap"]?.[0],postLength:"Compares the average character count per tweet for each account so you can spot who tends to write shorter versus longer posts.",audienceAlignment:p.U["posting-behavior-alignment"]?.[0]},b=e=>String(e||"").replace(/^@/,"").trim().toLowerCase(),x=e=>(Number(e)||0).toFixed(2),w=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",a=e.trim().toLowerCase();return a.includes("steady")?"steady":a.includes("burst")?"burst":"balanced"},y=(e,a)=>{let t=Math.max(Number(e)||0,0),s=Math.max(Number(a)||0,0);return s<=0?0:Math.max(0,Math.min(100,t/s*100))};function j(e){let{label:a,content:t}=e;return(0,s.jsx)(r.Kq,{delayDuration:120,children:(0,s.jsxs)(r.bL,{children:[(0,s.jsx)(r.l9,{asChild:!0,children:(0,s.jsx)("span",{type:"button",className:g().infoButton,"aria-label":`${a} information`,children:(0,s.jsx)(l.A,{label:"info",size:18})})}),(0,s.jsx)(r.ZL,{children:(0,s.jsxs)(r.UC,{className:g().tooltipContent,sideOffset:8,side:"top",children:[(0,s.jsx)("div",{className:g().tooltipBody,children:(0,s.jsx)("p",{children:"string"==typeof t?(0,h.d)(t):t})}),(0,s.jsx)(r.i3,{className:g().tooltipArrow})]})})]})})}function N(){return(0,s.jsxs)("section",{className:g().chartGrid,children:[[0,1].map(e=>(0,s.jsx)("div",{className:g().chartCard,children:(0,s.jsx)("div",{className:g().skeletonWrap,children:(0,s.jsx)(d.u,{variant:"horizontal"})})},e)),(0,s.jsxs)("article",{className:`${g().chartCard} ${g().fullWidthSection}`,children:[(0,s.jsxs)("div",{className:g().heatmapSkeletonHeader,children:[(0,s.jsx)("span",{className:g().heatmapSkeletonTitle}),(0,s.jsx)("span",{className:g().heatmapSkeletonSubtitle})]}),(0,s.jsx)("div",{className:g().heatmapSkeletonGrid,children:Array.from({length:3},(e,a)=>(0,s.jsxs)("div",{className:g().heatmapSkeletonPanel,children:[(0,s.jsxs)("div",{className:g().heatmapSkeletonAccount,children:[(0,s.jsx)("span",{className:g().heatmapSkeletonAvatar}),(0,s.jsxs)("div",{className:g().heatmapSkeletonAccountMeta,children:[(0,s.jsx)("span",{className:g().heatmapSkeletonName}),(0,s.jsx)("span",{className:g().heatmapSkeletonHandle})]})]}),(0,s.jsxs)("div",{className:g().heatmapSkeletonBody,children:[(0,s.jsx)("div",{className:g().heatmapSkeletonYAxis,children:Array.from({length:7},(e,t)=>(0,s.jsx)("span",{className:g().heatmapSkeletonYTick},`heatmap-skeleton-y-${a}-${t}`))}),(0,s.jsx)("div",{className:g().heatmapSkeletonPlot,children:Array.from({length:56},(e,t)=>(0,s.jsx)("span",{className:g().heatmapSkeletonCell},`heatmap-skeleton-cell-${a}-${t}`))})]}),(0,s.jsx)("div",{className:g().heatmapSkeletonXAxis,children:Array.from({length:8},(e,t)=>(0,s.jsx)("span",{className:g().heatmapSkeletonXTick},`heatmap-skeleton-x-${a}
1-${t}`))})]},`heatmap-skeleton-${a}`))})]}),(0,s.jsx)("div",{className:g().fullWidthSection,children:(0,s.jsx)("div",{className:g().skeletonWrap,children:(0,s.jsx)(d.u,{variant:"horizontal"})})}),(0,s.jsxs)("div",{className:g().fullWidthSection,children:[(0,s.jsxs)("div",{className:g().alignmentSkeletonHeader,children:[(0,s.jsx)("span",{className:g().alignmentSkeletonTitle}),(0,s.jsx)("span",{className:g().alignmentSkeletonSubtitle})]}),(0,s.jsx)("div",{className:g().alignmentSkeletonGrid,children:Array.from({length:3},(e,a)=>(0,s.jsxs)("div",{className:g().alignmentSkeletonPanel,children:[(0,s.jsxs)("div",{className:g().alignmentSkeletonTop,children:[(0,s.jsxs)("div",{className:g().alignmentSkeletonAccount,children:[(0,s.jsx)("span",{className:g().alignmentSkeletonAvatar}),(0,s.jsxs)("div",{className:g().alignmentSkeletonAccountMeta,children:[(0,s.jsx)("span",{className:g().alignmentSkeletonName}),(0,s.jsx)("span",{className:g().alignmentSkeletonHandle})]})]}),(0,s.jsxs)("div",{className:g().alignmentSkeletonLegend,children:[(0,s.jsx)("span",{className:g().alignmentSkeletonLegendItem}),(0,s.jsx)("span",{className:g().alignmentSkeletonLegendItem})]})]}),(0,s.jsx)("div",{className:g().alignmentSkeletonChart})]},`alignment-skeleton-${a}`))})]})]})}function f(e){let{data:a,accountRows:t=[]}=e,r=Array.isArray(a?.cadenceConsistency)?a.cadenceConsistency:[],l=new Map(t.map(e=>[b(e.handle),e])),n=Math.max(...r.map(e=>Number(e.consistency?.cv)||0),0);return r.length?(0,s.jsx)("div",{className:g().consistencyList,children:r.map(e=>{let a=l.get(b(e.username))||{},t=w(e.consistency?.label),r=`${y(e.consistency?.cv,n)}%`,o=a.avatarText||e.name.replace(/^@/,"").trim().slice(0,2).toUpperCase();return(0,s.jsxs)("article",{className:g().consistencyItem,children:[(0,s.jsxs)("div",{className:g().accountMeta,children:[(0,s.jsx)("span",{className:g().avatarCircle,style:{backgroundColor:a.avatarUrl||e.profileImageUrl?"transparent":a.avatarColor},children:a.avatarUrl||e.profileImageUrl?(0,s.jsx)("img",{src:a.avatarUrl||e.profileImageUrl,alt:e.name}):o}),(0,s.jsxs)("div",{children:[(0,s.jsx)("strong",{children:e.name}),(0,s.jsxs)("p",{children:["@",b(e.username)]})]})]}),(0,s.jsxs)("div",{className:g().consistencyBarCell,children:[(0,s.jsx)("div",{className:g().consistencyTrack,children:(0,s.jsx)("span",{className:g().consistencyFill,"data-tone":t,style:{width:r}})}),(0,s.jsx)("div",{className:g().consistencyMetaRow,children:(0,s.jsxs)("strong",{className:g().consistencyLabel,"data-tone":t,children:[e.consistency?.label||"Steady"," \xb7 CV ",x(e.consistency?.cv)]})})]})]},`${e.twitterProfileId||e.username}-consistency`)})}):null}function k(e){let{data:a,accountRows:t=[],isLoading:r=!1,error:l=null,onRetry:d,hideHeader:h=!1}=e,p=new Map(t.map(e=>[b(e.handle),e])),u=Array.isArray(a?.cadenceConsistency)?a.cadenceConsistency:[],f=Array.isArray(a?.postingTimePattern)?a.postingTimePattern:[],k=Array.isArray(a?.audienceAlignment)?a.audienceAlignment:[],S=u.length>0,C=Math.max(...u.map(e=>Number(e.consistency?.cv)||0),0),A={id:"posting-cadence",type:"posting-cadence",title:"Posts per day / cadence",subtitle:"Average tweets posted per day per account.",tooltipLines:[v.cadence],labels:u.map(e=>e.name),datasets:[{label:"Lifetime Average",data:u.map(e=>Number(e.cadence?.lifetimeAvgPerDay)||0),backgroundColor:"#22384f"},{label:"Last 30 Days Average",data:u.map(e=>Number(e.cadence?.recentAvgPerDay)||0),backgroundColor:"#6f8fae"}]},T={id:"average-post-length",title:"Average post length",subtitle:"Average character count per tweet.",tooltipLines:[v.postLength],data:u.map(e=>({name:e.name,username:e.username,profileImageUrl:e.profileImageUrl,value:Number(e.postLength?.avgChars)||0,maxValue:Number(e.postLength?.maxChars)||0,minValue:Number(e.postLength?.minChars)||0}))};return r?(0,s.jsxs)("section",{className:g().shell,children:[!h&&(0,s.jsxs)("header",{className:g().header,children:[(0,s.jsx)("h2",{children:"Posting behavior"}),(0,s.jsx)("p",{children:"How often, when, and how consistently each account tweets. The discipline behind their content strategy."})]}),(0,s.jsx)(N,{})]}):l&&!S?(0,s.jsxs)("section",{className:g().shell,children:[!h&&(0,s.jsxs)("header",{className:g().header,children:[(0,s.jsx)("h2",{children:"Posting behavior"}),(0,s.jsx)("p",{children:"How often, when, and how consistently each account tweets. The discipline behind their content strategy."})]}),(0,s.jsx)(m.KN,{title:l.title,message:l.message,onRetry:d})]}):S?(0,s.jsxs)("section",{className:g().shell,children:[!h&&(0,s.jsxs)("header",{className:g().header,children:[(0,s.jsx)("h2",{children:"Posting behavior"}),(0,s.jsx)("p",{children:"How often, when, and how consistently each account tweets. The discipline behind their content strategy."})]}),(0,s.jsxs)("section",{className:g().chartGrid,children:[(0,s.jsx)("div",{className:g().chartCell,children:(0,s.jsx)(o.C,{chart:A,themePreset:"sky",accountRows:t})}),(0,s.jsxs)("article",{className:`${g().chartCard} ${g().consistencyCard}`,children:[(0,s.jsx)("div",{className:g().cardHeader,children:(0,s.jsxs)("div",{children:[(0,s.jsxs)("div",{className:g().titleRow,children:[(0,s.jsx)("h3",{children:"Posting consistency (steady vs burst)"}),(0,s.jsx)(j,{label:"Posting consistency",content:v.consistency})]}),(0,s.jsx)("p",{children:"Whether each account posts steadily or in bursts."}),(0,s.jsxs)("p",{children:["Based on the last 30 days: Steady accounts tweet at a fairly even daily pace; Burst accounts bunch their tweets into spikes with quiet gaps in between."," ",(0,s.jsx)(j,{label:"How consistency is calculated",content:v.consistencyMethod})]})]})}),(0,s.jsx)("div",{className:g().consistencyList,children:u.map(e=>{let a=p.get(b(e.username))||{},t=w(e.consistency?.label),r=`${y(e.consistency?.cv,C)}%`,l=a.avatarText||e.name.replace(/^@/,"").trim().slice(0,2).toUpperCase();return(0,s.jsxs)("article",{className:g().consistencyItem,children:[(0,s.jsxs)("div",{className:g().accountMeta,children:[(0,s.jsx)("span",{className:g().avatarCircle,style:{backgroundColor:a.avatarUrl||e.profileImageUrl?"transparent":a.avatarColor},children:a.avatarUrl||e.profileImageUrl?(0,s.jsx)("img",{src:a.avatarUrl||e.profileImageUrl,alt:e.name}):l}),(0,s.jsxs)("div",{children:[(0,s.jsx)("strong",{children:e.name}),(0,s.jsxs)("p",{children:["@",b(e.username)]})]})]}),(0,s.jsxs)("div",{className:g().consistencyBarCell,children:[(0,s.jsx)("div",{className:g().consistencyTrack,
1children:(0,s.jsx)("span",{className:g().consistencyFill,"data-tone":t,style:{width:r}})}),(0,s.jsx)("div",{className:g().consistencyMetaRow,children:(0,s.jsxs)("strong",{className:g().consistencyLabel,"data-tone":t,children:[e.consistency?.label||"Steady"," \xb7 CV ",x(e.consistency?.cv)]})})]})]},`${e.twitterProfileId||e.username}-consistency`)})})]}),(0,s.jsx)("div",{className:g().fullWidthSection,children:(0,s.jsx)(i.D,{title:"Posting time-of-day pattern",subtitle:"When each account actually tweets, hour by hour, day by day. Pair with the follower online-times heatmap to see who's posting when their audience is online.",infoTooltip:v.timePattern,data:f,accountRows:t,themePreset:"sky"})}),(0,s.jsx)("div",{className:g().fullWidthSection,children:(0,s.jsx)(n.G,{chart:T,themePreset:"sky",accountRows:t})}),k.length>0&&(0,s.jsx)("div",{className:g().fullWidthSection,children:(0,s.jsx)(c.f,{title:"Posting-vs-audience timing alignment",subtitle:"Score showing how well each account's posts land during their audience's peak hours.",infoTooltip:v.audienceAlignment,data:k,accountRows:t,themePreset:"sky"})})]})]}):(0,s.jsxs)("section",{className:g().shell,children:[!h&&(0,s.jsxs)("header",{className:g().header,children:[(0,s.jsx)("h2",{children:"Posting behavior"}),(0,s.jsx)("p",{children:"How often, when, and how consistently each account tweets. The discipline behind their content strategy."})]}),(0,s.jsx)(m.KN,{title:"No posting behavior data",message:"Posting behavior metrics are not available for this comparison yet.",onRetry:d})]})}},85315:(e,a,t)=>{"use strict";t.d(a,{JZ:()=>g,NB:()=>x,rh:()=>v});var s=t(37876),r=t(14232),l=t(33570),n=t(31930),o=t(66320),i=t(98338),c=t(19228),d=t(15011),m=t.n(d);let h=c.U["video-posting-rate"],p=c.U["aggregate-video-views"],u=e=>String(e||"").replace(/^@/,"").trim().toLowerCase(),g=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],t=new Map(a.map(e=>[u(e.handle||e.username),e])),s=e.map(e=>{let a=t.get(u(e.username)),s=`@${String(e.username||"").replace(/^@/,"")}`;return{...e,account:{handle:a?.handle||s,name:a?.name||e.name,avatarUrl:a?.avatarUrl||e.profileImageUrl||null,avatarText:a?.avatarText||s.replace(/^@/,"").slice(0,2).toUpperCase(),avatarColor:a?.avatarColor||"#dce6ef"}}});return{id:"video-posting-rate",title:"Video posting rate",subtitle:"Percentage of tweets that include video.",tooltipLines:h,valueType:"percentage",labels:s.map(e=>e.name),values:s.map(e=>Number(e.videoPct)||0),entries:s,accounts:s.map(e=>e.account)}},v=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],t=new Map(a.map(e=>[u(e.handle||e.username),e])),s=new Set;e.forEach(e=>{(e.timeseries||[]).forEach(e=>{e.period&&s.add(e.period)})});let r=[...s].sort();return{id:"aggregate-video-views",title:"Total video views",subtitle:"Total video views per account, plus per-video breakdown.",tooltipLines:p,labels:r,accounts:e.map(e=>{let a=new Map((e.timeseries||[]).map(e=>[e.period,e])),s=t.get(u(e.username)),l=`@${String(e.username||"").replace(/^@/,"")}`;return{groupId:u(e.username||e.name),label:e.name,handle:s?.handle||l,avatarUrl:s?.avatarUrl||e.profileImageUrl||null,avatarText:s?.avatarText||l.replace(/^@/,"").slice(0,2).toUpperCase(),avatarColor:s?.avatarColor||"#dce6ef",avgViewsPerVideo:r.map(e=>Number(a.get(e)?.avgViewsPerVideo)||0),totalViews:r.map(e=>Number(a.get(e)?.totalVideoViews)||0)}})}};function b(){return(0,s.jsxs)("section",{className:m().chartSection,children:[(0,s.jsx)("div",{className:m().chartSkeletonWrap,children:(0,s.jsx)(l.u,{variant:"bar"})}),(0,s.jsx)("div",{className:m().chartSkeletonWrap,children:(0,s.jsx)(l.u,{variant:"bar"})})]})}function x(e){let{data:a,accountRows:t=[],themePreset:l="sky",isLoading:c=!1,error:d=null,onRetry:h,hideHeader:p=!1}=e,u=Array.isArray(a?.postingRate)?a.postingRate:[],x=Array.isArray(a?.viewsTimeseries)?a.viewsTimeseries:[],w=(0,r.useMemo)(()=>g(u,t),[t,u]),y=(0,r.useMemo)(()=>v(x,t),[x,t]),j=u.length>0||x.length>0;return c?(0,s.jsxs)("section",{className:m().shell,children:[p?null:(0,s.jsxs)("header",{className:m().header,children:[(0,s.jsx)("h2",{children:"Video Performance"}),(0,s.jsx)("p",{className:m().description,children:"Video content punches above its weight on X. See who's investing in video and how it's performing."})]}),(0,s.jsx)(b,{})]}):d&&!j?(0,s.jsxs)("section",{className:m().shell,children:[p?null:(0,s.jsxs)("header",{className:m().header,children:[(0,s.jsx)("h2",{children:"Video Performance"}),(0,s.jsx)("p",{className:m().description,children:"Video content punches above its weight on X. See who's investing in video and how it's performing."})]}),(0,s.jsx)(i.KN,{title:d.title,message:d.message,onRetry:h})]}):j?(0,s.jsxs)("section",{className:m().shell,children:[p?null:(0,s.jsxs)("header",{className:m().header,children:[(0,s.jsx)("h2",{children:"Video Performance"}),(0,s.jsx)("p",{className:m().description,children:"Video content punches above its weight on X. See who's investing in video and how it's performing."})]}),(0,s.jsxs)("section",{className:m().chartSection,"aria-label":"Video performance charts",children:[(0,s.jsx)(n.y,{chart:w,themePreset:l}),(0,s.jsx)(o.C,{chart:y,themePreset:l})]})]}):(0,s.jsxs)("section",{className:m().shell,children:[p?null:(0,s.jsxs)("header",{className:m().header,children:[(0,s.jsx)("h2",{children:"Video Performance"}),(0,s.jsx)("p",{className:m().description,children:"Video content punches above its weight on X. See who's investing in video and how it's performing."})]}),(0,s.jsx)(i.KN,{title:"No video performance data",message:"Video performance metrics are not available for this comparison yet.",onRetry:h})]})}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.