@liberfi.io/ui-portfolio 3.0.71 → 3.0.73
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/client/index.d.mts +5 -5
- package/dist/client/index.d.ts +5 -5
- package/dist/client/index.js.map +1 -1
- package/dist/client/index.mjs.map +1 -1
- package/dist/{index-Bq_qim6b.d.mts → index-BK-jWEQ7.d.mts} +1 -1
- package/dist/{index-Bq_qim6b.d.ts → index-BK-jWEQ7.d.ts} +1 -1
- package/dist/index.d.mts +55 -6
- package/dist/index.d.ts +55 -6
- 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 +20 -15
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=require('@liberfi.io/ui'),jsxRuntime=require('react/jsx-runtime'),recharts=require('recharts'),reactQuery=require('@tanstack/react-query'),react$1=require('@liberfi.io/react');var xe=react.createContext(null);var ge=react.createContext({}),Ue=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 $e(){let{status:e,signIn:t,signOut:o}=walletConnector.useAuth(),{data:r}=qe(),{chain:n,chainNamespace:a}=uiChainSelect.useCurrentChain(),i=walletConnector.useConnectedWallet(n),s=react.useMemo(()=>utils.getNativeToken(n),[n]),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:a,walletAddress:i?.address??""}}function Ye({status:e,signIn:t,signOut:o,balanceUsdFormatted:r,balanceNativeFormatted:n,nativeToken:a,chainNamespace:i,walletAddress:s,actions:l}){let{t:p}=i18n.useTranslation(),{isMobile:c}=ui.useScreen(),{isOpen:d,onClose:m,onOpenChange:f}=ui.useDisclosure(),v=ui.useCopyToClipboard(),u=react.useCallback(()=>{v(s,()=>ui.toast.success(p("common.primaryAddressCopied",{network:i.toUpperCase()})));},[v,i,s]);return e==="unauthenticated"?jsxRuntime.jsx(ui.Button,{isIconOnly:c,size:"sm",color:"primary",radius:"full",disableRipple:true,onPress:t,startContent:c?void 0:jsxRuntime.jsx(ui.SignInIcon,{width:16,height:16}),"aria-label":p("common.signIn"),children:c?jsxRuntime.jsx(ui.SignInIcon,{width:16,height:16}):p("common.signIn")}):e==="authenticating"?jsxRuntime.jsx(ui.Button,{isIconOnly:c,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.Button,{isIconOnly:c,size:"sm",color:"primary",radius:"full",disableRipple:true,isLoading:true,isDisabled:true,"aria-label":p("common.signingOut"),children:p("common.signingOut")}):jsxRuntime.jsxs(ui.StyledPopover,{placement:c?"bottom":"bottom-end",isOpen:d,onOpenChange:f,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-neutral"}),endContent:jsxRuntime.jsx(ui.ChevronDownIcon,{width:16,height:16,className:ui.cn("text-neutral transition-transform",d&&"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:c?n:`${n} ${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-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.StyledTooltip,{content:p("common.copyPrimaryAddress",{network:i.toUpperCase()}),children:jsxRuntime.jsx(ui.Button,{className:"text-xs bg-transparent text-neutral hover:text-foreground h-4 min-h-4 gap-1",startContent:jsxRuntime.jsx(ui.CopyIcon,{width:14,height:14}),disableRipple:true,disableAnimation:true,onPress:u,children:i.toUpperCase()})})})]}),jsxRuntime.jsx(ui.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(),m();},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(),m();},children:[jsxRuntime.jsx(ui.SignOutIcon,{width:16,height:16}),jsxRuntime.jsx("span",{className:"w-full truncate text-center text-xs",children:p("common.signOut")})]})]})]})})]})}function ir({actions:e}){let t=$e();return jsxRuntime.jsx(Ye,{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 $s(e){if(!e)return 0;let t=Number(e);return Number.isFinite(t)?t:0}function I(e){return utils.formatAmountInUsd(e)}function Pe(e){let t=I(Math.abs(e));return e>0?`+${t}`:e<0?`-${t.replace("-","")}`:t}function Ut(e){return `${e>0?"+":""}${e.toFixed(2)}%`}function Dt(e){let o=Math.abs(e).toFixed(2).split("."),r=Number(o[0]).toLocaleString("en-US"),n=`.${o[1]}`;return {sign:e<0?"-$":"$",integer:r,decimal:n}}function ue(e,t=4,o=4){return e.length<=t+o+3?e:`${e.slice(0,t)}\u2026${e.slice(-o)}`}function Ge(e){return utils.formatAmount(e)}function Bt(e,t){return `https://solscan.io/tx/${e}`}var Rt=["#C8FF00","#00E676","#0066FF","#FF6B9D","#8B7BFF","#FF5252","#FFB74D","#4DD0E1"],dr="#3A3A4E";function Ht(e){let t=e.reduce((i,s)=>i+s.value,0);if(t<=0)return {items:[]};let o=[...e].sort((i,s)=>s.value-i.value),r=[],n=0,a=0;for(let i of o){let s=i.value/t*100;s<2?n+=i.value:(r.push({name:i.name,symbol:i.symbol,percent:s,value:i.value,color:Rt[a%Rt.length]}),a++);}return n>0&&r.push({name:"Other",symbol:"OTHER",percent:n/t*100,value:n,color:dr}),{items:r}}function Ot(e){return new Date(e).toLocaleDateString("en-US",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",hour12:false})}function je({walletId:e,wallets:t,isViewing:o,viewingAddress:r,onSelectWallet:n,onCopyAddress:a,onSearch:i}){let[s,l]=react.useState(false),[p,c]=react.useState(""),d=react.useRef(null),m=!e&&!o,f=t.find(S=>S.id===e),v=o?"External":m?"All Wallets":f?.name??"",u=o?ue(r??""):m?"Aggregated":ue(f?.address??""),x=o?"bg-[#5C5C72]":m?"bg-[#C8FF00]":"bg-[#00E676]",g=react.useCallback(()=>{let S=p.trim();S.length>=32&&(i(S),c(""));},[p,i]),w=react.useCallback(S=>{S.key==="Enter"&&g();},[g]);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:d,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-[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(S=>!S),children:[jsxRuntime.jsx("span",{className:ui.cn("h-[7px] w-[7px] flex-shrink-0 rounded-full",x)}),jsxRuntime.jsx("span",{className:"text-[11px] font-medium text-[#A0A0B8]",children:v}),jsxRuntime.jsx("span",{className:"font-mono text-xs text-foreground",children:u}),!o&&jsxRuntime.jsx("svg",{className:ui.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.cn("flex w-full items-center gap-2 rounded-[5px] px-2.5 py-2 transition-colors hover:bg-[#1C1C26]",m&&"bg-[rgba(200,255,0,0.07)]"),onClick:()=>{n(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(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-[#1C1C26]",e===S.id&&"bg-[rgba(200,255,0,0.07)]"),onClick:()=>{n(S.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:S.name}),jsxRuntime.jsx("span",{className:"font-mono text-[11px] text-[#5C5C72]",children:ue(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-[#5C5C72] transition-colors hover:bg-[#1C1C26] hover:text-[#C8FF00]",m&&!o&&"pointer-events-none opacity-40"),onClick:a,disabled:m&&!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.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:S=>c(S.target.value),onKeyDown:w})]}),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:g,children:"View"})]})]})}var he=(r=>(r.SPOT="spot",r.PERPS="perps",r.PREDICTION="prediction",r))(he||{}),Xe=(o=>(o.NET_WORTH="networth",o.PNL="pnl",o))(Xe||{}),Ze=(n=>(n.ONE_DAY="1D",n.SEVEN_DAY="7D",n.THIRTY_DAY="30D",n.MAX="Max",n))(Ze||{}),Wt={"1D":1,"7D":7,"30D":30,Max:365},Lt=(o=>(o.LONG="long",o.SHORT="short",o))(Lt||{}),Mt=(r=>(r.SWAP="swap",r.SEND="send",r.RECEIVE="receive",r))(Mt||{}),Vt=(o=>(o.ACTIVE="active",o.PENDING="pending",o))(Vt||{}),_t=(o=>(o.WON="won",o.LOST="lost",o))(_t||{}),Kt=(r=>(r.POLYMARKET="polymarket",r.DRIFT="drift",r.METADAO="metadao",r))(Kt||{});var mr=[{key:"spot",label:"Spot"},{key:"perps",label:"Perps"},{key:"prediction",label:"Prediction"}];function xr(e,t,o,r){switch(e){case "spot":return t;case "perps":return o;case "prediction":return r}}function Je({activeTab:e,onTabChange:t,spotValue:o=0,perpsValue:r=0,predictionValue:n=0}){return jsxRuntime.jsx("div",{className:"flex gap-1 border-b border-[#252530] pb-0 pt-5",children:mr.map(({key:a,label:i})=>{let s=e===a,l=xr(a,o,r,n);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",s?"border-[#C8FF00] text-foreground":"border-transparent text-[#5C5C72] hover:text-[#A0A0B8]"),onClick:()=>t(a),children:[i,!s&&jsxRuntime.jsx("span",{className:"rounded-[10px] bg-[#16161E] px-2 py-0.5 font-mono text-[11px] text-[#5C5C72]",children:I(l)})]},a)})})}function tt({overview:e}){let t=e?.totalValue??0,o=e?.uPnl??0,r=e?.realizedPnl??0,n=e?.totalProfit??0,{sign:a,integer:i,decimal:s}=Dt(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:a}),i,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(et,{label:"uPNL",value:o}),jsxRuntime.jsx(zt,{}),jsxRuntime.jsx(et,{label:"Realized",value:r}),jsxRuntime.jsx(zt,{}),jsxRuntime.jsx(et,{label:"Total Profit",value:n})]})]})}function et({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.cn("font-mono text-xs font-medium",t>0?"text-[#00E676]":t<0?"text-[#FF5252]":"text-[#5C5C72]"),children:Pe(t)})]})}function zt(){return jsxRuntime.jsx("div",{className:"h-3.5 w-px bg-[#252530]"})}var Nr=["1D","7D","30D","Max"];function $t(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 Ar(e){return e==="pnl"?"change":"netWorth"}function rt({curveType:e,curvePeriod:t,data:o,isLoading:r,onTypeChange:n,onPeriodChange:a}){let i=o?.points??[],s=Ar(e),l=e==="pnl",p=react.useMemo(()=>i.map(u=>l?u.change:u.netWorth),[i,l]),c=p.some(u=>u<0),{minVal:d,maxVal:m}=react.useMemo(()=>{if(p.length===0)return {minVal:0,maxVal:100};let u=Math.min(...p),x=Math.max(...p),g=x-u||1;return {minVal:u-g*.1,maxVal:x+g*.1}},[p]),f=react.useMemo(()=>{if(i.length===0)return [];let u=Math.min(7,i.length),x=Math.max(1,Math.floor((i.length-1)/(u-1))),g=[];for(let S=0;S<i.length;S+=x)g.push({ts:i[S].timestamp,label:$t(i[S].timestamp,t)});let w=i[i.length-1];return g[g.length-1]?.ts!==w.timestamp&&g.push({ts:w.timestamp,label:$t(w.timestamp,t)}),g},[i,t]),v=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(Yt,{label:"Net Worth",active:e==="networth",onClick:()=>n("networth")}),jsxRuntime.jsx(Yt,{label:"PNL",active:e==="pnl",onClick:()=>n("pnl")})]}),jsxRuntime.jsx("div",{className:"flex gap-0.5",children:Nr.map(u=>jsxRuntime.jsx("button",{type:"button",className:ui.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:()=>a(u),children:u},u))})]}),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-[#5C5C72]",children:r?"":"Not enough data"})}):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:"#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:[d,m]}),l&&c&&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?v>=0?"#00E676":"#FF5252":"#C8FF00",strokeWidth:1.5,fill:l?v>=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:f.map(({ts:u,label:x})=>jsxRuntime.jsx("span",{className:"font-mono text-[9px] text-[#3A3A4E]",children:x},u))})]})}function Yt({label:e,active:t,onClick:o}){return jsxRuntime.jsx("button",{type:"button",className:ui.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 st({data:e,isLoading:t}){let o=e?.items??[],r=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||o.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:r,cx:"50%",cy:"50%",innerRadius:32,outerRadius:55,dataKey:"value",stroke:"none",isAnimationActive:false,children:o.map((n,a)=>jsxRuntime.jsx(recharts.Cell,{fill:n.color},a))})})})}),jsxRuntime.jsx("div",{className:"px-4 pb-3 pt-2",children:o.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:I(n.value)})]},a))})]})}function H(){let e=react.useContext(xe);if(!e)throw new Error("usePortfolioClient must be used within a PortfolioClientProvider");return e}function jt(e){return ["portfolio","overview",e??{}]}async function Dr(e,t){return await e.getOverview(t)}function it(e,t={}){let o=H();return reactQuery.useQuery({queryKey:jt(e),queryFn:async()=>Dr(o,e),...t})}function Xt(e){return ["portfolio","spot","holdings",e??{}]}async function Hr(e,t){return await e.getSpotHoldings(t)}function ve(e,t={}){let o=H();return reactQuery.useQuery({queryKey:Xt(e),queryFn:async()=>Hr(o,e),...t})}function Zt(e){return ["portfolio","spot","history",e??{}]}async function Er(e,t){return await e.getSpotHistory(t)}function at(e,t={}){let o=H();return reactQuery.useQuery({queryKey:Zt(e),queryFn:async()=>Er(o,e),...t})}function Jt(e){return ["portfolio","perps","positions",e??{}]}async function Wr(e,t){return await e.getPerpsPositions(t)}function lt(e,t={}){let o=H();return reactQuery.useQuery({queryKey:Jt(e),queryFn:async()=>Wr(o,e),...t})}function eo(e){return ["portfolio","perps","history",e??{}]}async function Mr(e,t){return await e.getPerpsHistory(t)}function pt(e,t={}){let o=H();return reactQuery.useQuery({queryKey:eo(e),queryFn:async()=>Mr(o,e),...t})}function to(e){return ["portfolio","prediction","active",e??{}]}async function _r(e,t){return await e.getPredictionBets(t)}function dt(e,t={}){let o=H();return reactQuery.useQuery({queryKey:to(e),queryFn:async()=>_r(o,e),...t})}function oo(e){return ["portfolio","prediction","settled",e??{}]}async function qr(e,t){return await e.getPredictionSettled(t)}function ct(e,t={}){let o=H();return reactQuery.useQuery({queryKey:oo(e),queryFn:async()=>qr(o,e),...t})}function ro(e){return ["portfolio","chart",e]}async function $r(e,t){return await e.getChartData(t)}function ut(e,t={}){let o=H();return reactQuery.useQuery({queryKey:ro(e),queryFn:async()=>$r(o,e),...t})}function Gr(){return ["portfolio","distribution"]}function ft(e){return {data:react.useMemo(()=>Ht(e),[e])}}function jr(){let{refetchSummary:e}=ye();return e}var nn=15e3;function so(e){return Object.fromEntries(Object.entries(e).filter(([,t])=>t!==void 0))}function sn({chain:e,address:t,tokenAddresses:o,pollMs:r=nn}){let n=!!t&&o.length>0,[a,i]=react.useState({}),s=react$1.useWalletPortfoliosByTokensQuery({chain:e,address:t,tokenAddresses:o},{enabled:n,refetchInterval:r}),l=react$1.useWalletPortfolioPnlsByTokensQuery({chain:e,address:t,tokenAddresses:o},{enabled:n,refetchInterval:r});react.useEffect(()=>{let v=s.data??[],u=new Map;if(l.data)for(let g of l.data)u.set(g.address,g);let x={};for(let g of v)x[g.address]={...g,pnl:u.get(g.address)??null};i(x);},[s.data,l.data]);let p=react.useRef(""),c=react.useRef(new Set),d=o.slice().sort().join(",");d!==p.current&&(p.current=d,c.current=new Set(o));let m=c.current;react$1.useWalletPortfoliosSubscription({chain:e,address:t},v=>{i(u=>{let x=u;for(let g of v){if(!m.has(g.tokenAddress))continue;let w=x[g.tokenAddress];if(!w)continue;let{chain:S,walletAddress:B,tokenAddress:O,...E}=g,_=so(E);Object.keys(_).length!==0&&(x=x===u?{...u}:x,x[g.tokenAddress]={...w,..._});}return x});},{enabled:n}),react$1.useWalletPortfolioPnlsSubscription({chain:e,address:t},v=>{i(u=>{let x=u;for(let g of v){if(!m.has(g.tokenAddress))continue;let w=x[g.tokenAddress];if(!w||!w.pnl)continue;let{walletAddress:S,tokenAddress:B,...O}=g,E=so(O);Object.keys(E).length!==0&&(x=x===u?{...u}:x,x[g.tokenAddress]={...w,pnl:{...w.pnl,...E}});}return x});},{enabled:n});let f=react.useCallback(async()=>{await Promise.all([s.refetch(),l.refetch()]);},[s.refetch,l.refetch]);return {tokens:a,isPending:s.isPending,isFetching:s.isFetching||l.isFetching,isError:s.isError,isSuccess:s.isSuccess,error:s.error,refetch:f}}function xt(e){let{defaultTab:t="spot",walletAddresses:o,chain:r}=e??{},[n,a]=react.useState(t),[i,s]=react.useState(void 0),[l,p]=react.useState(void 0),[c,d]=react.useState("networth"),[m,f]=react.useState("7D"),v=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=it(u),g=ve(u),w=ut({period:Wt[m],...u}),S=ft(g.data?.holdings??[]),B=react.useMemo(()=>g.data?.holdings.reduce((W,D)=>W+D.value,0)??0,[g.data]),O=react.useCallback(W=>{p(W);},[]),E=react.useCallback(()=>{p(void 0);},[]),_=react.useCallback(W=>{s(W);},[]);return {activeTab:n,setActiveTab:a,walletId:i,selectWallet:_,viewingAddress:l,isViewing:v,curveType:c,setCurveType:d,curvePeriod:m,setCurvePeriod:f,portfolioQuery:u,overviewQuery:x,curveQuery:w,distributionQuery:S,spotHoldingsQuery:g,spotValue:B,perpsValue:0,predictionValue:0,enterViewing:O,exitViewing:E}}function gt(){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.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-[#252530]"}),jsxRuntime.jsx(ui.Skeleton,{className:"h-4 w-28 rounded"}),jsxRuntime.jsx("div",{className:"h-3.5 w-px bg-[#252530]"}),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-[#252530] bg-[#0F0F16] 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((e,t)=>jsxRuntime.jsx(ui.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.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((e,t)=>jsxRuntime.jsx(ui.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.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((e,t)=>jsxRuntime.jsx(ui.Skeleton,{className:"mb-2 h-12 w-full rounded-[5px]"},t))]})]})}function yt({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:ue(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 an({wallets:e=[],onCopyAddress:t,renderHoldings:o,isLoading:r,...n}){let a=xt(n),{activeTab:i,setActiveTab:s,walletId:l,selectWallet:p,viewingAddress:c,isViewing:d,curveType:m,setCurveType:f,curvePeriod:v,setCurvePeriod:u,portfolioQuery:x,overviewQuery:g,curveQuery:w,distributionQuery:S,spotValue:B,perpsValue:O,predictionValue:E,enterViewing:_,exitViewing:W}=a;return r||g.isLoading&&!g.data?jsxRuntime.jsx(gt,{}):jsxRuntime.jsxs("div",{children:[d&&c&&jsxRuntime.jsx(yt,{viewingAddress:c,onBack:W}),jsxRuntime.jsxs("div",{className:"mx-auto max-w-[1280px] px-6",children:[jsxRuntime.jsx(Je,{activeTab:i,onTabChange:s,spotValue:B,perpsValue:O,predictionValue:E}),jsxRuntime.jsx(je,{walletId:l,wallets:e,isViewing:d,viewingAddress:c,onSelectWallet:p,onCopyAddress:()=>{if(d&&c)t?.(c);else {let J=e.find(C=>C.id===l);J&&t?.(J.address);}},onSearch:_}),jsxRuntime.jsx(tt,{overview:g.data}),jsxRuntime.jsxs("div",{className:"grid grid-cols-[1fr_340px] gap-3 pb-4",children:[jsxRuntime.jsx(rt,{curveType:m,curvePeriod:v,data:w.data,isLoading:w.isLoading,onTypeChange:f,onPeriodChange:u}),jsxRuntime.jsx(st,{data:S.data,isLoading:false})]}),o?.({activeTab:i,portfolioQuery:x,isViewing:d})]})]})}function He({open:e,title:t,message:o,confirmLabel:r,cancelLabel:n,onConfirm:a,onCancel:i}){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:i,onKeyDown:s=>{s.key==="Escape"&&i();},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:i,children:n}),jsxRuntime.jsx("button",{type:"button",className:ui.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:a,children:r})]})]})]}):null}function vt({activeTab:e,portfolioQuery:t,isViewing:o}){let[r,n]=react.useState("holdings"),[a,i]=react.useState("positions"),[s,l]=react.useState("active"),[p,c]=react.useState(""),[d,m]=react.useState(""),[f,v]=react.useState(""),[u,x]=react.useState(false),[g,w]=react.useState(false),S=react.useCallback(()=>{w(Q=>!Q);},[]),B=ve(t,{enabled:e==="spot"}),O=at(t,{enabled:e==="spot"&&r==="history"}),E=lt(t,{enabled:e==="perps"}),_=pt(t,{enabled:e==="perps"&&a==="history"}),W=dt(t,{enabled:e==="prediction"}),D=ct(t,{enabled:e==="prediction"&&s==="settled"}),ce=react.useMemo(()=>(B.data?.holdings??[]).filter(Y=>{if(u&&Y.value<1&&!Y.verified)return false;if(p){let L=p.toLowerCase();return Y.name.toLowerCase().includes(L)||Y.symbol.toLowerCase().includes(L)}return true}),[B.data?.holdings,u,p]),J=react.useMemo(()=>{let Q=E.data?.positions??[];if(!d)return Q;let Y=d.toLowerCase();return Q.filter(L=>L.pair.toLowerCase().includes(Y))},[E.data?.positions,d]),C=react.useMemo(()=>{let Q=W.data?.bets??[];if(!f)return Q;let Y=f.toLowerCase();return Q.filter(L=>L.market.toLowerCase().includes(Y))},[W.data?.bets,f]);return {spotSubTab:r,setSpotSubTab:n,perpsSubTab:a,setPerpsSubTab:i,predictionSubTab:s,setPredictionSubTab:l,spotSearch:p,setSpotSearch:c,perpsSearch:d,setPerpsSearch:m,predictionSearch:f,setPredictionSearch:v,hideSmall:u,setHideSmall:x,groupCollapsed:g,toggleGroupCollapsed:S,spotHoldingsQuery:B,spotHistoryQuery:O,perpsPositionsQuery:E,perpsHistoryQuery:_,predictionBetsQuery:W,predictionSettledQuery:D,filteredSpotHoldings:ce,filteredPerpsPositions:J,filteredPredictionBets:C,isViewing:o}}function le({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.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 pe({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 j({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 Ne({label:e,disabled:t,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",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 Ct({state:e,onClosePosition:t,onCloseAll:o}){let{t:r}=i18n.useTranslation(),{perpsSubTab:n,setPerpsSubTab:a,perpsSearch:i,setPerpsSearch:s,filteredPerpsPositions:l,perpsHistoryQuery:p,isViewing:c}=e,d=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(le,{tabs:[{key:"positions",label:r("portfolio.perps.openPositions")},{key:"history",label:r("portfolio.perps.tradeHistory")}],activeKey:n,onTabChange:m=>a(m)}),n==="positions"&&!c&&jsxRuntime.jsx(Ne,{label:r("portfolio.perps.closeAll"),disabled:!d,onClick:()=>o?.()})]}),jsxRuntime.jsx(pe,{value:i,onChange:s,placeholder:r("portfolio.perps.search.placeholder")})]}),n==="positions"?jsxRuntime.jsx(dn,{positions:l,isViewing:c,onClose:t}):jsxRuntime.jsx(un,{records:p.data?.records??[],isLoading:p.isLoading})]})}function dn({positions:e,isViewing:t,onClose:o}){let{t:r}=i18n.useTranslation();return e.length===0?jsxRuntime.jsx(j,{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(n=>jsxRuntime.jsx(cn,{position:n,isViewing:t,onClose:o},n.id))})]})}function cn({position:e,isViewing:t,onClose:o}){let{t:r}=i18n.useTranslation(),n=e.side==="long",a=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.cn("rounded px-1.5 py-0.5 text-[10px] font-medium",n?"bg-[rgba(0,230,118,0.12)] text-[#00E676]":"bg-[rgba(255,82,82,0.12)] text-[#FF5252]"),children:r(n?"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:I(e.size)}),jsxRuntime.jsx("span",{className:"text-right font-mono text-xs text-[#A0A0B8]",children:I(e.entryPrice)}),jsxRuntime.jsx("span",{className:"text-right font-mono text-xs text-[#A0A0B8]",children:I(e.markPrice)}),jsxRuntime.jsx("span",{className:ui.cn("text-right font-mono text-xs",a?"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 un({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(j,{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(fn,{record:r},r.id))})]})}function fn({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.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:I(e.size)}),jsxRuntime.jsx("span",{className:ui.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:I(e.closePrice)}),jsxRuntime.jsx("span",{className:"text-right text-[11px] text-[#5C5C72]",children:e.time})]})}function St({state:e,onSellBet:t,onSellAll:o}){let{predictionSubTab:r,setPredictionSubTab:n,predictionSearch:a,setPredictionSearch:i,filteredPredictionBets:s,predictionSettledQuery:l,isViewing:p}=e,c=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(le,{tabs:[{key:"active",label:"Active Bets"},{key:"settled",label:"Settled"}],activeKey:r,onTabChange:d=>n(d)}),r==="active"&&!p&&jsxRuntime.jsx(Ne,{label:"Sell All",disabled:!c,onClick:()=>o?.()})]}),jsxRuntime.jsx(pe,{value:a,onChange:i,placeholder:"Search market\u2026"})]}),r==="active"?jsxRuntime.jsx(gn,{bets:s,isViewing:p,onSell:t}):jsxRuntime.jsx(bn,{records:l.data?.records??[],isLoading:l.isLoading})]})}var mn={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]"},xn={polymarket:"Polymarket",drift:"Drift",metadao:"MetaDAO"};function lo({source:e}){return jsxRuntime.jsx("span",{className:ui.cn("inline-block rounded px-1.5 py-0.5 text-[10px] font-medium",mn[e]),children:xn[e]})}function gn({bets:e,isViewing:t,onSell:o}){return e.length===0?jsxRuntime.jsx(j,{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(yn,{bet:r,isViewing:t,onSell:o},r.id))})]})}function yn({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(lo,{source:e.source})]})]}),jsxRuntime.jsx("span",{className:ui.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:I(e.stake)}),jsxRuntime.jsx("span",{className:"text-right font-mono text-xs text-[#00E676]",children:I(e.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",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 bn({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(j,{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(Pn,{record:o},o.id))})]})}function Pn({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(lo,{source:e.source}),jsxRuntime.jsx("span",{className:ui.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:I(e.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",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.cn("text-right font-mono text-xs",t?"text-[#00E676]":"text-[#5C5C72]"),children:t?`+${I(e.payout)}`:I(e.payout)})]})}function At({state:e}){let{spotSubTab:t,setSpotSubTab:o,spotSearch:r,setSpotSearch:n,hideSmall:a,setHideSmall:i,groupCollapsed:s,toggleGroupCollapsed:l,filteredSpotHoldings:p,spotHistoryQuery:c}=e;return jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-between pb-3",children:[jsxRuntime.jsx(le,{tabs:[{key:"holdings",label:"Holdings"},{key:"history",label:"History"}],activeKey:t,onTabChange:d=>o(d)}),jsxRuntime.jsxs("div",{className:"flex items-center gap-2",children:[jsxRuntime.jsx(pe,{value:r,onChange:n,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:a,onChange:d=>i(d.target.checked)}),"Hide small"]})]})]}),t==="holdings"?jsxRuntime.jsx(hn,{holdings:p,groupCollapsed:s,onToggleGroup:l}):jsxRuntime.jsx(Cn,{records:c.data?.trades??[],isLoading:c.isLoading})]})}function hn({holdings:e,groupCollapsed:t,onToggleGroup:o}){return e.length===0?jsxRuntime.jsx(j,{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.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(vn,{holding:r},r.tokenAddress))})]})}function vn({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:Ge(e.balance)}),jsxRuntime.jsx("span",{className:"text-right font-mono text-xs text-[#A0A0B8]",children:I(e.price)}),jsxRuntime.jsx("span",{className:"text-right font-mono text-xs text-foreground",children:I(e.value)}),jsxRuntime.jsx("span",{className:ui.cn("text-right font-mono text-xs",t?"text-[#00E676]":"text-[#FF5252]"),children:Ut(e.change24h)})]})}function Cn({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(j,{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(wn,{record:o},`${o.txHash}-${o.tokenAddress}`))})]})}var Sn={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]"},Nn={swap:"Swap",send:"Send",receive:"Receive"};function An(e){return e.type==="swap"&&e.sideTokenSymbol?`${e.tokenSymbol} \u2192 ${e.sideTokenSymbol}`:e.tokenName||e.tokenSymbol}function wn({record:e}){let t=Bt(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.cn("inline-block rounded px-1.5 py-0.5 text-[10px] font-medium",Sn[e.type]),children:Nn[e.type]})}),jsxRuntime.jsx("span",{className:"truncate text-xs text-foreground",children:An(e)}),jsxRuntime.jsxs("span",{className:"text-right font-mono text-xs text-foreground",children:[Ge(e.tokenAmount)," ",e.tokenSymbol]}),jsxRuntime.jsx("span",{className:"text-right font-mono text-xs text-[#A0A0B8]",children:I(e.valueUsd)}),jsxRuntime.jsx("span",{className:"text-right text-[11px] text-[#5C5C72]",children:e.timestamp?Ot(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 kn({onClosePosition:e,onCloseAllPositions:t,onSellBet:o,onSellAllBets:r,...n}){let a=vt(n),[i,s]=react.useState(null),l=react.useCallback(()=>{s("closeAll");},[]),p=react.useCallback(()=>{s("sellAll");},[]),c=react.useCallback(()=>{i==="closeAll"?t?.():i==="sellAll"&&r?.(),s(null);},[i,t,r]),d=react.useCallback(()=>{s(null);},[]);return jsxRuntime.jsxs("div",{className:"rounded-xl border border-[#1C1C26] bg-[#0E0E16] p-4",children:[(()=>{switch(n.activeTab){case "spot":return jsxRuntime.jsx(At,{state:a});case "perps":return jsxRuntime.jsx(Ct,{state:a,onClosePosition:e,onCloseAll:l});case "prediction":return jsxRuntime.jsx(St,{state:a,onSellBet:o,onSellAll:p});default:return null}})(),jsxRuntime.jsx(He,{open:i==="closeAll",title:"Close All Positions",message:"Close all positions? This will route to each protocol to execute.",confirmLabel:"Confirm Close All",cancelLabel:"Cancel",onConfirm:c,onCancel:d}),jsxRuntime.jsx(He,{open:i==="sellAll",title:"Sell All Positions",message:"Sell all positions? This will route to each platform to execute.",confirmLabel:"Confirm Sell All",cancelLabel:"Cancel",onConfirm:c,onCancel:d})]})}function de(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,n=Math.max(0,Math.floor((r.getTime()-o.getTime())/1e3));if(n<60)return `${n}s`;let a=Math.floor(n/60);if(a<60)return `${a}m`;let i=Math.floor(a/60);if(i<24)return `${i}h`;let s=Math.floor(i/24);if(s<30)return `${s}d`;let l=Math.floor(s/30);return l<12?`${l}mo`:`${Math.floor(s/365)}y`}function me(e,t=4,o=4){return e?e.length<=t+o+1?e:`${e.slice(0,t)}\u2026${e.slice(-o)}`:"--"}var In={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 Rn({tag:e,className:t}){let o=In[e]??{label:e,bgClass:"bg-default/20",textClass:"text-default-500"};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",o.bgClass,o.textClass,t),children:o.label})}function We({tags:e,className:t,max:o}){if(!e||e.length===0)return null;let r=o!=null&&o>0?e.slice(0,o):e,n=e.length-r.length;return jsxRuntime.jsxs("div",{className:ui.cn("flex flex-wrap items-center gap-1",t),children:[r.map(a=>jsxRuntime.jsx(Rn,{tag:a},a)),n>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:["+",n]})]})}var Dn=[{value:"timestamp",label:"Latest"},{value:"totalUsd",label:"Top USD"}],Bn=[{value:"all",label:"All"},{value:"buy",label:"Buys"},{value:"sell",label:"Sells"}];function mo({activities:e,isLoading:t,sortBy:o,onSortByChange:r,typeFilter:n="all",onTypeFilterChange:a,onLoadMore:i,hasMore:s,now:l=Date.now(),nativeDecimals:p=9,nativeSymbol:c="SOL",className:d,onRowClick:m}){return jsxRuntime.jsxs("div",{className:ui.cn("flex flex-col",d),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:Bn.map(f=>jsxRuntime.jsx("button",{type:"button",onClick:()=>a?.(f.value),className:ui.cn("rounded px-2 py-1 text-[11px] transition-colors",n===f.value?"bg-default-100 text-foreground":"text-default-400 hover:text-foreground"),children:f.label},f.value))}),jsxRuntime.jsx("div",{className:"flex items-center gap-1",children:Dn.map(f=>jsxRuntime.jsx("button",{type:"button",onClick:()=>r(f.value),className:ui.cn("rounded px-2 py-1 text-[11px] transition-colors",o===f.value?"bg-default-100 text-foreground":"text-default-400 hover:text-foreground"),children:f.label},f.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(f=>jsxRuntime.jsx(En,{activity:f,now:l,nativeDecimals:p,nativeSymbol:c,onRowClick:m},`${f.txHash}-${f.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:i,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 Hn(e){return e.type==="buy"?e.to:e.type==="sell"?e.from:e.to}function On(e,t,o){if(!e)return "--";let r=Number(e)/Math.pow(10,t);return Number.isFinite(r)?`${utils.formatAmount(r)} ${o}`:"--"}function En({activity:e,now:t,nativeDecimals:o,nativeSymbol:r,onRowClick:n}){let a=Hn(e),i=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.cn("border-b border-default-50 hover:bg-default-50/60",n&&"cursor-pointer"),onClick:n?()=>n(e):void 0,children:[jsxRuntime.jsx("td",{className:ui.cn("px-3 py-2 align-middle font-medium capitalize",s),children:i}),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-default-400",children:me(a.address,6,6)})]})}),jsxRuntime.jsxs("td",{className:"px-3 py-2 text-right align-middle text-default-500",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(We,{tags:e.traderTags,max:2})}),jsxRuntime.jsx("td",{className:"px-3 py-2 text-right align-middle text-default-400",children:On(e.gasFee,o,r)}),jsxRuntime.jsx("td",{className:"px-3 py-2 text-right align-middle text-default-400",children:de(e.time,t)})]})}function yo({chain:e,address:t,limit:o=50,initialSortBy:r="timestamp",initialTypeFilter:n="all"}){let[a,i]=react.useState(r),[s,l]=react.useState(n),[p,c]=react.useState(void 0),[d,m]=react.useState([]),[f,v]=react.useState([]),u=react.useCallback(()=>{c(void 0),m([]),v([]);},[]),x=react.useCallback(C=>{C!==a&&(i(C),u());},[a,u]),g=react.useCallback(C=>{C!==s&&(l(C),u());},[s,u]);react.useEffect(()=>{u();},[e,t,u]);let w=s==="all"?void 0:s,S=react.useMemo(()=>({chain:e,address:t,cursor:p,limit:o,sortBy:a,type:w}),[e,t,p,o,a,w]),{data:B,isPending:O,isFetching:E}=react$1.useWalletActivitiesQuery(S);react.useEffect(()=>{B&&m(C=>p==null?[B]:C[C.length-1]?.endCursor===B.endCursor?C:[...C,B]);},[B,p]);let _=a==="timestamp"&&s==="all"&&p==null;react$1.useWalletActivitiesSubscription({chain:e,address:t},C=>{!_||!C?.length||v(Q=>{let Y=new Set(Q.map(Ke=>Ke.txHash)),L=C.filter(Ke=>!Y.has(Ke.txHash));return L.length===0?Q:[...L,...Q].slice(0,100)});});let W=react.useMemo(()=>{let C=d.flatMap(L=>L.data);if(!_||f.length===0)return C;let Q=new Set(C.map(L=>L.txHash));return [...f.filter(L=>!Q.has(L.txHash)),...C]},[d,f,_]),D=d[d.length-1],ce=!!(D?.hasNext&&D.endCursor),J=react.useCallback(()=>{!D?.endCursor||!D.hasNext||c(D.endCursor);},[D]);return {activities:W,isLoading:O||E,sortBy:a,setSortBy:x,typeFilter:s,setTypeFilter:g,hasMore:ce,loadMore:J}}function op({chain:e,address:t,limit:o,initialSortBy:r,initialTypeFilter:n,nativeDecimals:a,nativeSymbol:i,className:s,onRowClick:l}){let{activities:p,isLoading:c,sortBy:d,setSortBy:m,typeFilter:f,setTypeFilter:v,hasMore:u,loadMore:x}=yo({chain:e,address:t,limit:o,initialSortBy:r,initialTypeFilter:n});return jsxRuntime.jsx(mo,{activities:p,isLoading:c,sortBy:d,onSortByChange:m,typeFilter:f,onTypeFilterChange:v,hasMore:u,onLoadMore:x,className:s,nativeDecimals:a,nativeSymbol:i,onRowClick:l})}function ho({data:e,isLoading:t,className:o,now:r=Date.now(),onRowClick:n,onLoadMore:a,hasMore:i}){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-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(_n,{portfolio:s,now:r,onRowClick:n},`${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"})})]})]})}),i&&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 _n({portfolio:e,now:t,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(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:me(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(We,{tags:e.walletTokenTags,max:2})}),jsxRuntime.jsx("td",{className:"px-3 py-2 text-right align-middle text-default-400",children:e.lastActiveAt?de(e.lastActiveAt,t):"--"})]})}function So({chain:e,address:t,limit:o=50}){let[r,n]=react.useState(void 0),[a,i]=react.useState([]);react.useEffect(()=>{i([]),n(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&&i(v=>r==null?[s]:v[v.length-1]?.endCursor===s.endCursor?v:[...v,s]);},[s,r]);let c=react.useMemo(()=>a.length===0?void 0:{...a[0],portfolios:a.flatMap(u=>u.portfolios)},[a]),d=a[a.length-1],m=!!(d?.hasNext&&d.endCursor),f=react.useCallback(()=>{!d?.endCursor||!d.hasNext||n(d.endCursor);},[d]);return {data:c,isLoading:l||p,hasMore:m,loadMore:f}}function Pp({chain:e,address:t,limit:o,className:r,onRowClick:n}){let{data:a,isLoading:i,hasMore:s,loadMore:l}=So({chain:e,address:t,limit:o});return jsxRuntime.jsx(ho,{data:a,isLoading:i,className:r,hasMore:s,onLoadMore:l,onRowClick:n})}var Yn=[{value:"7d",label:"7D"},{value:"30d",label:"30D"},{value:"90d",label:"90D"}],Gn=[{value:"open",label:"Open"},{value:"closed",label:"Closed"},{value:"all",label:"All"}],jn=[{value:"totalPnl",label:"Total"},{value:"realizedPnl",label:"Realized"},{value:"unrealizedPnl",label:"Unrealized"}];function To({data:e,isLoading:t,resolution:o,onResolutionChange:r,positionState:n,onPositionStateChange:a,sortBy:i,onSortByChange:s,hasMore:l,onLoadMore:p,now:c=Date.now(),className:d,onRowClick:m}){return jsxRuntime.jsxs("div",{className:ui.cn("flex flex-col gap-2",d),children:[jsxRuntime.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-2 px-3 py-2",children:[jsxRuntime.jsx(wt,{label:"Window",options:Yn,value:o,onChange:r}),jsxRuntime.jsx(wt,{label:"Status",options:Gn,value:n,onChange:a}),jsxRuntime.jsx(wt,{label:"Sort",options:jn,value:i,onChange:s})]}),e&&jsxRuntime.jsx(Xn,{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(f=>jsxRuntime.jsx(Zn,{pnl:f,now:c,onRowClick:m},`${f.chain}-${f.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 wt({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(n=>jsxRuntime.jsx("button",{type:"button",onClick:()=>r(n.value),className:ui.cn("rounded px-2 py-1 text-[11px] transition-colors",o===n.value?"bg-default-100 text-foreground":"text-default-400 hover:text-foreground"),children:n.label},n.value))})]})}function Xn({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(Me,{label:"Total PnL",value:t?utils.formatAmountInUsd(t,{showPlusGtThanZero:true}):"--",tone:t?Ao(t):void 0}),jsxRuntime.jsx(Me,{label:"Return",value:o?utils.formatPercent(o,{showPlusGtThanZero:true}):"--",tone:o?Ao(o):void 0}),jsxRuntime.jsx(Me,{label:"Win rate",value:r?utils.formatPercent(r):"--"}),jsxRuntime.jsx(Me,{label:"Trades",value:e.totalTrades!=null?e.totalTrades.toString():"--"})]})}function Ao(e){let t=new utils.SafeBigNumber(e);if(t.gt(0))return "bullish";if(t.lt(0))return "bearish"}function Me({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.cn("text-sm font-medium",o==="bullish"?"text-bullish":o==="bearish"?"text-bearish":"text-foreground"),children:t})]})}function Tt({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 Zn({pnl:e,now:t,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(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:me(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(Tt,{value:e.totalProfitInUsd})}),jsxRuntime.jsx("td",{className:"px-3 py-2 text-right align-middle",children:jsxRuntime.jsx(Tt,{value:e.realizedProfitInUsd})}),jsxRuntime.jsx("td",{className:"px-3 py-2 text-right align-middle",children:jsxRuntime.jsx(Tt,{value:e.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",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?de(e.firstBuyAt,t):"--"}),jsxRuntime.jsx("td",{className:"px-3 py-2 text-right align-middle text-default-400",children:e.lastSellAt?de(e.lastSellAt,t):"--"})]})}function Io({chain:e,address:t,limit:o=50,initialResolution:r="30d",initialPositionState:n="open",initialSortBy:a="totalPnl"}){let[i,s]=react.useState(r),[l,p]=react.useState(n),[c,d]=react.useState(a),[m,f]=react.useState(void 0),[v,u]=react.useState([]),x=react.useCallback(()=>{f(void 0),u([]);},[]),g=react.useCallback(C=>{C!==i&&(s(C),x());},[i,x]),w=react.useCallback(C=>{C!==l&&(p(C),x());},[l,x]),S=react.useCallback(C=>{C!==c&&(d(C),x());},[c,x]);react.useEffect(()=>{x();},[e,t,x]);let B=react.useMemo(()=>({chain:e,address:t,cursor:m,limit:o,resolution:i,positionState:l,sortBy:c}),[e,t,m,o,i,l,c]),{data:O,isPending:E,isFetching:_}=react$1.useWalletPortfolioPnlsQuery(B);react.useEffect(()=>{O&&u(C=>m==null?[O]:C[C.length-1]?.endCursor===O.endCursor?C:[...C,O]);},[O,m]);let W=react.useMemo(()=>v.length===0?void 0:{...v[0],portfolios:v.flatMap(Q=>Q.portfolios)},[v]),D=v[v.length-1],ce=!!(D?.hasNext&&D.endCursor),J=react.useCallback(()=>{!D?.endCursor||!D.hasNext||f(D.endCursor);},[D]);return {data:W,isLoading:E||_,resolution:i,setResolution:g,positionState:l,setPositionState:w,sortBy:c,setSortBy:S,hasMore:ce,loadMore:J}}function Op({chain:e,address:t,limit:o,initialResolution:r,initialPositionState:n,initialSortBy:a,className:i,onRowClick:s}){let{data:l,isLoading:p,resolution:c,setResolution:d,positionState:m,setPositionState:f,sortBy:v,setSortBy:u,hasMore:x,loadMore:g}=Io({chain:e,address:t,limit:o,initialResolution:r,initialPositionState:n,initialSortBy:a});return jsxRuntime.jsx(To,{data:l,isLoading:p,resolution:c,onResolutionChange:d,positionState:m,onPositionStateChange:f,sortBy:v,onSortByChange:u,hasMore:x,onLoadMore:g,className:i,onRowClick:s})}function ts({client:e,children:t}){return jsxRuntime.jsx(xe.Provider,{value:e,children:t})}var ls=15e3;function ps(e){return Object.fromEntries(Object.entries(e).filter(([,t])=>t!==void 0))}function Ro({chain:e,address:t,enabled:o=true,summaryPollMs:r=ls}){let{setSummary:n,setSummaryStatus:a,setRefetchSummary:i}=react.useContext(Ue),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(()=>{n(null);},[e,t,n]),react.useEffect(()=>{let c=s.isPending||l.isPending,d=s.isFetching||l.isFetching,m=s.isError||l.isError,f=s.isSuccess&&l.isSuccess;a({status:m?"error":f?"success":"pending",fetchStatus:d?"fetching":"idle",isLoading:c&&d,isPending:c,isFetching:d,isRefetching:f&&d,isError:m,isSuccess:f,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,a]),react.useEffect(()=>{let c=s.data,d=l.data;!c||!d||n({...d,balanceInUsd:c.balanceInUsd,balanceInNative:c.balanceInNative});},[s.data,l.data,n]),react$1.useWalletPnlSubscription({chain:e,address:t},c=>{n(d=>{if(!d)return d;let m=d;for(let f of c)m={...m,...ps(f)};return m});},{enabled:o});let p=react.useCallback(async()=>{await Promise.all([s.refetch(),l.refetch()]);},[s,l]);react.useEffect(()=>{i(p);},[p,i]);}function cs({chain:e,address:t,children:o}){let[r,n]=react.useState(null),[a,i]=react.useState(fs),s=react.useRef(()=>Promise.resolve()),l=react.useCallback(()=>s.current(),[]),p=react.useCallback(m=>{s.current=m;},[]),c=react.useMemo(()=>({summary:r,summaryStatus:a,refetchSummary:l}),[r,a,l]),d=react.useMemo(()=>({setSummary:n,setSummaryStatus:i,setRefetchSummary:p}),[n,i,p]);return jsxRuntime.jsx(Ue.Provider,{value:d,children:jsxRuntime.jsx(ge.Provider,{value:c,children:jsxRuntime.jsx(us,{chain:e,address:t,children:o})})})}function us({chain:e,address:t,children:o}){return Ro({chain:e,address:t,enabled:!!t}),jsxRuntime.jsx(jsxRuntime.Fragment,{children:o})}var fs={status:"pending",fetchStatus:"idle",isLoading:false,isPending:true,isFetching:false,isRefetching:false,isError:false,isSuccess:false,error:null,dataUpdatedAt:0};
|
|
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$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=We;exports.AccountInfoWidget=no;exports.AddressRowUI=Le;exports.AssetTab=be;exports.AssetTabsUI=qe;exports.BalanceRowUI=_e;exports.BatchActionButton=he;exports.CURVE_PERIOD_VALUE=St;exports.ConfirmDialog=we;exports.CurveCardUI=ze;exports.CurvePeriod=Ve;exports.CurveType=Me;exports.DistributionCardUI=$e;exports.HoldingsEmpty=G;exports.HoldingsSearch=re;exports.HoldingsSectionWidget=wo;exports.HoldingsSubTabs=oe;exports.PerpsPanelUI=pt;exports.PerpsPositionSide=Nt;exports.PortfolioActivities=_t;exports.PortfolioActivitiesWidget=rs;exports.PortfolioClientContext=me;exports.PortfolioClientProvider=Go;exports.PortfolioContext=ge;exports.PortfolioDataAdapterContext=xe;exports.PortfolioNetWorthTokens=Yt;exports.PortfolioNetWorthTokensWidget=cs;exports.PortfolioPageSkeleton=rt;exports.PortfolioPageWidget=So;exports.PortfolioPnlDetails=eo;exports.PortfolioPnlDetailsWidget=bs;exports.PortfolioProvider=Jo;exports.PredictionBetStatus=wt;exports.PredictionPanelUI=dt;exports.PredictionResult=Tt;exports.PredictionSource=kt;exports.SpotHistoryType=At;exports.SpotPanelUI=ct;exports.TagBadge=Do;exports.TagBadgeList=De;exports.ViewingBannerUI=st;exports.computeDistribution=ht;exports.createClientPortfolioDataAdapter=ro;exports.createInMemoryPortfolioDataAdapter=Bs;exports.curveDataQueryKey=Et;exports.distributionQueryKey=yo;exports.formatAgeShort=ie;exports.formatPercent=Pt;exports.formatSignedUsd=Pe;exports.formatTime=Ct;exports.formatTokenBalance=Ee;exports.formatUsd=D;exports.getExplorerUrl=vt;exports.overviewQueryKey=Ut;exports.parseDecimal=Dr;exports.perpsHistoryQueryKey=Qt;exports.perpsPositionsQueryKey=Ft;exports.predictionBetsQueryKey=Ot;exports.predictionSettledQueryKey=Wt;exports.splitUsd=bt;exports.spotHistoryQueryKey=Bt;exports.spotHoldingsQueryKey=Ht;exports.truncateAddress=ae;exports.truncateMiddle=ce;exports.useAccountInfo=Oe;exports.useCurveDataQuery=et;exports.useDistributionQuery=tt;exports.useHoldingsSection=nt;exports.useOverviewQuery=Ge;exports.usePerpsHistoryQuery=Xe;exports.usePerpsPositionsQuery=je;exports.usePortfolioActivitiesScript=Gt;exports.usePortfolioClient=Q;exports.usePortfolioContext=ye;exports.usePortfolioDataAdapter=go;exports.usePortfolioNetWorthTokensScript=jt;exports.usePortfolioPage=ot;exports.usePortfolioPnlDetailsScript=to;exports.usePredictionBetsQuery=Ze;exports.usePredictionSettledQuery=Je;exports.useRefetchWalletSummary=Po;exports.useSpotHistoryQuery=Ye;exports.useSpotHoldingsQuery=ve;exports.useWalletPortfolios=ho;exports.useWalletSummary=Qe;//# sourceMappingURL=index.js.map
|
|
3
3
|
//# sourceMappingURL=index.js.map
|