PageSourceSearch

https://tokenstocks.ai/assets/SignalHistoryPanel-Dwr0xdFD.js

js tokenstocks.ai collected 2026-10-05 15:26:01 UTC 6,039 bytes, 1 lines download raw bytes

1import{r as o,bY as x,bZ as h,j as e,C as j,b as p,p as f,a9 as m,a as u,A as b,d as N,x as v,D as i,$ as w,e as L,aw as S,ag as y,q as C,T as H,M as R,g as $}from"./index-CT3mG8No.js";const E=({signal:a})=>({BUY:e.jsx(H,{className:"w-3 h-3 text-emerald-400"}),HOLD:e.jsx(R,{className:"w-3 h-3 text-amber-400"}),SELL:e.jsx($,{className:"w-3 h-3 text-red-400"})})[a],D=({outcome:a})=>a==="correct"?e.jsx(S,{className:"w-3 h-3 text-emerald-400"}):a==="incorrect"?e.jsx(y,{className:"w-3 h-3 text-red-400"}):e.jsx(C,{className:"w-3 h-3 text-muted-foreground animate-pulse"});function A(a){const n=Date.now()-a,t=Math.floor(n/36e5),d=Math.floor(t/24);return d>0?`${d}d ago`:t>0?`${t}h ago`:"Just now"}function O({ticker:a,currentPrice:n}){const[t,d]=o.useState([]);o.useEffect(()=>{d(x(a,n));const s=setInterval(()=>{d(x(a,n))},6e4);return()=>clearInterval(s)},[a,n]);const r=o.useMemo(()=>h(t),[t]),g=t.slice(0,10),l=o.useMemo(()=>{const s={BUY:0,HOLD:0,SELL:0};return t.forEach(c=>s[c.signal]++),s},[t]);return e.jsxs(j,{className:"bg-card/50 border-border/50",children:[e.jsx(p,{className:"pb-2",children:e.jsxs(f,{className:"text-sm flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(m,{className:"w-4 h-4 text-primary"}),"Signal History & Accuracy"]}),e.jsxs(u,{variant:"outline",className:"text-[10px]",children:[e.jsx(b,{className:"w-3 h-3 mr-1"}),t.length," signals"]})]})}),e.jsxs(N,{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-3 gap-2",children:[e.jsxs("div",{className:"p-3 bg-muted/20 rounded-lg border border-border/30 text-center",children:[e.jsx("div",{className:"flex items-center justify-center gap-1 mb-1",children:e.jsx(v,{className:"w-4 h-4 text-primary"})}),e.jsxs("div",{className:i("text-2xl font-bold font-mono",r.winRate>=60?"text-emerald-400":r.winRate>=45?"text-amber-400":"text-red-400"),children:[r.winRate.toFixed(1),"%"]}),e.jsx("span",{className:"text-[10px] text-muted-foreground uppercase",children:"Win Rate"})]}),e.jsxs("div",{className:"p-3 bg-muted/20 rounded-lg border border-border/30 text-center",children:[e.jsx("div",{className:"flex items-center justify-center gap-1 mb-1",children:e.jsx(w,{className:"w-4 h-4 text-primary"})}),e.jsxs("div",{className:i("text-2xl font-bold font-mono",r.avgReturn>=0?"text-emerald-400":"text-red-400"),children:[r.avgReturn>=0?"+":"",r.avgReturn.toFixed(2),"%"]}),e.jsx("span",{className:"text-[10px] text-muted-foreground uppercase",children:"Avg Return"})]}),e.jsxs("div",{className:"p-3 bg-muted/20 rounded-lg border border-border/30 text-center",children:[e.jsx("div",{className:"flex items-center justify-center gap-1 mb-1",children:e.jsx(m,{className:"w-4 h-4 text-primary"})}),e.jsx("div",{className:"text-2xl font-bold font-mono text-foreground",children:r.totalSignals}),e.jsx("span",{className:"text-[10px] text-muted-foreground uppercase",children:"Total Signals"})]})]}),e.jsxs("div",{className:"p-3 bg-muted/10 rounded-lg border border-border/30",children:[e.jsx("div",{className:"flex items-center justify-between text-xs mb-2",children:e.jsx("span",{className:"text-muted-foreground",children:"Signal Distribution"})}),e.jsxs("div",{className:"flex gap-1 h-2",children:[e.jsx("div",{className:"bg-emerald-500 rounded-l",style:{width:`${l.BUY/t.length*100}%`}}),e.jsx("div",{className:"bg-amber-500",style:{width:`${l.HOLD/t.length*100}%`}}),e.jsx("div",{className:"bg-red-500 rounded-r",style:{width:`${l.SELL/t.length*100}%`}})]}),e.jsxs("div",{className:"flex justify-between mt-2 text-[10px]",children:[e.jsxs("span",{className:"text-emerald-400",children:["BUY: ",l.BUY]}),e.jsxs("span",{className:"text-amber-400",children:["HOLD: ",l.HOLD]}),e.jsxs("span",{className:"text-red-400",children:["SELL: ",l.SELL]})]})]}),e.jsxs("div",{children:[e.jsx("div",{className:"flex items-center justify-between mb-2",children:e.jsx("span",{className:"text-xs text-muted-foreground uppercase tracking-wider",children:"Recent Signals"})}),e.jsx(L,{className:"h-48",children:e.jsx("div",{className:"space-y-1.5",children:g.map((s,c)=>e.jsxs("div",{className:"flex items-center justify-between p-2 bg-muted/20 rounded border border-border/30 hover:bg-muted/30 transition-colors",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(E,{signal:s.signal}),e.jsx(u,{variant:"outline",className:i("text-[9px] px-1.5",s.signal==="BUY"?"border-emerald-500/50 text-emerald-400":s.signal==="SELL"?"border-red-500/50 text-red-400":"border-amber-500/50 text-amber-400"),children:s.signal}),e.jsxs("span",{className:"text-xs font-mono text-muted-foreground",children:[s.confidence.toFixed(0),"%"]})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("span",{className:"text-xs font-mono text-muted-foreground",children:["$",s.priceAtSignal.toFixed(2)]}),s.pnlPercent!==void 0&&e.jsxs("span",{className:i("text-xs font-mono",s.pnlPercent>=0?"text-emerald-400":"text-red-400"),children:[s.pnlPercent>=0?"+":"",s.pnlPercent.toFixed(2),"%"]}),e.jsx(D,{outcome:s.outcome||"pending"}),e.jsx("span",{className:"text-[10px] text-muted-foreground min-w-12 text-right",children:A(s.timestamp)})]})]},c))})})]}),e.jsxs("div",{className:"p-3 bg-muted/10 rounded-lg border border-border/30",children:[e.jsx("div",{className:"flex items-center justify-between text-xs mb-2",children:e.jsx("span",{className:"text-muted-foreground",children:"Confidence vs Outcome (Last 20 signals)"})}),e.jsx("div",{className:"h-16 flex items-end gap-0.5",children:t.slice(0,20).reverse().map((s,c)=>e.jsx("div",{className:i("flex-1 rounded-t transition-all",s.outcome==="correct"?"bg-emerald-500":s.outcome==="incorrect"?"bg-red-500":"bg-muted-foreground
1/30"),style:{height:`${s.confidence}%`},title:`${s.signal} @ ${s.confidence.toFixed(0)}% - ${s.outcome}`},c))}),e.jsxs("div",{className:"flex justify-between mt-1 text-[9px] text-muted-foreground",children:[e.jsx("span",{children:"Older"}),e.jsx("span",{children:"Recent"})]})]})]})]})}export{O as SignalHistoryPanel};

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.