@liberfi.io/ui-portfolio 3.0.74 → 3.0.75
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.
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +14 -14
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
'use strict';var react=require('react'),uiChainSelect=require('@liberfi.io/ui-chain-select'),utils=require('@liberfi.io/utils'),walletConnector=require('@liberfi.io/wallet-connector'),i18n=require('@liberfi.io/i18n'),ui$1=require('@liberfi.io/ui'),jsxRuntime=require('react/jsx-runtime'),recharts=require('recharts'),reactQuery=require('@tanstack/react-query'),react$1=require('@liberfi.io/react'),realtimeCursorCollection=require('@liberfi.io/utils/realtime-cursor-collection');var me=react.createContext(null);var xe=react.createContext(null);var ge=react.createContext({}),Fe=react.createContext({});function ye(){let e=react.useContext(ge);if(!e)throw new Error("usePortfolioContext must be used within a PortfolioProvider");return e}function Qe(){let{summary:e,summaryStatus:t}=ye();return {data:e,...t}}function Oe(){let{status:e,signIn:t,signOut:o}=walletConnector.useAuth(),{data:r}=Qe(),{chain:i,chainNamespace:n}=uiChainSelect.useCurrentChain(),a=walletConnector.useConnectedWallet(i),s=react.useMemo(()=>utils.getNativeToken(i),[i]),l=react.useMemo(()=>r?.balanceInUsd?utils.formatAmountInUsd(r.balanceInUsd):"--",[r?.balanceInUsd]),p=react.useMemo(()=>r?.balanceInNative?utils.formatAmount(r.balanceInNative):"--",[r?.balanceInNative]);return {status:e,signIn:t,signOut:o,balanceUsdFormatted:l,balanceNativeFormatted:p,nativeToken:s,chainNamespace:n,walletAddress:a?.address??""}}function We({status:e,signIn:t,signOut:o,balanceUsdFormatted:r,balanceNativeFormatted:i,nativeToken:n,chainNamespace:a,walletAddress:s,actions:l}){let{t:p}=i18n.useTranslation(),{isMobile:d}=ui$1.useScreen(),{isOpen:c,onClose:f,onOpenChange:m}=ui$1.useDisclosure(),b=ui$1.useCopyToClipboard(),u=react.useCallback(()=>{b(s,()=>ui$1.toast.success(p("common.primaryAddressCopied",{network:a.toUpperCase()})));},[b,a,s,p]);return e==="unauthenticated"?jsxRuntime.jsx(ui$1.Button,{isIconOnly:d,size:"sm",color:"primary",radius:"full",disableRipple:true,onPress:t,startContent:d?void 0:jsxRuntime.jsx(ui$1.SignInIcon,{width:16,height:16}),"aria-label":p("common.signIn"),children:d?jsxRuntime.jsx(ui$1.SignInIcon,{width:16,height:16}):p("common.signIn")}):e==="authenticating"?jsxRuntime.jsx(ui$1.Button,{isIconOnly:d,size:"sm",color:"primary",radius:"full",disableRipple:true,isLoading:true,isDisabled:true,"aria-label":p("common.signingIn"),children:p("common.signingIn")}):e==="deauthenticating"?jsxRuntime.jsx(ui$1.Button,{isIconOnly:d,size:"sm",color:"primary",radius:"full",disableRipple:true,isLoading:true,isDisabled:true,"aria-label":p("common.signingOut"),children:p("common.signingOut")}):jsxRuntime.jsxs(ui$1.StyledPopover,{placement:d?"bottom":"bottom-end",isOpen:c,onOpenChange:m,triggerScaleOnOpen:false,children:[jsxRuntime.jsx(ui$1.PopoverTrigger,{children:jsxRuntime.jsx(ui$1.Button,{size:"sm",className:"bg-content2",radius:"full",disableRipple:true,startContent:jsxRuntime.jsx(ui$1.WalletIcon,{width:16,height:16,className:"text-neutral"}),endContent:jsxRuntime.jsx(ui$1.ChevronDownIcon,{width:16,height:16,className:ui$1.cn("text-neutral transition-transform",c&&"rotate-180")}),children:n&&jsxRuntime.jsxs("div",{className:"flex items-center gap-1.5",children:[jsxRuntime.jsx(ui$1.TokenIcon,{symbol:n.symbol,size:16}),jsxRuntime.jsx("span",{className:"text-xs text-foreground",children:d?i:`${i} ${n.symbol}`})]})})}),jsxRuntime.jsx(ui$1.PopoverContent,{children:jsxRuntime.jsxs("div",{className:"w-70 flex flex-col gap-3 py-4",children:[jsxRuntime.jsxs("div",{className:"px-4 flex items-start justify-between",children:[jsxRuntime.jsxs("div",{className:"flex flex-col gap-0.5",children:[jsxRuntime.jsx("span",{className:"text-xs text-neutral",children:p("common.totalValue")}),jsxRuntime.jsx("span",{className:"text-base font-semibold text-foreground",children:r})]}),jsxRuntime.jsx("div",{className:"flex items-start justify-end gap-0.5",children:jsxRuntime.jsx(ui$1.StyledTooltip,{content:p("common.copyPrimaryAddress",{network:a.toUpperCase()}),children:jsxRuntime.jsx(ui$1.Button,{className:"text-xs bg-transparent text-neutral hover:text-foreground h-4 min-h-4 gap-1",startContent:jsxRuntime.jsx(ui$1.CopyIcon,{width:14,height:14}),disableRipple:true,disableAnimation:true,onPress:u,children:a.toUpperCase()})})})]}),jsxRuntime.jsx(ui$1.Divider,{}),jsxRuntime.jsxs("div",{className:"grid grid-cols-4 gap-2 px-4",children:[l?.map(x=>jsxRuntime.jsxs("button",{type:"button",className:"flex cursor-pointer flex-col items-center justify-center gap-1 rounded-md py-2 text-foreground transition-colors hover:text-primary",onClick:()=>{x.onPress(),f();},children:[x.icon,jsxRuntime.jsx("span",{className:"w-full truncate text-center text-xs",children:x.label})]},x.key)),jsxRuntime.jsxs("button",{type:"button",className:"flex cursor-pointer flex-col items-center justify-center gap-1 rounded-md py-2 text-danger transition-colors hover:text-danger/80",onClick:()=>{o(),f();},children:[jsxRuntime.jsx(ui$1.SignOutIcon,{width:16,height:16}),jsxRuntime.jsx("span",{className:"w-full truncate text-center text-xs",children:p("common.signOut")})]})]})]})})]})}function no({actions:e}){let t=Oe();return jsxRuntime.jsx(We,{status:t.status,signIn:t.signIn,signOut:t.signOut,balanceUsdFormatted:t.balanceUsdFormatted,balanceNativeFormatted:t.balanceNativeFormatted,nativeToken:t.nativeToken,chainNamespace:t.chainNamespace,walletAddress:t.walletAddress,actions:e})}function Dr(e){if(!e)return 0;let t=Number(e);return Number.isFinite(t)?t:0}function D(e){return utils.formatAmountInUsd(e)}function Pe(e){let t=D(Math.abs(e));return e>0?`+${t}`:e<0?`-${t.replace("-","")}`:t}function Pt(e){return `${e>0?"+":""}${e.toFixed(2)}%`}function bt(e){let o=Math.abs(e).toFixed(2).split("."),r=Number(o[0]).toLocaleString("en-US"),i=`.${o[1]}`;return {sign:e<0?"-$":"$",integer:r,decimal:i}}function ae(e,t=4,o=4){return e.length<=t+o+3?e:`${e.slice(0,t)}\u2026${e.slice(-o)}`}function Ee(e){return utils.formatAmount(e)}function vt(e,t){return `https://solscan.io/tx/${e}`}var ao=["#C8FF00","#00E676","#0066FF","#FF6B9D","#8B7BFF","#FF5252","#FFB74D","#4DD0E1"],Rr="#3A3A4E";function ht(e){let t=e.reduce((a,s)=>a+s.value,0);if(t<=0)return {items:[]};let o=[...e].sort((a,s)=>s.value-a.value),r=[],i=0,n=0;for(let a of o){let s=a.value/t*100;s<2?i+=a.value:(r.push({name:a.name,symbol:a.symbol,percent:s,value:a.value,color:ao[n%ao.length]}),n++);}return i>0&&r.push({name:"Other",symbol:"OTHER",percent:i/t*100,value:i,color:Rr}),{items:r}}function Ct(e){return new Date(e).toLocaleDateString("en-US",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",hour12:false})}function Le({walletId:e,wallets:t,isViewing:o,viewingAddress:r,onSelectWallet:i,onCopyAddress:n,onSearch:a}){let[s,l]=react.useState(false),[p,d]=react.useState(""),c=react.useRef(null),f=!e&&!o,m=t.find(C=>C.id===e),b=o?"External":f?"All Wallets":m?.name??"",u=o?ae(r??""):f?"Aggregated":ae(m?.address??""),x=o?"bg-[#5C5C72]":f?"bg-[#C8FF00]":"bg-[#00E676]",v=react.useCallback(()=>{let C=p.trim();C.length>=32&&(a(C),d(""));},[p,a]),N=react.useCallback(C=>{C.key==="Enter"&&v();},[v]);return jsxRuntime.jsxs("div",{className:"flex items-center justify-between gap-4 pb-4",children:[jsxRuntime.jsxs("div",{className:"flex min-w-0 items-center gap-2.5",children:[jsxRuntime.jsxs("div",{className:"relative",ref:c,children:[jsxRuntime.jsxs("button",{type:"button",className:ui$1.cn("flex items-center gap-2 rounded-lg border px-2.5 py-1.5 transition-colors",o?"border-[rgba(200,255,0,0.2)] bg-[rgba(200,255,0,0.04)]":"border-[#252530] bg-[#16161E] hover:border-[#35354A] hover:bg-[#1C1C26]",o&&"pointer-events-none"),onClick:()=>!o&&l(C=>!C),children:[jsxRuntime.jsx("span",{className:ui$1.cn("h-[7px] w-[7px] flex-shrink-0 rounded-full",x)}),jsxRuntime.jsx("span",{className:"text-[11px] font-medium text-[#A0A0B8]",children:b}),jsxRuntime.jsx("span",{className:"font-mono text-xs text-foreground",children:u}),!o&&jsxRuntime.jsx("svg",{className:ui$1.cn("text-[#5C5C72] transition-transform",s&&"rotate-180"),width:"10",height:"10",viewBox:"0 0 12 12",fill:"none",children:jsxRuntime.jsx("path",{d:"M3 4.5L6 7.5L9 4.5",stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round"})})]}),s&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("div",{className:"fixed inset-0 z-40",onClick:()=>l(false)}),jsxRuntime.jsxs("div",{className:"absolute left-0 top-[calc(100%+4px)] z-50 min-w-[260px] rounded-lg border border-[#252530] bg-[#16161E] p-1 shadow-[0_8px_32px_rgba(0,0,0,0.4)]",children:[jsxRuntime.jsxs("button",{type:"button",className:ui$1.cn("flex w-full items-center gap-2 rounded-[5px] px-2.5 py-2 transition-colors hover:bg-[#1C1C26]",f&&"bg-[rgba(200,255,0,0.07)]"),onClick:()=>{i(void 0),l(false);},children:[jsxRuntime.jsx("span",{className:"h-1.5 w-1.5 rounded-full bg-[#C8FF00]"}),jsxRuntime.jsx("span",{className:"min-w-[60px] text-[11px] font-medium text-[#A0A0B8]",children:"All Wallets"}),jsxRuntime.jsx("span",{className:"text-[11px] text-[#3A3A4E]",children:"Aggregated"})]}),t.map(C=>jsxRuntime.jsxs("button",{type:"button",className:ui$1.cn("flex w-full items-center gap-2 rounded-[5px] px-2.5 py-2 transition-colors hover:bg-[#1C1C26]",e===C.id&&"bg-[rgba(200,255,0,0.07)]"),onClick:()=>{i(C.id),l(false);},children:[jsxRuntime.jsx("span",{className:"h-1.5 w-1.5 rounded-full bg-[#00E676]"}),jsxRuntime.jsx("span",{className:"min-w-[60px] text-[11px] font-medium text-[#A0A0B8]",children:C.name}),jsxRuntime.jsx("span",{className:"font-mono text-[11px] text-[#5C5C72]",children:ae(C.address)}),jsxRuntime.jsx("span",{className:"ml-auto font-mono text-[11px] font-medium text-foreground",children:C.balance})]},C.id))]})]})]}),jsxRuntime.jsx("button",{type:"button",className:ui$1.cn("rounded p-1 text-[#5C5C72] transition-colors hover:bg-[#1C1C26] hover:text-[#C8FF00]",f&&!o&&"pointer-events-none opacity-40"),onClick:n,disabled:f&&!o,children:jsxRuntime.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",children:[jsxRuntime.jsx("rect",{x:"4.5",y:"4.5",width:"7",height:"7",rx:"1.5",stroke:"currentColor",strokeWidth:"1.2"}),jsxRuntime.jsx("path",{d:"M9.5 4.5V3a1.5 1.5 0 0 0-1.5-1.5H3A1.5 1.5 0 0 0 1.5 3v5A1.5 1.5 0 0 0 3 9.5h1.5",stroke:"currentColor",strokeWidth:"1.2"})]})}),jsxRuntime.jsx("span",{className:ui$1.cn("flex-shrink-0 rounded-[3px] px-1.5 py-[3px] text-[9px] font-semibold uppercase tracking-wider",o?"bg-[rgba(200,255,0,0.07)] text-[#C8FF00] animate-[pulse-glow_2s_ease-in-out_infinite]":"bg-[rgba(0,230,118,0.1)] text-[#00E676]"),children:o?"Viewing":"Owner"})]}),jsxRuntime.jsxs("div",{className:"flex flex-shrink-0 items-center gap-1.5",children:[jsxRuntime.jsxs("div",{className:"flex h-[34px] w-[240px] items-center gap-1.5 rounded-lg border border-[#252530] bg-[#16161E] px-2.5 transition-all focus-within:w-[300px] focus-within:border-[#C8FF00]",children:[jsxRuntime.jsxs("svg",{className:"flex-shrink-0 text-[#5C5C72]",width:"13",height:"13",viewBox:"0 0 16 16",fill:"none",children:[jsxRuntime.jsx("circle",{cx:"7",cy:"7",r:"5.5",stroke:"currentColor",strokeWidth:"1.5"}),jsxRuntime.jsx("path",{d:"M11 11L14.5 14.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),jsxRuntime.jsx("input",{className:"flex-1 border-none bg-transparent font-mono text-xs text-foreground caret-[#C8FF00] outline-none placeholder:font-sans placeholder:text-[11px] placeholder:text-[#5C5C72]",placeholder:"Search wallet address\u2026",spellCheck:false,value:p,onChange:C=>d(C.target.value),onKeyDown:N})]}),jsxRuntime.jsx("button",{type:"button",className:"whitespace-nowrap rounded-[5px] border border-[#252530] bg-[#1C1C26] px-3 py-1.5 text-[11px] font-medium text-[#A0A0B8] transition-colors hover:border-[#C8FF00] hover:bg-[#C8FF00] hover:text-black",onClick:v,children:"View"})]})]})}var be=(r=>(r.SPOT="spot",r.PERPS="perps",r.PREDICTION="prediction",r))(be||{}),Me=(o=>(o.NET_WORTH="networth",o.PNL="pnl",o))(Me||{}),Ve=(i=>(i.ONE_DAY="1D",i.SEVEN_DAY="7D",i.THIRTY_DAY="30D",i.MAX="Max",i))(Ve||{}),St={"1D":1,"7D":7,"30D":30,Max:365},Nt=(o=>(o.LONG="long",o.SHORT="short",o))(Nt||{}),At=(r=>(r.SWAP="swap",r.SEND="send",r.RECEIVE="receive",r))(At||{}),wt=(o=>(o.ACTIVE="active",o.PENDING="pending",o))(wt||{}),Tt=(o=>(o.WON="won",o.LOST="lost",o))(Tt||{}),kt=(r=>(r.POLYMARKET="polymarket",r.DRIFT="drift",r.METADAO="metadao",r))(kt||{});var Br=[{key:"spot",label:"Spot"},{key:"perps",label:"Perps"},{key:"prediction",label:"Prediction"}];function Fr(e,t,o,r){switch(e){case "spot":return t;case "perps":return o;case "prediction":return r}}function qe({activeTab:e,onTabChange:t,spotValue:o=0,perpsValue:r=0,predictionValue:i=0}){return jsxRuntime.jsx("div",{className:"flex gap-1 border-b border-[#252530] pb-0 pt-5",children:Br.map(({key:n,label:a})=>{let s=e===n,l=Fr(n,o,r,i);return jsxRuntime.jsxs("button",{type:"button",className:ui$1.cn("relative flex items-center gap-2 border-b-2 px-4 pb-3 pt-2.5 text-[13px] font-medium transition-colors",s?"border-[#C8FF00] text-foreground":"border-transparent text-[#5C5C72] hover:text-[#A0A0B8]"),onClick:()=>t(n),children:[a,!s&&jsxRuntime.jsx("span",{className:"rounded-[10px] bg-[#16161E] px-2 py-0.5 font-mono text-[11px] text-[#5C5C72]",children:D(l)})]},n)})})}function _e({overview:e}){let t=e?.totalValue??0,o=e?.uPnl??0,r=e?.realizedPnl??0,i=e?.totalProfit??0,{sign:n,integer:a,decimal:s}=bt(t);return jsxRuntime.jsxs("div",{className:"flex items-center gap-4 pb-4",children:[jsxRuntime.jsx("div",{className:"flex items-baseline gap-3",children:jsxRuntime.jsxs("div",{className:"font-mono text-[26px] font-bold leading-none tracking-tight",children:[jsxRuntime.jsx("span",{className:"mr-px text-lg font-medium text-[#C8FF00]",children:n}),a,jsxRuntime.jsx("span",{className:"text-base font-normal text-[#5C5C72]",children:s})]})}),jsxRuntime.jsxs("div",{className:"ml-auto flex items-center gap-3",children:[jsxRuntime.jsx(Dt,{label:"uPNL",value:o}),jsxRuntime.jsx(uo,{}),jsxRuntime.jsx(Dt,{label:"Realized",value:r}),jsxRuntime.jsx(uo,{}),jsxRuntime.jsx(Dt,{label:"Total Profit",value:i})]})]})}function Dt({label:e,value:t}){return jsxRuntime.jsxs("div",{className:"flex items-center gap-1.5",children:[jsxRuntime.jsx("span",{className:"text-[11px] text-[#5C5C72]",children:e}),jsxRuntime.jsx("span",{className:ui$1.cn("font-mono text-xs font-medium",t>0?"text-[#00E676]":t<0?"text-[#FF5252]":"text-[#5C5C72]"),children:Pe(t)})]})}function uo(){return jsxRuntime.jsx("div",{className:"h-3.5 w-px bg-[#252530]"})}var Kr=["1D","7D","30D","Max"];function fo(e,t){let o=new Date(e);return t==="1D"?o.toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:false}):o.toLocaleDateString("en-US",{month:"short",day:"numeric"})}function _r(e){return e==="pnl"?"change":"netWorth"}function ze({curveType:e,curvePeriod:t,data:o,isLoading:r,onTypeChange:i,onPeriodChange:n}){let a=o?.points,s=_r(e),l=e==="pnl",p=react.useMemo(()=>(a??[]).map(u=>l?u.change:u.netWorth),[a,l]),d=p.some(u=>u<0),{minVal:c,maxVal:f}=react.useMemo(()=>{if(p.length===0)return {minVal:0,maxVal:100};let u=Math.min(...p),x=Math.max(...p),v=x-u||1;return {minVal:u-v*.1,maxVal:x+v*.1}},[p]),m=react.useMemo(()=>{let u=a??[];if(u.length===0)return [];let x=Math.min(7,u.length),v=Math.max(1,Math.floor((u.length-1)/(x-1))),N=[];for(let B=0;B<u.length;B+=v)N.push({ts:u[B].timestamp,label:fo(u[B].timestamp,t)});let C=u[u.length-1];return N[N.length-1]?.ts!==C.timestamp&&N.push({ts:C.timestamp,label:fo(C.timestamp,t)}),N},[a,t]),b=p[p.length-1]??0;return jsxRuntime.jsxs("div",{className:"overflow-hidden rounded-lg border border-[#252530] bg-[#0F0F16]",children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-between px-4 pt-3",children:[jsxRuntime.jsxs("div",{className:"flex gap-0.5 rounded-[5px] bg-[#16161E] p-0.5",children:[jsxRuntime.jsx(mo,{label:"Net Worth",active:e==="networth",onClick:()=>i("networth")}),jsxRuntime.jsx(mo,{label:"PNL",active:e==="pnl",onClick:()=>i("pnl")})]}),jsxRuntime.jsx("div",{className:"flex gap-0.5",children:Kr.map(u=>jsxRuntime.jsx("button",{type:"button",className:ui$1.cn("rounded-[3px] px-2 py-1 text-[10px] font-medium transition-colors",t===u?"bg-[rgba(200,255,0,0.07)] text-[#C8FF00]":"text-[#5C5C72] hover:bg-[#16161E] hover:text-[#A0A0B8]"),onClick:()=>n(u),children:u},u))})]}),jsxRuntime.jsx("div",{className:"h-[180px] px-4 pt-2",children:r||(a??[]).length<2?jsxRuntime.jsx("div",{className:"flex h-full items-center justify-center",children:jsxRuntime.jsx("span",{className:"text-xs text-[#5C5C72]",children:r?"":"Not enough data"})}):jsxRuntime.jsx(recharts.ResponsiveContainer,{width:"100%",height:"100%",children:jsxRuntime.jsxs(recharts.AreaChart,{data:a,margin:{top:8,right:0,left:0,bottom:0},children:[jsxRuntime.jsxs("defs",{children:[jsxRuntime.jsxs("linearGradient",{id:"gradAccent",x1:"0",y1:"0",x2:"0",y2:"1",children:[jsxRuntime.jsx("stop",{offset:"0%",stopColor:"#C8FF00",stopOpacity:.12}),jsxRuntime.jsx("stop",{offset:"100%",stopColor:"#C8FF00",stopOpacity:0})]}),jsxRuntime.jsxs("linearGradient",{id:"gradGreen",x1:"0",y1:"0",x2:"0",y2:"1",children:[jsxRuntime.jsx("stop",{offset:"0%",stopColor:"#00E676",stopOpacity:.12}),jsxRuntime.jsx("stop",{offset:"100%",stopColor:"#00E676",stopOpacity:0})]}),jsxRuntime.jsxs("linearGradient",{id:"gradRed",x1:"0",y1:"0",x2:"0",y2:"1",children:[jsxRuntime.jsx("stop",{offset:"0%",stopColor:"#FF5252",stopOpacity:0}),jsxRuntime.jsx("stop",{offset:"100%",stopColor:"#FF5252",stopOpacity:.1})]})]}),jsxRuntime.jsx(recharts.XAxis,{dataKey:"timestamp",hide:true}),jsxRuntime.jsx(recharts.YAxis,{hide:true,domain:[c,f]}),l&&d&&jsxRuntime.jsx(recharts.ReferenceLine,{y:0,stroke:"rgba(255,255,255,0.06)",strokeDasharray:"4 4"}),jsxRuntime.jsx(recharts.Area,{type:"monotone",dataKey:s,stroke:l?b>=0?"#00E676":"#FF5252":"#C8FF00",strokeWidth:1.5,fill:l?b>=0?"url(#gradGreen)":"url(#gradRed)":"url(#gradAccent)",dot:false,isAnimationActive:false})]})})}),jsxRuntime.jsx("div",{className:"flex justify-between px-4 pb-2.5 pt-1",children:m.map(({ts:u,label:x})=>jsxRuntime.jsx("span",{className:"font-mono text-[9px] text-[#3A3A4E]",children:x},u))})]})}function mo({label:e,active:t,onClick:o}){return jsxRuntime.jsx("button",{type:"button",className:ui$1.cn("rounded px-2.5 py-1 text-[11px] font-medium transition-colors",t?"bg-[#1C1C26] text-foreground":"text-[#5C5C72] hover:text-[#A0A0B8]"),onClick:o,children:e})}function $e({data:e,isLoading:t}){let o=e?.items,r=o??[],i=react.useMemo(()=>(o??[]).map(n=>({name:n.name,value:n.percent})),[o]);return jsxRuntime.jsxs("div",{className:"flex flex-col overflow-hidden rounded-lg border border-[#252530] bg-[#0F0F16]",children:[jsxRuntime.jsx("div",{className:"px-4 pb-2 pt-3",children:jsxRuntime.jsx("span",{className:"text-xs font-semibold text-[#A0A0B8]",children:"Distribution"})}),jsxRuntime.jsx("div",{className:"flex flex-1 items-center justify-center px-4",children:t||r.length===0?jsxRuntime.jsx("div",{className:"flex h-[140px] w-[140px] items-center justify-center",children:jsxRuntime.jsx("span",{className:"text-xs text-[#5C5C72]",children:t?"":"No data"})}):jsxRuntime.jsx(recharts.ResponsiveContainer,{width:140,height:140,children:jsxRuntime.jsx(recharts.PieChart,{children:jsxRuntime.jsx(recharts.Pie,{data:i,cx:"50%",cy:"50%",innerRadius:32,outerRadius:55,dataKey:"value",stroke:"none",isAnimationActive:false,children:r.map((n,a)=>jsxRuntime.jsx(recharts.Cell,{fill:n.color},a))})})})}),jsxRuntime.jsx("div",{className:"px-4 pb-3 pt-2",children:r.map((n,a)=>jsxRuntime.jsxs("div",{className:"flex items-center gap-1.5 py-[3px] text-[11px]",children:[jsxRuntime.jsx("span",{className:"h-[7px] w-[7px] flex-shrink-0 rounded-[2px]",style:{background:n.color}}),jsxRuntime.jsx("span",{className:"min-w-0 flex-1 truncate text-[#A0A0B8]",children:n.name}),jsxRuntime.jsxs("span",{className:"font-mono text-[10px] text-[#5C5C72]",children:[n.percent.toFixed(1),"%"]}),jsxRuntime.jsx("span",{className:"min-w-[55px] text-right font-mono text-[10px] text-foreground",children:D(n.value)})]},a))})]})}function Q(){let e=react.useContext(me);if(!e)throw new Error("usePortfolioClient must be used within a PortfolioClientProvider");return e}function go(){let e=react.useContext(xe);if(!e)throw new Error("usePortfolioDataAdapter must be used within a PortfolioClientProvider");return e}function Ut(e){return ["portfolio","overview",e??{}]}async function ei(e,t){return await e.getOverview(t)}function Ge(e,t={}){let o=Q();return reactQuery.useQuery({queryKey:Ut(e),queryFn:async()=>ei(o,e),...t})}function Ht(e){return ["portfolio","spot","holdings",e??{}]}async function oi(e,t){return await e.getSpotHoldings(t)}function ve(e,t={}){let o=Q();return reactQuery.useQuery({queryKey:Ht(e),queryFn:async()=>oi(o,e),...t})}function Bt(e){return ["portfolio","spot","history",e??{}]}async function ii(e,t){return await e.getSpotHistory(t)}function Ye(e,t={}){let o=Q();return reactQuery.useQuery({queryKey:Bt(e),queryFn:async()=>ii(o,e),...t})}function Ft(e){return ["portfolio","perps","positions",e??{}]}async function ni(e,t){return await e.getPerpsPositions(t)}function je(e,t={}){let o=Q();return reactQuery.useQuery({queryKey:Ft(e),queryFn:async()=>ni(o,e),...t})}function Qt(e){return ["portfolio","perps","history",e??{}]}async function li(e,t){return await e.getPerpsHistory(t)}function Xe(e,t={}){let o=Q();return reactQuery.useQuery({queryKey:Qt(e),queryFn:async()=>li(o,e),...t})}function Ot(e){return ["portfolio","prediction","active",e??{}]}async function di(e,t){return await e.getPredictionBets(t)}function Ze(e,t={}){let o=Q();return reactQuery.useQuery({queryKey:Ot(e),queryFn:async()=>di(o,e),...t})}function Wt(e){return ["portfolio","prediction","settled",e??{}]}async function ui(e,t){return await e.getPredictionSettled(t)}function Je(e,t={}){let o=Q();return reactQuery.useQuery({queryKey:Wt(e),queryFn:async()=>ui(o,e),...t})}function Et(e){return ["portfolio","chart",e]}async function mi(e,t){return await e.getChartData(t)}function et(e,t={}){let o=Q();return reactQuery.useQuery({queryKey:Et(e),queryFn:async()=>mi(o,e),...t})}function yo(){return ["portfolio","distribution"]}function tt(e){return {data:react.useMemo(()=>ht(e),[e])}}function Po(){let{refetchSummary:e}=ye();return e}var Si=15e3;function vo(e){return Object.fromEntries(Object.entries(e).filter(([,t])=>t!==void 0))}function ho({chain:e,address:t,tokenAddresses:o,pollMs:r=Si}){let i=!!t&&o.length>0,[n,a]=react.useState({}),s=react$1.useWalletPortfoliosByTokensQuery({chain:e,address:t,tokenAddresses:o},{enabled:i,refetchInterval:r}),l=react$1.useWalletPortfolioPnlsByTokensQuery({chain:e,address:t,tokenAddresses:o},{enabled:i,refetchInterval:r});react.useEffect(()=>{let b=s.data??[],u=new Map;if(l.data)for(let v of l.data)u.set(v.address,v);let x={};for(let v of b)x[v.address]={...v,pnl:u.get(v.address)??null};a(x);},[s.data,l.data]);let p=react.useRef(""),d=react.useRef(new Set),c=o.slice().sort().join(",");c!==p.current&&(p.current=c,d.current=new Set(o));let f=d.current;react$1.useWalletPortfoliosSubscription({chain:e,address:t},b=>{a(u=>{let x=u;for(let v of b){if(!f.has(v.tokenAddress))continue;let N=x[v.tokenAddress];if(!N)continue;let{chain:C,walletAddress:B,tokenAddress:R,...O}=v,K=vo(O);Object.keys(K).length!==0&&(x=x===u?{...u}:x,x[v.tokenAddress]={...N,...K});}return x});},{enabled:i}),react$1.useWalletPortfolioPnlsSubscription({chain:e,address:t},b=>{a(u=>{let x=u;for(let v of b){if(!f.has(v.tokenAddress))continue;let N=x[v.tokenAddress];if(!N||!N.pnl)continue;let{walletAddress:C,tokenAddress:B,...R}=v,O=vo(R);Object.keys(O).length!==0&&(x=x===u?{...u}:x,x[v.tokenAddress]={...N,pnl:{...N.pnl,...O}});}return x});},{enabled:i});let m=react.useCallback(async()=>{await Promise.all([s.refetch(),l.refetch()]);},[s,l]);return {tokens:n,isPending:s.isPending,isFetching:s.isFetching||l.isFetching,isError:s.isError,isSuccess:s.isSuccess,error:s.error,refetch:m}}function ot(e){let{defaultTab:t="spot",walletAddresses:o,chain:r}=e??{},[i,n]=react.useState(t),[a,s]=react.useState(void 0),[l,p]=react.useState(void 0),[d,c]=react.useState("networth"),[f,m]=react.useState("7D"),b=l!==void 0,u=react.useMemo(()=>{if(l)return {walletAddresses:[l],chain:r};if(o?.length)return {walletAddresses:o,chain:r}},[o,l,r]),x=Ge(u),v=ve(u),N=et({period:St[f],...u}),C=tt(v.data?.holdings??[]),B=react.useMemo(()=>v.data?.holdings.reduce((W,M)=>W+M.value,0)??0,[v.data]),R=react.useCallback(W=>{p(W);},[]),O=react.useCallback(()=>{p(void 0);},[]),K=react.useCallback(W=>{s(W);},[]);return {activeTab:i,setActiveTab:n,walletId:a,selectWallet:K,viewingAddress:l,isViewing:b,curveType:d,setCurveType:c,curvePeriod:f,setCurvePeriod:m,portfolioQuery:u,overviewQuery:x,curveQuery:N,distributionQuery:C,spotHoldingsQuery:v,spotValue:B,perpsValue:0,predictionValue:0,enterViewing:R,exitViewing:O}}function rt(){return jsxRuntime.jsxs("div",{className:"mx-auto max-w-[1280px] px-6",children:[jsxRuntime.jsxs("div",{className:"flex gap-4 border-b border-[#252530] pb-0 pt-5",children:[jsxRuntime.jsx(ui$1.Skeleton,{className:"h-9 w-16 rounded-md"}),jsxRuntime.jsx(ui$1.Skeleton,{className:"h-9 w-28 rounded-md"}),jsxRuntime.jsx(ui$1.Skeleton,{className:"h-9 w-32 rounded-md"})]}),jsxRuntime.jsxs("div",{className:"flex items-center justify-between gap-4 py-4",children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-2.5",children:[jsxRuntime.jsx(ui$1.Skeleton,{className:"h-8 w-48 rounded-lg"}),jsxRuntime.jsx(ui$1.Skeleton,{className:"h-6 w-6 rounded"}),jsxRuntime.jsx(ui$1.Skeleton,{className:"h-5 w-14 rounded-[3px]"})]}),jsxRuntime.jsxs("div",{className:"flex items-center gap-1.5",children:[jsxRuntime.jsx(ui$1.Skeleton,{className:"h-[34px] w-[240px] rounded-lg"}),jsxRuntime.jsx(ui$1.Skeleton,{className:"h-[34px] w-12 rounded-[5px]"})]})]}),jsxRuntime.jsxs("div",{className:"flex items-center gap-4 pb-4",children:[jsxRuntime.jsxs("div",{className:"flex items-baseline gap-3",children:[jsxRuntime.jsx(ui$1.Skeleton,{className:"h-8 w-48 rounded-md"}),jsxRuntime.jsx(ui$1.Skeleton,{className:"h-6 w-16 rounded"})]}),jsxRuntime.jsxs("div",{className:"ml-auto flex items-center gap-3",children:[jsxRuntime.jsx(ui$1.Skeleton,{className:"h-4 w-28 rounded"}),jsxRuntime.jsx("div",{className:"h-3.5 w-px bg-[#252530]"}),jsxRuntime.jsx(ui$1.Skeleton,{className:"h-4 w-28 rounded"}),jsxRuntime.jsx("div",{className:"h-3.5 w-px bg-[#252530]"}),jsxRuntime.jsx(ui$1.Skeleton,{className:"h-4 w-20 rounded"})]})]}),jsxRuntime.jsxs("div",{className:"grid grid-cols-[1fr_340px] gap-3 pb-4",children:[jsxRuntime.jsxs("div",{className:"rounded-lg border border-[#252530] bg-[#0F0F16] p-4",children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-between pb-4",children:[jsxRuntime.jsx(ui$1.Skeleton,{className:"h-7 w-40 rounded-[5px]"}),jsxRuntime.jsx(ui$1.Skeleton,{className:"h-6 w-32 rounded"})]}),jsxRuntime.jsx(ui$1.Skeleton,{className:"h-[180px] w-full rounded-md"}),jsxRuntime.jsx("div",{className:"mt-2 flex justify-between",children:Array.from({length:7}).map((e,t)=>jsxRuntime.jsx(ui$1.Skeleton,{className:"h-3 w-8 rounded"},t))})]}),jsxRuntime.jsxs("div",{className:"rounded-lg border border-[#252530] bg-[#0F0F16] p-4",children:[jsxRuntime.jsx(ui$1.Skeleton,{className:"mb-3 h-4 w-24 rounded"}),jsxRuntime.jsx("div",{className:"flex items-center justify-center py-4",children:jsxRuntime.jsx(ui$1.Skeleton,{className:"h-[140px] w-[140px] rounded-full"})}),jsxRuntime.jsx("div",{className:"space-y-1.5 pt-2",children:Array.from({length:5}).map((e,t)=>jsxRuntime.jsx(ui$1.Skeleton,{className:"h-4 w-full rounded"},t))})]})]}),jsxRuntime.jsxs("div",{className:"pb-6",children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-between pb-3",children:[jsxRuntime.jsx(ui$1.Skeleton,{className:"h-8 w-40 rounded-[5px]"}),jsxRuntime.jsxs("div",{className:"flex items-center gap-2",children:[jsxRuntime.jsx(ui$1.Skeleton,{className:"h-7 w-40 rounded-[5px]"}),jsxRuntime.jsx(ui$1.Skeleton,{className:"h-7 w-24 rounded-[5px]"})]})]}),jsxRuntime.jsx(ui$1.Skeleton,{className:"mb-3 h-5 w-full rounded"}),Array.from({length:5}).map((e,t)=>jsxRuntime.jsx(ui$1.Skeleton,{className:"mb-2 h-12 w-full rounded-[5px]"},t))]})]})}function st({viewingAddress:e,onBack:t}){return jsxRuntime.jsxs("div",{className:"flex items-center justify-between border-b border-[rgba(200,255,0,0.12)] bg-[rgba(200,255,0,0.06)] px-6 py-2",children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-2",children:[jsxRuntime.jsx("div",{className:"flex h-[18px] w-[18px] items-center justify-center rounded-full border border-[rgba(200,255,0,0.25)] bg-[rgba(200,255,0,0.07)]",children:jsxRuntime.jsxs("svg",{width:"10",height:"10",viewBox:"0 0 16 16",fill:"none",children:[jsxRuntime.jsx("path",{d:"M8 3C4.36 3 1.26 5.28 0 8.5c1.26 3.22 4.36 5.5 8 5.5s6.74-2.28 8-5.5C14.74 5.28 11.64 3 8 3z",stroke:"#C8FF00",strokeWidth:"1.3",fill:"none"}),jsxRuntime.jsx("circle",{cx:"8",cy:"8.5",r:"2.5",stroke:"#C8FF00",strokeWidth:"1.3",fill:"none"})]})}),jsxRuntime.jsx("span",{className:"text-xs font-medium text-[#C8FF00]",children:"Viewing external portfolio"}),jsxRuntime.jsx("span",{className:"ml-1 font-mono text-[11px] text-[#A0A0B8]",children:ae(e)})]}),jsxRuntime.jsxs("button",{type:"button",className:"flex items-center gap-1.5 rounded-[5px] border border-[#252530] bg-[#1C1C26] px-3 py-1.5 text-[11px] font-medium text-[#A0A0B8] transition-colors hover:border-[#C8FF00] hover:bg-[#C8FF00] hover:text-black",onClick:t,children:[jsxRuntime.jsx("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"none",children:jsxRuntime.jsx("path",{d:"M10 2L4 8l6 6",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})}),"Back to My Portfolio"]})]})}function So({wallets:e=[],onCopyAddress:t,renderHoldings:o,isLoading:r,...i}){let n=ot(i),{activeTab:a,setActiveTab:s,walletId:l,selectWallet:p,viewingAddress:d,isViewing:c,curveType:f,setCurveType:m,curvePeriod:b,setCurvePeriod:u,portfolioQuery:x,overviewQuery:v,curveQuery:N,distributionQuery:C,spotValue:B,perpsValue:R,predictionValue:O,enterViewing:K,exitViewing:W}=n;return r||v.isLoading&&!v.data?jsxRuntime.jsx(rt,{}):jsxRuntime.jsxs("div",{children:[c&&d&&jsxRuntime.jsx(st,{viewingAddress:d,onBack:W}),jsxRuntime.jsxs("div",{className:"mx-auto max-w-[1280px] px-6",children:[jsxRuntime.jsx(qe,{activeTab:a,onTabChange:s,spotValue:B,perpsValue:R,predictionValue:O}),jsxRuntime.jsx(Le,{walletId:l,wallets:e,isViewing:c,viewingAddress:d,onSelectWallet:p,onCopyAddress:()=>{if(c&&d)t?.(d);else {let I=e.find(F=>F.id===l);I&&t?.(I.address);}},onSearch:K}),jsxRuntime.jsx(_e,{overview:v.data}),jsxRuntime.jsxs("div",{className:"grid grid-cols-[1fr_340px] gap-3 pb-4",children:[jsxRuntime.jsx(ze,{curveType:f,curvePeriod:b,data:N.data,isLoading:N.isLoading,onTypeChange:m,onPeriodChange:u}),jsxRuntime.jsx($e,{data:C.data,isLoading:false})]}),o?.({activeTab:a,portfolioQuery:x,isViewing:c})]})]})}function we({open:e,title:t,message:o,confirmLabel:r,cancelLabel:i,onConfirm:n,onCancel:a}){return e?jsxRuntime.jsxs("div",{className:"fixed inset-0 z-50 flex items-center justify-center",children:[jsxRuntime.jsx("div",{className:"absolute inset-0 bg-black/60",onClick:a,onKeyDown:s=>{s.key==="Escape"&&a();},role:"button",tabIndex:-1,"aria-label":"Close dialog"}),jsxRuntime.jsxs("div",{className:"relative z-10 w-full max-w-sm rounded-xl border border-[#252530] bg-[#12121A] p-6 shadow-2xl",children:[jsxRuntime.jsx("h3",{className:"text-sm font-semibold text-foreground",children:t}),jsxRuntime.jsx("p",{className:"mt-2 text-xs leading-relaxed text-[#A0A0B8]",children:o}),jsxRuntime.jsxs("div",{className:"mt-5 flex items-center justify-end gap-2",children:[jsxRuntime.jsx("button",{type:"button",className:"rounded-lg px-4 py-2 text-xs font-medium text-[#5C5C72] transition-colors hover:bg-[#1C1C26] hover:text-foreground",onClick:a,children:i}),jsxRuntime.jsx("button",{type:"button",className:ui$1.cn("rounded-lg border px-4 py-2 text-xs font-medium transition-colors","border-[rgba(255,82,82,0.25)] text-[#FF5252]","hover:border-[#FF5252] hover:bg-[rgba(255,82,82,0.1)]"),onClick:n,children:r})]})]})]}):null}function nt({activeTab:e,portfolioQuery:t,isViewing:o}){let[r,i]=react.useState("holdings"),[n,a]=react.useState("positions"),[s,l]=react.useState("active"),[p,d]=react.useState(""),[c,f]=react.useState(""),[m,b]=react.useState(""),[u,x]=react.useState(false),[v,N]=react.useState(false),C=react.useCallback(()=>{N(Y=>!Y);},[]),B=ve(t,{enabled:e==="spot"}),R=Ye(t,{enabled:e==="spot"&&r==="history"}),O=je(t,{enabled:e==="perps"}),K=Xe(t,{enabled:e==="perps"&&n==="history"}),W=Ze(t,{enabled:e==="prediction"}),M=Je(t,{enabled:e==="prediction"&&s==="settled"}),ue=react.useMemo(()=>(B.data?.holdings??[]).filter(Z=>{if(u&&Z.value<1&&!Z.verified)return false;if(p){let fe=p.toLowerCase();return Z.name.toLowerCase().includes(fe)||Z.symbol.toLowerCase().includes(fe)}return true}),[B.data?.holdings,u,p]),I=react.useMemo(()=>{let Y=O.data?.positions??[];if(!c)return Y;let Z=c.toLowerCase();return Y.filter(fe=>fe.pair.toLowerCase().includes(Z))},[O.data?.positions,c]),F=react.useMemo(()=>{let Y=W.data?.bets??[];if(!m)return Y;let Z=m.toLowerCase();return Y.filter(fe=>fe.market.toLowerCase().includes(Z))},[W.data?.bets,m]);return {spotSubTab:r,setSpotSubTab:i,perpsSubTab:n,setPerpsSubTab:a,predictionSubTab:s,setPredictionSubTab:l,spotSearch:p,setSpotSearch:d,perpsSearch:c,setPerpsSearch:f,predictionSearch:m,setPredictionSearch:b,hideSmall:u,setHideSmall:x,groupCollapsed:v,toggleGroupCollapsed:C,spotHoldingsQuery:B,spotHistoryQuery:R,perpsPositionsQuery:O,perpsHistoryQuery:K,predictionBetsQuery:W,predictionSettledQuery:M,filteredSpotHoldings:ue,filteredPerpsPositions:I,filteredPredictionBets:F,isViewing:o}}function oe({tabs:e,activeKey:t,onTabChange:o}){return jsxRuntime.jsx("div",{className:"flex gap-0.5",children:e.map(r=>jsxRuntime.jsx("button",{type:"button",className:ui$1.cn("rounded-[5px] px-3 py-1.5 text-xs font-medium transition-colors",t===r.key?"bg-[#1C1C26] text-foreground":"text-[#5C5C72] hover:bg-[#16161E] hover:text-[#A0A0B8]"),onClick:()=>o(r.key),children:r.label},r.key))})}function re({value:e,onChange:t,placeholder:o}){return jsxRuntime.jsxs("div",{className:"flex h-7 w-40 items-center gap-1 rounded-[5px] border border-[#252530] bg-[#16161E] px-2 transition-all focus-within:w-[200px] focus-within:border-[#C8FF00]",children:[jsxRuntime.jsxs("svg",{width:"11",height:"11",viewBox:"0 0 16 16",fill:"none",className:"flex-shrink-0 text-[#5C5C72]",children:[jsxRuntime.jsx("circle",{cx:"7",cy:"7",r:"5.5",stroke:"currentColor",strokeWidth:"1.5"}),jsxRuntime.jsx("path",{d:"M11 11L14.5 14.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),jsxRuntime.jsx("input",{type:"text",className:"flex-1 border-none bg-transparent font-mono text-[11px] text-foreground caret-[#C8FF00] outline-none placeholder:font-sans placeholder:text-[10px] placeholder:text-[#5C5C72]",placeholder:o,spellCheck:false,value:e,onChange:r=>t(r.target.value)})]})}function G({title:e,hint:t}){return jsxRuntime.jsxs("div",{className:"flex flex-col items-center justify-center py-16 text-center",children:[jsxRuntime.jsx("span",{className:"text-sm text-[#5C5C72]",children:e}),t&&jsxRuntime.jsx("span",{className:"mt-1 text-xs text-[#3A3A4E]",children:t})]})}function he({label:e,disabled:t,onClick:o}){return jsxRuntime.jsxs("button",{type:"button",className:ui$1.cn("flex items-center gap-1 whitespace-nowrap rounded-[5px] border px-3 py-1.5 text-[11px] font-medium transition-colors",t?"pointer-events-none border-[#252530] text-[#3A3A4E]":"border-[rgba(255,82,82,0.25)] text-[#FF5252] hover:border-[#FF5252] hover:bg-[rgba(255,82,82,0.1)]"),onClick:o,disabled:t,children:[jsxRuntime.jsx("svg",{width:"11",height:"11",viewBox:"0 0 16 16",fill:"none",children:jsxRuntime.jsx("path",{d:"M4 4l8 8M12 4l-8 8",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})}),e]})}function pt({state:e,onClosePosition:t,onCloseAll:o}){let{t:r}=i18n.useTranslation(),{perpsSubTab:i,setPerpsSubTab:n,perpsSearch:a,setPerpsSearch:s,filteredPerpsPositions:l,perpsHistoryQuery:p,isViewing:d}=e,c=l.length>0;return jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-between pb-3",children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-3",children:[jsxRuntime.jsx(oe,{tabs:[{key:"positions",label:r("portfolio.perps.openPositions")},{key:"history",label:r("portfolio.perps.tradeHistory")}],activeKey:i,onTabChange:f=>n(f)}),i==="positions"&&!d&&jsxRuntime.jsx(he,{label:r("portfolio.perps.closeAll"),disabled:!c,onClick:()=>o?.()})]}),jsxRuntime.jsx(re,{value:a,onChange:s,placeholder:r("portfolio.perps.search.placeholder")})]}),i==="positions"?jsxRuntime.jsx(wi,{positions:l,isViewing:d,onClose:t}):jsxRuntime.jsx(ki,{records:p.data?.records??[],isLoading:p.isLoading})]})}function wi({positions:e,isViewing:t,onClose:o}){let{t:r}=i18n.useTranslation();return e.length===0?jsxRuntime.jsx(G,{title:r("portfolio.perps.empty"),hint:r("portfolio.perps.empty.hint")}):jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("div",{className:"grid gap-2 px-3 pb-2 text-[10px] font-medium uppercase tracking-wider text-[#5C5C72]",style:{gridTemplateColumns:t?"2fr 1fr .8fr .8fr 1fr":"2fr 1fr .8fr .8fr 1fr 80px"},children:[jsxRuntime.jsx("span",{children:r("portfolio.perps.header.pair")}),jsxRuntime.jsx("span",{className:"text-right",children:r("portfolio.perps.header.size")}),jsxRuntime.jsx("span",{className:"text-right",children:r("portfolio.perps.header.entry")}),jsxRuntime.jsx("span",{className:"text-right",children:r("portfolio.perps.header.mark")}),jsxRuntime.jsx("span",{className:"text-right",children:r("portfolio.perps.header.uPnl")}),!t&&jsxRuntime.jsx("span",{className:"text-right"})]}),jsxRuntime.jsx("div",{className:"flex flex-col",children:e.map(i=>jsxRuntime.jsx(Ti,{position:i,isViewing:t,onClose:o},i.id))})]})}function Ti({position:e,isViewing:t,onClose:o}){let{t:r}=i18n.useTranslation(),i=e.side==="long",n=e.uPnl>=0;return jsxRuntime.jsxs("div",{className:"grid items-center gap-2 rounded-[5px] px-3 py-2.5 transition-colors hover:bg-[#16161E]",style:{gridTemplateColumns:t?"2fr 1fr .8fr .8fr 1fr":"2fr 1fr .8fr .8fr 1fr 80px"},children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-2",children:[e.icon?jsxRuntime.jsx("img",{src:e.icon,alt:e.pair,className:"h-6 w-6 flex-shrink-0 rounded-full"}):jsxRuntime.jsx("div",{className:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-[#1C1C26] text-[9px] font-bold text-[#5C5C72]",children:e.pair.slice(0,2)}),jsxRuntime.jsxs("div",{className:"flex items-center gap-1.5",children:[jsxRuntime.jsx("span",{className:"text-xs font-medium text-foreground",children:e.pair}),jsxRuntime.jsx("span",{className:ui$1.cn("rounded px-1.5 py-0.5 text-[10px] font-medium",i?"bg-[rgba(0,230,118,0.12)] text-[#00E676]":"bg-[rgba(255,82,82,0.12)] text-[#FF5252]"),children:r(i?"perpetuals.positions.long":"perpetuals.positions.short")}),jsxRuntime.jsxs("span",{className:"rounded bg-[rgba(200,255,0,0.1)] px-1.5 py-0.5 text-[10px] font-medium text-[#C8FF00]",children:[e.leverage,"\xD7"]})]})]}),jsxRuntime.jsx("span",{className:"text-right font-mono text-xs text-foreground",children:D(e.size)}),jsxRuntime.jsx("span",{className:"text-right font-mono text-xs text-[#A0A0B8]",children:D(e.entryPrice)}),jsxRuntime.jsx("span",{className:"text-right font-mono text-xs text-[#A0A0B8]",children:D(e.markPrice)}),jsxRuntime.jsx("span",{className:ui$1.cn("text-right font-mono text-xs",n?"text-[#00E676]":"text-[#FF5252]"),children:Pe(e.uPnl)}),!t&&jsxRuntime.jsx("div",{className:"flex justify-end",children:jsxRuntime.jsx("button",{type:"button",className:"rounded-[5px] border border-[#252530] px-2.5 py-1 text-[10px] font-medium text-[#5C5C72] transition-colors hover:border-[#FF5252] hover:text-[#FF5252]",onClick:()=>o?.(e),children:r("portfolio.perps.close")})})]})}function ki({records:e,isLoading:t}){let{t:o}=i18n.useTranslation();return t?jsxRuntime.jsx("div",{className:"flex items-center justify-center py-16",children:jsxRuntime.jsx("div",{className:"h-5 w-5 animate-spin rounded-full border-2 border-[#C8FF00] border-t-transparent"})}):e.length===0?jsxRuntime.jsx(G,{title:o("portfolio.perps.history.empty"),hint:o("portfolio.perps.history.empty.hint")}):jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("div",{className:"grid gap-2 px-3 pb-2 text-[10px] font-medium uppercase tracking-wider text-[#5C5C72]",style:{gridTemplateColumns:"1.5fr 80px 1fr 1fr 1fr 100px"},children:[jsxRuntime.jsx("span",{children:o("portfolio.perps.history.header.pair")}),jsxRuntime.jsx("span",{children:o("portfolio.perps.history.header.side")}),jsxRuntime.jsx("span",{className:"text-right",children:o("portfolio.perps.history.header.size")}),jsxRuntime.jsx("span",{className:"text-right",children:o("portfolio.perps.history.header.pnl")}),jsxRuntime.jsx("span",{className:"text-right",children:o("portfolio.perps.history.header.closePrice")}),jsxRuntime.jsx("span",{className:"text-right",children:o("portfolio.perps.history.header.time")})]}),jsxRuntime.jsx("div",{className:"flex flex-col",children:e.map(r=>jsxRuntime.jsx(Di,{record:r},r.id))})]})}function Di({record:e}){let{t}=i18n.useTranslation(),o=e.side==="long",r=e.pnl>=0;return jsxRuntime.jsxs("div",{className:"grid items-center gap-2 rounded-[5px] px-3 py-2.5 transition-colors hover:bg-[#16161E]",style:{gridTemplateColumns:"1.5fr 80px 1fr 1fr 1fr 100px"},children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-2",children:[e.icon?jsxRuntime.jsx("img",{src:e.icon,alt:e.pair,className:"h-5 w-5 flex-shrink-0 rounded-full"}):jsxRuntime.jsx("div",{className:"flex h-5 w-5 flex-shrink-0 items-center justify-center rounded-full bg-[#1C1C26] text-[8px] font-bold text-[#5C5C72]",children:e.pair.slice(0,2)}),jsxRuntime.jsx("span",{className:"text-xs font-medium text-foreground",children:e.pair})]}),jsxRuntime.jsx("span",{children:jsxRuntime.jsx("span",{className:ui$1.cn("inline-block rounded px-1.5 py-0.5 text-[10px] font-medium",o?"bg-[rgba(0,230,118,0.12)] text-[#00E676]":"bg-[rgba(255,82,82,0.12)] text-[#FF5252]"),children:t(o?"perpetuals.positions.long":"perpetuals.positions.short")})}),jsxRuntime.jsx("span",{className:"text-right font-mono text-xs text-foreground",children:D(e.size)}),jsxRuntime.jsx("span",{className:ui$1.cn("text-right font-mono text-xs",r?"text-[#00E676]":"text-[#FF5252]"),children:Pe(e.pnl)}),jsxRuntime.jsx("span",{className:"text-right font-mono text-xs text-[#A0A0B8]",children:D(e.closePrice)}),jsxRuntime.jsx("span",{className:"text-right text-[11px] text-[#5C5C72]",children:e.time})]})}function dt({state:e,onSellBet:t,onSellAll:o}){let{predictionSubTab:r,setPredictionSubTab:i,predictionSearch:n,setPredictionSearch:a,filteredPredictionBets:s,predictionSettledQuery:l,isViewing:p}=e,d=s.length>0;return jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-between pb-3",children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-3",children:[jsxRuntime.jsx(oe,{tabs:[{key:"active",label:"Active Bets"},{key:"settled",label:"Settled"}],activeKey:r,onTabChange:c=>i(c)}),r==="active"&&!p&&jsxRuntime.jsx(he,{label:"Sell All",disabled:!d,onClick:()=>o?.()})]}),jsxRuntime.jsx(re,{value:n,onChange:a,placeholder:"Search market\u2026"})]}),r==="active"?jsxRuntime.jsx(Ui,{bets:s,isViewing:p,onSell:t}):jsxRuntime.jsx(Bi,{records:l.data?.records??[],isLoading:l.isLoading})]})}var Ri={polymarket:"bg-[rgba(0,102,255,0.12)] text-[#0066FF]",drift:"bg-[rgba(200,255,0,0.1)] text-[#C8FF00]",metadao:"bg-[rgba(255,107,157,0.1)] text-[#FF6B9D]"},Ii={polymarket:"Polymarket",drift:"Drift",metadao:"MetaDAO"};function Ao({source:e}){return jsxRuntime.jsx("span",{className:ui$1.cn("inline-block rounded px-1.5 py-0.5 text-[10px] font-medium",Ri[e]),children:Ii[e]})}function Ui({bets:e,isViewing:t,onSell:o}){return e.length===0?jsxRuntime.jsx(G,{title:"No active bets",hint:"Explore prediction markets \u2192"}):jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("div",{className:"grid gap-2 px-3 pb-2 text-[10px] font-medium uppercase tracking-wider text-[#5C5C72]",style:{gridTemplateColumns:t?"2.2fr .6fr .7fr .7fr .7fr":"2.2fr .6fr .7fr .7fr .7fr 80px"},children:[jsxRuntime.jsx("span",{children:"Market / Source"}),jsxRuntime.jsx("span",{className:"text-right",children:"Position"}),jsxRuntime.jsx("span",{className:"text-right",children:"Stake"}),jsxRuntime.jsx("span",{className:"text-right",children:"Potential"}),jsxRuntime.jsx("span",{className:"text-right",children:"Status"}),!t&&jsxRuntime.jsx("span",{className:"text-right"})]}),jsxRuntime.jsx("div",{className:"flex flex-col",children:e.map(r=>jsxRuntime.jsx(Hi,{bet:r,isViewing:t,onSell:o},r.id))})]})}function Hi({bet:e,isViewing:t,onSell:o}){return jsxRuntime.jsxs("div",{className:"grid items-center gap-2 rounded-[5px] px-3 py-2.5 transition-colors hover:bg-[#16161E]",style:{gridTemplateColumns:t?"2.2fr .6fr .7fr .7fr .7fr":"2.2fr .6fr .7fr .7fr .7fr 80px"},children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-2 overflow-hidden",children:[e.icon?jsxRuntime.jsx("img",{src:e.icon,alt:e.market,className:"h-6 w-6 flex-shrink-0 rounded-full"}):jsxRuntime.jsx("div",{className:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-[#1C1C26] text-[9px] font-bold text-[#5C5C72]",children:"?"}),jsxRuntime.jsxs("div",{className:"flex flex-col overflow-hidden",children:[jsxRuntime.jsx("span",{className:"truncate text-xs font-medium text-foreground",children:e.market}),jsxRuntime.jsx(Ao,{source:e.source})]})]}),jsxRuntime.jsx("span",{className:ui$1.cn("text-right text-xs font-medium",e.position==="Yes"?"text-[#00E676]":"text-[#FF5252]"),children:e.position}),jsxRuntime.jsx("span",{className:"text-right font-mono text-xs text-foreground",children:D(e.stake)}),jsxRuntime.jsx("span",{className:"text-right font-mono text-xs text-[#00E676]",children:D(e.potential)}),jsxRuntime.jsx("span",{className:"text-right",children:jsxRuntime.jsx("span",{className:ui$1.cn("inline-block rounded px-1.5 py-0.5 text-[10px] font-medium",e.status==="active"?"bg-[rgba(0,230,118,0.12)] text-[#00E676]":"bg-[rgba(200,255,0,0.1)] text-[#C8FF00]"),children:e.status==="active"?"Active":"Pending"})}),!t&&jsxRuntime.jsx("div",{className:"flex justify-end",children:jsxRuntime.jsx("button",{type:"button",className:"rounded-[5px] border border-[#252530] px-2.5 py-1 text-[10px] font-medium text-[#5C5C72] transition-colors hover:border-[#FF5252] hover:text-[#FF5252]",onClick:()=>o?.(e),children:"Sell"})})]})}function Bi({records:e,isLoading:t}){return t?jsxRuntime.jsx("div",{className:"flex items-center justify-center py-16",children:jsxRuntime.jsx("div",{className:"h-5 w-5 animate-spin rounded-full border-2 border-[#C8FF00] border-t-transparent"})}):e.length===0?jsxRuntime.jsx(G,{title:"No settled bets",hint:"Settled predictions will appear here"}):jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("div",{className:"grid gap-2 px-3 pb-2 text-[10px] font-medium uppercase tracking-wider text-[#5C5C72]",style:{gridTemplateColumns:"1.5fr .8fr .6fr .7fr .6fr .7fr"},children:[jsxRuntime.jsx("span",{children:"Market"}),jsxRuntime.jsx("span",{children:"Source"}),jsxRuntime.jsx("span",{className:"text-right",children:"Position"}),jsxRuntime.jsx("span",{className:"text-right",children:"Stake"}),jsxRuntime.jsx("span",{className:"text-right",children:"Result"}),jsxRuntime.jsx("span",{className:"text-right",children:"Payout"})]}),jsxRuntime.jsx("div",{className:"flex flex-col",children:e.map(o=>jsxRuntime.jsx(Fi,{record:o},o.id))})]})}function Fi({record:e}){let t=e.result==="won";return jsxRuntime.jsxs("div",{className:"grid items-center gap-2 rounded-[5px] px-3 py-2.5 transition-colors hover:bg-[#16161E]",style:{gridTemplateColumns:"1.5fr .8fr .6fr .7fr .6fr .7fr"},children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-2 overflow-hidden",children:[e.icon?jsxRuntime.jsx("img",{src:e.icon,alt:e.market,className:"h-5 w-5 flex-shrink-0 rounded-full"}):jsxRuntime.jsx("div",{className:"flex h-5 w-5 flex-shrink-0 items-center justify-center rounded-full bg-[#1C1C26] text-[8px] font-bold text-[#5C5C72]",children:"?"}),jsxRuntime.jsx("span",{className:"truncate text-xs font-medium text-foreground",children:e.market})]}),jsxRuntime.jsx(Ao,{source:e.source}),jsxRuntime.jsx("span",{className:ui$1.cn("text-right text-xs font-medium",e.position==="Yes"?"text-[#00E676]":"text-[#FF5252]"),children:e.position}),jsxRuntime.jsx("span",{className:"text-right font-mono text-xs text-foreground",children:D(e.stake)}),jsxRuntime.jsx("span",{className:"text-right",children:jsxRuntime.jsx("span",{className:ui$1.cn("inline-block rounded px-1.5 py-0.5 text-[10px] font-medium",t?"bg-[rgba(0,230,118,0.12)] text-[#00E676]":"bg-[rgba(255,82,82,0.12)] text-[#FF5252]"),children:t?"Won":"Lost"})}),jsxRuntime.jsx("span",{className:ui$1.cn("text-right font-mono text-xs",t?"text-[#00E676]":"text-[#5C5C72]"),children:t?`+${D(e.payout)}`:D(e.payout)})]})}function ct({state:e}){let{spotSubTab:t,setSpotSubTab:o,spotSearch:r,setSpotSearch:i,hideSmall:n,setHideSmall:a,groupCollapsed:s,toggleGroupCollapsed:l,filteredSpotHoldings:p,spotHistoryQuery:d}=e;return jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-between pb-3",children:[jsxRuntime.jsx(oe,{tabs:[{key:"holdings",label:"Holdings"},{key:"history",label:"History"}],activeKey:t,onTabChange:c=>o(c)}),jsxRuntime.jsxs("div",{className:"flex items-center gap-2",children:[jsxRuntime.jsx(re,{value:r,onChange:i,placeholder:"Search token\u2026"}),t==="holdings"&&jsxRuntime.jsxs("label",{className:"flex cursor-pointer items-center gap-1.5 text-[11px] text-[#5C5C72] select-none",children:[jsxRuntime.jsx("input",{type:"checkbox",className:"accent-[#C8FF00]",checked:n,onChange:c=>a(c.target.checked)}),"Hide small"]})]})]}),t==="holdings"?jsxRuntime.jsx(Qi,{holdings:p,groupCollapsed:s,onToggleGroup:l}):jsxRuntime.jsx(Wi,{records:d.data?.trades??[],isLoading:d.isLoading})]})}function Qi({holdings:e,groupCollapsed:t,onToggleGroup:o}){return e.length===0?jsxRuntime.jsx(G,{title:"No tokens found",hint:"Your spot tokens will appear here"}):jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("div",{className:"grid gap-2 px-3 pb-2 text-[10px] font-medium uppercase tracking-wider text-[#5C5C72]",style:{gridTemplateColumns:"2fr 1fr 1fr 1fr 1fr"},children:[jsxRuntime.jsx("span",{children:"Asset"}),jsxRuntime.jsx("span",{className:"text-right",children:"Balance"}),jsxRuntime.jsx("span",{className:"text-right",children:"Price"}),jsxRuntime.jsx("span",{className:"text-right",children:"Value"}),jsxRuntime.jsx("span",{className:"text-right",children:"24h"})]}),jsxRuntime.jsxs("button",{type:"button",className:"flex w-full items-center gap-2 px-3 py-2 text-[10px] font-medium uppercase tracking-wider text-[#5C5C72] transition-colors hover:text-[#A0A0B8]",onClick:o,children:[jsxRuntime.jsx("svg",{width:"10",height:"10",viewBox:"0 0 16 16",fill:"none",className:ui$1.cn("transition-transform",t&&"-rotate-90"),children:jsxRuntime.jsx("path",{d:"M4 6l4 4 4-4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})}),jsxRuntime.jsx("span",{children:"Tokens"}),jsxRuntime.jsx("span",{className:"text-[#3A3A4E]",children:e.length})]}),!t&&jsxRuntime.jsx("div",{className:"flex flex-col",children:e.map(r=>jsxRuntime.jsx(Oi,{holding:r},r.tokenAddress))})]})}function Oi({holding:e}){let t=e.change24h>=0;return jsxRuntime.jsxs("div",{className:"grid items-center gap-2 rounded-[5px] px-3 py-2.5 transition-colors hover:bg-[#16161E]",style:{gridTemplateColumns:"2fr 1fr 1fr 1fr 1fr"},children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-2.5 overflow-hidden",children:[e.image?jsxRuntime.jsx("img",{src:e.image,alt:e.symbol,className:"h-7 w-7 flex-shrink-0 rounded-full"}):jsxRuntime.jsx("div",{className:"flex h-7 w-7 flex-shrink-0 items-center justify-center rounded-full bg-[#1C1C26] text-[10px] font-bold text-[#5C5C72]",children:e.symbol.slice(0,2)}),jsxRuntime.jsxs("div",{className:"flex flex-col overflow-hidden",children:[jsxRuntime.jsx("span",{className:"truncate text-xs font-medium text-foreground",children:e.name}),jsxRuntime.jsx("span",{className:"text-[10px] text-[#5C5C72]",children:e.symbol})]})]}),jsxRuntime.jsx("span",{className:"text-right font-mono text-xs text-foreground",children:Ee(e.balance)}),jsxRuntime.jsx("span",{className:"text-right font-mono text-xs text-[#A0A0B8]",children:D(e.price)}),jsxRuntime.jsx("span",{className:"text-right font-mono text-xs text-foreground",children:D(e.value)}),jsxRuntime.jsx("span",{className:ui$1.cn("text-right font-mono text-xs",t?"text-[#00E676]":"text-[#FF5252]"),children:Pt(e.change24h)})]})}function Wi({records:e,isLoading:t}){return t?jsxRuntime.jsx("div",{className:"flex items-center justify-center py-16",children:jsxRuntime.jsx("div",{className:"h-5 w-5 animate-spin rounded-full border-2 border-[#C8FF00] border-t-transparent"})}):e.length===0?jsxRuntime.jsx(G,{title:"No history found",hint:"Transaction history will appear here"}):jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("div",{className:"grid gap-2 px-3 pb-2 text-[10px] font-medium uppercase tracking-wider text-[#5C5C72]",style:{gridTemplateColumns:"80px 1.5fr 1fr 1fr 100px 80px"},children:[jsxRuntime.jsx("span",{children:"Type"}),jsxRuntime.jsx("span",{children:"Detail"}),jsxRuntime.jsx("span",{className:"text-right",children:"Amount"}),jsxRuntime.jsx("span",{className:"text-right",children:"Value"}),jsxRuntime.jsx("span",{className:"text-right",children:"Time"}),jsxRuntime.jsx("span",{className:"text-right",children:"TxHash"})]}),jsxRuntime.jsx("div",{className:"flex flex-col",children:e.map(o=>jsxRuntime.jsx(Vi,{record:o},`${o.txHash}-${o.tokenAddress}`))})]})}var Ei={swap:"bg-[rgba(139,123,255,0.12)] text-[#8B7BFF]",send:"bg-[rgba(255,82,82,0.12)] text-[#FF5252]",receive:"bg-[rgba(0,230,118,0.12)] text-[#00E676]"},Li={swap:"Swap",send:"Send",receive:"Receive"};function Mi(e){return e.type==="swap"&&e.sideTokenSymbol?`${e.tokenSymbol} \u2192 ${e.sideTokenSymbol}`:e.tokenName||e.tokenSymbol}function Vi({record:e}){let t=vt(e.txHash,e.chain);return jsxRuntime.jsxs("div",{className:"grid items-center gap-2 rounded-[5px] px-3 py-2.5 transition-colors hover:bg-[#16161E]",style:{gridTemplateColumns:"80px 1.5fr 1fr 1fr 100px 80px"},children:[jsxRuntime.jsx("span",{children:jsxRuntime.jsx("span",{className:ui$1.cn("inline-block rounded px-1.5 py-0.5 text-[10px] font-medium",Ei[e.type]),children:Li[e.type]})}),jsxRuntime.jsx("span",{className:"truncate text-xs text-foreground",children:Mi(e)}),jsxRuntime.jsxs("span",{className:"text-right font-mono text-xs text-foreground",children:[Ee(e.tokenAmount)," ",e.tokenSymbol]}),jsxRuntime.jsx("span",{className:"text-right font-mono text-xs text-[#A0A0B8]",children:D(e.valueUsd)}),jsxRuntime.jsx("span",{className:"text-right text-[11px] text-[#5C5C72]",children:e.timestamp?Ct(e.timestamp):"\u2014"}),jsxRuntime.jsx("span",{className:"text-right",children:e.txHash?jsxRuntime.jsxs("a",{href:t,target:"_blank",rel:"noopener noreferrer",className:"font-mono text-[11px] text-[#5C5C72] transition-colors hover:text-[#C8FF00]",children:[e.txHash.slice(0,4),"\u2026",e.txHash.slice(-3)]}):jsxRuntime.jsx("span",{className:"font-mono text-[11px] text-[#3A3A4E]",children:"\u2014"})})]})}function wo({onClosePosition:e,onCloseAllPositions:t,onSellBet:o,onSellAllBets:r,...i}){let n=nt(i),[a,s]=react.useState(null),l=react.useCallback(()=>{s("closeAll");},[]),p=react.useCallback(()=>{s("sellAll");},[]),d=react.useCallback(()=>{a==="closeAll"?t?.():a==="sellAll"&&r?.(),s(null);},[a,t,r]),c=react.useCallback(()=>{s(null);},[]);return jsxRuntime.jsxs("div",{className:"rounded-xl border border-[#1C1C26] bg-[#0E0E16] p-4",children:[(()=>{switch(i.activeTab){case "spot":return jsxRuntime.jsx(ct,{state:n});case "perps":return jsxRuntime.jsx(pt,{state:n,onClosePosition:e,onCloseAll:l});case "prediction":return jsxRuntime.jsx(dt,{state:n,onSellBet:o,onSellAll:p});default:return null}})(),jsxRuntime.jsx(we,{open:a==="closeAll",title:"Close All Positions",message:"Close all positions? This will route to each protocol to execute.",confirmLabel:"Confirm Close All",cancelLabel:"Cancel",onConfirm:d,onCancel:c}),jsxRuntime.jsx(we,{open:a==="sellAll",title:"Sell All Positions",message:"Sell all positions? This will route to each platform to execute.",confirmLabel:"Confirm Sell All",cancelLabel:"Cancel",onConfirm:d,onCancel:c})]})}function ie(e,t=Date.now()){if(e==null)return "--";let o=typeof e=="string"||typeof e=="number"?new Date(e):e,r=typeof t=="number"?new Date(t):t,i=Math.max(0,Math.floor((r.getTime()-o.getTime())/1e3));if(i<60)return `${i}s`;let n=Math.floor(i/60);if(n<60)return `${n}m`;let a=Math.floor(n/60);if(a<24)return `${a}h`;let s=Math.floor(a/24);if(s<30)return `${s}d`;let l=Math.floor(s/30);return l<12?`${l}mo`:`${Math.floor(s/365)}y`}function ce(e,t=4,o=4){return e?e.length<=t+o+1?e:`${e.slice(0,t)}\u2026${e.slice(-o)}`:"--"}var _i={kol:{label:"KOL",bgClass:"bg-yellow-500/15",textClass:"text-yellow-400"},smart:{label:"Smart",bgClass:"bg-sky-500/15",textClass:"text-sky-400"},sniper:{label:"Sniper",bgClass:"bg-red-500/15",textClass:"text-red-400"},dev:{label:"Dev",bgClass:"bg-orange-500/15",textClass:"text-orange-400"},bundle:{label:"Bundle",bgClass:"bg-purple-500/15",textClass:"text-purple-400"},bluechip:{label:"Bluechip",bgClass:"bg-emerald-500/15",textClass:"text-emerald-400"},insider:{label:"Insider",bgClass:"bg-fuchsia-500/15",textClass:"text-fuchsia-400"},fresh:{label:"Fresh",bgClass:"bg-teal-500/15",textClass:"text-teal-400"}};function Do({tag:e,className:t}){let o=_i[e]??{label:e,bgClass:"bg-default/20",textClass:"text-default-500"};return jsxRuntime.jsx("span",{className:ui$1.cn("inline-flex items-center rounded px-1.5 py-0.5 text-[10px] font-medium uppercase leading-none tracking-wide",o.bgClass,o.textClass,t),children:o.label})}function De({tags:e,className:t,max:o}){if(!e||e.length===0)return null;let r=o!=null&&o>0?e.slice(0,o):e,i=e.length-r.length;return jsxRuntime.jsxs("div",{className:ui$1.cn("flex flex-wrap items-center gap-1",t),children:[r.map(n=>jsxRuntime.jsx(Do,{tag:n},n)),i>0&&jsxRuntime.jsxs("span",{className:"inline-flex items-center rounded bg-default/20 px-1.5 py-0.5 text-[10px] font-medium text-default-500",children:["+",i]})]})}var $i=[{value:"timestamp",label:"Latest"},{value:"totalUsd",label:"Top USD"}],Gi=[{value:"all",label:"All"},{value:"buy",label:"Buys"},{value:"sell",label:"Sells"}];function _t({activities:e,isLoading:t,sortBy:o,onSortByChange:r,typeFilter:i="all",onTypeFilterChange:n,onLoadMore:a,hasMore:s,now:l=Date.now(),nativeDecimals:p=9,nativeSymbol:d="SOL",className:c,onRowClick:f}){return jsxRuntime.jsxs("div",{className:ui$1.cn("flex flex-col",c),children:[jsxRuntime.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-2 px-3 py-2",children:[jsxRuntime.jsx("div",{className:"flex items-center gap-1",children:Gi.map(m=>jsxRuntime.jsx("button",{type:"button",onClick:()=>n?.(m.value),className:ui$1.cn("rounded px-2 py-1 text-[11px] transition-colors",i===m.value?"bg-default-100 text-foreground":"text-default-400 hover:text-foreground"),children:m.label},m.value))}),jsxRuntime.jsx("div",{className:"flex items-center gap-1",children:$i.map(m=>jsxRuntime.jsx("button",{type:"button",onClick:()=>r(m.value),className:ui$1.cn("rounded px-2 py-1 text-[11px] transition-colors",o===m.value?"bg-default-100 text-foreground":"text-default-400 hover:text-foreground"),children:m.label},m.value))})]}),jsxRuntime.jsx("div",{className:"overflow-x-auto",children:jsxRuntime.jsxs("table",{className:"w-full min-w-[780px] table-fixed text-[12px]",children:[jsxRuntime.jsx("thead",{className:"text-default-400",children:jsxRuntime.jsxs("tr",{className:"border-b border-default-100",children:[jsxRuntime.jsx("th",{className:"w-[10%] px-3 py-2 text-left font-normal",children:"Side"}),jsxRuntime.jsx("th",{className:"w-[25%] px-3 py-2 text-left font-normal",children:"Token"}),jsxRuntime.jsx("th",{className:"w-[15%] px-3 py-2 text-right font-normal",children:"Amount"}),jsxRuntime.jsx("th",{className:"w-[15%] px-3 py-2 text-right font-normal",children:"USD"}),jsxRuntime.jsx("th",{className:"w-[15%] px-3 py-2 text-left font-normal",children:"Tags"}),jsxRuntime.jsx("th",{className:"w-[10%] px-3 py-2 text-right font-normal",children:"Gas"}),jsxRuntime.jsx("th",{className:"w-[10%] px-3 py-2 text-right font-normal",children:"Age"})]})}),jsxRuntime.jsxs("tbody",{children:[e.length===0&&!t&&jsxRuntime.jsx("tr",{children:jsxRuntime.jsx("td",{colSpan:7,className:"py-8 text-center text-default-400",children:"No activities"})}),e.map(m=>jsxRuntime.jsx(Xi,{activity:m,now:l,nativeDecimals:p,nativeSymbol:d,onRowClick:f},`${m.txHash}-${m.walletAddress}`)),t&&jsxRuntime.jsx("tr",{children:jsxRuntime.jsx("td",{colSpan:7,className:"py-4 text-center text-default-400",children:"Loading\u2026"})})]})]})}),s&&jsxRuntime.jsx("div",{className:"flex justify-center px-3 py-2",children:jsxRuntime.jsx("button",{type:"button",onClick:a,disabled:t,className:"rounded bg-default-100 px-3 py-1 text-[11px] text-default-600 transition-colors hover:bg-default-200 disabled:opacity-50",children:"Load more"})})]})}function Yi(e){return e.type==="buy"?e.to:e.type==="sell"?e.from:e.to}function ji(e,t,o){if(!e)return "--";let r=Number(e)/Math.pow(10,t);return Number.isFinite(r)?`${utils.formatAmount(r)} ${o}`:"--"}function Xi({activity:e,now:t,nativeDecimals:o,nativeSymbol:r,onRowClick:i}){let n=Yi(e),a=e.type==="buy"?"Buy":e.type==="sell"?"Sell":e.type.replace(/_/g," "),s=e.type==="buy"?"text-bullish":e.type==="sell"?"text-bearish":"text-default-500";return jsxRuntime.jsxs("tr",{className:ui$1.cn("border-b border-default-50 hover:bg-default-50/60",i&&"cursor-pointer"),onClick:i?()=>i(e):void 0,children:[jsxRuntime.jsx("td",{className:ui$1.cn("px-3 py-2 align-middle font-medium capitalize",s),children:a}),jsxRuntime.jsx("td",{className:"px-3 py-2 align-middle",children:jsxRuntime.jsxs("div",{className:"flex flex-col gap-0.5",children:[jsxRuntime.jsx("span",{className:"text-foreground",children:n.symbol}),jsxRuntime.jsx("span",{className:"font-mono text-[10px] text-default-400",children:ce(n.address,6,6)})]})}),jsxRuntime.jsxs("td",{className:"px-3 py-2 text-right align-middle text-default-500",children:[utils.formatAmount(n.amount)," ",n.symbol]}),jsxRuntime.jsx("td",{className:"px-3 py-2 text-right align-middle text-foreground",children:n.amountInUsd?utils.formatAmountInUsd(n.amountInUsd):"--"}),jsxRuntime.jsx("td",{className:"px-3 py-2 align-middle",children:jsxRuntime.jsx(De,{tags:e.traderTags,max:2})}),jsxRuntime.jsx("td",{className:"px-3 py-2 text-right align-middle text-default-400",children:ji(e.gasFee,o,r)}),jsxRuntime.jsx("td",{className:"px-3 py-2 text-right align-middle text-default-400",children:ie(e.time,t)})]})}var Zi=100;function Ho(){return {getKey:e=>e.txHash,compare:()=>0,include:()=>true,merge:(e,t,o)=>o.previousSource==="page"||o.incomingSource==="page"?o.previousSource==="page"?{item:e,placement:"previous"}:{item:t,placement:"incoming"}:{item:e,placement:"previous"},maxLiveItems:Zi}}function Bo(e){return Object.freeze({cursor:null,generation:e,mode:"replace"})}function Ji(e,t){return e.sortBy==="timestamp"&&e.typeFilter==="all"&&t==null}function Fo(){let{snapshot:e}=realtimeCursorCollection.createRealtimeCursorCollection(Ho());return {collection:e,request:Bo(e.generation)}}function Ie(e,t,o){let{reduce:r}=realtimeCursorCollection.createRealtimeCursorCollection(Ho());switch(t.type){case "reset":{let i=r(e.collection,{type:"reset"});return {collection:i,request:Bo(i.generation)}}case "load-more":return es(e,r);case "live":return t.items.length===0||!Ji(o,e.request.cursor)?e:{collection:r(e.collection,{type:"live",items:t.items}),request:e.request};case "page":return t.request.mode==="append"&&t.nextCursor===e.collection.nextCursor?e:{collection:r(e.collection,{type:"page",mode:t.request.mode,generation:t.request.generation,items:t.items,nextCursor:t.nextCursor,hasNextPage:t.hasNextPage}),request:e.request};default:return t}}function es(e,t){let{collection:o,request:r}=e;if(!o.hasNextPage||o.nextCursor==null||r.mode==="append"&&r.cursor===o.nextCursor&&r.generation===o.generation)return e;let i=t(o,{type:"clear-live"});return {collection:i,request:Object.freeze({cursor:i.nextCursor,generation:i.generation,mode:"append"})}}function Gt({chain:e,address:t,limit:o=50,initialSortBy:r="timestamp",initialTypeFilter:i="all"}){let[n,a]=react.useState(r),[s,l]=react.useState(i),[p,d]=react.useState(Fo),c=react.useRef(true),f=react.useMemo(()=>({sortBy:n,typeFilter:s}),[n,s]),m=react.useRef(f);m.current=f;let b=react.useCallback(()=>{d(I=>Ie(I,{type:"reset"},m.current));},[]),u=react.useCallback(I=>{I!==n&&(a(I),b());},[n,b]),x=react.useCallback(I=>{I!==s&&(l(I),b());},[s,b]);react.useEffect(()=>{if(c.current){c.current=false;return}b();},[e,t,b]);let v=s==="all"?void 0:s,{collection:N,request:C}=p,B=react.useMemo(()=>({chain:e,address:t,cursor:C.cursor??void 0,limit:o,sortBy:n,type:v}),[e,t,C,o,n,v]),{data:R,isPending:O,isFetching:K}=react$1.useWalletActivitiesQuery(B);react.useEffect(()=>{R&&d(I=>Ie(I,{type:"page",request:C,items:R.data,nextCursor:R.endCursor??null,hasNextPage:!!R.hasNext},f));},[R,C,f]),react$1.useWalletActivitiesSubscription({chain:e,address:t},I=>{I?.length&&d(F=>Ie(F,{type:"live",items:I},f));});let W=react.useMemo(()=>N.items.slice(),[N]),M=!!(N.hasNextPage&&N.nextCursor),ue=react.useCallback(()=>{d(I=>Ie(I,{type:"load-more"},f));},[f]);return {activities:W,isLoading:O||K,sortBy:n,setSortBy:u,typeFilter:s,setTypeFilter:x,hasMore:M,loadMore:ue}}function rs({chain:e,address:t,limit:o,initialSortBy:r,initialTypeFilter:i,nativeDecimals:n,nativeSymbol:a,className:s,onRowClick:l}){let{activities:p,isLoading:d,sortBy:c,setSortBy:f,typeFilter:m,setTypeFilter:b,hasMore:u,loadMore:x}=Gt({chain:e,address:t,limit:o,initialSortBy:r,initialTypeFilter:i});return jsxRuntime.jsx(_t,{activities:p,isLoading:d,sortBy:c,onSortByChange:f,typeFilter:m,onTypeFilterChange:b,hasMore:u,onLoadMore:x,className:s,nativeDecimals:n,nativeSymbol:a,onRowClick:l})}function Yt({data:e,isLoading:t,className:o,now:r=Date.now(),onRowClick:i,onLoadMore:n,hasMore:a}){return jsxRuntime.jsxs("div",{className:ui$1.cn("flex flex-col",o),children:[jsxRuntime.jsx("div",{className:"flex items-baseline justify-between px-3 py-2",children:jsxRuntime.jsxs("span",{className:"text-xs font-medium text-default-500",children:["Holdings",e&&jsxRuntime.jsxs("span",{className:"ml-2 text-[10px] text-default-400",children:["Net worth ",utils.formatAmountInUsd(e.balanceInUsd)]})]})}),jsxRuntime.jsx("div",{className:"overflow-x-auto",children:jsxRuntime.jsxs("table",{className:"w-full min-w-[720px] table-fixed text-[12px]",children:[jsxRuntime.jsx("thead",{className:"text-default-400",children:jsxRuntime.jsxs("tr",{className:"border-b border-default-100",children:[jsxRuntime.jsx("th",{className:"w-[28%] px-3 py-2 text-left font-normal",children:"Token"}),jsxRuntime.jsx("th",{className:"w-[15%] px-3 py-2 text-right font-normal",children:"Amount"}),jsxRuntime.jsx("th",{className:"w-[15%] px-3 py-2 text-right font-normal",children:"Value"}),jsxRuntime.jsx("th",{className:"w-[14%] px-3 py-2 text-right font-normal",children:"Avg cost"}),jsxRuntime.jsx("th",{className:"w-[16%] px-3 py-2 text-left font-normal",children:"Tags"}),jsxRuntime.jsx("th",{className:"w-[12%] px-3 py-2 text-right font-normal",children:"Last active"})]})}),jsxRuntime.jsxs("tbody",{children:[(!e||e.portfolios.length===0)&&!t&&jsxRuntime.jsx("tr",{children:jsxRuntime.jsx("td",{colSpan:6,className:"py-8 text-center text-default-400",children:"No holdings"})}),e?.portfolios.map(s=>jsxRuntime.jsx(as,{portfolio:s,now:r,onRowClick:i},`${s.chain}-${s.address}`)),t&&jsxRuntime.jsx("tr",{children:jsxRuntime.jsx("td",{colSpan:6,className:"py-4 text-center text-default-400",children:"Loading\u2026"})})]})]})}),a&&jsxRuntime.jsx("div",{className:"flex justify-center px-3 py-2",children:jsxRuntime.jsx("button",{type:"button",onClick:n,disabled:t,className:"rounded bg-default-100 px-3 py-1 text-[11px] text-default-600 transition-colors hover:bg-default-200 disabled:opacity-50",children:"Load more"})})]})}function as({portfolio:e,now:t,onRowClick:o}){return jsxRuntime.jsxs("tr",{className:ui$1.cn("border-b border-default-50 hover:bg-default-50/60",o&&"cursor-pointer"),onClick:o?()=>o(e):void 0,children:[jsxRuntime.jsx("td",{className:"px-3 py-2 align-middle",children:jsxRuntime.jsxs("div",{className:"flex flex-col gap-0.5",children:[jsxRuntime.jsx("span",{className:"text-foreground",children:e.symbol}),jsxRuntime.jsx("span",{className:"font-mono text-[10px] text-default-400",children:ce(e.address,6,6)})]})}),jsxRuntime.jsx("td",{className:"px-3 py-2 text-right align-middle text-default-500",children:utils.formatAmount(e.amount)}),jsxRuntime.jsx("td",{className:"px-3 py-2 text-right align-middle text-foreground",children:utils.formatAmountInUsd(e.amountInUsd)}),jsxRuntime.jsx("td",{className:"px-3 py-2 text-right align-middle text-default-400",children:e.avgCostUsd?utils.formatPriceInUsd(e.avgCostUsd):"--"}),jsxRuntime.jsx("td",{className:"px-3 py-2 align-middle",children:jsxRuntime.jsx(De,{tags:e.walletTokenTags,max:2})}),jsxRuntime.jsx("td",{className:"px-3 py-2 text-right align-middle text-default-400",children:e.lastActiveAt?ie(e.lastActiveAt,t):"--"})]})}function jt({chain:e,address:t,limit:o=50}){let[r,i]=react.useState(void 0),[n,a]=react.useState([]);react.useEffect(()=>{a([]),i(void 0);},[e,t]);let{data:s,isPending:l,isFetching:p}=react$1.useWalletPortfoliosQuery({chain:e,address:t,cursor:r,limit:o});react.useEffect(()=>{s&&a(b=>r==null?[s]:b[b.length-1]?.endCursor===s.endCursor?b:[...b,s]);},[s,r]);let d=react.useMemo(()=>n.length===0?void 0:{...n[0],portfolios:n.flatMap(u=>u.portfolios)},[n]),c=n[n.length-1],f=!!(c?.hasNext&&c.endCursor),m=react.useCallback(()=>{!c?.endCursor||!c.hasNext||i(c.endCursor);},[c]);return {data:d,isLoading:l||p,hasMore:f,loadMore:m}}function cs({chain:e,address:t,limit:o,className:r,onRowClick:i}){let{data:n,isLoading:a,hasMore:s,loadMore:l}=jt({chain:e,address:t,limit:o});return jsxRuntime.jsx(Yt,{data:n,isLoading:a,className:r,hasMore:s,onLoadMore:l,onRowClick:i})}var fs=[{value:"7d",label:"7D"},{value:"30d",label:"30D"},{value:"90d",label:"90D"}],ms=[{value:"open",label:"Open"},{value:"closed",label:"Closed"},{value:"all",label:"All"}],xs=[{value:"totalPnl",label:"Total"},{value:"realizedPnl",label:"Realized"},{value:"unrealizedPnl",label:"Unrealized"}];function eo({data:e,isLoading:t,resolution:o,onResolutionChange:r,positionState:i,onPositionStateChange:n,sortBy:a,onSortByChange:s,hasMore:l,onLoadMore:p,now:d=Date.now(),className:c,onRowClick:f}){return jsxRuntime.jsxs("div",{className:ui$1.cn("flex flex-col gap-2",c),children:[jsxRuntime.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-2 px-3 py-2",children:[jsxRuntime.jsx(Xt,{label:"Window",options:fs,value:o,onChange:r}),jsxRuntime.jsx(Xt,{label:"Status",options:ms,value:i,onChange:n}),jsxRuntime.jsx(Xt,{label:"Sort",options:xs,value:a,onChange:s})]}),e&&jsxRuntime.jsx(gs,{data:e}),jsxRuntime.jsx("div",{className:"overflow-x-auto",children:jsxRuntime.jsxs("table",{className:"w-full min-w-[780px] table-fixed text-[12px]",children:[jsxRuntime.jsx("thead",{className:"text-default-400",children:jsxRuntime.jsxs("tr",{className:"border-b border-default-100",children:[jsxRuntime.jsx("th",{className:"w-[22%] px-3 py-2 text-left font-normal",children:"Token"}),jsxRuntime.jsx("th",{className:"w-[13%] px-3 py-2 text-right font-normal",children:"Holding"}),jsxRuntime.jsx("th",{className:"w-[13%] px-3 py-2 text-right font-normal",children:"Total PnL"}),jsxRuntime.jsx("th",{className:"w-[13%] px-3 py-2 text-right font-normal",children:"Realized"}),jsxRuntime.jsx("th",{className:"w-[13%] px-3 py-2 text-right font-normal",children:"Unrealized"}),jsxRuntime.jsx("th",{className:"w-[8%] px-3 py-2 text-right font-normal",children:"State"}),jsxRuntime.jsx("th",{className:"w-[9%] px-3 py-2 text-right font-normal",children:"First buy"}),jsxRuntime.jsx("th",{className:"w-[9%] px-3 py-2 text-right font-normal",children:"Last sell"})]})}),jsxRuntime.jsxs("tbody",{children:[(!e||e.portfolios.length===0)&&!t&&jsxRuntime.jsx("tr",{children:jsxRuntime.jsx("td",{colSpan:8,className:"py-8 text-center text-default-400",children:"No positions"})}),e?.portfolios.map(m=>jsxRuntime.jsx(ys,{pnl:m,now:d,onRowClick:f},`${m.chain}-${m.address}`)),t&&jsxRuntime.jsx("tr",{children:jsxRuntime.jsx("td",{colSpan:8,className:"py-4 text-center text-default-400",children:"Loading\u2026"})})]})]})}),l&&jsxRuntime.jsx("div",{className:"flex justify-center px-3 py-2",children:jsxRuntime.jsx("button",{type:"button",onClick:p,disabled:t,className:"rounded bg-default-100 px-3 py-1 text-[11px] text-default-600 transition-colors hover:bg-default-200 disabled:opacity-50",children:"Load more"})})]})}function Xt({label:e,options:t,value:o,onChange:r}){return jsxRuntime.jsxs("div",{className:"flex items-center gap-2",children:[jsxRuntime.jsx("span",{className:"text-[10px] uppercase tracking-wide text-default-400",children:e}),jsxRuntime.jsx("div",{className:"flex items-center gap-1",children:t.map(i=>jsxRuntime.jsx("button",{type:"button",onClick:()=>r(i.value),className:ui$1.cn("rounded px-2 py-1 text-[11px] transition-colors",o===i.value?"bg-default-100 text-foreground":"text-default-400 hover:text-foreground"),children:i.label},i.value))})]})}function gs({data:e}){let t=e.totalProfitInUsd,o=e.totalProfitRatio,r=e.winRate;return jsxRuntime.jsxs("div",{className:"mx-3 flex flex-wrap items-center gap-x-6 gap-y-2 rounded border border-default-100 bg-default-50 px-4 py-2 text-xs",children:[jsxRuntime.jsx(mt,{label:"Total PnL",value:t?utils.formatAmountInUsd(t,{showPlusGtThanZero:true}):"--",tone:t?qo(t):void 0}),jsxRuntime.jsx(mt,{label:"Return",value:o?utils.formatPercent(o,{showPlusGtThanZero:true}):"--",tone:o?qo(o):void 0}),jsxRuntime.jsx(mt,{label:"Win rate",value:r?utils.formatPercent(r):"--"}),jsxRuntime.jsx(mt,{label:"Trades",value:e.totalTrades!=null?e.totalTrades.toString():"--"})]})}function qo(e){let t=new utils.SafeBigNumber(e);if(t.gt(0))return "bullish";if(t.lt(0))return "bearish"}function mt({label:e,value:t,tone:o}){return jsxRuntime.jsxs("div",{className:"flex flex-col",children:[jsxRuntime.jsx("span",{className:"text-[10px] uppercase tracking-wide text-default-400",children:e}),jsxRuntime.jsx("span",{className:ui$1.cn("text-sm font-medium",o==="bullish"?"text-bullish":o==="bearish"?"text-bearish":"text-foreground"),children:t})]})}function Zt({value:e}){if(!e)return jsxRuntime.jsx("span",{className:"text-default-400",children:"--"});let t=new utils.SafeBigNumber(e),o=t.gt(0)?"text-bullish":t.lt(0)?"text-bearish":"text-default-500";return jsxRuntime.jsx("span",{className:o,children:utils.formatAmountInUsd(e,{showPlusGtThanZero:true})})}function ys({pnl:e,now:t,onRowClick:o}){return jsxRuntime.jsxs("tr",{className:ui$1.cn("border-b border-default-50 hover:bg-default-50/60",o&&"cursor-pointer"),onClick:o?()=>o(e):void 0,children:[jsxRuntime.jsx("td",{className:"px-3 py-2 align-middle",children:jsxRuntime.jsxs("div",{className:"flex flex-col gap-0.5",children:[jsxRuntime.jsx("span",{className:"text-foreground",children:e.symbol}),jsxRuntime.jsx("span",{className:"font-mono text-[10px] text-default-400",children:ce(e.address,6,6)})]})}),jsxRuntime.jsx("td",{className:"px-3 py-2 text-right align-middle text-foreground",children:utils.formatAmountInUsd(e.amountInUsd)}),jsxRuntime.jsx("td",{className:"px-3 py-2 text-right align-middle",children:jsxRuntime.jsx(Zt,{value:e.totalProfitInUsd})}),jsxRuntime.jsx("td",{className:"px-3 py-2 text-right align-middle",children:jsxRuntime.jsx(Zt,{value:e.realizedProfitInUsd})}),jsxRuntime.jsx("td",{className:"px-3 py-2 text-right align-middle",children:jsxRuntime.jsx(Zt,{value:e.unrealizedProfitInUsd})}),jsxRuntime.jsx("td",{className:"px-3 py-2 text-right align-middle text-[10px]",children:jsxRuntime.jsx("span",{className:ui$1.cn("rounded px-1.5 py-0.5",e.isClosed?"bg-default/20 text-default-500":"bg-bullish/15 text-bullish"),children:e.isClosed?"Closed":"Open"})}),jsxRuntime.jsx("td",{className:"px-3 py-2 text-right align-middle text-default-400",children:e.firstBuyAt?ie(e.firstBuyAt,t):"--"}),jsxRuntime.jsx("td",{className:"px-3 py-2 text-right align-middle text-default-400",children:e.lastSellAt?ie(e.lastSellAt,t):"--"})]})}function to({chain:e,address:t,limit:o=50,initialResolution:r="30d",initialPositionState:i="open",initialSortBy:n="totalPnl"}){let[a,s]=react.useState(r),[l,p]=react.useState(i),[d,c]=react.useState(n),[f,m]=react.useState(void 0),[b,u]=react.useState([]),x=react.useCallback(()=>{m(void 0),u([]);},[]),v=react.useCallback(F=>{F!==a&&(s(F),x());},[a,x]),N=react.useCallback(F=>{F!==l&&(p(F),x());},[l,x]),C=react.useCallback(F=>{F!==d&&(c(F),x());},[d,x]);react.useEffect(()=>{x();},[e,t,x]);let B=react.useMemo(()=>({chain:e,address:t,cursor:f,limit:o,resolution:a,positionState:l,sortBy:d}),[e,t,f,o,a,l,d]),{data:R,isPending:O,isFetching:K}=react$1.useWalletPortfolioPnlsQuery(B);react.useEffect(()=>{R&&u(F=>f==null?[R]:F[F.length-1]?.endCursor===R.endCursor?F:[...F,R]);},[R,f]);let W=react.useMemo(()=>b.length===0?void 0:{...b[0],portfolios:b.flatMap(Y=>Y.portfolios)},[b]),M=b[b.length-1],ue=!!(M?.hasNext&&M.endCursor),I=react.useCallback(()=>{!M?.endCursor||!M.hasNext||m(M.endCursor);},[M]);return {data:W,isLoading:O||K,resolution:a,setResolution:v,positionState:l,setPositionState:N,sortBy:d,setSortBy:C,hasMore:ue,loadMore:I}}function bs({chain:e,address:t,limit:o,initialResolution:r,initialPositionState:i,initialSortBy:n,className:a,onRowClick:s}){let{data:l,isLoading:p,resolution:d,setResolution:c,positionState:f,setPositionState:m,sortBy:b,setSortBy:u,hasMore:x,loadMore:v}=to({chain:e,address:t,limit:o,initialResolution:r,initialPositionState:i,initialSortBy:n});return jsxRuntime.jsx(eo,{data:l,isLoading:p,resolution:d,onResolutionChange:c,positionState:f,onPositionStateChange:m,sortBy:b,onSortByChange:u,hasMore:x,onLoadMore:v,className:a,onRowClick:s})}function hs(e){return e instanceof Error?e:new Error(String(e))}async function oo(e){try{return {kind:"ok",data:await e()}}catch(t){return {kind:"error",error:hs(t)}}}function ro(e){return {getHoldings:t=>oo(()=>e.getSpotHoldings(t)),getNetWorth:t=>oo(()=>e.getOverview(t)),getActivitiesPage:t=>oo(()=>e.getSpotHistory(t)),async getPerpsPositions(){return {kind:"unsupported",capability:"perps"}},async getPredictionBets(){return {kind:"unsupported",capability:"prediction"}},subscribeActivities(){return {unsubscribe(){}}}}}function Go({client:e,adapter:t,children:o}){let r=react.useMemo(()=>t??ro(e),[t,e]);return jsxRuntime.jsx(me.Provider,{value:e,children:jsxRuntime.jsx(xe.Provider,{value:r,children:o})})}var ks=15e3;function Ds(e){return Object.fromEntries(Object.entries(e).filter(([,t])=>t!==void 0))}function Yo({chain:e,address:t,enabled:o=true,summaryPollMs:r=ks}){let{setSummary:i,setSummaryStatus:n,setRefetchSummary:a}=react.useContext(Fe),s=react$1.useWalletPortfoliosQuery({chain:e,address:t},{enabled:o,refetchInterval:r}),l=react$1.useWalletPnlQuery({chain:e,address:t},{enabled:o,refetchInterval:r});react.useEffect(()=>{i(null);},[e,t,i]),react.useEffect(()=>{let d=s.isPending||l.isPending,c=s.isFetching||l.isFetching,f=s.isError||l.isError,m=s.isSuccess&&l.isSuccess;n({status:f?"error":m?"success":"pending",fetchStatus:c?"fetching":"idle",isLoading:d&&c,isPending:d,isFetching:c,isRefetching:m&&c,isError:f,isSuccess:m,error:s.error??l.error,dataUpdatedAt:Math.max(s.dataUpdatedAt,l.dataUpdatedAt)});},[s.isPending,s.isFetching,s.isError,s.isSuccess,s.error,s.dataUpdatedAt,l.isPending,l.isFetching,l.isError,l.isSuccess,l.error,l.dataUpdatedAt,n]),react.useEffect(()=>{let d=s.data,c=l.data;!d||!c||i({...c,balanceInUsd:d.balanceInUsd,balanceInNative:d.balanceInNative});},[s.data,l.data,i]),react$1.useWalletPnlSubscription({chain:e,address:t},d=>{i(c=>{if(!c)return c;let f=c;for(let m of d)f={...f,...Ds(m)};return f});},{enabled:o});let p=react.useCallback(async()=>{await Promise.all([s.refetch(),l.refetch()]);},[s,l]);react.useEffect(()=>{a(p);},[p,a]);}function Jo({chain:e,address:t,children:o}){let[r,i]=react.useState(null),[n,a]=react.useState(Us),s=react.useRef(()=>Promise.resolve()),l=react.useCallback(()=>s.current(),[]),p=react.useCallback(f=>{s.current=f;},[]),d=react.useMemo(()=>({summary:r,summaryStatus:n,refetchSummary:l}),[r,n,l]),c=react.useMemo(()=>({setSummary:i,setSummaryStatus:a,setRefetchSummary:p}),[i,a,p]);return jsxRuntime.jsx(Fe.Provider,{value:c,children:jsxRuntime.jsx(ge.Provider,{value:d,children:jsxRuntime.jsx(Is,{chain:e,address:t,children:o})})})}function Is({chain:e,address:t,children:o}){return Yo({chain:e,address:t,enabled:!!t}),jsxRuntime.jsx(jsxRuntime.Fragment,{children:o})}var Us={status:"pending",fetchStatus:"idle",isLoading:false,isPending:true,isFetching:false,isRefetching:false,isError:false,isSuccess:false,error:null,dataUpdatedAt:0};function Bs(e={}){let t=new Set,o=r=>({kind:"ok",data:r});return {async getHoldings(){return o(e.holdings??{holdings:[]})},async getNetWorth(){return o(e.netWorth??{totalValue:0,uPnl:0,realizedPnl:0,totalProfit:0,winRate:0})},async getActivitiesPage(){return o(e.activities??{trades:[],nextCursor:"",hasNext:false})},async getPerpsPositions(){return {kind:"unsupported",capability:"perps"}},async getPredictionBets(){return {kind:"unsupported",capability:"prediction"}},subscribeActivities(r){t.add(r);let i=false;return {unsubscribe(){i||(i=true,t.delete(r));}}}}}
|
|
2
|
-
exports.AccountInfoUI=
|
|
1
|
+
'use strict';var react=require('react'),uiChainSelect=require('@liberfi.io/ui-chain-select'),utils=require('@liberfi.io/utils'),walletConnector=require('@liberfi.io/wallet-connector'),i18n=require('@liberfi.io/i18n'),ui=require('@liberfi.io/ui'),jsxRuntime=require('react/jsx-runtime'),recharts=require('recharts'),reactQuery=require('@tanstack/react-query'),react$1=require('@liberfi.io/react'),realtimeCursorCollection=require('@liberfi.io/utils/realtime-cursor-collection');var xt=react.createContext(null);var gt=react.createContext(null);var yt=react.createContext({}),Ot=react.createContext({});function Pt(){let t=react.useContext(yt);if(!t)throw new Error("usePortfolioContext must be used within a PortfolioProvider");return t}function Mt(){let{summary:t,summaryStatus:e}=Pt();return {data:t,...e}}function Et(){let{status:t,signIn:e,signOut:o}=walletConnector.useAuth(),{data:r}=Mt(),{chain:s,chainNamespace:a}=uiChainSelect.useCurrentChain(),n=walletConnector.useConnectedWallet(s),i=react.useMemo(()=>utils.getNativeToken(s),[s]),l=react.useMemo(()=>r?.balanceInUsd?utils.formatAmountInUsd(r.balanceInUsd):"--",[r?.balanceInUsd]),u=react.useMemo(()=>r?.balanceInNative?utils.formatAmount(r.balanceInNative):"--",[r?.balanceInNative]);return {status:t,signIn:e,signOut:o,balanceUsdFormatted:l,balanceNativeFormatted:u,nativeToken:i,chainNamespace:a,walletAddress:n?.address??""}}function Lt({status:t,signIn:e,signOut:o,balanceUsdFormatted:r,balanceNativeFormatted:s,nativeToken:a,chainNamespace:n,walletAddress:i,actions:l}){let{t:u}=i18n.useTranslation(),{isMobile:p}=ui.useScreen(),{isOpen:f,onClose:x,onOpenChange:d}=ui.useDisclosure(),m=ui.useCopyToClipboard(),h=react.useCallback(()=>{m(i,()=>ui.toast.success(u("common.primaryAddressCopied",{network:n.toUpperCase()})));},[m,n,i,u]);return t==="unauthenticated"?jsxRuntime.jsx(ui.Button,{isIconOnly:p,size:"sm",color:"primary",radius:"full",disableRipple:true,onPress:e,startContent:p?void 0:jsxRuntime.jsx(ui.SignInIcon,{width:16,height:16}),"aria-label":u("common.signIn"),children:p?jsxRuntime.jsx(ui.SignInIcon,{width:16,height:16}):u("common.signIn")}):t==="authenticating"?jsxRuntime.jsx(ui.Button,{isIconOnly:p,size:"sm",color:"primary",radius:"full",disableRipple:true,isLoading:true,isDisabled:true,"aria-label":u("common.signingIn"),children:u("common.signingIn")}):t==="deauthenticating"?jsxRuntime.jsx(ui.Button,{isIconOnly:p,size:"sm",color:"primary",radius:"full",disableRipple:true,isLoading:true,isDisabled:true,"aria-label":u("common.signingOut"),children:u("common.signingOut")}):jsxRuntime.jsxs(ui.StyledPopover,{placement:p?"bottom":"bottom-end",isOpen:f,onOpenChange:d,triggerScaleOnOpen:false,children:[jsxRuntime.jsx(ui.PopoverTrigger,{children:jsxRuntime.jsx(ui.Button,{size:"sm",className:"bg-content2",radius:"full",disableRipple:true,startContent:jsxRuntime.jsx(ui.WalletIcon,{width:16,height:16,className:"text-text-muted"}),endContent:jsxRuntime.jsx(ui.ChevronDownIcon,{width:16,height:16,className:ui.cn("text-text-muted transition-transform",f&&"rotate-180")}),children:a&&jsxRuntime.jsxs("div",{className:"flex items-center gap-1.5",children:[jsxRuntime.jsx(ui.TokenIcon,{symbol:a.symbol,size:16}),jsxRuntime.jsx("span",{className:"text-xs text-foreground",children:p?s:`${s} ${a.symbol}`})]})})}),jsxRuntime.jsx(ui.PopoverContent,{children:jsxRuntime.jsxs("div",{className:"w-70 flex flex-col gap-3 py-4",children:[jsxRuntime.jsxs("div",{className:"px-4 flex items-start justify-between",children:[jsxRuntime.jsxs("div",{className:"flex flex-col gap-0.5",children:[jsxRuntime.jsx("span",{className:"text-xs text-text-muted",children:u("common.totalValue")}),jsxRuntime.jsx("span",{className:"text-base font-semibold text-foreground",children:r})]}),jsxRuntime.jsx("div",{className:"flex items-start justify-end gap-0.5",children:jsxRuntime.jsx(ui.StyledTooltip,{content:u("common.copyPrimaryAddress",{network:n.toUpperCase()}),children:jsxRuntime.jsx(ui.Button,{className:"text-xs bg-transparent text-text-muted hover:text-foreground h-4 min-h-4 gap-1",startContent:jsxRuntime.jsx(ui.CopyIcon,{width:14,height:14}),disableRipple:true,disableAnimation:true,onPress:h,children:n.toUpperCase()})})})]}),jsxRuntime.jsx(ui.Divider,{}),jsxRuntime.jsxs("div",{className:"grid grid-cols-4 gap-2 px-4",children:[l?.map(c=>jsxRuntime.jsxs("button",{type:"button",className:"flex cursor-pointer flex-col items-center justify-center gap-1 rounded-md py-2 text-foreground transition-colors hover:text-primary",onClick:()=>{c.onPress(),x();},children:[c.icon,jsxRuntime.jsx("span",{className:"w-full truncate text-center text-xs",children:c.label})]},c.key)),jsxRuntime.jsxs("button",{type:"button",className:"flex cursor-pointer flex-col items-center justify-center gap-1 rounded-md py-2 text-danger transition-colors hover:text-danger/80",onClick:()=>{o(),x();},children:[jsxRuntime.jsx(ui.SignOutIcon,{width:16,height:16}),jsxRuntime.jsx("span",{className:"w-full truncate text-center text-xs",children:u("common.signOut")})]})]})]})})]})}function co({actions:t}){let e=Et();return jsxRuntime.jsx(Lt,{status:e.status,signIn:e.signIn,signOut:e.signOut,balanceUsdFormatted:e.balanceUsdFormatted,balanceNativeFormatted:e.balanceNativeFormatted,nativeToken:e.nativeToken,chainNamespace:e.chainNamespace,walletAddress:e.walletAddress,actions:t})}function Hr(t){if(!t)return 0;let e=Number(t);return Number.isFinite(e)?e:0}function I(t){return utils.formatAmountInUsd(t)}function bt(t){let e=I(Math.abs(t));return t>0?`+${e}`:t<0?`-${e.replace("-","")}`:e}function he(t){return `${t>0?"+":""}${t.toFixed(2)}%`}function Se(t){let o=Math.abs(t).toFixed(2).split("."),r=Number(o[0]).toLocaleString("en-US"),s=`.${o[1]}`;return {sign:t<0?"-$":"$",integer:r,decimal:s}}function at(t,e=4,o=4){return t.length<=e+o+3?t:`${t.slice(0,e)}\u2026${t.slice(-o)}`}function Ft(t){return utils.formatAmount(t)}function Ne(t,e){return `https://solscan.io/tx/${t}`}var uo=["#C8FF00","#00E676","#0066FF","#FF6B9D","#8B7BFF","#FF5252","#FFB74D","#4DD0E1"],Br="#3A3A4E";function Ce(t){let e=t.reduce((n,i)=>n+i.value,0);if(e<=0)return {items:[]};let o=[...t].sort((n,i)=>i.value-n.value),r=[],s=0,a=0;for(let n of o){let i=n.value/e*100;i<2?s+=n.value:(r.push({name:n.name,symbol:n.symbol,percent:i,value:n.value,color:uo[a%uo.length]}),a++);}return s>0&&r.push({name:"Other",symbol:"OTHER",percent:s/e*100,value:s,color:Br}),{items:r}}function Ae(t){return new Date(t).toLocaleDateString("en-US",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",hour12:false})}function Kt({walletId:t,wallets:e,isViewing:o,viewingAddress:r,onSelectWallet:s,onCopyAddress:a,onSearch:n}){let{t:i}=i18n.useTranslation(),[l,u]=react.useState(false),[p,f]=react.useState(""),x=react.useRef(null),d=!t&&!o,m=e.find(S=>S.id===t),h=o?i("portfolio.address.external"):d?i("portfolio.address.allWallets"):m?.name??"",c=o?at(r??""):d?i("portfolio.address.aggregated"):at(m?.address??""),g=o?"bg-text-muted":"bg-positive",N=react.useCallback(()=>{let S=p.trim();S.length>=32&&(n(S),f(""));},[p,n]),D=react.useCallback(S=>{S.key==="Enter"&&N();},[N]);return jsxRuntime.jsxs("div",{className:"flex items-center justify-between gap-4 pb-4",children:[jsxRuntime.jsxs("div",{className:"flex min-w-0 items-center gap-2.5",children:[jsxRuntime.jsxs("div",{className:"relative",ref:x,children:[jsxRuntime.jsxs("button",{type:"button",className:ui.cn("flex items-center gap-2 rounded-lg border px-2.5 py-1.5 transition-colors",o?"border-positive/20 bg-positive/4":"border-border-subtle bg-surface-raised hover:border-border-control hover:bg-surface-strong",o&&"pointer-events-none"),onClick:()=>!o&&u(S=>!S),children:[jsxRuntime.jsx("span",{className:ui.cn("h-[7px] w-[7px] flex-shrink-0 rounded-full",g)}),jsxRuntime.jsx("span",{className:"text-[11px] font-medium text-text-secondary",children:h}),jsxRuntime.jsx("span",{className:"font-mono text-xs text-foreground",children:c}),!o&&jsxRuntime.jsx("svg",{className:ui.cn("text-text-muted transition-transform",l&&"rotate-180"),width:"10",height:"10",viewBox:"0 0 12 12",fill:"none",children:jsxRuntime.jsx("path",{d:"M3 4.5L6 7.5L9 4.5",stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round"})})]}),l&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("div",{className:"fixed inset-0 z-40",onClick:()=>u(false)}),jsxRuntime.jsxs("div",{className:"absolute left-0 top-[calc(100%+4px)] z-50 min-w-[260px] rounded-lg border border-border-subtle bg-surface-raised p-1 shadow-[0_8px_32px_rgba(0,0,0,0.4)]",children:[jsxRuntime.jsxs("button",{type:"button",className:ui.cn("flex w-full items-center gap-2 rounded-[5px] px-2.5 py-2 transition-colors hover:bg-surface-strong",d&&"bg-positive/7"),onClick:()=>{s(void 0),u(false);},children:[jsxRuntime.jsx("span",{className:"h-1.5 w-1.5 rounded-full bg-positive"}),jsxRuntime.jsx("span",{className:"min-w-[60px] text-[11px] font-medium text-text-secondary",children:i("portfolio.address.allWallets")}),jsxRuntime.jsx("span",{className:"text-[11px] text-text-disabled",children:i("portfolio.address.aggregated")})]}),e.map(S=>jsxRuntime.jsxs("button",{type:"button",className:ui.cn("flex w-full items-center gap-2 rounded-[5px] px-2.5 py-2 transition-colors hover:bg-surface-strong",t===S.id&&"bg-positive/7"),onClick:()=>{s(S.id),u(false);},children:[jsxRuntime.jsx("span",{className:"h-1.5 w-1.5 rounded-full bg-positive"}),jsxRuntime.jsx("span",{className:"min-w-[60px] text-[11px] font-medium text-text-secondary",children:S.name}),jsxRuntime.jsx("span",{className:"font-mono text-[11px] text-text-muted",children:at(S.address)}),jsxRuntime.jsx("span",{className:"ml-auto font-mono text-[11px] font-medium text-foreground",children:S.balance})]},S.id))]})]})]}),jsxRuntime.jsx("button",{type:"button",className:ui.cn("rounded p-1 text-text-muted transition-colors hover:bg-surface-strong hover:text-brand-primary",d&&!o&&"pointer-events-none opacity-40"),onClick:a,disabled:d&&!o,"aria-label":i("portfolio.address.copy"),children:jsxRuntime.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",children:[jsxRuntime.jsx("rect",{x:"4.5",y:"4.5",width:"7",height:"7",rx:"1.5",stroke:"currentColor",strokeWidth:"1.2"}),jsxRuntime.jsx("path",{d:"M9.5 4.5V3a1.5 1.5 0 0 0-1.5-1.5H3A1.5 1.5 0 0 0 1.5 3v5A1.5 1.5 0 0 0 3 9.5h1.5",stroke:"currentColor",strokeWidth:"1.2"})]})}),jsxRuntime.jsx("span",{className:ui.cn("flex-shrink-0 rounded-[3px] px-1.5 py-[3px] text-[9px] font-semibold uppercase tracking-wider",o?"bg-positive/7 text-positive animate-[pulse-glow_2s_ease-in-out_infinite]":"bg-positive/10 text-positive"),children:i(o?"portfolio.address.viewing":"portfolio.address.owner")})]}),jsxRuntime.jsxs("div",{className:"flex flex-shrink-0 items-center gap-1.5",children:[jsxRuntime.jsxs("div",{className:"flex h-[34px] w-[240px] items-center gap-1.5 rounded-lg border border-border-subtle bg-surface-raised px-2.5 transition-all focus-within:w-[300px] focus-within:border-focus",children:[jsxRuntime.jsxs("svg",{className:"flex-shrink-0 text-text-muted",width:"13",height:"13",viewBox:"0 0 16 16",fill:"none",children:[jsxRuntime.jsx("circle",{cx:"7",cy:"7",r:"5.5",stroke:"currentColor",strokeWidth:"1.5"}),jsxRuntime.jsx("path",{d:"M11 11L14.5 14.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),jsxRuntime.jsx("input",{className:"flex-1 border-none bg-transparent font-mono text-xs text-foreground caret-brand-primary outline-none placeholder:font-sans placeholder:text-[11px] placeholder:text-text-muted",placeholder:i("portfolio.address.search.placeholder"),spellCheck:false,value:p,onChange:S=>f(S.target.value),onKeyDown:D})]}),jsxRuntime.jsx("button",{type:"button",className:"whitespace-nowrap rounded-[5px] border border-border-subtle bg-surface-interactive px-3 py-1.5 text-[11px] font-medium text-text-secondary transition-colors hover:border-positive hover:bg-action-primary hover:text-text-inverse",onClick:N,children:i("portfolio.address.search.view")})]})]})}var vt=(r=>(r.SPOT="spot",r.PERPS="perps",r.PREDICTION="prediction",r))(vt||{}),Vt=(o=>(o.NET_WORTH="networth",o.PNL="pnl",o))(Vt||{}),qt=(s=>(s.ONE_DAY="1D",s.SEVEN_DAY="7D",s.THIRTY_DAY="30D",s.MAX="Max",s))(qt||{}),we={"1D":1,"7D":7,"30D":30,Max:365},Te=(o=>(o.LONG="long",o.SHORT="short",o))(Te||{}),ke=(r=>(r.SWAP="swap",r.SEND="send",r.RECEIVE="receive",r))(ke||{}),De=(o=>(o.ACTIVE="active",o.PENDING="pending",o))(De||{}),Re=(o=>(o.WON="won",o.LOST="lost",o))(Re||{}),Ie=(r=>(r.POLYMARKET="polymarket",r.DRIFT="drift",r.METADAO="metadao",r))(Ie||{});var Lr=[{key:"spot",labelKey:"portfolio.tabs.spot"},{key:"perps",labelKey:"portfolio.tabs.perps"},{key:"prediction",labelKey:"portfolio.tabs.prediction"}];function Fr(t,e,o,r){switch(t){case "spot":return e;case "perps":return o;case "prediction":return r}}function _t({activeTab:t,onTabChange:e,spotValue:o=0,perpsValue:r=0,predictionValue:s=0}){let{t:a}=i18n.useTranslation();return jsxRuntime.jsx("div",{className:"flex gap-1 border-b border-border-subtle pb-0 pt-5",children:Lr.map(({key:n,labelKey:i})=>{let l=t===n,u=Fr(n,o,r,s);return jsxRuntime.jsxs("button",{type:"button",className:ui.cn("relative flex items-center gap-2 border-b-2 px-4 pb-3 pt-2.5 text-[13px] font-medium transition-colors",l?"border-positive text-foreground":"border-transparent text-text-muted hover:text-text-secondary"),onClick:()=>e(n),children:[a(i),!l&&jsxRuntime.jsx("span",{className:"rounded-[10px] bg-surface-raised px-2 py-0.5 font-mono text-[11px] text-text-muted",children:I(u)})]},n)})})}function $t({overview:t}){let{t:e}=i18n.useTranslation(),o=t?.totalValue??0,r=t?.uPnl??0,s=t?.realizedPnl??0,a=t?.totalProfit??0,{sign:n,integer:i,decimal:l}=Se(o);return jsxRuntime.jsxs("div",{className:"flex items-center gap-4 pb-4",children:[jsxRuntime.jsx("div",{className:"flex items-baseline gap-3",children:jsxRuntime.jsxs("div",{className:"font-mono text-[26px] font-bold leading-none tracking-tight",children:[jsxRuntime.jsx("span",{className:"mr-px text-lg font-medium text-positive",children:n}),i,jsxRuntime.jsx("span",{className:"text-base font-normal text-text-muted",children:l})]})}),jsxRuntime.jsxs("div",{className:"ml-auto flex items-center gap-3",children:[jsxRuntime.jsx(Ue,{label:e("portfolio.balance.uPnl"),value:r}),jsxRuntime.jsx(go,{}),jsxRuntime.jsx(Ue,{label:e("portfolio.balance.realized"),value:s}),jsxRuntime.jsx(go,{}),jsxRuntime.jsx(Ue,{label:e("portfolio.balance.totalProfit"),value:a})]})]})}function Ue({label:t,value:e}){return jsxRuntime.jsxs("div",{className:"flex items-center gap-1.5",children:[jsxRuntime.jsx("span",{className:"text-[11px] text-text-muted",children:t}),jsxRuntime.jsx("span",{className:ui.cn("font-mono text-xs font-medium",e>0?"text-positive":e<0?"text-negative":"text-text-muted"),children:bt(e)})]})}function go(){return jsxRuntime.jsx("div",{className:"h-3.5 w-px bg-surface-strong"})}var Zr=["1D","7D","30D","Max"];function yo(t,e){let o=new Date(t);return e==="1D"?o.toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:false}):o.toLocaleDateString("en-US",{month:"short",day:"numeric"})}function Jr(t){return t==="pnl"?"change":"netWorth"}function Gt({curveType:t,curvePeriod:e,data:o,isLoading:r,onTypeChange:s,onPeriodChange:a}){let{t:n}=i18n.useTranslation(),i=o?.points,l=Jr(t),u=t==="pnl",p=react.useMemo(()=>(i??[]).map(c=>u?c.change:c.netWorth),[i,u]),f=p.some(c=>c<0),{minVal:x,maxVal:d}=react.useMemo(()=>{if(p.length===0)return {minVal:0,maxVal:100};let c=Math.min(...p),g=Math.max(...p),N=g-c||1;return {minVal:c-N*.1,maxVal:g+N*.1}},[p]),m=react.useMemo(()=>{let c=i??[];if(c.length===0)return [];let g=Math.min(7,c.length),N=Math.max(1,Math.floor((c.length-1)/(g-1))),D=[];for(let w=0;w<c.length;w+=N)D.push({ts:c[w].timestamp,label:yo(c[w].timestamp,e)});let S=c[c.length-1];return D[D.length-1]?.ts!==S.timestamp&&D.push({ts:S.timestamp,label:yo(S.timestamp,e)}),D},[i,e]),h=p[p.length-1]??0;return jsxRuntime.jsxs("div",{className:"overflow-hidden rounded-lg border border-border-subtle bg-surface-base",children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-between px-4 pt-3",children:[jsxRuntime.jsxs("div",{className:"flex gap-0.5 rounded-[5px] bg-surface-raised p-0.5",children:[jsxRuntime.jsx(Po,{label:n("portfolio.curve.netWorth"),active:t==="networth",onClick:()=>s("networth")}),jsxRuntime.jsx(Po,{label:n("portfolio.curve.pnl"),active:t==="pnl",onClick:()=>s("pnl")})]}),jsxRuntime.jsx("div",{className:"flex gap-0.5",children:Zr.map(c=>jsxRuntime.jsx("button",{type:"button",className:ui.cn("rounded-[3px] px-2 py-1 text-[10px] font-medium transition-colors",e===c?"bg-positive/7 text-positive":"text-text-muted hover:bg-surface-interactive hover:text-text-secondary"),onClick:()=>a(c),children:c},c))})]}),jsxRuntime.jsx("div",{className:"h-[180px] px-4 pt-2",children:r||(i??[]).length<2?jsxRuntime.jsx("div",{className:"flex h-full items-center justify-center",children:jsxRuntime.jsx("span",{className:"text-xs text-text-muted",children:r?"":n("portfolio.curve.noData")})}):jsxRuntime.jsx(recharts.ResponsiveContainer,{width:"100%",height:"100%",children:jsxRuntime.jsxs(recharts.AreaChart,{data:i,margin:{top:8,right:0,left:0,bottom:0},children:[jsxRuntime.jsxs("defs",{children:[jsxRuntime.jsxs("linearGradient",{id:"gradAccent",x1:"0",y1:"0",x2:"0",y2:"1",children:[jsxRuntime.jsx("stop",{offset:"0%",stopColor:ui.themeSemanticColors.brand.primary,stopOpacity:.12}),jsxRuntime.jsx("stop",{offset:"100%",stopColor:ui.themeSemanticColors.brand.primary,stopOpacity:0})]}),jsxRuntime.jsxs("linearGradient",{id:"gradGreen",x1:"0",y1:"0",x2:"0",y2:"1",children:[jsxRuntime.jsx("stop",{offset:"0%",stopColor:ui.themeSemanticColors.market.positive,stopOpacity:.12}),jsxRuntime.jsx("stop",{offset:"100%",stopColor:ui.themeSemanticColors.market.positive,stopOpacity:0})]}),jsxRuntime.jsxs("linearGradient",{id:"gradRed",x1:"0",y1:"0",x2:"0",y2:"1",children:[jsxRuntime.jsx("stop",{offset:"0%",stopColor:ui.themeSemanticColors.market.negative,stopOpacity:0}),jsxRuntime.jsx("stop",{offset:"100%",stopColor:ui.themeSemanticColors.market.negative,stopOpacity:.1})]})]}),jsxRuntime.jsx(recharts.XAxis,{dataKey:"timestamp",hide:true}),jsxRuntime.jsx(recharts.YAxis,{hide:true,domain:[x,d]}),u&&f&&jsxRuntime.jsx(recharts.ReferenceLine,{y:0,stroke:ui.themeSemanticColors.border.subtle,strokeOpacity:.6,strokeDasharray:"4 4"}),jsxRuntime.jsx(recharts.Area,{type:"monotone",dataKey:l,stroke:u?h>=0?ui.themeSemanticColors.market.positive:ui.themeSemanticColors.market.negative:ui.themeSemanticColors.brand.primary,strokeWidth:1.5,fill:u?h>=0?"url(#gradGreen)":"url(#gradRed)":"url(#gradAccent)",dot:false,isAnimationActive:false})]})})}),jsxRuntime.jsx("div",{className:"flex justify-between px-4 pb-2.5 pt-1",children:m.map(({ts:c,label:g})=>jsxRuntime.jsx("span",{className:"font-mono text-[9px] text-text-disabled",children:g},c))})]})}function Po({label:t,active:e,onClick:o}){return jsxRuntime.jsx("button",{type:"button",className:ui.cn("rounded px-2.5 py-1 text-[11px] font-medium transition-colors",e?"bg-surface-interactive text-foreground":"text-text-muted hover:text-text-secondary"),onClick:o,children:t})}function Yt({data:t,isLoading:e}){let{t:o}=i18n.useTranslation(),r=t?.items,s=r??[],a=react.useMemo(()=>(r??[]).map(n=>({name:n.name,value:n.percent})),[r]);return jsxRuntime.jsxs("div",{className:"flex flex-col overflow-hidden rounded-lg border border-border-subtle bg-surface-base",children:[jsxRuntime.jsx("div",{className:"px-4 pb-2 pt-3",children:jsxRuntime.jsx("span",{className:"text-xs font-semibold text-text-secondary",children:o("portfolio.distribution.title")})}),jsxRuntime.jsx("div",{className:"flex flex-1 items-center justify-center px-4",children:e||s.length===0?jsxRuntime.jsx("div",{className:"flex h-[140px] w-[140px] items-center justify-center",children:jsxRuntime.jsx("span",{className:"text-xs text-text-muted",children:e?"":o("portfolio.distribution.noData")})}):jsxRuntime.jsx(recharts.ResponsiveContainer,{width:140,height:140,children:jsxRuntime.jsx(recharts.PieChart,{children:jsxRuntime.jsx(recharts.Pie,{data:a,cx:"50%",cy:"50%",innerRadius:32,outerRadius:55,dataKey:"value",stroke:"none",isAnimationActive:false,children:s.map((n,i)=>jsxRuntime.jsx(recharts.Cell,{fill:n.color},i))})})})}),jsxRuntime.jsx("div",{className:"px-4 pb-3 pt-2",children:s.map((n,i)=>jsxRuntime.jsxs("div",{className:"flex items-center gap-1.5 py-[3px] text-[11px]",children:[jsxRuntime.jsx("span",{className:"h-[7px] w-[7px] flex-shrink-0 rounded-[2px]",style:{background:n.color}}),jsxRuntime.jsx("span",{className:"min-w-0 flex-1 truncate text-text-secondary",children:n.name}),jsxRuntime.jsxs("span",{className:"font-mono text-[10px] text-text-muted",children:[n.percent.toFixed(1),"%"]}),jsxRuntime.jsx("span",{className:"min-w-[55px] text-right font-mono text-[10px] text-foreground",children:I(n.value)})]},i))})]})}function W(){let t=react.useContext(xt);if(!t)throw new Error("usePortfolioClient must be used within a PortfolioClientProvider");return t}function vo(){let t=react.useContext(gt);if(!t)throw new Error("usePortfolioDataAdapter must be used within a PortfolioClientProvider");return t}function Qe(t){return ["portfolio","overview",t??{}]}async function pi(t,e){return await t.getOverview(e)}function jt(t,e={}){let o=W();return reactQuery.useQuery({queryKey:Qe(t),queryFn:async()=>pi(o,t),...e})}function We(t){return ["portfolio","spot","holdings",t??{}]}async function ci(t,e){return await t.getSpotHoldings(e)}function ht(t,e={}){let o=W();return reactQuery.useQuery({queryKey:We(t),queryFn:async()=>ci(o,t),...e})}function Oe(t){return ["portfolio","spot","history",t??{}]}async function fi(t,e){return await t.getSpotHistory(e)}function Xt(t,e={}){let o=W();return reactQuery.useQuery({queryKey:Oe(t),queryFn:async()=>fi(o,t),...e})}function Me(t){return ["portfolio","perps","positions",t??{}]}async function xi(t,e){return await t.getPerpsPositions(e)}function Zt(t,e={}){let o=W();return reactQuery.useQuery({queryKey:Me(t),queryFn:async()=>xi(o,t),...e})}function Ee(t){return ["portfolio","perps","history",t??{}]}async function yi(t,e){return await t.getPerpsHistory(e)}function Jt(t,e={}){let o=W();return reactQuery.useQuery({queryKey:Ee(t),queryFn:async()=>yi(o,t),...e})}function Le(t){return ["portfolio","prediction","active",t??{}]}async function bi(t,e){return await t.getPredictionBets(e)}function te(t,e={}){let o=W();return reactQuery.useQuery({queryKey:Le(t),queryFn:async()=>bi(o,t),...e})}function Fe(t){return ["portfolio","prediction","settled",t??{}]}async function hi(t,e){return await t.getPredictionSettled(e)}function ee(t,e={}){let o=W();return reactQuery.useQuery({queryKey:Fe(t),queryFn:async()=>hi(o,t),...e})}function Ke(t){return ["portfolio","chart",t]}async function Ni(t,e){return await t.getChartData(e)}function oe(t,e={}){let o=W();return reactQuery.useQuery({queryKey:Ke(t),queryFn:async()=>Ni(o,t),...e})}function ho(){return ["portfolio","distribution"]}function re(t){return {data:react.useMemo(()=>Ce(t),[t])}}function So(){let{refetchSummary:t}=Pt();return t}var Ui=15e3;function Co(t){return Object.fromEntries(Object.entries(t).filter(([,e])=>e!==void 0))}function Ao({chain:t,address:e,tokenAddresses:o,pollMs:r=Ui}){let s=!!e&&o.length>0,[a,n]=react.useState({}),i=react$1.useWalletPortfoliosByTokensQuery({chain:t,address:e,tokenAddresses:o},{enabled:s,refetchInterval:r}),l=react$1.useWalletPortfolioPnlsByTokensQuery({chain:t,address:e,tokenAddresses:o},{enabled:s,refetchInterval:r});react.useEffect(()=>{let m=i.data??[],h=new Map;if(l.data)for(let g of l.data)h.set(g.address,g);let c={};for(let g of m)c[g.address]={...g,pnl:h.get(g.address)??null};n(c);},[i.data,l.data]);let u=react.useRef(""),p=react.useRef(new Set),f=o.slice().sort().join(",");f!==u.current&&(u.current=f,p.current=new Set(o));let x=p.current;react$1.useWalletPortfoliosSubscription({chain:t,address:e},m=>{n(h=>{let c=h;for(let g of m){if(!x.has(g.tokenAddress))continue;let N=c[g.tokenAddress];if(!N)continue;let{chain:D,walletAddress:S,tokenAddress:w,...O}=g,q=Co(O);Object.keys(q).length!==0&&(c=c===h?{...h}:c,c[g.tokenAddress]={...N,...q});}return c});},{enabled:s}),react$1.useWalletPortfolioPnlsSubscription({chain:t,address:e},m=>{n(h=>{let c=h;for(let g of m){if(!x.has(g.tokenAddress))continue;let N=c[g.tokenAddress];if(!N||!N.pnl)continue;let{walletAddress:D,tokenAddress:S,...w}=g,O=Co(w);Object.keys(O).length!==0&&(c=c===h?{...h}:c,c[g.tokenAddress]={...N,pnl:{...N.pnl,...O}});}return c});},{enabled:s});let d=react.useCallback(async()=>{await Promise.all([i.refetch(),l.refetch()]);},[i,l]);return {tokens:a,isPending:i.isPending,isFetching:i.isFetching||l.isFetching,isError:i.isError,isSuccess:i.isSuccess,error:i.error,refetch:d}}function ie(t){let{defaultTab:e="spot",walletAddresses:o,chain:r}=t??{},[s,a]=react.useState(e),[n,i]=react.useState(void 0),[l,u]=react.useState(void 0),[p,f]=react.useState("networth"),[x,d]=react.useState("7D"),m=l!==void 0,h=react.useMemo(()=>{if(l)return {walletAddresses:[l],chain:r};if(o?.length)return {walletAddresses:o,chain:r}},[o,l,r]),c=jt(h),g=ht(h),N=oe({period:we[x],...h}),D=re(g.data?.holdings??[]),S=react.useMemo(()=>g.data?.holdings.reduce((M,F)=>M+F.value,0)??0,[g.data]),w=react.useCallback(M=>{u(M);},[]),O=react.useCallback(()=>{u(void 0);},[]),q=react.useCallback(M=>{i(M);},[]);return {activeTab:s,setActiveTab:a,walletId:n,selectWallet:q,viewingAddress:l,isViewing:m,curveType:p,setCurveType:f,curvePeriod:x,setCurvePeriod:d,portfolioQuery:h,overviewQuery:c,curveQuery:N,distributionQuery:D,spotHoldingsQuery:g,spotValue:S,perpsValue:0,predictionValue:0,enterViewing:w,exitViewing:O}}function se(){return jsxRuntime.jsxs("div",{className:"mx-auto max-w-[1280px] px-6",children:[jsxRuntime.jsxs("div",{className:"flex gap-4 border-b border-border-subtle pb-0 pt-5",children:[jsxRuntime.jsx(ui.Skeleton,{className:"h-9 w-16 rounded-md"}),jsxRuntime.jsx(ui.Skeleton,{className:"h-9 w-28 rounded-md"}),jsxRuntime.jsx(ui.Skeleton,{className:"h-9 w-32 rounded-md"})]}),jsxRuntime.jsxs("div",{className:"flex items-center justify-between gap-4 py-4",children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-2.5",children:[jsxRuntime.jsx(ui.Skeleton,{className:"h-8 w-48 rounded-lg"}),jsxRuntime.jsx(ui.Skeleton,{className:"h-6 w-6 rounded"}),jsxRuntime.jsx(ui.Skeleton,{className:"h-5 w-14 rounded-[3px]"})]}),jsxRuntime.jsxs("div",{className:"flex items-center gap-1.5",children:[jsxRuntime.jsx(ui.Skeleton,{className:"h-[34px] w-[240px] rounded-lg"}),jsxRuntime.jsx(ui.Skeleton,{className:"h-[34px] w-12 rounded-[5px]"})]})]}),jsxRuntime.jsxs("div",{className:"flex items-center gap-4 pb-4",children:[jsxRuntime.jsxs("div",{className:"flex items-baseline gap-3",children:[jsxRuntime.jsx(ui.Skeleton,{className:"h-8 w-48 rounded-md"}),jsxRuntime.jsx(ui.Skeleton,{className:"h-6 w-16 rounded"})]}),jsxRuntime.jsxs("div",{className:"ml-auto flex items-center gap-3",children:[jsxRuntime.jsx(ui.Skeleton,{className:"h-4 w-28 rounded"}),jsxRuntime.jsx("div",{className:"h-3.5 w-px bg-surface-strong"}),jsxRuntime.jsx(ui.Skeleton,{className:"h-4 w-28 rounded"}),jsxRuntime.jsx("div",{className:"h-3.5 w-px bg-surface-strong"}),jsxRuntime.jsx(ui.Skeleton,{className:"h-4 w-20 rounded"})]})]}),jsxRuntime.jsxs("div",{className:"grid grid-cols-[1fr_340px] gap-3 pb-4",children:[jsxRuntime.jsxs("div",{className:"rounded-lg border border-border-subtle bg-surface-base p-4",children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-between pb-4",children:[jsxRuntime.jsx(ui.Skeleton,{className:"h-7 w-40 rounded-[5px]"}),jsxRuntime.jsx(ui.Skeleton,{className:"h-6 w-32 rounded"})]}),jsxRuntime.jsx(ui.Skeleton,{className:"h-[180px] w-full rounded-md"}),jsxRuntime.jsx("div",{className:"mt-2 flex justify-between",children:Array.from({length:7}).map((t,e)=>jsxRuntime.jsx(ui.Skeleton,{className:"h-3 w-8 rounded"},e))})]}),jsxRuntime.jsxs("div",{className:"rounded-lg border border-border-subtle bg-surface-base p-4",children:[jsxRuntime.jsx(ui.Skeleton,{className:"mb-3 h-4 w-24 rounded"}),jsxRuntime.jsx("div",{className:"flex items-center justify-center py-4",children:jsxRuntime.jsx(ui.Skeleton,{className:"h-[140px] w-[140px] rounded-full"})}),jsxRuntime.jsx("div",{className:"space-y-1.5 pt-2",children:Array.from({length:5}).map((t,e)=>jsxRuntime.jsx(ui.Skeleton,{className:"h-4 w-full rounded"},e))})]})]}),jsxRuntime.jsxs("div",{className:"pb-6",children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-between pb-3",children:[jsxRuntime.jsx(ui.Skeleton,{className:"h-8 w-40 rounded-[5px]"}),jsxRuntime.jsxs("div",{className:"flex items-center gap-2",children:[jsxRuntime.jsx(ui.Skeleton,{className:"h-7 w-40 rounded-[5px]"}),jsxRuntime.jsx(ui.Skeleton,{className:"h-7 w-24 rounded-[5px]"})]})]}),jsxRuntime.jsx(ui.Skeleton,{className:"mb-3 h-5 w-full rounded"}),Array.from({length:5}).map((t,e)=>jsxRuntime.jsx(ui.Skeleton,{className:"mb-2 h-12 w-full rounded-[5px]"},e))]})]})}function ae({viewingAddress:t,onBack:e}){let{t:o}=i18n.useTranslation();return jsxRuntime.jsxs("div",{className:"flex items-center justify-between border-b border-positive/12 bg-positive/6 px-6 py-2",children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-2",children:[jsxRuntime.jsx("div",{className:"flex h-[18px] w-[18px] items-center justify-center rounded-full border border-positive/25 bg-positive/7",children:jsxRuntime.jsxs("svg",{width:"10",height:"10",viewBox:"0 0 16 16",fill:"none",children:[jsxRuntime.jsx("path",{d:"M8 3C4.36 3 1.26 5.28 0 8.5c1.26 3.22 4.36 5.5 8 5.5s6.74-2.28 8-5.5C14.74 5.28 11.64 3 8 3z",stroke:"#C8FF00",strokeWidth:"1.3",fill:"none"}),jsxRuntime.jsx("circle",{cx:"8",cy:"8.5",r:"2.5",stroke:"#C8FF00",strokeWidth:"1.3",fill:"none"})]})}),jsxRuntime.jsx("span",{className:"text-xs font-medium text-positive",children:o("portfolio.viewing.banner")}),jsxRuntime.jsx("span",{className:"ml-1 font-mono text-[11px] text-text-secondary",children:at(t)})]}),jsxRuntime.jsxs("button",{type:"button",className:"flex items-center gap-1.5 rounded-[5px] border border-border-subtle bg-surface-interactive px-3 py-1.5 text-[11px] font-medium text-text-secondary transition-colors hover:border-positive hover:bg-action-primary hover:text-text-inverse",onClick:e,children:[jsxRuntime.jsx("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"none",children:jsxRuntime.jsx("path",{d:"M10 2L4 8l6 6",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})}),o("portfolio.viewing.back")]})]})}function To({wallets:t=[],onCopyAddress:e,renderHoldings:o,isLoading:r,...s}){let a=ie(s),{activeTab:n,setActiveTab:i,walletId:l,selectWallet:u,viewingAddress:p,isViewing:f,curveType:x,setCurveType:d,curvePeriod:m,setCurvePeriod:h,portfolioQuery:c,overviewQuery:g,curveQuery:N,distributionQuery:D,spotValue:S,perpsValue:w,predictionValue:O,enterViewing:q,exitViewing:M}=a;return r||g.isLoading&&!g.data?jsxRuntime.jsx(se,{}):jsxRuntime.jsxs("div",{children:[f&&p&&jsxRuntime.jsx(ae,{viewingAddress:p,onBack:M}),jsxRuntime.jsxs("div",{className:"mx-auto max-w-[1280px] px-6",children:[jsxRuntime.jsx(_t,{activeTab:n,onTabChange:i,spotValue:S,perpsValue:w,predictionValue:O}),jsxRuntime.jsx(Kt,{walletId:l,wallets:t,isViewing:f,viewingAddress:p,onSelectWallet:u,onCopyAddress:()=>{if(f&&p)e?.(p);else {let U=t.find(Q=>Q.id===l);U&&e?.(U.address);}},onSearch:q}),jsxRuntime.jsx($t,{overview:g.data}),jsxRuntime.jsxs("div",{className:"grid grid-cols-[1fr_340px] gap-3 pb-4",children:[jsxRuntime.jsx(Gt,{curveType:x,curvePeriod:m,data:N.data,isLoading:N.isLoading,onTypeChange:d,onPeriodChange:h}),jsxRuntime.jsx(Yt,{data:D.data,isLoading:false})]}),o?.({activeTab:n,portfolioQuery:c,isViewing:f})]})]})}function Tt({open:t,title:e,message:o,confirmLabel:r,cancelLabel:s,onConfirm:a,onCancel:n}){let{t:i}=i18n.useTranslation();return t?jsxRuntime.jsxs("div",{className:"fixed inset-0 z-50 flex items-center justify-center",children:[jsxRuntime.jsx("div",{className:"absolute inset-0 bg-surface-scrim",onClick:n,onKeyDown:l=>{l.key==="Escape"&&n();},role:"button",tabIndex:-1,"aria-label":i("common.closeDialog")}),jsxRuntime.jsxs("div",{className:"relative z-10 w-full max-w-sm rounded-xl border border-border-subtle bg-surface-interactive p-6 shadow-2xl",children:[jsxRuntime.jsx("h3",{className:"text-sm font-semibold text-foreground",children:e}),jsxRuntime.jsx("p",{className:"mt-2 text-xs leading-relaxed text-text-secondary",children:o}),jsxRuntime.jsxs("div",{className:"mt-5 flex items-center justify-end gap-2",children:[jsxRuntime.jsx("button",{type:"button",className:"rounded-lg px-4 py-2 text-xs font-medium text-text-muted transition-colors hover:bg-surface-strong hover:text-foreground",onClick:n,children:s}),jsxRuntime.jsx("button",{type:"button",className:ui.cn("rounded-lg border px-4 py-2 text-xs font-medium transition-colors","border-negative/25 text-negative","hover:border-negative hover:bg-negative/10"),onClick:a,children:r})]})]})]}):null}function le({activeTab:t,portfolioQuery:e,isViewing:o}){let[r,s]=react.useState("holdings"),[a,n]=react.useState("positions"),[i,l]=react.useState("active"),[u,p]=react.useState(""),[f,x]=react.useState(""),[d,m]=react.useState(""),[h,c]=react.useState(false),[g,N]=react.useState(false),D=react.useCallback(()=>{N(Y=>!Y);},[]),S=ht(e,{enabled:t==="spot"}),w=Xt(e,{enabled:t==="spot"&&r==="history"}),O=Zt(e,{enabled:t==="perps"}),q=Jt(e,{enabled:t==="perps"&&a==="history"}),M=te(e,{enabled:t==="prediction"}),F=ee(e,{enabled:t==="prediction"&&i==="settled"}),ft=react.useMemo(()=>(S.data?.holdings??[]).filter(J=>{if(h&&J.value<1&&!J.verified)return false;if(u){let mt=u.toLowerCase();return J.name.toLowerCase().includes(mt)||J.symbol.toLowerCase().includes(mt)}return true}),[S.data?.holdings,h,u]),U=react.useMemo(()=>{let Y=O.data?.positions??[];if(!f)return Y;let J=f.toLowerCase();return Y.filter(mt=>mt.pair.toLowerCase().includes(J))},[O.data?.positions,f]),Q=react.useMemo(()=>{let Y=M.data?.bets??[];if(!d)return Y;let J=d.toLowerCase();return Y.filter(mt=>mt.market.toLowerCase().includes(J))},[M.data?.bets,d]);return {spotSubTab:r,setSpotSubTab:s,perpsSubTab:a,setPerpsSubTab:n,predictionSubTab:i,setPredictionSubTab:l,spotSearch:u,setSpotSearch:p,perpsSearch:f,setPerpsSearch:x,predictionSearch:d,setPredictionSearch:m,hideSmall:h,setHideSmall:c,groupCollapsed:g,toggleGroupCollapsed:D,spotHoldingsQuery:S,spotHistoryQuery:w,perpsPositionsQuery:O,perpsHistoryQuery:q,predictionBetsQuery:M,predictionSettledQuery:F,filteredSpotHoldings:ft,filteredPerpsPositions:U,filteredPredictionBets:Q,isViewing:o}}function rt({tabs:t,activeKey:e,onTabChange:o}){return jsxRuntime.jsx("div",{className:"flex gap-0.5",children:t.map(r=>jsxRuntime.jsx("button",{type:"button",className:ui.cn("rounded-[5px] px-3 py-1.5 text-xs font-medium transition-colors",e===r.key?"bg-surface-interactive text-foreground":"text-text-muted hover:bg-surface-interactive hover:text-text-secondary"),onClick:()=>o(r.key),children:r.label},r.key))})}function it({value:t,onChange:e,placeholder:o}){return jsxRuntime.jsxs("div",{className:"flex h-7 w-40 items-center gap-1 rounded-[5px] border border-border-subtle bg-surface-raised px-2 transition-all focus-within:w-[200px] focus-within:border-focus",children:[jsxRuntime.jsxs("svg",{width:"11",height:"11",viewBox:"0 0 16 16",fill:"none",className:"flex-shrink-0 text-text-muted",children:[jsxRuntime.jsx("circle",{cx:"7",cy:"7",r:"5.5",stroke:"currentColor",strokeWidth:"1.5"}),jsxRuntime.jsx("path",{d:"M11 11L14.5 14.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),jsxRuntime.jsx("input",{type:"text",className:"flex-1 border-none bg-transparent font-mono text-[11px] text-foreground caret-brand-primary outline-none placeholder:font-sans placeholder:text-[10px] placeholder:text-text-muted",placeholder:o,spellCheck:false,value:t,onChange:r=>e(r.target.value)})]})}function G({title:t,hint:e}){return jsxRuntime.jsxs("div",{className:"flex flex-col items-center justify-center py-16 text-center",children:[jsxRuntime.jsx("span",{className:"text-sm text-text-muted",children:t}),e&&jsxRuntime.jsx("span",{className:"mt-1 text-xs text-text-disabled",children:e})]})}function St({label:t,disabled:e,onClick:o}){return jsxRuntime.jsxs("button",{type:"button",className:ui.cn("flex items-center gap-1 whitespace-nowrap rounded-[5px] border px-3 py-1.5 text-[11px] font-medium transition-colors",e?"pointer-events-none border-border-subtle text-text-disabled":"border-[rgba(255,82,82,0.25)] text-negative hover:border-negative hover:bg-[rgba(255,82,82,0.1)]"),onClick:o,disabled:e,children:[jsxRuntime.jsx("svg",{width:"11",height:"11",viewBox:"0 0 16 16",fill:"none",children:jsxRuntime.jsx("path",{d:"M4 4l8 8M12 4l-8 8",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})}),t]})}function ce({state:t,onClosePosition:e,onCloseAll:o}){let{t:r}=i18n.useTranslation(),{perpsSubTab:s,setPerpsSubTab:a,perpsSearch:n,setPerpsSearch:i,filteredPerpsPositions:l,perpsHistoryQuery:u,isViewing:p}=t,f=l.length>0;return jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-between pb-3",children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-3",children:[jsxRuntime.jsx(rt,{tabs:[{key:"positions",label:r("portfolio.perps.openPositions")},{key:"history",label:r("portfolio.perps.tradeHistory")}],activeKey:s,onTabChange:x=>a(x)}),s==="positions"&&!p&&jsxRuntime.jsx(St,{label:r("portfolio.perps.closeAll"),disabled:!f,onClick:()=>o?.()})]}),jsxRuntime.jsx(it,{value:n,onChange:i,placeholder:r("portfolio.perps.search.placeholder")})]}),s==="positions"?jsxRuntime.jsx(Oi,{positions:l,isViewing:p,onClose:e}):jsxRuntime.jsx(Ei,{records:u.data?.records??[],isLoading:u.isLoading})]})}function Oi({positions:t,isViewing:e,onClose:o}){let{t:r}=i18n.useTranslation();return t.length===0?jsxRuntime.jsx(G,{title:r("portfolio.perps.empty"),hint:r("portfolio.perps.empty.hint")}):jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("div",{className:"grid gap-2 px-3 pb-2 text-[10px] font-medium uppercase tracking-wider text-text-muted",style:{gridTemplateColumns:e?"2fr 1fr .8fr .8fr 1fr":"2fr 1fr .8fr .8fr 1fr 80px"},children:[jsxRuntime.jsx("span",{children:r("portfolio.perps.header.pair")}),jsxRuntime.jsx("span",{className:"text-right",children:r("portfolio.perps.header.size")}),jsxRuntime.jsx("span",{className:"text-right",children:r("portfolio.perps.header.entry")}),jsxRuntime.jsx("span",{className:"text-right",children:r("portfolio.perps.header.mark")}),jsxRuntime.jsx("span",{className:"text-right",children:r("portfolio.perps.header.uPnl")}),!e&&jsxRuntime.jsx("span",{className:"text-right"})]}),jsxRuntime.jsx("div",{className:"flex flex-col",children:t.map(s=>jsxRuntime.jsx(Mi,{position:s,isViewing:e,onClose:o},s.id))})]})}function Mi({position:t,isViewing:e,onClose:o}){let{t:r}=i18n.useTranslation(),s=t.side==="long",a=t.uPnl>=0;return jsxRuntime.jsxs("div",{className:"grid items-center gap-2 rounded-[5px] px-3 py-2.5 transition-colors hover:bg-surface-interactive",style:{gridTemplateColumns:e?"2fr 1fr .8fr .8fr 1fr":"2fr 1fr .8fr .8fr 1fr 80px"},children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-2",children:[t.icon?jsxRuntime.jsx("img",{src:t.icon,alt:t.pair,className:"h-6 w-6 flex-shrink-0 rounded-full"}):jsxRuntime.jsx("div",{className:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-surface-interactive text-[9px] font-bold text-text-muted",children:t.pair.slice(0,2)}),jsxRuntime.jsxs("div",{className:"flex items-center gap-1.5",children:[jsxRuntime.jsx("span",{className:"text-xs font-medium text-foreground",children:t.pair}),jsxRuntime.jsx("span",{className:ui.cn("rounded px-1.5 py-0.5 text-[10px] font-medium",s?"bg-positive/12 text-positive":"bg-negative/12 text-negative"),children:r(s?"perpetuals.positions.long":"perpetuals.positions.short")}),jsxRuntime.jsxs("span",{className:"rounded bg-positive/10 px-1.5 py-0.5 text-[10px] font-medium text-positive",children:[t.leverage,"\xD7"]})]})]}),jsxRuntime.jsx("span",{className:"text-right font-mono text-xs text-foreground",children:I(t.size)}),jsxRuntime.jsx("span",{className:"text-right font-mono text-xs text-text-secondary",children:I(t.entryPrice)}),jsxRuntime.jsx("span",{className:"text-right font-mono text-xs text-text-secondary",children:I(t.markPrice)}),jsxRuntime.jsx("span",{className:ui.cn("text-right font-mono text-xs",a?"text-positive":"text-negative"),children:bt(t.uPnl)}),!e&&jsxRuntime.jsx("div",{className:"flex justify-end",children:jsxRuntime.jsx("button",{type:"button",className:"rounded-[5px] border border-border-subtle px-2.5 py-1 text-[10px] font-medium text-text-muted transition-colors hover:border-negative hover:text-negative",onClick:()=>o?.(t),children:r("portfolio.perps.close")})})]})}function Ei({records:t,isLoading:e}){let{t:o}=i18n.useTranslation();return e?jsxRuntime.jsx("div",{className:"flex items-center justify-center py-16",children:jsxRuntime.jsx("div",{className:"h-5 w-5 animate-spin rounded-full border-2 border-positive border-t-transparent"})}):t.length===0?jsxRuntime.jsx(G,{title:o("portfolio.perps.history.empty"),hint:o("portfolio.perps.history.empty.hint")}):jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("div",{className:"grid gap-2 px-3 pb-2 text-[10px] font-medium uppercase tracking-wider text-text-muted",style:{gridTemplateColumns:"1.5fr 80px 1fr 1fr 1fr 100px"},children:[jsxRuntime.jsx("span",{children:o("portfolio.perps.history.header.pair")}),jsxRuntime.jsx("span",{children:o("portfolio.perps.history.header.side")}),jsxRuntime.jsx("span",{className:"text-right",children:o("portfolio.perps.history.header.size")}),jsxRuntime.jsx("span",{className:"text-right",children:o("portfolio.perps.history.header.pnl")}),jsxRuntime.jsx("span",{className:"text-right",children:o("portfolio.perps.history.header.closePrice")}),jsxRuntime.jsx("span",{className:"text-right",children:o("portfolio.perps.history.header.time")})]}),jsxRuntime.jsx("div",{className:"flex flex-col",children:t.map(r=>jsxRuntime.jsx(Li,{record:r},r.id))})]})}function Li({record:t}){let{t:e}=i18n.useTranslation(),o=t.side==="long",r=t.pnl>=0;return jsxRuntime.jsxs("div",{className:"grid items-center gap-2 rounded-[5px] px-3 py-2.5 transition-colors hover:bg-surface-interactive",style:{gridTemplateColumns:"1.5fr 80px 1fr 1fr 1fr 100px"},children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-2",children:[t.icon?jsxRuntime.jsx("img",{src:t.icon,alt:t.pair,className:"h-5 w-5 flex-shrink-0 rounded-full"}):jsxRuntime.jsx("div",{className:"flex h-5 w-5 flex-shrink-0 items-center justify-center rounded-full bg-surface-interactive text-[8px] font-bold text-text-muted",children:t.pair.slice(0,2)}),jsxRuntime.jsx("span",{className:"text-xs font-medium text-foreground",children:t.pair})]}),jsxRuntime.jsx("span",{children:jsxRuntime.jsx("span",{className:ui.cn("inline-block rounded px-1.5 py-0.5 text-[10px] font-medium",o?"bg-positive/12 text-positive":"bg-negative/12 text-negative"),children:e(o?"perpetuals.positions.long":"perpetuals.positions.short")})}),jsxRuntime.jsx("span",{className:"text-right font-mono text-xs text-foreground",children:I(t.size)}),jsxRuntime.jsx("span",{className:ui.cn("text-right font-mono text-xs",r?"text-positive":"text-negative"),children:bt(t.pnl)}),jsxRuntime.jsx("span",{className:"text-right font-mono text-xs text-text-secondary",children:I(t.closePrice)}),jsxRuntime.jsx("span",{className:"text-right text-[11px] text-text-muted",children:t.time})]})}function ue({state:t,onSellBet:e,onSellAll:o}){let{t:r}=i18n.useTranslation(),{predictionSubTab:s,setPredictionSubTab:a,predictionSearch:n,setPredictionSearch:i,filteredPredictionBets:l,predictionSettledQuery:u,isViewing:p}=t,f=l.length>0;return jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-between pb-3",children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-3",children:[jsxRuntime.jsx(rt,{tabs:[{key:"active",label:r("portfolio.prediction.activeBets")},{key:"settled",label:r("portfolio.prediction.settled")}],activeKey:s,onTabChange:x=>a(x)}),s==="active"&&!p&&jsxRuntime.jsx(St,{label:r("portfolio.prediction.sellAll"),disabled:!f,onClick:()=>o?.()})]}),jsxRuntime.jsx(it,{value:n,onChange:i,placeholder:r("portfolio.prediction.search.placeholder")})]}),s==="active"?jsxRuntime.jsx(Vi,{bets:l,isViewing:p,onSell:e}):jsxRuntime.jsx(_i,{records:u.data?.records??[],isLoading:u.isLoading})]})}var Fi={polymarket:"bg-[rgba(0,102,255,0.12)] text-[#0066FF]",drift:"bg-positive/10 text-positive",metadao:"bg-[rgba(255,107,157,0.1)] text-[#FF6B9D]"},Ki={polymarket:"Polymarket",drift:"Drift",metadao:"MetaDAO"};function Do({source:t}){return jsxRuntime.jsx("span",{className:ui.cn("inline-block rounded px-1.5 py-0.5 text-[10px] font-medium",Fi[t]),children:Ki[t]})}function Vi({bets:t,isViewing:e,onSell:o}){let{t:r}=i18n.useTranslation();return t.length===0?jsxRuntime.jsx(G,{title:r("portfolio.prediction.empty"),hint:r("portfolio.prediction.empty.hint")}):jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("div",{className:"grid gap-2 px-3 pb-2 text-[10px] font-medium uppercase tracking-wider text-text-muted",style:{gridTemplateColumns:e?"2.2fr .6fr .7fr .7fr .7fr":"2.2fr .6fr .7fr .7fr .7fr 80px"},children:[jsxRuntime.jsx("span",{children:r("portfolio.prediction.header.market")}),jsxRuntime.jsx("span",{className:"text-right",children:r("portfolio.prediction.header.position")}),jsxRuntime.jsx("span",{className:"text-right",children:r("portfolio.prediction.header.stake")}),jsxRuntime.jsx("span",{className:"text-right",children:r("portfolio.prediction.header.potential")}),jsxRuntime.jsx("span",{className:"text-right",children:r("portfolio.prediction.header.status")}),!e&&jsxRuntime.jsx("span",{className:"text-right"})]}),jsxRuntime.jsx("div",{className:"flex flex-col",children:t.map(s=>jsxRuntime.jsx(qi,{bet:s,isViewing:e,onSell:o},s.id))})]})}function qi({bet:t,isViewing:e,onSell:o}){let{t:r}=i18n.useTranslation();return jsxRuntime.jsxs("div",{className:"grid items-center gap-2 rounded-[5px] px-3 py-2.5 transition-colors hover:bg-surface-interactive",style:{gridTemplateColumns:e?"2.2fr .6fr .7fr .7fr .7fr":"2.2fr .6fr .7fr .7fr .7fr 80px"},children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-2 overflow-hidden",children:[t.icon?jsxRuntime.jsx("img",{src:t.icon,alt:t.market,className:"h-6 w-6 flex-shrink-0 rounded-full"}):jsxRuntime.jsx("div",{className:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-surface-interactive text-[9px] font-bold text-text-muted",children:"?"}),jsxRuntime.jsxs("div",{className:"flex flex-col overflow-hidden",children:[jsxRuntime.jsx("span",{className:"truncate text-xs font-medium text-foreground",children:t.market}),jsxRuntime.jsx(Do,{source:t.source})]})]}),jsxRuntime.jsx("span",{className:ui.cn("text-right text-xs font-medium",t.position==="Yes"?"text-positive":"text-negative"),children:t.position}),jsxRuntime.jsx("span",{className:"text-right font-mono text-xs text-foreground",children:I(t.stake)}),jsxRuntime.jsx("span",{className:"text-right font-mono text-xs text-positive",children:I(t.potential)}),jsxRuntime.jsx("span",{className:"text-right",children:jsxRuntime.jsx("span",{className:ui.cn("inline-block rounded px-1.5 py-0.5 text-[10px] font-medium",t.status==="active"?"bg-positive/12 text-positive":"bg-positive/10 text-positive"),children:r(t.status==="active"?"portfolio.prediction.status.active":"portfolio.prediction.status.pending")})}),!e&&jsxRuntime.jsx("div",{className:"flex justify-end",children:jsxRuntime.jsx("button",{type:"button",className:"rounded-[5px] border border-border-subtle px-2.5 py-1 text-[10px] font-medium text-text-muted transition-colors hover:border-negative hover:text-negative",onClick:()=>o?.(t),children:r("portfolio.prediction.sell")})})]})}function _i({records:t,isLoading:e}){let{t:o}=i18n.useTranslation();return e?jsxRuntime.jsx("div",{className:"flex items-center justify-center py-16",children:jsxRuntime.jsx("div",{className:"h-5 w-5 animate-spin rounded-full border-2 border-positive border-t-transparent"})}):t.length===0?jsxRuntime.jsx(G,{title:o("portfolio.prediction.settled.empty"),hint:o("portfolio.prediction.settled.empty.hint")}):jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("div",{className:"grid gap-2 px-3 pb-2 text-[10px] font-medium uppercase tracking-wider text-text-muted",style:{gridTemplateColumns:"1.5fr .8fr .6fr .7fr .6fr .7fr"},children:[jsxRuntime.jsx("span",{children:o("portfolio.prediction.settled.header.market")}),jsxRuntime.jsx("span",{children:o("portfolio.prediction.settled.header.source")}),jsxRuntime.jsx("span",{className:"text-right",children:o("portfolio.prediction.settled.header.position")}),jsxRuntime.jsx("span",{className:"text-right",children:o("portfolio.prediction.settled.header.stake")}),jsxRuntime.jsx("span",{className:"text-right",children:o("portfolio.prediction.settled.header.result")}),jsxRuntime.jsx("span",{className:"text-right",children:o("portfolio.prediction.settled.header.payout")})]}),jsxRuntime.jsx("div",{className:"flex flex-col",children:t.map(r=>jsxRuntime.jsx(zi,{record:r},r.id))})]})}function zi({record:t}){let{t:e}=i18n.useTranslation(),o=t.result==="won";return jsxRuntime.jsxs("div",{className:"grid items-center gap-2 rounded-[5px] px-3 py-2.5 transition-colors hover:bg-surface-interactive",style:{gridTemplateColumns:"1.5fr .8fr .6fr .7fr .6fr .7fr"},children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-2 overflow-hidden",children:[t.icon?jsxRuntime.jsx("img",{src:t.icon,alt:t.market,className:"h-5 w-5 flex-shrink-0 rounded-full"}):jsxRuntime.jsx("div",{className:"flex h-5 w-5 flex-shrink-0 items-center justify-center rounded-full bg-surface-interactive text-[8px] font-bold text-text-muted",children:"?"}),jsxRuntime.jsx("span",{className:"truncate text-xs font-medium text-foreground",children:t.market})]}),jsxRuntime.jsx(Do,{source:t.source}),jsxRuntime.jsx("span",{className:ui.cn("text-right text-xs font-medium",t.position==="Yes"?"text-positive":"text-negative"),children:t.position}),jsxRuntime.jsx("span",{className:"text-right font-mono text-xs text-foreground",children:I(t.stake)}),jsxRuntime.jsx("span",{className:"text-right",children:jsxRuntime.jsx("span",{className:ui.cn("inline-block rounded px-1.5 py-0.5 text-[10px] font-medium",o?"bg-positive/12 text-positive":"bg-negative/12 text-negative"),children:e(o?"portfolio.prediction.result.won":"portfolio.prediction.result.lost")})}),jsxRuntime.jsx("span",{className:ui.cn("text-right font-mono text-xs",o?"text-positive":"text-text-muted"),children:o?`+${I(t.payout)}`:I(t.payout)})]})}function me({state:t}){let{t:e}=i18n.useTranslation(),{spotSubTab:o,setSpotSubTab:r,spotSearch:s,setSpotSearch:a,hideSmall:n,setHideSmall:i,groupCollapsed:l,toggleGroupCollapsed:u,filteredSpotHoldings:p,spotHistoryQuery:f}=t;return jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-between pb-3",children:[jsxRuntime.jsx(rt,{tabs:[{key:"holdings",label:e("portfolio.spot.holdings")},{key:"history",label:e("portfolio.spot.history")}],activeKey:o,onTabChange:x=>r(x)}),jsxRuntime.jsxs("div",{className:"flex items-center gap-2",children:[jsxRuntime.jsx(it,{value:s,onChange:a,placeholder:e("portfolio.spot.search.placeholder")}),o==="holdings"&&jsxRuntime.jsxs("label",{className:"flex cursor-pointer items-center gap-1.5 text-[11px] text-text-muted select-none",children:[jsxRuntime.jsx("input",{type:"checkbox",className:"accent-[#C8FF00]",checked:n,onChange:x=>i(x.target.checked)}),e("portfolio.spot.hideSmall")]})]})]}),o==="holdings"?jsxRuntime.jsx($i,{holdings:p,groupCollapsed:l,onToggleGroup:u}):jsxRuntime.jsx(Yi,{records:f.data?.trades??[],isLoading:f.isLoading})]})}function $i({holdings:t,groupCollapsed:e,onToggleGroup:o}){let{t:r}=i18n.useTranslation();return t.length===0?jsxRuntime.jsx(G,{title:r("portfolio.spot.empty"),hint:r("portfolio.spot.empty.hint")}):jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("div",{className:"grid gap-2 px-3 pb-2 text-[10px] font-medium uppercase tracking-wider text-text-muted",style:{gridTemplateColumns:"2fr 1fr 1fr 1fr 1fr"},children:[jsxRuntime.jsx("span",{children:r("portfolio.spot.header.asset")}),jsxRuntime.jsx("span",{className:"text-right",children:r("portfolio.spot.header.balance")}),jsxRuntime.jsx("span",{className:"text-right",children:r("portfolio.spot.header.price")}),jsxRuntime.jsx("span",{className:"text-right",children:r("portfolio.spot.header.value")}),jsxRuntime.jsx("span",{className:"text-right",children:r("portfolio.spot.header.24h")})]}),jsxRuntime.jsxs("button",{type:"button",className:"flex w-full items-center gap-2 px-3 py-2 text-[10px] font-medium uppercase tracking-wider text-text-muted transition-colors hover:text-text-secondary",onClick:o,children:[jsxRuntime.jsx("svg",{width:"10",height:"10",viewBox:"0 0 16 16",fill:"none",className:ui.cn("transition-transform",e&&"-rotate-90"),children:jsxRuntime.jsx("path",{d:"M4 6l4 4 4-4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})}),jsxRuntime.jsx("span",{children:r("portfolio.spot.group.tokens")}),jsxRuntime.jsx("span",{className:"text-text-disabled",children:t.length})]}),!e&&jsxRuntime.jsx("div",{className:"flex flex-col",children:t.map(s=>jsxRuntime.jsx(Gi,{holding:s},s.tokenAddress))})]})}function Gi({holding:t}){let e=t.change24h>=0;return jsxRuntime.jsxs("div",{className:"grid items-center gap-2 rounded-[5px] px-3 py-2.5 transition-colors hover:bg-surface-interactive",style:{gridTemplateColumns:"2fr 1fr 1fr 1fr 1fr"},children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-2.5 overflow-hidden",children:[t.image?jsxRuntime.jsx("img",{src:t.image,alt:t.symbol,className:"h-7 w-7 flex-shrink-0 rounded-full"}):jsxRuntime.jsx("div",{className:"flex h-7 w-7 flex-shrink-0 items-center justify-center rounded-full bg-surface-interactive text-[10px] font-bold text-text-muted",children:t.symbol.slice(0,2)}),jsxRuntime.jsxs("div",{className:"flex flex-col overflow-hidden",children:[jsxRuntime.jsx("span",{className:"truncate text-xs font-medium text-foreground",children:t.name}),jsxRuntime.jsx("span",{className:"text-[10px] text-text-muted",children:t.symbol})]})]}),jsxRuntime.jsx("span",{className:"text-right font-mono text-xs text-foreground",children:Ft(t.balance)}),jsxRuntime.jsx("span",{className:"text-right font-mono text-xs text-text-secondary",children:I(t.price)}),jsxRuntime.jsx("span",{className:"text-right font-mono text-xs text-foreground",children:I(t.value)}),jsxRuntime.jsx("span",{className:ui.cn("text-right font-mono text-xs",e?"text-positive":"text-negative"),children:he(t.change24h)})]})}function Yi({records:t,isLoading:e}){let{t:o}=i18n.useTranslation();return e?jsxRuntime.jsx("div",{className:"flex items-center justify-center py-16",children:jsxRuntime.jsx("div",{className:"h-5 w-5 animate-spin rounded-full border-2 border-positive border-t-transparent"})}):t.length===0?jsxRuntime.jsx(G,{title:o("portfolio.spot.history.empty"),hint:o("portfolio.spot.history.empty.hint")}):jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("div",{className:"grid gap-2 px-3 pb-2 text-[10px] font-medium uppercase tracking-wider text-text-muted",style:{gridTemplateColumns:"80px 1.5fr 1fr 1fr 100px 80px"},children:[jsxRuntime.jsx("span",{children:o("portfolio.spot.history.header.type")}),jsxRuntime.jsx("span",{children:o("portfolio.spot.history.header.detail")}),jsxRuntime.jsx("span",{className:"text-right",children:o("portfolio.spot.history.header.amount")}),jsxRuntime.jsx("span",{className:"text-right",children:o("portfolio.spot.history.header.value")}),jsxRuntime.jsx("span",{className:"text-right",children:o("portfolio.spot.history.header.time")}),jsxRuntime.jsx("span",{className:"text-right",children:o("portfolio.spot.history.header.txHash")})]}),jsxRuntime.jsx("div",{className:"flex flex-col",children:t.map(r=>jsxRuntime.jsx(Zi,{record:r},`${r.txHash}-${r.tokenAddress}`))})]})}var ji={swap:"bg-[rgba(139,123,255,0.12)] text-[#8B7BFF]",send:"bg-negative/12 text-negative",receive:"bg-positive/12 text-positive"};function Xi(t){return t.type==="swap"&&t.sideTokenSymbol?`${t.tokenSymbol} \u2192 ${t.sideTokenSymbol}`:t.tokenName||t.tokenSymbol}function Zi({record:t}){let{t:e}=i18n.useTranslation(),o=Ne(t.txHash,t.chain);return jsxRuntime.jsxs("div",{className:"grid items-center gap-2 rounded-[5px] px-3 py-2.5 transition-colors hover:bg-surface-interactive",style:{gridTemplateColumns:"80px 1.5fr 1fr 1fr 100px 80px"},children:[jsxRuntime.jsx("span",{children:jsxRuntime.jsx("span",{className:ui.cn("inline-block rounded px-1.5 py-0.5 text-[10px] font-medium",ji[t.type]),children:e(`portfolio.spot.history.type.${t.type}`)})}),jsxRuntime.jsx("span",{className:"truncate text-xs text-foreground",children:Xi(t)}),jsxRuntime.jsxs("span",{className:"text-right font-mono text-xs text-foreground",children:[Ft(t.tokenAmount)," ",t.tokenSymbol]}),jsxRuntime.jsx("span",{className:"text-right font-mono text-xs text-text-secondary",children:I(t.valueUsd)}),jsxRuntime.jsx("span",{className:"text-right text-[11px] text-text-muted",children:t.timestamp?Ae(t.timestamp):"\u2014"}),jsxRuntime.jsx("span",{className:"text-right",children:t.txHash?jsxRuntime.jsxs("a",{href:o,target:"_blank",rel:"noopener noreferrer",className:"font-mono text-[11px] text-text-muted transition-colors hover:text-brand-primary",children:[t.txHash.slice(0,4),"\u2026",t.txHash.slice(-3)]}):jsxRuntime.jsx("span",{className:"font-mono text-[11px] text-text-disabled",children:"\u2014"})})]})}function Ro({onClosePosition:t,onCloseAllPositions:e,onSellBet:o,onSellAllBets:r,...s}){let{t:a}=i18n.useTranslation(),n=le(s),[i,l]=react.useState(null),u=react.useCallback(()=>{l("closeAll");},[]),p=react.useCallback(()=>{l("sellAll");},[]),f=react.useCallback(()=>{i==="closeAll"?e?.():i==="sellAll"&&r?.(),l(null);},[i,e,r]),x=react.useCallback(()=>{l(null);},[]);return jsxRuntime.jsxs("div",{className:"rounded-xl border border-border-subtle bg-surface-raised p-4",children:[(()=>{switch(s.activeTab){case "spot":return jsxRuntime.jsx(me,{state:n});case "perps":return jsxRuntime.jsx(ce,{state:n,onClosePosition:t,onCloseAll:u});case "prediction":return jsxRuntime.jsx(ue,{state:n,onSellBet:o,onSellAll:p});default:return null}})(),jsxRuntime.jsx(Tt,{open:i==="closeAll",title:a("portfolio.perps.closeAll"),message:a("portfolio.perps.closeAll.confirm"),confirmLabel:a("portfolio.perps.closeAll.confirmBtn"),cancelLabel:a("portfolio.perps.closeAll.cancel"),onConfirm:f,onCancel:x}),jsxRuntime.jsx(Tt,{open:i==="sellAll",title:a("portfolio.prediction.sellAll"),message:a("portfolio.prediction.sellAll.confirm"),confirmLabel:a("portfolio.prediction.sellAll.confirmBtn"),cancelLabel:a("portfolio.prediction.sellAll.cancel"),onConfirm:f,onCancel:x})]})}function st(t,e=Date.now()){if(t==null)return "--";let o=typeof t=="string"||typeof t=="number"?new Date(t):t,r=typeof e=="number"?new Date(e):e,s=Math.max(0,Math.floor((r.getTime()-o.getTime())/1e3));if(s<60)return `${s}s`;let a=Math.floor(s/60);if(a<60)return `${a}m`;let n=Math.floor(a/60);if(n<24)return `${n}h`;let i=Math.floor(n/24);if(i<30)return `${i}d`;let l=Math.floor(i/30);return l<12?`${l}mo`:`${Math.floor(i/365)}y`}function ct(t,e=4,o=4){return t?t.length<=e+o+1?t:`${t.slice(0,e)}\u2026${t.slice(-o)}`:"--"}var rs={kol:{label:"KOL",labelKey:"common.walletTag.kol",bgClass:"bg-warning/15",textClass:"text-warning"},smart:{label:"Smart",labelKey:"common.walletTag.smart",bgClass:"bg-sky-500/15",textClass:"text-sky-400"},sniper:{label:"Sniper",labelKey:"common.walletTag.sniper",bgClass:"bg-danger/15",textClass:"text-danger"},dev:{label:"Dev",labelKey:"common.walletTag.dev",bgClass:"bg-negative/15",textClass:"text-negative"},bundle:{label:"Bundle",labelKey:"common.walletTag.bundle",bgClass:"bg-purple-500/15",textClass:"text-purple-400"},bluechip:{label:"Bluechip",labelKey:"common.walletTag.bluechip",bgClass:"bg-success/15",textClass:"text-success"},insider:{label:"Insider",labelKey:"common.walletTag.insider",bgClass:"bg-fuchsia-500/15",textClass:"text-fuchsia-400"},fresh:{label:"Fresh",labelKey:"common.walletTag.fresh",bgClass:"bg-teal-500/15",textClass:"text-teal-400"}};function Ho({tag:t,className:e}){let{t:o}=i18n.useTranslation(),r=rs[t]??{label:t,bgClass:"bg-default/20",textClass:"text-text-muted"};return jsxRuntime.jsx("span",{className:ui.cn("inline-flex items-center rounded px-1.5 py-0.5 text-[10px] font-medium uppercase leading-none tracking-wide",r.bgClass,r.textClass,e),children:r.labelKey?o(r.labelKey):r.label})}function It({tags:t,className:e,max:o}){if(!t||t.length===0)return null;let r=o!=null&&o>0?t.slice(0,o):t,s=t.length-r.length;return jsxRuntime.jsxs("div",{className:ui.cn("flex flex-wrap items-center gap-1",e),children:[r.map(a=>jsxRuntime.jsx(Ho,{tag:a},a)),s>0&&jsxRuntime.jsxs("span",{className:"inline-flex items-center rounded bg-default/20 px-1.5 py-0.5 text-[10px] font-medium text-text-muted",children:["+",s]})]})}var ns=["timestamp","totalUsd"],as=["all","buy","sell"];function Ge({activities:t,isLoading:e,sortBy:o,onSortByChange:r,typeFilter:s="all",onTypeFilterChange:a,onLoadMore:n,hasMore:i,now:l=Date.now(),nativeDecimals:u=9,nativeSymbol:p="SOL",className:f,onRowClick:x}){let{t:d}=i18n.useTranslation();return jsxRuntime.jsxs("div",{className:ui.cn("flex flex-col",f),children:[jsxRuntime.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-2 px-3 py-2",children:[jsxRuntime.jsx("div",{className:"flex items-center gap-1",children:as.map(m=>jsxRuntime.jsx("button",{type:"button",onClick:()=>a?.(m),className:ui.cn("rounded px-2 py-1 text-[11px] transition-colors",s===m?"bg-default-100 text-foreground":"text-text-muted hover:text-foreground"),children:d(m==="all"?"portfolio.activities.filter.all":m==="buy"?"portfolio.activities.filter.buys":"portfolio.activities.filter.sells")},m))}),jsxRuntime.jsx("div",{className:"flex items-center gap-1",children:ns.map(m=>jsxRuntime.jsx("button",{type:"button",onClick:()=>r(m),className:ui.cn("rounded px-2 py-1 text-[11px] transition-colors",o===m?"bg-default-100 text-foreground":"text-text-muted hover:text-foreground"),children:d(m==="timestamp"?"portfolio.activities.filter.latest":"portfolio.activities.filter.topUsd")},m))})]}),jsxRuntime.jsx("div",{className:"overflow-x-auto",children:jsxRuntime.jsxs("table",{className:"w-full min-w-[780px] table-fixed text-[12px]",children:[jsxRuntime.jsx("thead",{className:"text-text-muted",children:jsxRuntime.jsxs("tr",{className:"border-b border-default-100",children:[jsxRuntime.jsx("th",{className:"w-[10%] px-3 py-2 text-left font-normal",children:d("portfolio.activities.header.side")}),jsxRuntime.jsx("th",{className:"w-[25%] px-3 py-2 text-left font-normal",children:d("portfolio.activities.header.token")}),jsxRuntime.jsx("th",{className:"w-[15%] px-3 py-2 text-right font-normal",children:d("portfolio.activities.header.amount")}),jsxRuntime.jsx("th",{className:"w-[15%] px-3 py-2 text-right font-normal",children:d("portfolio.activities.header.usd")}),jsxRuntime.jsx("th",{className:"w-[15%] px-3 py-2 text-left font-normal",children:d("portfolio.activities.header.tags")}),jsxRuntime.jsx("th",{className:"w-[10%] px-3 py-2 text-right font-normal",children:d("portfolio.activities.header.gas")}),jsxRuntime.jsx("th",{className:"w-[10%] px-3 py-2 text-right font-normal",children:d("portfolio.activities.header.age")})]})}),jsxRuntime.jsxs("tbody",{children:[t.length===0&&!e&&jsxRuntime.jsx("tr",{children:jsxRuntime.jsx("td",{colSpan:7,className:"py-8 text-center text-text-muted",children:d("portfolio.activities.empty")})}),t.map(m=>jsxRuntime.jsx(ds,{activity:m,now:l,nativeDecimals:u,nativeSymbol:p,onRowClick:x},`${m.txHash}-${m.walletAddress}`)),e&&jsxRuntime.jsx("tr",{children:jsxRuntime.jsx("td",{colSpan:7,className:"py-4 text-center text-text-muted",children:d("portfolio.common.loading")})})]})]})}),i&&jsxRuntime.jsx("div",{className:"flex justify-center px-3 py-2",children:jsxRuntime.jsx("button",{type:"button",onClick:n,disabled:e,className:"rounded bg-default-100 px-3 py-1 text-[11px] text-text-muted transition-colors hover:bg-default-200 disabled:opacity-50",children:d("portfolio.common.loadMore")})})]})}function ls(t){return t.type==="buy"?t.to:t.type==="sell"?t.from:t.to}function ps(t,e,o){if(!t)return "--";let r=Number(t)/Math.pow(10,e);return Number.isFinite(r)?`${utils.formatAmount(r)} ${o}`:"--"}function ds({activity:t,now:e,nativeDecimals:o,nativeSymbol:r,onRowClick:s}){let a=ls(t),n=t.type==="buy"?"Buy":t.type==="sell"?"Sell":t.type.replace(/_/g," "),i=t.type==="buy"?"text-positive":t.type==="sell"?"text-negative":"text-text-muted";return jsxRuntime.jsxs("tr",{className:ui.cn("border-b border-default-50 hover:bg-default-50/60",s&&"cursor-pointer"),onClick:s?()=>s(t):void 0,children:[jsxRuntime.jsx("td",{className:ui.cn("px-3 py-2 align-middle font-medium capitalize",i),children:n}),jsxRuntime.jsx("td",{className:"px-3 py-2 align-middle",children:jsxRuntime.jsxs("div",{className:"flex flex-col gap-0.5",children:[jsxRuntime.jsx("span",{className:"text-foreground",children:a.symbol}),jsxRuntime.jsx("span",{className:"font-mono text-[10px] text-text-muted",children:ct(a.address,6,6)})]})}),jsxRuntime.jsxs("td",{className:"px-3 py-2 text-right align-middle text-text-muted",children:[utils.formatAmount(a.amount)," ",a.symbol]}),jsxRuntime.jsx("td",{className:"px-3 py-2 text-right align-middle text-foreground",children:a.amountInUsd?utils.formatAmountInUsd(a.amountInUsd):"--"}),jsxRuntime.jsx("td",{className:"px-3 py-2 align-middle",children:jsxRuntime.jsx(It,{tags:t.traderTags,max:2})}),jsxRuntime.jsx("td",{className:"px-3 py-2 text-right align-middle text-text-muted",children:ps(t.gasFee,o,r)}),jsxRuntime.jsx("td",{className:"px-3 py-2 text-right align-middle text-text-muted",children:st(t.time,e)})]})}var cs=100;function Oo(){return {getKey:t=>t.txHash,compare:()=>0,include:()=>true,merge:(t,e,o)=>o.previousSource==="page"||o.incomingSource==="page"?o.previousSource==="page"?{item:t,placement:"previous"}:{item:e,placement:"incoming"}:{item:t,placement:"previous"},maxLiveItems:cs}}function Mo(t){return Object.freeze({cursor:null,generation:t,mode:"replace"})}function us(t,e){return t.sortBy==="timestamp"&&t.typeFilter==="all"&&e==null}function Eo(){let{snapshot:t}=realtimeCursorCollection.createRealtimeCursorCollection(Oo());return {collection:t,request:Mo(t.generation)}}function Ht(t,e,o){let{reduce:r}=realtimeCursorCollection.createRealtimeCursorCollection(Oo());switch(e.type){case "reset":{let s=r(t.collection,{type:"reset"});return {collection:s,request:Mo(s.generation)}}case "load-more":return fs(t,r);case "live":return e.items.length===0||!us(o,t.request.cursor)?t:{collection:r(t.collection,{type:"live",items:e.items}),request:t.request};case "page":return e.request.mode==="append"&&e.nextCursor===t.collection.nextCursor?t:{collection:r(t.collection,{type:"page",mode:e.request.mode,generation:e.request.generation,items:e.items,nextCursor:e.nextCursor,hasNextPage:e.hasNextPage}),request:t.request};default:return e}}function fs(t,e){let{collection:o,request:r}=t;if(!o.hasNextPage||o.nextCursor==null||r.mode==="append"&&r.cursor===o.nextCursor&&r.generation===o.generation)return t;let s=e(o,{type:"clear-live"});return {collection:s,request:Object.freeze({cursor:s.nextCursor,generation:s.generation,mode:"append"})}}function Xe({chain:t,address:e,limit:o=50,initialSortBy:r="timestamp",initialTypeFilter:s="all"}){let[a,n]=react.useState(r),[i,l]=react.useState(s),[u,p]=react.useState(Eo),f=react.useRef(true),x=react.useMemo(()=>({sortBy:a,typeFilter:i}),[a,i]),d=react.useRef(x);d.current=x;let m=react.useCallback(()=>{p(U=>Ht(U,{type:"reset"},d.current));},[]),h=react.useCallback(U=>{U!==a&&(n(U),m());},[a,m]),c=react.useCallback(U=>{U!==i&&(l(U),m());},[i,m]);react.useEffect(()=>{if(f.current){f.current=false;return}m();},[t,e,m]);let g=i==="all"?void 0:i,{collection:N,request:D}=u,S=react.useMemo(()=>({chain:t,address:e,cursor:D.cursor??void 0,limit:o,sortBy:a,type:g}),[t,e,D,o,a,g]),{data:w,isPending:O,isFetching:q}=react$1.useWalletActivitiesQuery(S);react.useEffect(()=>{w&&p(U=>Ht(U,{type:"page",request:D,items:w.data,nextCursor:w.endCursor??null,hasNextPage:!!w.hasNext},x));},[w,D,x]),react$1.useWalletActivitiesSubscription({chain:t,address:e},U=>{U?.length&&p(Q=>Ht(Q,{type:"live",items:U},x));});let M=react.useMemo(()=>N.items.slice(),[N]),F=!!(N.hasNextPage&&N.nextCursor),ft=react.useCallback(()=>{p(U=>Ht(U,{type:"load-more"},x));},[x]);return {activities:M,isLoading:O||q,sortBy:a,setSortBy:h,typeFilter:i,setTypeFilter:c,hasMore:F,loadMore:ft}}function gs({chain:t,address:e,limit:o,initialSortBy:r,initialTypeFilter:s,nativeDecimals:a,nativeSymbol:n,className:i,onRowClick:l}){let{activities:u,isLoading:p,sortBy:f,setSortBy:x,typeFilter:d,setTypeFilter:m,hasMore:h,loadMore:c}=Xe({chain:t,address:e,limit:o,initialSortBy:r,initialTypeFilter:s});return jsxRuntime.jsx(Ge,{activities:u,isLoading:p,sortBy:f,onSortByChange:x,typeFilter:d,onTypeFilterChange:m,hasMore:h,onLoadMore:c,className:i,nativeDecimals:a,nativeSymbol:n,onRowClick:l})}function Ze({data:t,isLoading:e,className:o,now:r=Date.now(),onRowClick:s,onLoadMore:a,hasMore:n}){let{t:i}=i18n.useTranslation();return jsxRuntime.jsxs("div",{className:ui.cn("flex flex-col",o),children:[jsxRuntime.jsx("div",{className:"flex items-baseline justify-between px-3 py-2",children:jsxRuntime.jsxs("span",{className:"text-xs font-medium text-text-muted",children:[i("portfolio.netWorth.holdings"),t&&jsxRuntime.jsx("span",{className:"ml-2 text-[10px] text-text-muted",children:i("portfolio.netWorth.summary",{value:utils.formatAmountInUsd(t.balanceInUsd)})})]})}),jsxRuntime.jsx("div",{className:"overflow-x-auto",children:jsxRuntime.jsxs("table",{className:"w-full min-w-[720px] table-fixed text-[12px]",children:[jsxRuntime.jsx("thead",{className:"text-text-muted",children:jsxRuntime.jsxs("tr",{className:"border-b border-default-100",children:[jsxRuntime.jsx("th",{className:"w-[28%] px-3 py-2 text-left font-normal",children:i("portfolio.netWorth.header.token")}),jsxRuntime.jsx("th",{className:"w-[15%] px-3 py-2 text-right font-normal",children:i("portfolio.netWorth.header.amount")}),jsxRuntime.jsx("th",{className:"w-[15%] px-3 py-2 text-right font-normal",children:i("portfolio.netWorth.header.value")}),jsxRuntime.jsx("th",{className:"w-[14%] px-3 py-2 text-right font-normal",children:i("portfolio.netWorth.header.avgCost")}),jsxRuntime.jsx("th",{className:"w-[16%] px-3 py-2 text-left font-normal",children:i("portfolio.netWorth.header.tags")}),jsxRuntime.jsx("th",{className:"w-[12%] px-3 py-2 text-right font-normal",children:i("portfolio.netWorth.header.lastActive")})]})}),jsxRuntime.jsxs("tbody",{children:[(!t||t.portfolios.length===0)&&!e&&jsxRuntime.jsx("tr",{children:jsxRuntime.jsx("td",{colSpan:6,className:"py-8 text-center text-text-muted",children:i("portfolio.netWorth.empty")})}),t?.portfolios.map(l=>jsxRuntime.jsx(hs,{portfolio:l,now:r,onRowClick:s},`${l.chain}-${l.address}`)),e&&jsxRuntime.jsx("tr",{children:jsxRuntime.jsx("td",{colSpan:6,className:"py-4 text-center text-text-muted",children:i("portfolio.common.loading")})})]})]})}),n&&jsxRuntime.jsx("div",{className:"flex justify-center px-3 py-2",children:jsxRuntime.jsx("button",{type:"button",onClick:a,disabled:e,className:"rounded bg-default-100 px-3 py-1 text-[11px] text-text-muted transition-colors hover:bg-default-200 disabled:opacity-50",children:i("portfolio.common.loadMore")})})]})}function hs({portfolio:t,now:e,onRowClick:o}){return jsxRuntime.jsxs("tr",{className:ui.cn("border-b border-default-50 hover:bg-default-50/60",o&&"cursor-pointer"),onClick:o?()=>o(t):void 0,children:[jsxRuntime.jsx("td",{className:"px-3 py-2 align-middle",children:jsxRuntime.jsxs("div",{className:"flex flex-col gap-0.5",children:[jsxRuntime.jsx("span",{className:"text-foreground",children:t.symbol}),jsxRuntime.jsx("span",{className:"font-mono text-[10px] text-text-muted",children:ct(t.address,6,6)})]})}),jsxRuntime.jsx("td",{className:"px-3 py-2 text-right align-middle text-text-muted",children:utils.formatAmount(t.amount)}),jsxRuntime.jsx("td",{className:"px-3 py-2 text-right align-middle text-foreground",children:utils.formatAmountInUsd(t.amountInUsd)}),jsxRuntime.jsx("td",{className:"px-3 py-2 text-right align-middle text-text-muted",children:t.avgCostUsd?utils.formatPriceInUsd(t.avgCostUsd):"--"}),jsxRuntime.jsx("td",{className:"px-3 py-2 align-middle",children:jsxRuntime.jsx(It,{tags:t.walletTokenTags,max:2})}),jsxRuntime.jsx("td",{className:"px-3 py-2 text-right align-middle text-text-muted",children:t.lastActiveAt?st(t.lastActiveAt,e):"--"})]})}function Je({chain:t,address:e,limit:o=50}){let[r,s]=react.useState(void 0),[a,n]=react.useState([]);react.useEffect(()=>{n([]),s(void 0);},[t,e]);let{data:i,isPending:l,isFetching:u}=react$1.useWalletPortfoliosQuery({chain:t,address:e,cursor:r,limit:o});react.useEffect(()=>{i&&n(m=>r==null?[i]:m[m.length-1]?.endCursor===i.endCursor?m:[...m,i]);},[i,r]);let p=react.useMemo(()=>a.length===0?void 0:{...a[0],portfolios:a.flatMap(h=>h.portfolios)},[a]),f=a[a.length-1],x=!!(f?.hasNext&&f.endCursor),d=react.useCallback(()=>{!f?.endCursor||!f.hasNext||s(f.endCursor);},[f]);return {data:p,isLoading:l||u,hasMore:x,loadMore:d}}function As({chain:t,address:e,limit:o,className:r,onRowClick:s}){let{data:a,isLoading:n,hasMore:i,loadMore:l}=Je({chain:t,address:e,limit:o});return jsxRuntime.jsx(Ze,{data:a,isLoading:n,className:r,hasMore:i,onLoadMore:l,onRowClick:s})}function io({data:t,isLoading:e,resolution:o,onResolutionChange:r,positionState:s,onPositionStateChange:a,sortBy:n,onSortByChange:i,hasMore:l,onLoadMore:u,now:p=Date.now(),className:f,onRowClick:x}){let{t:d}=i18n.useTranslation(),m=["7d","30d","90d"].map(g=>({value:g,label:g.toUpperCase()})),h=[{value:"open",label:d("portfolio.pnl.filter.open")},{value:"closed",label:d("portfolio.pnl.filter.closed")},{value:"all",label:d("portfolio.pnl.filter.all")}],c=[{value:"totalPnl",label:d("portfolio.pnl.filter.total")},{value:"realizedPnl",label:d("portfolio.pnl.filter.realized")},{value:"unrealizedPnl",label:d("portfolio.pnl.filter.unrealized")}];return jsxRuntime.jsxs("div",{className:ui.cn("flex flex-col gap-2",f),children:[jsxRuntime.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-2 px-3 py-2",children:[jsxRuntime.jsx(to,{label:d("portfolio.pnl.filter.window"),options:m,value:o,onChange:r}),jsxRuntime.jsx(to,{label:d("portfolio.pnl.filter.status"),options:h,value:s,onChange:a}),jsxRuntime.jsx(to,{label:d("portfolio.pnl.filter.sort"),options:c,value:n,onChange:i})]}),t&&jsxRuntime.jsx(Ts,{data:t}),jsxRuntime.jsx("div",{className:"overflow-x-auto",children:jsxRuntime.jsxs("table",{className:"w-full min-w-[780px] table-fixed text-[12px]",children:[jsxRuntime.jsx("thead",{className:"text-text-muted",children:jsxRuntime.jsxs("tr",{className:"border-b border-default-100",children:[jsxRuntime.jsx("th",{className:"w-[22%] px-3 py-2 text-left font-normal",children:d("portfolio.pnl.header.token")}),jsxRuntime.jsx("th",{className:"w-[13%] px-3 py-2 text-right font-normal",children:d("portfolio.pnl.header.holding")}),jsxRuntime.jsx("th",{className:"w-[13%] px-3 py-2 text-right font-normal",children:d("portfolio.pnl.header.total")}),jsxRuntime.jsx("th",{className:"w-[13%] px-3 py-2 text-right font-normal",children:d("portfolio.pnl.header.realized")}),jsxRuntime.jsx("th",{className:"w-[13%] px-3 py-2 text-right font-normal",children:d("portfolio.pnl.header.unrealized")}),jsxRuntime.jsx("th",{className:"w-[8%] px-3 py-2 text-right font-normal",children:d("portfolio.pnl.header.state")}),jsxRuntime.jsx("th",{className:"w-[9%] px-3 py-2 text-right font-normal",children:d("portfolio.pnl.header.firstBuy")}),jsxRuntime.jsx("th",{className:"w-[9%] px-3 py-2 text-right font-normal",children:d("portfolio.pnl.header.lastSell")})]})}),jsxRuntime.jsxs("tbody",{children:[(!t||t.portfolios.length===0)&&!e&&jsxRuntime.jsx("tr",{children:jsxRuntime.jsx("td",{colSpan:8,className:"py-8 text-center text-text-muted",children:d("portfolio.pnl.empty")})}),t?.portfolios.map(g=>jsxRuntime.jsx(ks,{pnl:g,now:p,onRowClick:x},`${g.chain}-${g.address}`)),e&&jsxRuntime.jsx("tr",{children:jsxRuntime.jsx("td",{colSpan:8,className:"py-4 text-center text-text-muted",children:d("portfolio.common.loading")})})]})]})}),l&&jsxRuntime.jsx("div",{className:"flex justify-center px-3 py-2",children:jsxRuntime.jsx("button",{type:"button",onClick:u,disabled:e,className:"rounded bg-default-100 px-3 py-1 text-[11px] text-text-muted transition-colors hover:bg-default-200 disabled:opacity-50",children:d("portfolio.common.loadMore")})})]})}function to({label:t,options:e,value:o,onChange:r}){return jsxRuntime.jsxs("div",{className:"flex items-center gap-2",children:[jsxRuntime.jsx("span",{className:"text-[10px] uppercase tracking-wide text-text-muted",children:t}),jsxRuntime.jsx("div",{className:"flex items-center gap-1",children:e.map(s=>jsxRuntime.jsx("button",{type:"button",onClick:()=>r(s.value),className:ui.cn("rounded px-2 py-1 text-[11px] transition-colors",o===s.value?"bg-default-100 text-foreground":"text-text-muted hover:text-foreground"),children:s.label},s.value))})]})}function Ts({data:t}){let{t:e}=i18n.useTranslation(),o=t.totalProfitInUsd,r=t.totalProfitRatio,s=t.winRate;return jsxRuntime.jsxs("div",{className:"mx-3 flex flex-wrap items-center gap-x-6 gap-y-2 rounded border border-default-100 bg-default-50 px-4 py-2 text-xs",children:[jsxRuntime.jsx(ye,{label:e("portfolio.pnl.header.total"),value:o?utils.formatAmountInUsd(o,{showPlusGtThanZero:true}):"--",tone:o?$o(o):void 0}),jsxRuntime.jsx(ye,{label:e("portfolio.pnl.summary.return"),value:r?utils.formatPercent(r,{showPlusGtThanZero:true}):"--",tone:r?$o(r):void 0}),jsxRuntime.jsx(ye,{label:e("portfolio.pnl.summary.winRate"),value:s?utils.formatPercent(s):"--"}),jsxRuntime.jsx(ye,{label:e("portfolio.pnl.summary.trades"),value:t.totalTrades!=null?t.totalTrades.toString():"--"})]})}function $o(t){let e=new utils.SafeBigNumber(t);if(e.gt(0))return "bullish";if(e.lt(0))return "bearish"}function ye({label:t,value:e,tone:o}){return jsxRuntime.jsxs("div",{className:"flex flex-col",children:[jsxRuntime.jsx("span",{className:"text-[10px] uppercase tracking-wide text-text-muted",children:t}),jsxRuntime.jsx("span",{className:ui.cn("text-sm font-medium",o==="bullish"?"text-positive":o==="bearish"?"text-negative":"text-foreground"),children:e})]})}function eo({value:t}){if(!t)return jsxRuntime.jsx("span",{className:"text-text-muted",children:"--"});let e=new utils.SafeBigNumber(t),o=e.gt(0)?"text-positive":e.lt(0)?"text-negative":"text-text-muted";return jsxRuntime.jsx("span",{className:o,children:utils.formatAmountInUsd(t,{showPlusGtThanZero:true})})}function ks({pnl:t,now:e,onRowClick:o}){let{t:r}=i18n.useTranslation();return jsxRuntime.jsxs("tr",{className:ui.cn("border-b border-default-50 hover:bg-default-50/60",o&&"cursor-pointer"),onClick:o?()=>o(t):void 0,children:[jsxRuntime.jsx("td",{className:"px-3 py-2 align-middle",children:jsxRuntime.jsxs("div",{className:"flex flex-col gap-0.5",children:[jsxRuntime.jsx("span",{className:"text-foreground",children:t.symbol}),jsxRuntime.jsx("span",{className:"font-mono text-[10px] text-text-muted",children:ct(t.address,6,6)})]})}),jsxRuntime.jsx("td",{className:"px-3 py-2 text-right align-middle text-foreground",children:utils.formatAmountInUsd(t.amountInUsd)}),jsxRuntime.jsx("td",{className:"px-3 py-2 text-right align-middle",children:jsxRuntime.jsx(eo,{value:t.totalProfitInUsd})}),jsxRuntime.jsx("td",{className:"px-3 py-2 text-right align-middle",children:jsxRuntime.jsx(eo,{value:t.realizedProfitInUsd})}),jsxRuntime.jsx("td",{className:"px-3 py-2 text-right align-middle",children:jsxRuntime.jsx(eo,{value:t.unrealizedProfitInUsd})}),jsxRuntime.jsx("td",{className:"px-3 py-2 text-right align-middle text-[10px]",children:jsxRuntime.jsx("span",{className:ui.cn("rounded px-1.5 py-0.5",t.isClosed?"bg-default/20 text-text-muted":"bg-positive/15 text-positive"),children:r(t.isClosed?"portfolio.pnl.filter.closed":"portfolio.pnl.filter.open")})}),jsxRuntime.jsx("td",{className:"px-3 py-2 text-right align-middle text-text-muted",children:t.firstBuyAt?st(t.firstBuyAt,e):"--"}),jsxRuntime.jsx("td",{className:"px-3 py-2 text-right align-middle text-text-muted",children:t.lastSellAt?st(t.lastSellAt,e):"--"})]})}function so({chain:t,address:e,limit:o=50,initialResolution:r="30d",initialPositionState:s="open",initialSortBy:a="totalPnl"}){let[n,i]=react.useState(r),[l,u]=react.useState(s),[p,f]=react.useState(a),[x,d]=react.useState(void 0),[m,h]=react.useState([]),c=react.useCallback(()=>{d(void 0),h([]);},[]),g=react.useCallback(Q=>{Q!==n&&(i(Q),c());},[n,c]),N=react.useCallback(Q=>{Q!==l&&(u(Q),c());},[l,c]),D=react.useCallback(Q=>{Q!==p&&(f(Q),c());},[p,c]);react.useEffect(()=>{c();},[t,e,c]);let S=react.useMemo(()=>({chain:t,address:e,cursor:x,limit:o,resolution:n,positionState:l,sortBy:p}),[t,e,x,o,n,l,p]),{data:w,isPending:O,isFetching:q}=react$1.useWalletPortfolioPnlsQuery(S);react.useEffect(()=>{w&&h(Q=>x==null?[w]:Q[Q.length-1]?.endCursor===w.endCursor?Q:[...Q,w]);},[w,x]);let M=react.useMemo(()=>m.length===0?void 0:{...m[0],portfolios:m.flatMap(Y=>Y.portfolios)},[m]),F=m[m.length-1],ft=!!(F?.hasNext&&F.endCursor),U=react.useCallback(()=>{!F?.endCursor||!F.hasNext||d(F.endCursor);},[F]);return {data:M,isLoading:O||q,resolution:n,setResolution:g,positionState:l,setPositionState:N,sortBy:p,setSortBy:D,hasMore:ft,loadMore:U}}function Rs({chain:t,address:e,limit:o,initialResolution:r,initialPositionState:s,initialSortBy:a,className:n,onRowClick:i}){let{data:l,isLoading:u,resolution:p,setResolution:f,positionState:x,setPositionState:d,sortBy:m,setSortBy:h,hasMore:c,loadMore:g}=so({chain:t,address:e,limit:o,initialResolution:r,initialPositionState:s,initialSortBy:a});return jsxRuntime.jsx(io,{data:l,isLoading:u,resolution:p,onResolutionChange:f,positionState:x,onPositionStateChange:d,sortBy:m,onSortByChange:h,hasMore:c,onLoadMore:g,className:n,onRowClick:i})}function Us(t){return t instanceof Error?t:new Error(String(t))}async function no(t){try{return {kind:"ok",data:await t()}}catch(e){return {kind:"error",error:Us(e)}}}function ao(t){return {getHoldings:e=>no(()=>t.getSpotHoldings(e)),getNetWorth:e=>no(()=>t.getOverview(e)),getActivitiesPage:e=>no(()=>t.getSpotHistory(e)),async getPerpsPositions(){return {kind:"unsupported",capability:"perps"}},async getPredictionBets(){return {kind:"unsupported",capability:"prediction"}},subscribeActivities(){return {unsubscribe(){}}}}}function Zo({client:t,adapter:e,children:o}){let r=react.useMemo(()=>e??ao(t),[e,t]);return jsxRuntime.jsx(xt.Provider,{value:t,children:jsxRuntime.jsx(gt.Provider,{value:r,children:o})})}var Es=15e3;function Ls(t){return Object.fromEntries(Object.entries(t).filter(([,e])=>e!==void 0))}function Jo({chain:t,address:e,enabled:o=true,summaryPollMs:r=Es}){let{setSummary:s,setSummaryStatus:a,setRefetchSummary:n}=react.useContext(Ot),i=react$1.useWalletPortfoliosQuery({chain:t,address:e},{enabled:o,refetchInterval:r}),l=react$1.useWalletPnlQuery({chain:t,address:e},{enabled:o,refetchInterval:r});react.useEffect(()=>{s(null);},[t,e,s]),react.useEffect(()=>{let p=i.isPending||l.isPending,f=i.isFetching||l.isFetching,x=i.isError||l.isError,d=i.isSuccess&&l.isSuccess;a({status:x?"error":d?"success":"pending",fetchStatus:f?"fetching":"idle",isLoading:p&&f,isPending:p,isFetching:f,isRefetching:d&&f,isError:x,isSuccess:d,error:i.error??l.error,dataUpdatedAt:Math.max(i.dataUpdatedAt,l.dataUpdatedAt)});},[i.isPending,i.isFetching,i.isError,i.isSuccess,i.error,i.dataUpdatedAt,l.isPending,l.isFetching,l.isError,l.isSuccess,l.error,l.dataUpdatedAt,a]),react.useEffect(()=>{let p=i.data,f=l.data;!p||!f||s({...f,balanceInUsd:p.balanceInUsd,balanceInNative:p.balanceInNative});},[i.data,l.data,s]),react$1.useWalletPnlSubscription({chain:t,address:e},p=>{s(f=>{if(!f)return f;let x=f;for(let d of p)x={...x,...Ls(d)};return x});},{enabled:o});let u=react.useCallback(async()=>{await Promise.all([i.refetch(),l.refetch()]);},[i,l]);react.useEffect(()=>{n(u);},[u,n]);}function rr({chain:t,address:e,children:o}){let[r,s]=react.useState(null),[a,n]=react.useState(Vs),i=react.useRef(()=>Promise.resolve()),l=react.useCallback(()=>i.current(),[]),u=react.useCallback(x=>{i.current=x;},[]),p=react.useMemo(()=>({summary:r,summaryStatus:a,refetchSummary:l}),[r,a,l]),f=react.useMemo(()=>({setSummary:s,setSummaryStatus:n,setRefetchSummary:u}),[s,n,u]);return jsxRuntime.jsx(Ot.Provider,{value:f,children:jsxRuntime.jsx(yt.Provider,{value:p,children:jsxRuntime.jsx(Ks,{chain:t,address:e,children:o})})})}function Ks({chain:t,address:e,children:o}){return Jo({chain:t,address:e,enabled:!!e}),jsxRuntime.jsx(jsxRuntime.Fragment,{children:o})}var Vs={status:"pending",fetchStatus:"idle",isLoading:false,isPending:true,isFetching:false,isRefetching:false,isError:false,isSuccess:false,error:null,dataUpdatedAt:0};function _s(t={}){let e=new Set,o=r=>({kind:"ok",data:r});return {async getHoldings(){return o(t.holdings??{holdings:[]})},async getNetWorth(){return o(t.netWorth??{totalValue:0,uPnl:0,realizedPnl:0,totalProfit:0,winRate:0})},async getActivitiesPage(){return o(t.activities??{trades:[],nextCursor:"",hasNext:false})},async getPerpsPositions(){return {kind:"unsupported",capability:"perps"}},async getPredictionBets(){return {kind:"unsupported",capability:"prediction"}},subscribeActivities(r){e.add(r);let s=false;return {unsubscribe(){s||(s=true,e.delete(r));}}}}}
|
|
2
|
+
exports.AccountInfoUI=Lt;exports.AccountInfoWidget=co;exports.AddressRowUI=Kt;exports.AssetTab=vt;exports.AssetTabsUI=_t;exports.BalanceRowUI=$t;exports.BatchActionButton=St;exports.CURVE_PERIOD_VALUE=we;exports.ConfirmDialog=Tt;exports.CurveCardUI=Gt;exports.CurvePeriod=qt;exports.CurveType=Vt;exports.DistributionCardUI=Yt;exports.HoldingsEmpty=G;exports.HoldingsSearch=it;exports.HoldingsSectionWidget=Ro;exports.HoldingsSubTabs=rt;exports.PerpsPanelUI=ce;exports.PerpsPositionSide=Te;exports.PortfolioActivities=Ge;exports.PortfolioActivitiesWidget=gs;exports.PortfolioClientContext=xt;exports.PortfolioClientProvider=Zo;exports.PortfolioContext=yt;exports.PortfolioDataAdapterContext=gt;exports.PortfolioNetWorthTokens=Ze;exports.PortfolioNetWorthTokensWidget=As;exports.PortfolioPageSkeleton=se;exports.PortfolioPageWidget=To;exports.PortfolioPnlDetails=io;exports.PortfolioPnlDetailsWidget=Rs;exports.PortfolioProvider=rr;exports.PredictionBetStatus=De;exports.PredictionPanelUI=ue;exports.PredictionResult=Re;exports.PredictionSource=Ie;exports.SpotHistoryType=ke;exports.SpotPanelUI=me;exports.TagBadge=Ho;exports.TagBadgeList=It;exports.ViewingBannerUI=ae;exports.computeDistribution=Ce;exports.createClientPortfolioDataAdapter=ao;exports.createInMemoryPortfolioDataAdapter=_s;exports.curveDataQueryKey=Ke;exports.distributionQueryKey=ho;exports.formatAgeShort=st;exports.formatPercent=he;exports.formatSignedUsd=bt;exports.formatTime=Ae;exports.formatTokenBalance=Ft;exports.formatUsd=I;exports.getExplorerUrl=Ne;exports.overviewQueryKey=Qe;exports.parseDecimal=Hr;exports.perpsHistoryQueryKey=Ee;exports.perpsPositionsQueryKey=Me;exports.predictionBetsQueryKey=Le;exports.predictionSettledQueryKey=Fe;exports.splitUsd=Se;exports.spotHistoryQueryKey=Oe;exports.spotHoldingsQueryKey=We;exports.truncateAddress=at;exports.truncateMiddle=ct;exports.useAccountInfo=Et;exports.useCurveDataQuery=oe;exports.useDistributionQuery=re;exports.useHoldingsSection=le;exports.useOverviewQuery=jt;exports.usePerpsHistoryQuery=Jt;exports.usePerpsPositionsQuery=Zt;exports.usePortfolioActivitiesScript=Xe;exports.usePortfolioClient=W;exports.usePortfolioContext=Pt;exports.usePortfolioDataAdapter=vo;exports.usePortfolioNetWorthTokensScript=Je;exports.usePortfolioPage=ie;exports.usePortfolioPnlDetailsScript=so;exports.usePredictionBetsQuery=te;exports.usePredictionSettledQuery=ee;exports.useRefetchWalletSummary=So;exports.useSpotHistoryQuery=Xt;exports.useSpotHoldingsQuery=ht;exports.useWalletPortfolios=Ao;exports.useWalletSummary=Mt;//# sourceMappingURL=index.js.map
|
|
3
3
|
//# sourceMappingURL=index.js.map
|