@turtleclub/earn-widget 0.3.3-beta.9 → 0.4.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,3 +1,3 @@
1
- 'use strict';var react=require('react'),jotai=require('jotai'),clsx=require('clsx'),jsxRuntime=require('react/jsx-runtime'),lucideReact=require('lucide-react'),hooks=require('@turtleclub/hooks'),reactQuery=require('@tanstack/react-query'),api=require('@turtleclub/api'),chains=require('@turtleclub/chains'),ui=require('@turtleclub/ui'),utils=require('@turtleclub/utils'),classVarianceAuthority=require('class-variance-authority');function oe(...e){return clsx.clsx(e)}var Ae={theme:"dark",widgetWidth:"default",customWidth:"100%",padding:"default",rounding:"default",fontFamily:"Montserrat",fontSecondary:"DM Sans",deals:[],campaigns:[],styles:{background:"#141514",background_dark:"#F9F9F9",foreground:"#F9F9F9",foreground_dark:"#141514",card:"#141514",card_dark:"#F9F9F9",muted_foreground:"#FFFFFF80",muted_foreground_dark:"#14151480",primary:"#73F36C",primary_dark:"#73F36C"}};var ee=jotai.atom(Ae);jotai.atom(false);jotai.atom(false);jotai.atom(null);jotai.atom({amount:"",tokenAddress:"",tokenDecimals:0,chain:""});var Z=jotai.atom({status:"idle",hash:void 0,error:void 0});jotai.atom(e=>e(Z).status,(e,t,n)=>{let r=e(Z);t(Z,{...r,status:n});});jotai.atom(e=>e(Z).hash,(e,t,n)=>{let r=e(Z);t(Z,{...r,hash:n});});function ae(e){return `rgb(from ${e} calc(255 - r) calc(255 - g) calc(255 - b))`}function nn(e,t=10){return `color-mix(in srgb, ${e} ${100-t}%, black)`}function Ue(e,t){let n=t==="dark",r={"--color-brand-black":n?e.background_dark:ae(e.background_dark),"--color-brand-white":n?e.foreground_dark:ae(e.foreground_dark),"--color-brand-green":n?e.primary_dark:nn(e.primary_dark)};return (e.card!==void 0||e.card_dark!==void 0)&&(r["--color-surface-primary"]=n?e.card_dark??e.card??e.background_dark:ae(e.card_dark??e.background_dark)),(e.muted_foreground!==void 0||e.muted_foreground_dark!==void 0)&&(r["--muted-foreground"]=n?e.muted_foreground_dark??e.muted_foreground??e.foreground_dark:ae(e.muted_foreground_dark??e.muted_foreground_dark??e.foreground_dark)),r}var $e={background_dark:"#141514",foreground_dark:"#F9F9F9",primary_dark:"#73F36C",background:"#F9F9F9",foreground:"#2A2B2A",primary:"#3CBF38",card:"#F7F7F7",muted_foreground:"#9CA3AF",card_dark:"#141514",muted_foreground_dark:"#FFFFFF80"},He="dark",je="Montserrat, sans-serif",Je="DM Sans, sans-serif";function H(){let e=jotai.useAtomValue(ee),t=e?.theme??He,n=e?.fontFamily??je,r=e?.fontSecondary??Je,i=e?.widgetWidth??"default",o=e?.customWidth??"100%",a=e?.showNavigation??true,c=e?.padding??"default",s=e?.rounding??"default",u=e?.styles??$e,l=Ue(u,t==="auto"?"dark":t);return {theme:t,coreTokenCSS:l,fontPrimary:n,fontSecondary:r,widgetWidth:i,customWidth:o,showNavigation:a,padding:c,rounding:s,config:e,widgetStyles:u}}function ze({config:e,children:t}){let n=jotai.useSetAtom(ee),{theme:r,coreTokenCSS:i,fontPrimary:o,fontSecondary:a,widgetWidth:c}=H();return react.useEffect(()=>{n(e);},[e,n]),jsxRuntime.jsx("div",{className:oe("turtle-widget-root text-foreground","antialiased transition-all duration-700 ease-linear w-full overflow-hidden","h-full flex items-center justify-center",r==="dark"?"dark":""),style:{...i,"--font-primary":o,"--font-secondary":a,fontFamily:o,backgroundColor:"transparent",maxHeight:"90vh"},children:jsxRuntime.jsx("div",{className:oe("flex flex-col gap-2 h-full overflow-hidden",c==="full"?"w-full items-center":c==="custom"?"items-stretch":"items-center"),style:{...c==="custom"&&e.customWidth?{width:e.customWidth}:c==="default"?{width:"620px"}:{}},children:t})})}var j=jotai.atom("none"),ie=jotai.atom(e=>e(j)==="deals",(e,t)=>t(j,"deals")),Ge=jotai.atom(e=>e(j)==="assets",(e,t)=>t(j,"assets")),le=jotai.atom(null,(e,t)=>t(j,"none"));function Ke(e,t){let[n,r=""]=e.split("."),i=r.padEnd(t,"0").slice(0,t),o=n+i;return BigInt(o)}function Ye(e,t){let n=e.toString();if(t===0)return n;let r=n.padStart(t+1,"0"),i=r.slice(0,-t)||"0",a=r.slice(-t).replace(/0+$/,"");return a===""?i:`${i}.${a}`}function ce(e,t=2){return new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:t,maximumFractionDigits:t}).format(e)}var Qe={user:"",chain:1,slippage:.001,tokenIn:"",tokenOut:"",amount:"",id:void 0,selectedOpportunity:null,selectedToken:null,resetTrigger:0},E=jotai.atom(Qe),qe=jotai.atom(e=>{let t=e(E);if(!t.user||!t.tokenIn||!t.tokenOut||!t.amount||!t.selectedToken)return;let n=Ke(t.amount,t.selectedToken.decimals).toString();return {user:t.user,chain:t.chain,slippage:t.slippage,tokenIn:t.tokenIn,tokenOut:t.tokenOut,amount:n,id:t.id,referral:"",distributor_id:t.distributor_id,referral_code:t.referral_code}}),te=jotai.atom(e=>e(E).amount,(e,t,n)=>{let r=e(E);t(E,{...r,amount:n});}),L=jotai.atom(e=>e(E).selectedOpportunity,(e,t,n)=>{let r=e(E);t(E,{...r,selectedOpportunity:n,tokenOut:n?.tokenDetails.tokenAddress??""});}),ue=jotai.atom(e=>e(E).selectedToken,(e,t,n)=>{let r=e(E);t(E,{...r,selectedToken:n,tokenIn:n?.address||""});}),Ze=jotai.atom(e=>e(E).slippage,(e,t,n)=>{let r=e(E);t(E,{...r,slippage:n});}),ne=jotai.atom(e=>e(E).resetTrigger,(e,t,n)=>{let r=e(E);t(E,{...r,resetTrigger:n});});jotai.atom(e=>{let t=e(E);return !!(t.user&&t.tokenIn&&t.tokenOut&&t.amount&&t.selectedToken&&parseFloat(t.amount)>0)});jotai.atom(null,(e,t)=>{let n=e(E);t(E,{...Qe,user:n.user,chain:n.chain,resetTrigger:n.resetTrigger+1});});function et({chainIds:e,address:t}){let n=hooks.useConfig(),r=reactQuery.useQueries({queries:e.map(s=>({queryKey:["earnWalletBalances",s,t],queryFn:async()=>t?await api.earnWalletBalances({chain:s,user:t},n):null,enabled:!!t,staleTime:60*1e3*5,refetchInterval:60*1e3,refetchOnWindowFocus:false}))}),i=react.useMemo(()=>{let s={};return r.forEach((u,p)=>{let l=e[p];u.data&&l!==void 0&&(s[l]=u.data.balances);}),s},[r,e]),o=r.some(s=>s.isLoading),a=r.find(s=>s.error)?.error||null;return {balances:i,isLoading:o,error:a,refetchAll:()=>{r.forEach(s=>{s.refetch();});}}}var rt=react.createContext(null),at=react.createContext(""),Ne=({adapter:e,distributorId:t,children:n})=>jsxRuntime.jsx(rt.Provider,{value:e,children:jsxRuntime.jsx(at.Provider,{value:t,children:n})}),w=()=>{let e=react.useContext(rt);if(!e)throw new Error("useAdapter must be used within an AdapterProvider");return e},de=()=>react.useContext(at),Y=()=>{let e=w();return {user:e.user,network:e.network,isConnected:!!e.user,openConnectionModal:e.openConnectionModal}},dn=()=>{let e=w();return {sendTransaction:e.sendTransaction,signMessage:e.signMessage,changeNetwork:e.changeNetwork}},mn=()=>{let e=w();return {network:e.network,changeNetwork:e.changeNetwork}};function re(e,t,n=2){if(e===0||e==null||isNaN(e))return "0";let r;switch(t){case "currency":e>=1e6?r=`$${(e/1e6).toFixed(2)}M`:e>=1e3?r=`$${(e/1e3).toFixed(2)}K`:r=`$${e.toFixed(2)}`;break;case "percentage":r=`${e.toFixed(n)}%`;break;case "number":e>=1e3?r=`${(e/1e3).toFixed(1)}K`:r=e.toString();break;default:r=e.toString();}return r}function st(e){let t=[];if(e.vaults.forEach(o=>{o.katanaCampaignConfig?.incentives&&o.katanaCampaignConfig?.incentives.forEach(a=>{a.apr&&a.apr>0&&t.push(a.apr);});}),e.campaign.katanaConfig?.additionalIncentives&&e.campaign.katanaConfig.additionalIncentives.forEach(o=>{o.apr&&o.apr>0&&t.push(o.apr);}),e.campaign.tacConfig?.additionalIncentives&&e.campaign.tacConfig.additionalIncentives.forEach(o=>{o.apr&&o.apr>0&&t.push(o.apr);}),t.length===0)return null;let n=t.filter(o=>o>1);if(n.length===0)return null;let r=Math.min(...n),i=Math.max(...n);return [re(r,"percentage",2),re(i,"percentage",2)]}var it=(e,t)=>{let n=t.katanaCampaignConfig!==null,r=t.tacCampaignConfig!==null;return n?pn(e,t):r?[]:[]},pn=(e,t)=>{let n=e.campaign.katanaConfig?.incentives,r=e.campaign.katanaConfig?.additionalIncentives,i=t.katanaCampaignConfig?.incentives,o=i?.map(s=>{let u=n?.find(l=>l.id===s.id);return u?{name:`Est. ${u.name}`,description:u.tooltip,apr:s.apr,boost:s.apr===void 0,iconUrl:u.iconUrl}:null}).filter(s=>s!==null)||[],a=i?.map(s=>{let u=r?.find(m=>m.id===s.id);if(!u)return null;let p=s.apr??u.apr;return {name:`${u.estApr?"Est. ":""}${u.name}`,description:u.tooltip,apr:p,boost:p===void 0,iconUrl:u.iconUrl}}).filter(s=>s!==null)||[];return [...o,...a].sort((s,u)=>u.apr-s.apr)};var Ie="2c86d3a1-cfe8-486d-915d-1b9ff5e924e9",ct=react.createContext(void 0);function F(){let e=react.useContext(ct);if(!e)throw new Error("useEarnData must be used within EarnDataProvider");return e}var xn={1:"https://storage.googleapis.com/turtle-assets/tokens/eth.png",747474:"https://storage.googleapis.com/turtle-assets/partners/polygon/katana.svg"};function ut({children:e}){let[t,n]=jotai.useAtom(L),r=w(),i=[],o=[Ie],a=false,{data:c,isLoading:s,error:u}=hooks.useEarnCampaigns(),p=d=>{let h=d.campaign.katanaConfig?.incentives.map(W=>({icon:W.iconUrl,name:W.name}))??[],T=d.campaign.katanaConfig?.additionalIncentives.map(W=>({icon:W.iconUrl,name:W.name}))??[],I=[...h,...T].filter(Boolean),D=d.vaults.map(W=>({icon:xn[W.earnConfig?.tokens?.[0]?.chainId??1],name:W.earnConfig?.tokens?.[0]?.chain??"Ethereum"})),K=st(d)??"0% - 0%";return {icon:d.campaign.iconUrl,name:d.campaign.description,aprRange:`${K[0]} - ${K[1]}`,tvl:re(d.campaign.katanaConfig?.totalTvlUSD??0,"currency"),participants:d.campaign.totalUsers.toString(),rewards:I,chains:D}},l=(d,h)=>{let T=it(h,d)??[],I=T.reduce((D,K)=>D+(K.apr||0),0);return {icon:d.iconUrl,name:d.name,tvl:re(d.tvlUSD,"currency"),apr:I.toFixed(2)+"%",chain:x(d.earnConfig?.tokens?.[0]?.chainId??1),incentives:T.map(D=>({icon:D.iconUrl,name:D.label})),aprBreakdown:T,turtleBoost:null,partner:{icon:h.campaign.iconUrl,name:h.campaign.description}}},m=d=>({type:"Turtle Campaign",disclaimer:[],tvl:d.campaign.katanaConfig?.totalTvlUSD?.toString()??"0"}),b=d=>{let h=d.earnConfig?.tokens[0];return h?{tokenAddress:h.address,tokenName:h.symbol,tokenSymbol:h.symbol,tokenDecimals:h.decimals,iconToken:d.iconUrl}:{tokenAddress:"",tokenName:"",tokenSymbol:"",tokenDecimals:0,iconToken:""}},x=d=>{let h=chains.getChainById(d),T=chains.chainLogo(d);return h?{value:h.name.toLowerCase().replace(/\s+/g,"-"),symbol:h.nativeCurrency.symbol,name:h.name,icon:T,chainId:d}:{value:`chain-${d}`,symbol:"ETH",name:`Chain ${d}`,icon:chains.chainLogo(d),chainId:d}},g=react.useMemo(()=>{if(!c)return [];let d=c;return o.length>0?d=c.filter(h=>o.includes(h.campaign.id)):a,d.map(h=>p(h))},[c,o,a]),f=react.useMemo(()=>{if(!c)return {};let d={},h=c;return o.length>0?h=c.filter(T=>o.includes(T.campaign.id)):a,h.forEach(T=>{T.vaults.forEach(I=>{I.earnConfig?.tokens&&I.earnConfig?.tokens.length===0||(d[I.id]={id:I.id,tokenDetails:b(I),opportunityDetails:m(T),opportunityItem:l(I,T)});});}),d},[c,o,i,a]);react.useEffect(()=>{if(Object.keys(f).length>0&&!t){let d=Object.keys(f)[0];n(f[d]);}},[f,t,n]);let{uniqueChainIds:N,supportedChains:k}=react.useMemo(()=>{let d=new Map;Object.values(f).forEach(({opportunityItem:I})=>{let D=I.chain;D&&D.chainId&&d.set(D.chainId,D);});let h=Array.from(d.keys()),T=Array.from(d.values()).sort((I,D)=>I.name.localeCompare(D.name));return {uniqueChainIds:h,supportedChains:T}},[f]),{balances:A,isLoading:C,error:y,refetchAll:P}=et({chainIds:N,address:r.user||void 0}),S={isLoading:s,error:u,campaigns:g,opportunities:f,balances:A,supportedChains:k,balancesLoading:C,balancesError:y,refetchBalances:P};return jsxRuntime.jsx(ct.Provider,{value:S,children:e})}function dt(){let e=jotai.useAtomValue(L),{opportunities:t,isLoading:n,error:r}=F();return {deals:t,dealsFormatted:t,isLoading:n,error:r,selectedDeal:e}}function ft({onSwitchToEarn:e}){let t=jotai.useSetAtom(le),n=jotai.useSetAtom(L),{dealsFormatted:r,isLoading:i,error:o}=dt(),a=c=>{n(c),e(),t();};return o?jsxRuntime.jsxs("div",{className:"w-full h-full flex flex-col items-center justify-center bg-background",children:[jsxRuntime.jsx("p",{className:"text-muted-foreground",children:"Error loading deals"}),jsxRuntime.jsxs(ui.Button,{onClick:()=>t(),variant:"default",className:"mt-2",children:[jsxRuntime.jsx(lucideReact.ArrowLeft,{className:"w-4 h-4 mr-2"}),"Back"]})]}):i?jsxRuntime.jsx("div",{className:"w-full h-full flex items-center justify-center bg-background",children:jsxRuntime.jsx("p",{className:"text-muted-foreground",children:"Loading deals..."})}):jsxRuntime.jsxs("div",{className:"w-full h-full flex flex-col bg-transparent",children:[jsxRuntime.jsx("div",{className:"flex items-center justify-start p-3 flex-shrink-0",children:jsxRuntime.jsx("button",{onClick:()=>t(),className:"text-primary hover:text-primary/80 transition-colors",children:jsxRuntime.jsx(lucideReact.ArrowLeft,{className:"w-5 h-5"})})}),jsxRuntime.jsx(ui.OpportunityList,{opportunities:Object.values(r).map(c=>c.opportunityItem),onOpportunityClick:c=>{let s=Object.values(r).find(u=>u.opportunityItem===c);s&&a(s);},groupBy:"partner",filterVariant:"navigation",className:"h-full"})]})}var ht={1:{address:"0x0000000000000000000000000000000000000000",name:"Ethereum",symbol:"ETH",decimals:18,logo:void 0,balance:"0",price:0,chainId:1}};function pe(){let e=w(),t=e.network,n=!!e.user,{balances:r,balancesLoading:i}=F(),[o,a]=jotai.useAtom(ue),c=jotai.useAtomValue(ne),s=t?r[t]:void 0;return react.useEffect(()=>{o&&t&&o.chainId!==t&&a(null);},[t,o,a]),react.useEffect(()=>{if(!(o&&t&&o.chainId===t)&&!(n&&i)){if(s&&s.length>0){let p=[...s].sort((l,m)=>{let b={...l.token,balance:l.amount,decimals:l.token.decimals},x={...m.token,balance:m.amount,decimals:m.token.decimals},g=parseFloat(utils.formatToken(l.amount,b))*(l.token.price||0);return parseFloat(utils.formatToken(m.amount,x))*(m.token.price||0)-g})[0];a({address:p.token.address,name:p.token.name,symbol:p.token.symbol,decimals:p.token.decimals,logo:p.token.logos?.[0],balance:p.amount,price:p.token.price??void 0,chainId:p.token.chain});}else if(!n&&t){let u=ht[t]||ht[1];a({...u,chainId:t});}}},[s,t,o,a,n,i]),react.useEffect(()=>{},[o]),react.useEffect(()=>{c>0&&a(null);},[c,a]),{selectedToken:o,setSelectedToken:a,currentChainBalances:s,isLoadingBalances:i}}function fe(e){return new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:2,maximumFractionDigits:2}).format(e)}function kt({onAssetSelect:e}){let t=jotai.useSetAtom(le),n=w(),{isLoadingBalances:r,setSelectedToken:i}=pe(),{balances:o}=F(),a=[];Object.entries(o).forEach(([s,u])=>{u.forEach(p=>{let l={address:p.token.address,name:p.token.name,symbol:p.token.symbol,decimals:p.token.decimals,balance:p.amount,price:p.token.price??void 0,chainId:p.token.chain,logo:p.token.logos?.[0]},m=chains.getChainById(Number(s));a.push({id:`${s}-${l.address}`,symbol:l.symbol,name:l.name,icon:l.logo?jsxRuntime.jsx("img",{src:l.logo,alt:l.symbol,className:"w-8 h-8 rounded-full"}):jsxRuntime.jsx("div",{className:"w-8 h-8 rounded-full bg-muted flex items-center justify-center text-xs",children:l.symbol?.charAt(0)||"?"}),balance:utils.formatNumber(utils.formatToken(l.balance,l),5,false,false),balanceUSD:fe(parseFloat(utils.formatToken(l.balance,l))*(l.price||0)),chainId:String(s),chainName:m?.name||"Unknown",address:l.address,decimals:l.decimals});});});let c=async s=>{let u=Number(s.chainId);if(n.network!==u)try{await n.changeNetwork(u);}catch(b){console.error("Failed to switch network:",b);return}let m=o[u]?.find(b=>b.token.address===s.address);m&&(i({address:m.token.address,name:m.token.name,symbol:m.token.symbol,decimals:m.token.decimals,logo:m.token.logos?.[0],balance:m.amount,price:m.token.price??void 0,chainId:m.token.chain}),e?.(s.address||""),t());};return r?jsxRuntime.jsx("div",{className:"w-full h-full flex items-center justify-center bg-background",children:jsxRuntime.jsx("p",{className:"text-muted-foreground",children:"Loading balances..."})}):jsxRuntime.jsxs("div",{className:"w-full h-full flex flex-col bg-transparent text-foreground",children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-between p-3 flex-shrink-0",children:[jsxRuntime.jsx("button",{onClick:()=>t(),className:"text-primary hover:text-primary/80 transition-colors",children:jsxRuntime.jsx(lucideReact.ArrowLeft,{className:"w-5 h-5"})}),jsxRuntime.jsx("h3",{className:"text-lg font-medium",children:"Select Token"}),jsxRuntime.jsx("div",{className:"w-5 h-5"})," "]}),jsxRuntime.jsx(ui.AssetList,{assets:a,onAssetClick:c,groupByChain:true,showChainIcon:true,filterVariant:"navigation",className:"h-full"})]})}var On=classVarianceAuthority.cva("p-0",{variants:{padding:{none:"p-0",sm:"p-3",default:"p-4",md:"p-6",lg:"p-7"}},defaultVariants:{padding:"default"}});function ge({children:e,className:t,variant:n,padding:r,rounding:i,...o}){let{padding:a,rounding:c}=H(),s=On({padding:r??a}),u=i??c;return jsxRuntime.jsx(ui.Card,{className:oe(t,s),...o,variant:n,gradient:"white",rounded:u,children:e})}var xt={xxs:"h-4 text-xs",xs:"h-6 text-sm",sm:"h-8 text-2xl",md:"h-12 text-4xl",lg:"h-16 text-6xl"};function Re({light:e,dark:t,fallback:n="Turtle Club",className:r,size:i="lg"}){let[o,a]=react.useState(false),{theme:c}=H(),u=c==="dark"?t||e:e||t;return u&&!o?jsxRuntime.jsx("div",{className:ui.cn("flex justify-center items-center",r),children:jsxRuntime.jsx("img",{src:u,alt:n,className:ui.cn("object-contain",xt[i]),onError:()=>a(true),onLoad:()=>a(false)})}):jsxRuntime.jsx("div",{className:ui.cn("flex justify-center items-center",r),children:jsxRuntime.jsx("span",{className:ui.cn("font-bold text-primary",xt[i]),children:n})})}function vt(){let e=w(),t=de(),n=jotai.useAtomValue(L),r=jotai.useSetAtom(E);react.useEffect(()=>{r(i=>({...i,user:e.user||"",chain:e.network||1,distributorId:t,distributor_id:t,id:n?.id||""}));},[e.user,e.network,t,n?.id,r]);}function Ct(){let e=jotai.useAtomValue(ee);return {light:e?.logo?.light,dark:e?.logo?.dark,fallback:e?.logo?.fallback||"Turtle Club"}}var St="https://api.turtle.xyz",Le="turtle_earn_widget_auth",Tt=()=>{let e=w(),[t,n]=react.useState({isAuthenticated:false,isLoading:false,error:null,user:null,tokens:null}),r=react.useRef(void 0),i=react.useRef(false),o=react.useRef(false),a=()=>{try{let l=localStorage.getItem(Le);if(l)return JSON.parse(l)}catch(l){console.error("Error reading stored auth:",l);}return null},c=l=>{try{localStorage.setItem(Le,JSON.stringify(l));}catch(m){console.error("Error storing auth:",m);}},s=()=>{try{localStorage.removeItem(Le);}catch(l){console.error("Error clearing stored auth:",l);}};react.useEffect(()=>{let l=e?.user;if(l&&!o.current&&!i.current){o.current=true;let m=a();if(m&&m.address.toLowerCase()===l.toLowerCase()){n({isAuthenticated:true,isLoading:false,error:null,user:m.user,tokens:m.tokens}),r.current=l;return}}if(l!==r.current&&l!==void 0&&!i.current){r.current=l,o.current=true;let m=a();m&&m.address.toLowerCase()===l.toLowerCase()?n({isAuthenticated:true,isLoading:false,error:null,user:m.user,tokens:m.tokens}):u(l);}else l===void 0&&r.current!==void 0&&(r.current=void 0,o.current=false,s(),n({isAuthenticated:false,isLoading:false,error:null,user:null,tokens:null}));},[e?.user]);let u=async l=>{if(!i.current){i.current=true,n(m=>({...m,isLoading:true,error:null}));try{let m={address:l,walletEcosystem:"evm",url:window.location.href},b=await fetch(`${St}/auth/get-wallet-signature-message`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(m)});if(!b.ok)throw new Error("Failed to get signature message");let{message:x,nonce:g}=await b.json();if(!e?.signMessage)throw new Error("Wallet adapter does not support message signing");let f=await e.signMessage(x),N={method:"wallet",walletInput:{address:l,ecosystem:"evm",signature:f,nonce:g}},k=await fetch(`${St}/auth/authenticate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(N)});if(!k.ok)throw new Error("Failed to authenticate");let A=await k.json();c({address:l,tokens:A.authTokens,user:A.user}),n({isAuthenticated:!0,isLoading:!1,error:null,user:A.user,tokens:A.authTokens});}catch(m){console.error("Authentication error:",m),n(b=>({...b,isLoading:false,error:m instanceof Error?m.message:"Authentication failed"}));}finally{i.current=false;}}};return {...t,logout:()=>{s(),n({isAuthenticated:false,isLoading:false,error:null,user:null,tokens:null});}}};function wt(){let[e,t]=react.useState(""),n=jotai.useSetAtom(ie),{campaigns:r,isLoading:i,error:o}=F();return o?jsxRuntime.jsx("div",{className:"w-full h-full flex items-center justify-center bg-background",children:jsxRuntime.jsx("p",{className:"text-muted-foreground",children:"Error loading discover content"})}):i?jsxRuntime.jsx("div",{className:"w-full h-full flex items-center justify-center bg-background",children:jsxRuntime.jsx("p",{className:"text-muted-foreground",children:"Loading discover content..."})}):jsxRuntime.jsxs("div",{className:"w-full h-full flex flex-col min-h-0",children:[jsxRuntime.jsx("div",{className:"p-3 space-y-3 flex-shrink-0",children:jsxRuntime.jsx("h2",{className:"text-sm text-foreground font-medium",children:"Deposit directly into Turtle's boosted deals and liquidity campaign opportunities."})}),jsxRuntime.jsx("div",{children:r.map(a=>jsxRuntime.jsx(ui.CampaignItem,{value:a,onSelect:()=>n()},a.name))})]})}var{useUserCampaignPositions:At}=hooks.campaignsV2,Fe=["tac","katana"];function Nt(){let{user:e}=Y(),{data:t,isLoading:n,error:r}=hooks.usePartnerCampaigns({idFilter:Fe.join(",")}),i=react.useMemo(()=>t?Fe.reduce((k,A)=>{let C=t.find(y=>y.campaign.name.toLowerCase()===A);return C&&(k[A]=C,C.vaults.length===0&&console.warn(`\u26A0\uFE0F Campaign ${A} has no vaults from API`)),k},{}):{},[t]),{userPositions:o,userTotalTVL:a,isLoading:c,error:s}=At({campaignName:"tac",userAddress:e}),{userPositions:u,userTotalTVL:p,isLoading:l,error:m}=At({campaignName:"katana",userAddress:e}),b=react.useMemo(()=>({tac:{userPositions:o||[],userTotalTVL:a||0},katana:{userPositions:u||[],userTotalTVL:p||0}}),[o,a,u,p]),x=(a||0)+(p||0),g=react.useMemo(()=>Fe.reduce((k,A)=>(k[A]=[],k),{}),[]);return {campaigns:i,positions:b,totalTVL:x,incentives:g,isLoading:n||c||l,error:r||s||m}}var Et=[{id:"vault.id",header:"Position",accessorKey:"vault.id",cell:({row:e})=>jsxRuntime.jsx("div",{className:"flex justify-start gap-0.5",children:jsxRuntime.jsxs("a",{href:`https://app.turtle.club/campaigns/${e.original.vault.campaign}`,className:"flex max-w-[120px] items-center gap-[5px] text-foreground hover:text-primary transition-colors",target:"_blank",rel:"noopener noreferrer",children:[jsxRuntime.jsx("img",{src:e.original.vault.iconUrl,alt:e.original.vault.name,className:"size-5 shrink-0 rounded-full"}),jsxRuntime.jsx("span",{className:"truncate",children:e.original.vault.name})]})})},{id:"tvl",header:"TVL",accessorKey:"tvl",cell:({row:e})=>jsxRuntime.jsx("span",{className:"text-foreground",children:ce(e.original.userTVL??0,2)})}];var no=["katana"];function It(){let{user:e,openConnectionModal:t}=Y(),{positions:n,totalTVL:r,isLoading:i}=Nt(),o=react.useMemo(()=>no.flatMap(s=>n[s].userPositions).sort((s,u)=>u.userTVL-s.userTVL),[n]),a=()=>{t&&t();};return i||o.length===0?jsxRuntime.jsxs("div",{className:"sm:min-h-[690px] -mt-8 flex flex-col justify-center items-center gap-4 text-foreground",children:[jsxRuntime.jsx(ui.IconAnimation,{spinning:true,children:jsxRuntime.jsx(lucideReact.TurtleIcon,{className:"w-6 h-6 text-primary"})}),"Loading..."]}):jsxRuntime.jsx("div",{className:"sm:min-h-[690px] p-4",children:!i&&e===void 0?jsxRuntime.jsx(ui.Button,{variant:"default",border:"plain",onClick:a,children:"Connect wallet"}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{className:"text-right text-sm mr-2",children:[jsxRuntime.jsx("span",{className:"text-foreground/60",children:"Your TVL: "}),jsxRuntime.jsx("span",{className:"text-foreground font-semibold",children:ce(r,2)})]}),jsxRuntime.jsx(ui.Separator,{className:"my-2"}),jsxRuntime.jsx(ui.DataTable,{columns:Et,data:o})]})})}function Dt(){let[e,t]=jotai.useAtom(L),n=w(),r=n.network,i=e?.opportunityItem?.chain?.chainId,o=!!(e&&r!==void 0&&i!==void 0&&i!==r&&chains.isChainSupported(i));return {selectedOpportunity:e,setSelectedOpportunity:t,chainId:i,needsChainSwitch:o,isCorrectChain:!!(e&&r!==void 0&&i!==void 0&&i===r),switchToOpportunityChain:async()=>{if(i&&o)try{await n.changeNetwork(i);}catch(l){throw console.error("Failed to switch network:",l),l}},getTokenAddress:()=>e?.tokenDetails?.tokenAddress,getTokenSymbol:()=>e?.tokenDetails?.tokenSymbol,getVaultId:()=>e?.id}}function Rt(){let e=jotai.useSetAtom(Ge);return {openTokenSelector:()=>{e();}}}function Ft(){let t=!!w().user,{chainId:n,needsChainSwitch:r,switchToOpportunityChain:i}=Dt(),[o,a]=jotai.useAtom(te),c=jotai.useAtomValue(ne),{selectedToken:s,currentChainBalances:u,isLoadingBalances:p}=pe(),{openTokenSelector:l}=Rt(),m=u?.map(y=>({icon:y.token.logos?.[0]?ui.iconUrlToImg(y.token.logos[0],y.token.symbol):null,symbol:y.token.symbol,address:y.token.address,balance:y.amount}))||[],b=s?{icon:s.logo?ui.iconUrlToImg(s.logo,s.symbol):null,symbol:s.symbol,address:s.address,balance:s.balance}:null;react.useEffect(()=>{a("");},[s,a]),react.useEffect(()=>{c>0&&a("");},[c,a]);let x=()=>{if(s){let y=s.balance==="0"?"0":s.balance,P=utils.formatToken(y,s),S=utils.formatNumber(P,5,false,false);a(S);}},g=s?utils.formatNumber(utils.formatToken(s.balance,s),5,false,false):"0",f=parseFloat(o)||0,N=s?parseFloat(utils.formatToken(s.balance,s)):0,k=f>N&&t,A=s&&o?k?"Insufficient balance":fe(parseFloat(o)*(s.price||0)):void 0,C=r&&n?chains.getChainById(n):null;return r&&C&&t?jsxRuntime.jsxs("div",{className:"w-full flex flex-col gap-2 items-start justify-start",children:[jsxRuntime.jsx("h3",{className:"text-md text-foreground font-medium",children:"Deposit"}),jsxRuntime.jsx("div",{className:"w-full p-4 border border-muted rounded-lg bg-muted/10",children:jsxRuntime.jsxs("p",{className:"text-sm text-muted-foreground text-center",children:["Please"," ",jsxRuntime.jsx("button",{onClick:i,className:"text-primary hover:text-primary/80 underline font-medium cursor-pointer transition-colors",children:"switch"})," ","to ",jsxRuntime.jsx("strong",{children:C.name})," to continue with this opportunity"]})})]}):p&&t?jsxRuntime.jsxs("div",{className:"w-full flex flex-col gap-2 items-start justify-start",children:[jsxRuntime.jsx("h3",{className:"text-md text-foreground font-medium",children:"Deposit"}),jsxRuntime.jsx("div",{className:"w-full p-4 border border-muted rounded-lg bg-muted/10",children:jsxRuntime.jsx("p",{className:"text-sm text-muted-foreground text-center",children:"Loading tokens..."})})]}):jsxRuntime.jsxs("div",{className:"w-full flex flex-col gap-2 items-start justify-start",children:[jsxRuntime.jsx("h3",{className:"text-md text-foreground font-medium",children:"Deposit"}),jsxRuntime.jsx("div",{className:"w-full relative",children:jsxRuntime.jsx(ui.SwapInput,{value:o,onChange:a,tokens:m,usdValue:k?void 0:A,balance:g,onMaxClick:x,isWalletConnected:t,className:`w-full [&_button]:w-32 [&_button]:min-w-32 p-6 ${k?"border-destructive/50":""}`,useCustomTokenSelector:true,selectedTokenData:b,onCustomTokenSelectorClick:l})})]})}function _t({earnRoute:e,userAddress:t,sendTransaction:n,onError:r=()=>{},onSuccess:i=()=>{}}){let[o,a]=react.useState({steps:[],currentIndex:0,isExecuting:false,allCompleted:false,hasError:false,cancelled:false}),{network:c}=Y(),s=react.useMemo(()=>{if(!e)return null;let g=e.steps?.map(f=>`${f.id}-${f.to}-${f.data}`).join("|")||"";return {...e,_stepsKey:g}},[e?.success,e?.estimatedGas,e?.estimatedTime,e?.outputAmount,e?.steps?.map(g=>`${g.id}-${g.to}-${g.data}`).join("|")]);react.useEffect(()=>{if(s&&s.success&&s.steps.length>0){let g=s.steps.map((f,N)=>({id:f.id,label:f.title,description:f.description,txData:{to:f.to,data:f.data,value:f.value,gasLimit:f.gasLimit},completed:false,current:N===0}));a({steps:g,currentIndex:0,isExecuting:false,allCompleted:false,hasError:false,cancelled:false});}else a({steps:[],currentIndex:0,isExecuting:false,allCompleted:false,hasError:false,cancelled:false});},[s]);let u=react.useRef(o),p=react.useRef({userAddress:t,sendTransaction:n,onError:r,onSuccess:i});react.useEffect(()=>{u.current=o;},[o]),react.useEffect(()=>{p.current={userAddress:t,sendTransaction:n,onError:r,onSuccess:i};},[t,n,r,i]);let l=react.useCallback(async()=>{let g=u.current,{userAddress:f,sendTransaction:N,onError:k,onSuccess:A}=p.current;if(!f||!N||g.isExecuting)return;let C=g.steps[g.currentIndex];if(!(!C||C.completed)){a(y=>({...y,isExecuting:true,hasError:false,cancelled:false,error:void 0}));try{let y=await N({to:C.txData.to,data:C.txData.data,value:C.txData.value?BigInt(C.txData.value):void 0,chainId:c}),P=typeof y=="object"&&"hash"in y?y.hash:String(y);a(S=>{let d=[...S.steps];return d[S.currentIndex]={...d[S.currentIndex],txHash:P},{...S,steps:d}});try{typeof y=="object"&&"wait"in y&&await y.wait();}catch(S){console.warn("Could not wait for transaction confirmation, proceeding anyway:",S);}a(S=>{let d=[...S.steps];d[S.currentIndex]={...d[S.currentIndex],completed:!0,current:!1};let h=S.currentIndex+1,T=h>=d.length;T||(d[h]={...d[h],current:!0});let I=T;return I&&A&&A(),{...S,steps:d,currentIndex:T?S.currentIndex:h,isExecuting:!1,allCompleted:I}});}catch(y){let P=y instanceof Error?y.message:String(y),S=P.toLowerCase().includes("user rejected")||P.toLowerCase().includes("user denied")||P.toLowerCase().includes("user cancelled")||P.toLowerCase().includes("cancelled by user")||P.toLowerCase().includes("transaction rejected")||P.includes("4001");a(d=>({...d,isExecuting:false,hasError:!S,cancelled:S,error:S?"Transaction cancelled by user":y instanceof Error?y.message:"Transaction failed"})),k&&!S&&k(y instanceof Error?y:new Error("Transaction failed"));}}},[]),m=react.useCallback(()=>{if(s&&s.success&&s.steps.length>0){let g=s.steps.map((f,N)=>({id:f.id,label:f.title,description:f.description,txData:{to:f.to,data:f.data,value:f.value,gasLimit:f.gasLimit},completed:false,current:N===0}));a({steps:g,currentIndex:0,isExecuting:false,allCompleted:false,hasError:false,cancelled:false});}},[s]),b=o.steps[o.currentIndex]||null,x=!!(t&&o.steps.length>0&&!o.isExecuting&&!o.allCompleted&&!o.cancelled);return react.useEffect(()=>{if(o.steps.length<=1)return;let g=o.currentIndex-1,f=g>=0&&o.steps[g]?.completed,N=o.currentIndex<o.steps.length&&!o.steps[o.currentIndex]?.completed,k=o.currentIndex<o.steps.length;if(f&&N&&k&&!o.isExecuting&&!o.allCompleted&&!o.cancelled){let C=setTimeout(()=>{l();},1e3);return ()=>clearTimeout(C)}},[o.steps,o.currentIndex,o.isExecuting,o.allCompleted,o.cancelled,l]),{...o,currentStep:b,canExecute:x,executeCurrentTransaction:l,resetQueue:m,totalSteps:o.steps.length,completedSteps:o.steps.filter(g=>g.completed).length,progress:o.steps.length>0?o.steps.filter(g=>g.completed).length/o.steps.length*100:0}}function Bt(e){let t=e!==void 0&&!!e.user&&!!e.amount&&parseFloat(e.amount)>0,{data:n,isLoading:r,error:i}=hooks.useEarnRoute(t?{user:e.user,chain:e.chain||1,tokenIn:e.tokenIn,tokenOut:e.tokenOut,amount:e.amount,slippage:e.slippage||.1,id:e.id||"",distributor_id:e.distributor_id||"",referral_code:e.referral_code||""}:void 0);return {data:n?{success:true,steps:n.steps?.map((a,c)=>({id:`step-${c}`,type:a.kind==="approve"?"approval":"deposit",title:a.kind==="approve"?"Approve Token":"Execute Transaction",description:a.kind==="approve"&&"token"in a?`Approve ${a.token.symbol}`:"Execute routing transaction",to:a.tx.to,data:a.tx.data,value:a.tx.value,gasLimit:a.tx.gas.toString()}))||[],estimatedGas:"0",estimatedTime:void 0,outputAmount:n.amount_out,metadata:void 0}:null,isLoading:r,error:i}}function ve(){let e=jotai.useAtomValue(qe),t=jotai.useAtomValue(L),n=de(),r=Bt(e&&{...e,distributor_id:n,id:e.id||""}),i=e!==void 0&&!!e.user&&!!e.amount&&parseFloat(e.amount)>0,{data:o}=hooks.useEarnRoute(i?{user:e.user,chain:e.chain||1,tokenIn:e.tokenIn,tokenOut:e.tokenOut,amount:e.amount,slippage:e.slippage||.1,distributor_id:n||"",referral_code:e.referral_code||"",id:e.id||""}:void 0),a=ho(o,t);return {...r,isReady:!!e,hasRequiredParams:!!(e?.user&&e?.tokenIn&&e?.tokenOut&&e?.amount),routeDetails:a}}function ho(e,t){if(!e?.steps)return [];let n=(o,a)=>({in:{icon:o.logos[0],symbol:o.symbol},out:null,amount:Ye(BigInt(a),o.decimals),type:"approve"}),r=(o,a,c)=>({in:{icon:a.logos[0],symbol:a.symbol},out:{icon:c.logos[0]||t?.iconToken||t?.iconDeal||void 0,symbol:c.symbol},amount:void 0,type:o}),i=[];return e.steps.forEach(o=>{if(o.kind==="approve"&&o.token){let a=n(o.token,o.amount);i.push(a);}o.kind==="enso"&&o.substeps&&o.substeps.forEach(a=>{let c=a.from[0],s=a.to[0],u=r(a.kind,c,s);i.push(u);});}),i}function Ut(){let{data:e,error:t,isLoading:n}=ve();return {fetchedRoute:e??null,routeError:t,isLoadingRoute:n}}function Ht({userAddress:e,openConnectionModal:t,fetchedRoute:n,routeError:r,isLoadingRoute:i,canExecute:o,isExecuting:a,hasError:c,cancelled:s,error:u,executeCurrentTransaction:p,totalSteps:l,completedSteps:m,showingTransactionStatus:b,hasInsufficientBalance:x,className:g}){let N=!!w().user,{data:k,isLoading:A}=hooks.useGeocheck(),C=async()=>{o&&await p();};return b?null:A?jsxRuntime.jsx(ui.Button,{disabled:true,className:`w-full border-foreground/60 border ${g||""}`,size:"lg",children:"Checking availability..."}):k&&!k.canInteract?jsxRuntime.jsxs(ui.Tooltip,{children:[jsxRuntime.jsx(ui.TooltipTrigger,{className:"w-full cursor-default space-y-2",children:jsxRuntime.jsx(ui.Button,{disabled:true,variant:"default",className:`w-full border-foreground/60 border ${g||""}`,size:"lg",children:"Geo Restricted"})}),jsxRuntime.jsx(ui.TooltipContent,{side:"top",sideOffset:6,className:"text-xs",children:"Due to geographical restrictions you can't use this vault."})]}):!e||!N?jsxRuntime.jsx(ui.Button,{onClick:()=>t(),className:"cursor-pointer w-full border-foreground/60 border",variant:"green",border:"interactive",size:"lg",children:"Connect Wallet"}):i?jsxRuntime.jsx(ui.Button,{disabled:true,className:`w-full border-foreground/60 border ${g||""}`,size:"lg",children:"Loading route..."}):r?jsxRuntime.jsx(ui.Button,{disabled:true,variant:"default",className:`w-full border-foreground/60 border ${g||""}`,size:"lg",children:"Route Error"}):!n||!n.steps||n.steps.length===0?jsxRuntime.jsx(ui.Button,{disabled:true,variant:"default",className:`w-full border-foreground/60 border ${g||""}`,size:"lg",children:"Enter amount to continue"}):x?jsxRuntime.jsx(ui.Button,{disabled:true,variant:"default",className:`w-full border-foreground/60 border ${g||""}`,size:"lg",children:"Insufficient Balance"}):jsxRuntime.jsxs(ui.Button,{variant:"green",border:"interactive",onClick:C,disabled:!o||a,size:"lg",className:"cursor-pointer w-full border border-foreground/60",children:[a&&"Executing...",c&&"Retry Transaction",s&&"Try Again",!a&&!c&&!s&&(l>1?`Confirm Transaction (${m}/${l})`:"Confirm Transaction")]})}function Jt({steps:e,currentStep:t,allCompleted:n,cancelled:r,estimatedTime:i,tokenSymbol:o,amount:a,resetQueue:c}){let[,s]=jotai.useAtom(ne),u=jotai.useSetAtom(te),p=e.filter(x=>x.completed&&x.txHash).pop(),l=t?.txHash?t:null,m=n?p?.txHash:l?.txHash||p?.txHash,b=react.useMemo(()=>({title:r?"Transaction Cancelled":n?"Transaction Completed!":"Processing Transaction",description:r?"Transaction was cancelled by user":n?"Your deposit has been successfully processed.":"Please wait while your transaction is being confirmed...",txHash:m,explorerUrl:"https://etherscan.io",estimatedTime:void 0,amount:`${a?utils.formatNumber(a,5,false,false):"0"}`,token:o,protocol:"Turtle Protocol",completed:n,cancelled:r,onViewDetails:void 0,onClose:()=>{c(),u(""),s(0);},steps:e.map(x=>({label:x.label,completed:x.completed,current:x.current,txHash:x.txHash}))}),[e,t,n,r,i,o,a,c]);return jsxRuntime.jsx("div",{className:"h-full overflow-hidden",children:jsxRuntime.jsx(ui.TxStatus,{...b,className:"h-full bg-background border-border text-foreground"})})}function Xt({amountToDeposit:e,depositSymbol:t,amountToReceive:n,receiveSymbol:r,receiveDecimals:i,tokenPrice:o,defaultOpen:a=false}){let[c,s]=jotai.useAtom(Ze),u=react.useMemo(()=>{let p=e?utils.formatNumber(e,6,false,false):"0",l=n?utils.formatToken(n,{decimals:i},true,false):"0";return {deposit:e?`${p} ${t||"ETH"}`:"0 ETH",receive:n?`${l} ${r||"ETH"}`:"0 ETH",equivalentInUsd:e&&o?(parseFloat(e)*o).toFixed(2):"0.00",defaultOpen:a,slippage:c,setSlippage:s}},[e,t,n,r,o,a]);return jsxRuntime.jsx(ui.SwapDetails,{details:u})}function Oo(e){return e?`${e.slice(0,10)}...${e.slice(-4)}`:"Connect Wallet"}function Gt({userAddress:e,disconnect:t}){let[n,r]=react.useState(false);return jsxRuntime.jsxs("button",{type:"button",onClick:()=>t(),onMouseEnter:()=>{r(true);},onMouseLeave:()=>{r(false);},className:"relative rounded-full bg-background px-3 py-1.5 border border-muted-foreground/60 cursor-pointer transition-colors hover:border-primary min-w-[140px] h-9 overflow-hidden",children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-2 transition-opacity duration-150",style:{opacity:n?0:1},children:[jsxRuntime.jsx(lucideReact.Wallet2Icon,{className:"w-4 h-4"}),jsxRuntime.jsx("span",{className:"text-foreground font-medium text-xs",children:Oo(e)})]}),jsxRuntime.jsx("div",{className:"absolute inset-0 flex items-center justify-center gap-2 transition-opacity duration-150",style:{opacity:n?1:0},children:jsxRuntime.jsx("span",{className:"text-primary font-medium text-xs",children:"Log out"})})]})}function Kt({selectedChainId:e=1,onChainChange:t}){let{supportedChains:n,isLoading:r}=F(),i=react.useMemo(()=>{let o=n.find(a=>a.chainId===e);if(o)return o;if(e){let a=chains.getChainById(e),c=chains.chainLogo(e);if(a)return {value:a.name.toLowerCase().replace(/\s+/g,"-"),symbol:a.nativeCurrency.symbol,name:a.name,icon:c,chainId:e}}return n[0]},[e,n]);return r?jsxRuntime.jsxs("div",{className:"flex items-center justify-between rounded-full rounded-l-none bg-background py-2 pr-4 h-9 animate-pulse",children:[jsxRuntime.jsx("div",{className:"w-8 h-8 -translate-x-2.5",children:jsxRuntime.jsx("div",{className:"w-8 h-8 rounded-full bg-muted"})}),jsxRuntime.jsx("div",{className:"flex items-center gap-3",children:jsxRuntime.jsx("div",{className:"h-4 w-20 bg-muted rounded"})})]}):!i||n.length===0?null:jsxRuntime.jsxs(ui.DropdownMenu,{children:[jsxRuntime.jsx(ui.DropdownMenuTrigger,{className:"border border-muted-foreground/60",src:i.icon,children:i.name}),jsxRuntime.jsx(ui.DropdownMenuContent,{children:n.map(o=>jsxRuntime.jsxs(ui.DropdownMenuItem,{onClick:()=>t?.(o.chainId),className:"hover:bg-accent/70 hover:text-foreground",children:[jsxRuntime.jsx("img",{src:o.icon,alt:o.name,className:"size-6 rounded-full -ml-1 text-foreground"}),o.name]},o.value))})]})}function Be(){let e=w(),t=e.user,n=!!e.user,r=e.network,i=async o=>{try{await e.changeNetwork(o);}catch(a){console.error("Failed to change network:",a);}};return jsxRuntime.jsxs("div",{className:"flex w-full items-center justify-between gap-2 text-foreground",children:[n&&t&&jsxRuntime.jsx(Gt,{userAddress:t,disconnect:e.disconnect}),n&&jsxRuntime.jsx(Kt,{selectedChainId:r,onChainChange:i})]})}function Qt(){return jsxRuntime.jsxs("div",{className:"w-full flex flex-col gap-4 flex-1 min-h-0 h-full overflow-hidden",children:[jsxRuntime.jsx("div",{className:"flex-shrink-0",children:jsxRuntime.jsxs("div",{className:"flex w-full items-center justify-between gap-2",children:[jsxRuntime.jsx("div",{className:"rounded-full bg-secondary px-3 py-1.5 border border-border min-w-[140px] h-9",children:jsxRuntime.jsx("div",{className:"animate-pulse",children:jsxRuntime.jsx("div",{className:"h-4 w-24 bg-muted rounded"})})}),jsxRuntime.jsxs("div",{className:"flex items-center justify-between rounded-full rounded-l-none bg-card py-2 pr-4 h-9 animate-pulse",children:[jsxRuntime.jsx("div",{className:"w-8 h-8 -translate-x-2.5",children:jsxRuntime.jsx("div",{className:"w-8 h-8 rounded-full bg-muted"})}),jsxRuntime.jsx("div",{className:"flex items-center gap-3",children:jsxRuntime.jsx("div",{className:"h-4 w-20 bg-muted rounded"})})]})]})}),jsxRuntime.jsxs("div",{className:"flex-shrink-0 space-y-2",children:[jsxRuntime.jsxs("div",{className:"rounded-lg bg-secondary p-4 space-y-3 animate-pulse",children:[jsxRuntime.jsxs("div",{className:"flex justify-between items-center",children:[jsxRuntime.jsx("div",{className:"h-8 w-32 bg-muted rounded"}),jsxRuntime.jsxs("div",{className:"flex items-center gap-2",children:[jsxRuntime.jsx("div",{className:"w-8 h-8 rounded-full bg-muted"}),jsxRuntime.jsx("div",{className:"h-6 w-16 bg-muted rounded"})]})]}),jsxRuntime.jsxs("div",{className:"flex justify-between text-sm",children:[jsxRuntime.jsx("div",{className:"h-4 w-24 bg-muted rounded"}),jsxRuntime.jsx("div",{className:"h-4 w-20 bg-muted rounded"})]})]}),jsxRuntime.jsxs("div",{className:"p-6 border border-border rounded-lg space-y-4 animate-pulse",children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-3",children:[jsxRuntime.jsx("div",{className:"w-10 h-10 rounded-full bg-muted"}),jsxRuntime.jsxs("div",{className:"space-y-2",children:[jsxRuntime.jsx("div",{className:"h-5 w-32 bg-muted rounded"}),jsxRuntime.jsx("div",{className:"h-4 w-24 bg-muted rounded"})]})]}),jsxRuntime.jsxs("div",{className:"space-y-2",children:[jsxRuntime.jsxs("div",{className:"flex justify-between",children:[jsxRuntime.jsx("div",{className:"h-4 w-16 bg-muted rounded"}),jsxRuntime.jsx("div",{className:"h-4 w-20 bg-muted rounded"})]}),jsxRuntime.jsxs("div",{className:"flex justify-between",children:[jsxRuntime.jsx("div",{className:"h-4 w-16 bg-muted rounded"}),jsxRuntime.jsx("div",{className:"h-4 w-24 bg-muted rounded"})]})]}),jsxRuntime.jsx("div",{className:"pt-2",children:jsxRuntime.jsx("div",{className:"h-10 w-full bg-muted rounded-lg"})})]})]}),jsxRuntime.jsx("div",{className:"flex-1 min-h-0"}),jsxRuntime.jsx("div",{className:"sticky bottom-0 pb-2 w-full",children:jsxRuntime.jsx("div",{className:"h-12 w-full bg-muted rounded-lg animate-pulse"})})]})}function qt(){let e=jotai.useAtomValue(ue),t=jotai.useAtomValue(te),n=jotai.useAtomValue(L),r=jotai.useSetAtom(ie),i=w(),{sendTransaction:o,openConnectionModal:a,user:c}=i,{isLoading:s,balancesLoading:u}=F(),{fetchedRoute:p,routeError:l,isLoadingRoute:m}=Ut(),{routeDetails:b}=ve(),{steps:x,currentStep:g,canExecute:f,isExecuting:N,allCompleted:k,hasError:A,cancelled:C,error:y,executeCurrentTransaction:P,resetQueue:S,totalSteps:d,completedSteps:h}=_t({earnRoute:p,userAddress:c,sendTransaction:o}),T=react.useMemo(()=>N||k||C||x.length>0&&h>0,[N,k,C,x.length,h]),I=!!i.user,D=e?parseFloat(utils.formatToken(e.balance,e)):0,K=react.useMemo(()=>(parseFloat(t)||0)>D&&I,[t,e,I]),W=react.useMemo(()=>t&&parseFloat(t)>0,[t]),en=react.useMemo(()=>({name:n?.opportunityItem.name??"N/A",vaultSymbol:n?.tokenDetails?.tokenSymbol??"N/A",icon:n?.opportunityItem.icon??"N/A",totalApr:n?.opportunityItem.apr??"N/A",aprBreakdown:n?.opportunityItem.aprBreakdown.map(q=>({name:q.name,iconUrl:q.iconUrl,apr:q.apr?.toString()??"0",description:q.description,boost:q.boost}))??[],tvlUsd:n?.opportunityItem.tvl??"N/A",depositDetails:{symbol:e?.symbol??"N/A",price:e?.price??0,depositAmount:parseFloat(t||"0")??0,apr:parseFloat(n?.opportunityItem.apr??"0")/100},type:"Turtle Campaign"}),[n,t,e]);return s||u?jsxRuntime.jsx(Qt,{}):jsxRuntime.jsxs("div",{className:"w-full flex flex-col gap-4 flex-1 min-h-0 h-full overflow-hidden",children:[jsxRuntime.jsx("div",{className:"flex-shrink-0",children:jsxRuntime.jsx(Be,{})}),jsxRuntime.jsxs("div",{className:"flex-shrink-0 space-y-2",children:[jsxRuntime.jsx(Ft,{}),jsxRuntime.jsx(ui.OpportunitySection,{className:"p-6",value:en,opportunitySelector:"old",onOpportunityClick:()=>r(),hideDisclaimer:true})]}),jsxRuntime.jsxs("div",{className:"flex-1 min-h-0 overflow-y-auto",children:[W&&p&&!m&&jsxRuntime.jsxs("div",{className:"flex-shrink-0 space-y-2",children:[jsxRuntime.jsx(Xt,{amountToDeposit:t,depositSymbol:e?.symbol||"",amountToReceive:p?.outputAmount||"0",receiveSymbol:n?.tokenDetails?.tokenSymbol||"",receiveDecimals:n?.tokenDetails?.tokenDecimals||0,tokenPrice:e?.price||0,defaultOpen:true}),b&&b.length>0&&jsxRuntime.jsx(ui.RouteDetails,{value:{steps:b}})]}),T&&jsxRuntime.jsx(Jt,{steps:x,currentStep:g,allCompleted:k,cancelled:C,estimatedTime:p?.estimatedTime||0,tokenSymbol:e?.symbol||"",amount:t,resetQueue:S})]}),jsxRuntime.jsx("div",{className:"sticky bottom-0 pb-2 w-full",children:jsxRuntime.jsx(Ht,{userAddress:c||"",openConnectionModal:a,fetchedRoute:p,routeError:l,isLoadingRoute:m,canExecute:f&&!K,isExecuting:N,hasError:A,cancelled:C,error:y,executeCurrentTransaction:P,totalSteps:d,completedSteps:h,showingTransactionStatus:T,hasInsufficientBalance:K,className:"w-full"})})]})}function qo({config:e}){vt();let{isAuthenticated:t}=Tt(),[n,r]=react.useState("earn"),i=react.useMemo(()=>[...t?[{value:"positions",label:"Your Positions"}]:[],{value:"earn",label:"Earn"},{value:"discover",label:"Discover"}],[t]),o=jotai.useAtomValue(j),a=jotai.useSetAtom(j),{light:c,dark:s,fallback:u}=Ct(),{showNavigation:p}=H();return jsxRuntime.jsx(ze,{config:e,children:jsxRuntime.jsx(ut,{children:jsxRuntime.jsx("div",{className:"w-full max-w-md h-full flex flex-col gap-2 overflow-hidden",children:jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[p&&jsxRuntime.jsx(ui.SegmentControl,{cursorPointer:true,variant:"segment",value:n,onChange:l=>{r(l),a("none");},items:i,className:"!bg-background"}),jsxRuntime.jsx("div",{className:"flex-1 min-h-0 overflow-hidden flex flex-col gap-2 bg-transparent",children:o!=="none"?jsxRuntime.jsxs(ge,{variant:"border",className:"w-full h-full min-h-0 flex flex-col overflow-hidden",children:[o==="deals"&&jsxRuntime.jsx(ft,{onSwitchToEarn:()=>r("earn")}),o==="assets"&&jsxRuntime.jsx(kt,{})]}):jsxRuntime.jsx(jsxRuntime.Fragment,{children:jsxRuntime.jsxs(ge,{variant:"border",className:"flex-1 min-h-0 w-full flex flex-col overflow-hidden",children:[jsxRuntime.jsx("div",{className:"flex-shrink-0 py-2",children:jsxRuntime.jsx(Re,{light:c,dark:s,fallback:u,size:"xs"})}),jsxRuntime.jsxs("div",{className:"flex-1 min-h-0 overflow-hidden",children:[n==="positions"&&jsxRuntime.jsx(It,{}),n==="earn"&&jsxRuntime.jsx(qt,{}),n==="discover"&&jsxRuntime.jsx(wt,{})]})]})})})]})})})})}function Zo({adapter:e,config:t,distributorId:n}){return jsxRuntime.jsx(Ne,{adapter:e,distributorId:n,children:jsxRuntime.jsx(qo,{config:t})})}
2
- exports.AdapterProvider=Ne;exports.EarnWidget=Zo;exports.defaultWidgetStyleConfig=Ae;exports.useAdapter=w;exports.useNetworkMethods=mn;exports.useTransactionMethods=dn;exports.useWalletConnection=Y;//# sourceMappingURL=index.cjs.map
1
+ 'use strict';var clsx=require('clsx'),react=require('react'),jsxRuntime=require('react/jsx-runtime'),ui=require('@turtleclub/ui'),classVarianceAuthority=require('class-variance-authority'),hooks=require('@turtleclub/hooks'),jotai=require('jotai'),lucideReact=require('lucide-react'),utils=require('@turtleclub/utils'),viem=require('viem'),chains=require('viem/chains');function q(...e){return clsx.clsx(e)}var Pe=react.createContext(null);function De({config:e,children:t}){return jsxRuntime.jsx(Pe.Provider,{value:e,children:t})}function M(){let e=react.useContext(Pe);if(!e)throw new Error("useWidgetConfig must be used within WidgetConfigProvider");return e}function X(e){return `rgb(from ${e} calc(255 - r) calc(255 - g) calc(255 - b))`}function Gt(e,t=10){return `color-mix(in srgb, ${e} ${100-t}%, black)`}function _e(e,t){let r=t==="dark",o={"--color-brand-black":r?e.background_dark:X(e.background_dark),"--color-brand-white":r?e.foreground_dark:X(e.foreground_dark),"--color-brand-green":r?e.primary_dark:Gt(e.primary_dark)};return (e.card!==void 0||e.card_dark!==void 0)&&(o["--color-surface-primary"]=r?e.card_dark??e.card??e.background_dark:X(e.card_dark??e.background_dark)),(e.muted_foreground!==void 0||e.muted_foreground_dark!==void 0)&&(o["--muted-foreground"]=r?e.muted_foreground_dark??e.muted_foreground??e.foreground_dark:X(e.muted_foreground_dark??e.muted_foreground_dark??e.foreground_dark)),o}var Le={background:"#F9F9F9",background_dark:"#141514",foreground:"#141514",foreground_dark:"#F9F9F9",primary:"#73F36C",primary_dark:"#73F36C",card:"#F9F9F9",card_dark:"#141514",muted_foreground:"#14151480",muted_foreground_dark:"#FFFFFF80"},Fe="dark",Me="Montserrat, sans-serif",Ue="DM Sans, sans-serif";function A(){let e=M(),t=e?.theme??Fe,r=e?.fontFamily??Me,o=e?.fontSecondary??Ue,n=e?.widgetWidth??"default",i=e?.customWidth??"100%",u=e?.showNavigation??true,s=e?.padding??"default",a=e?.rounding??"default",l=e?.styles??Le,c=_e(l,t==="auto"?"dark":t);return {theme:t,coreTokenCSS:c,fontPrimary:r,fontSecondary:o,widgetWidth:n,customWidth:i,showNavigation:u,padding:s,rounding:a,config:e,widgetStyles:l}}var Be={xxs:"h-4 text-xs",xs:"h-6 text-sm",sm:"h-8 text-2xl",md:"h-12 text-4xl",lg:"h-16 text-6xl"};function Qe({light:e,dark:t,fallback:r="Turtle Club",className:o,size:n="lg"}){let[i,u]=react.useState(false),{theme:s}=A(),l=s==="dark"?t||e:e||t;return l&&!i?jsxRuntime.jsx("div",{className:ui.cn("flex justify-center items-center",o),children:jsxRuntime.jsx("img",{src:l,alt:r,className:ui.cn("object-contain",Be[n]),onError:()=>u(true),onLoad:()=>u(false)})}):jsxRuntime.jsx("div",{className:ui.cn("flex justify-center items-center",o),children:jsxRuntime.jsx("span",{className:ui.cn("font-bold text-primary",Be[n]),children:r})})}function ze(){let e=M();return {light:e?.logo?.light,dark:e?.logo?.dark,fallback:e?.logo?.fallback||"Turtle Club"}}var Kt=classVarianceAuthority.cva("p-0",{variants:{padding:{none:"p-0",sm:"p-3",default:"p-4",md:"p-6",lg:"p-7"}},defaultVariants:{padding:"default"}});function ue({children:e,className:t,variant:r,padding:o,rounding:n,showLogo:i=true,logoSize:u="xs",...s}){let{padding:a}=A(),{light:l,dark:m,fallback:c}=ze(),d=Kt({padding:o??a});return jsxRuntime.jsxs(ui.Card,{className:q(t,d),...s,variant:r,gradient:"white",children:[i&&jsxRuntime.jsx("div",{className:"flex-shrink-0 py-2",children:jsxRuntime.jsx(Qe,{light:l,dark:m,fallback:c,size:u})}),e]})}var Ve=react.createContext(null),Ge=react.createContext(""),Xe=({adapter:e,distributorId:t,children:r})=>jsxRuntime.jsx(Ve.Provider,{value:e,children:jsxRuntime.jsx(Ge.Provider,{value:t,children:r})}),W=()=>{let e=react.useContext(Ve);if(!e)throw new Error("useAdapter must be used within an AdapterProvider");return e},U=()=>react.useContext(Ge);function Ze({children:e}){let t=M(),{theme:r,coreTokenCSS:o,fontPrimary:n,fontSecondary:i,widgetWidth:u}=A();return jsxRuntime.jsx("div",{className:q("turtle-widget-root text-foreground","antialiased transition-all duration-700 ease-linear w-full overflow-hidden","h-full flex items-center justify-center",r==="dark"?"dark":""),style:{...o,"--font-primary":n,"--font-secondary":i,fontFamily:n,backgroundColor:"transparent",maxHeight:"90vh"},children:jsxRuntime.jsx("div",{className:q("flex flex-col gap-2 h-full overflow-hidden",u==="full"?"w-full items-center":u==="custom"?"items-stretch":"items-center"),style:{...u==="custom"&&t.customWidth?{width:t.customWidth}:u==="default"?{width:"620px"}:{}},children:jsxRuntime.jsx("div",{className:"w-full max-w-md h-full flex flex-col gap-2 overflow-hidden",children:e})})})}var R=()=>{let e=W(),t=react.useRef(void 0),r=react.useRef(false),{data:o,isLoading:n,refetch:i}=hooks.useCheckMembership({params:{address:e.user||"",walletEcosystem:"evm"},enabled:!!e.user}),{mutateAsync:u,isPending:s,error:a}=hooks.useCreateMembershipAgreement(),{mutateAsync:l,isPending:m,error:c}=hooks.useCreateMembership();react.useEffect(()=>{let k=e.user;if(!k){t.current!==void 0&&(t.current=void 0);return}k!==t.current&&(t.current=k,d(k));},[e.user]);let d=async k=>{if(!r.current){r.current=true;try{let{data:w}=await i();if(w?.isMember){console.log("[useWidgetAuth] User is already a member");return}console.log("[useWidgetAuth] User is not a member, starting membership flow..."),console.log("[useWidgetAuth] Creating membership agreement...");let S=await u({address:k,walletEcosystem:"evm",url:window.location.href,chainId:String(e.network||1)});console.log("[useWidgetAuth] Requesting signature from wallet...");let H=await e.signMessage(S.message);console.log("[useWidgetAuth] Creating membership with signature...");let E=await l({address:k,walletEcosystem:"evm",signature:H,nonce:S.nonce});E.isMember?console.log("[useWidgetAuth] Membership created successfully!"):console.error("[useWidgetAuth] Failed to create membership:",E.error);}catch(w){console.error("[useWidgetAuth] Membership flow error:",w);}finally{r.current=false;}}},p=n||s||m,b=a?.message||c?.message||null;return {address:e.user,isConnected:!!e.user,isMember:o?.isMember,currentChain:e.network,connect:e.openConnectionModal,disconnect:e.disconnect,changeNetwork:e.changeNetwork,isLoading:p,error:b}};function Ke(e){let[t,r]=react.useState(e),o=react.useCallback(n=>{r(n);},[]);return {currentTab:t,setTab:o}}var ur=jotai.atom({id:"none"});function y(){let[e,t]=jotai.useAtom(ur),r=react.useCallback((n,i)=>{t({id:n,data:i});},[t]),o=react.useCallback(()=>{t({id:"none"});},[t]);return {currentOverlay:e.id,overlayData:e.data,isOverlayOpen:e.id!=="none",openOverlay:r,closeOverlay:o}}function de({tabs:e,overlays:t,defaultTab:r}){let {showNavigation:o}=A(),{currentTab:n}=Ke(r),{currentOverlay:u,overlayData:s}=y();react.useMemo(()=>Object.entries(e).filter(([p,b])=>b.visible!==false).map(([p,b])=>({value:p,label:b.label})),[e]);let m=react.useMemo(()=>e[n].component,[n,e]),c=react.useMemo(()=>u==="none"?null:t[u].component,[u,t]);return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[o&&false,jsxRuntime.jsx("div",{className:"flex-1 min-h-0 overflow-hidden flex flex-col gap-2 bg-transparent",children:jsxRuntime.jsx(ue,{variant:"border",className:"flex-1 min-h-0 w-full flex flex-col overflow-hidden",children:jsxRuntime.jsx("div",{className:"flex-1 min-h-0 overflow-hidden",children:c?jsxRuntime.jsx(c,{data:s}):jsxRuntime.jsx(m,{})})})})]})}function Y({onBack:e,children:t,className:r}){let{closeOverlay:o}=y();return jsxRuntime.jsxs("div",{className:`flex flex-col h-full ${r||""}`,children:[jsxRuntime.jsx("div",{className:"flex items-center gap-2 pb-3",children:jsxRuntime.jsx(ui.Button,{variant:"green",border:"interactive",size:"icon",onClick:e??o,className:"h-8 w-8 shrink-0","aria-label":"Go back",children:jsxRuntime.jsx(lucideReact.ChevronLeft,{className:"h-5 w-5"})})}),jsxRuntime.jsx("div",{className:"flex-1 min-h-0 overflow-auto pt-4",children:t})]})}var J=e=>e.filter(t=>t.rewardType!=="points").reduce((t,r)=>t+(r.yield??0),0),et=e=>({totalYield:react.useMemo(()=>J(e),[e])});function ee({incentives:e,isPill:t,className:r}){let{totalYield:o}=et(e),n=react.useMemo(()=>e.filter(i=>i.rewardType!=="points"&&i.yield!==null&&i.yield!==void 0).sort((i,u)=>u.yield-i.yield),[e]);return jsxRuntime.jsx(ui.TurtleTooltip,{trigger:jsxRuntime.jsxs("div",{className:ui.cn("group flex items-center gap-1",r,t&&"hover:bg-neutral-alpha-5 border-border bg-neutral-alpha-2 hover:border-gradient-white rounded-full border px-3 py-1.5 text-xs"),children:[utils.formatNumber(o,1,false,false),"%"," ",jsxRuntime.jsx(lucideReact.InfoIcon,{className:"text-primary/70 group-hover:text-primary size-2.5"})]}),content:jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("div",{className:"text-sm",children:"APR Breakdown"}),jsxRuntime.jsx("div",{children:n.map(i=>jsxRuntime.jsxs("div",{className:"my-1 flex justify-between gap-2 text-xs",children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-1",children:[i.iconUrl&&jsxRuntime.jsx("img",{src:i.iconUrl,alt:i.name||i.id,className:"size-4 rounded-full",loading:"lazy"}),jsxRuntime.jsx("div",{children:i.name})]}),jsxRuntime.jsxs("div",{children:[utils.formatNumber(i.yield,1,false,false),"%"]})]},i.id))}),jsxRuntime.jsxs("div",{className:"text-primary flex justify-between gap-2 text-sm",children:[jsxRuntime.jsx("span",{children:"Total"}),jsxRuntime.jsxs("span",{children:[utils.formatNumber(o,1,false,false),"%"]})]})]}),side:"bottom",contentClassName:"p-5 backdrop-blur-xl"})}function rt({chain:e,triggerClassName:t}){let r=utils.getNetworkById(e.slug);return jsxRuntime.jsx("div",{className:ui.cn("bg-foreground -mr-1 flex size-5 items-center justify-center overflow-hidden rounded-full ring-1 ring-white last:mr-0 lg:-mr-4 lg:size-6",utils.getNetworkBackgroundColor(r),t),children:jsxRuntime.jsx("img",{src:e.logoUrl,className:"size-5 rounded-full object-contain lg:size-6",alt:e.name})})}var pe=jotai.atom(null),fe=jotai.atom(null),ge=jotai.atom(.001),be=jotai.atom(null),nt=jotai.atom(e=>{let t=e(pe),r=e(be),o=e(fe),n=e(ge),i=!!(o&&Number.parseFloat(o)>0),u=!!t&&!!r&&i&&!!n,s=u?{chain:Number(t?.receiptToken?.chain.chainId)??1,token_in:r?.address??"",token_out:t?.receiptToken?.address??"",amount:viem.parseUnits(o??"0",r?.decimals??18).toString(),slippage:n}:void 0;return {opportunity:t,token:r,amount:o,options:s,isValid:u}});function C(){let[e,t]=jotai.useAtom(pe),[r,o]=jotai.useAtom(be),[n,i]=jotai.useAtom(fe),[u,s]=jotai.useAtom(ge),a=jotai.useAtomValue(nt),l=react.useCallback(()=>{t(null),o(null),i(null),s(.001);},[t,o,i]);return react.useEffect(()=>{i(""),s(.001);},[r]),{opportunity:e,token:r,amount:n,slippage:u,isValid:a.isValid,options:a.options,selectOpportunity:t,selectToken:o,setAmount:i,setSlippage:s,reset:l}}function re({opportunities:e}){let{changeNetwork:t,network:r}=W(),{selectOpportunity:o,selectToken:n}=C(),{closeOverlay:i}=y();return jsxRuntime.jsx(ui.DataTable,{columns:[{accessorKey:"name",header:()=>jsxRuntime.jsx("div",{children:"Opportunity"}),cell:({row:a})=>jsxRuntime.jsxs("div",{className:"flex items-center gap-2 px-1",children:[jsxRuntime.jsx(ui.APIStatus,{warning:false}),jsxRuntime.jsx("img",{src:a.original.token.logoUrl,className:"size-6 rounded-full",loading:"lazy"}),a.original.name||a.original.token.name]}),enableSorting:true},{accessorKey:"chain",header:()=>jsxRuntime.jsx("div",{className:"flex w-full justify-end",children:"Chain"}),cell:({row:a})=>jsxRuntime.jsx(rt,{chain:a.original.token.chain})},{id:"organization",accessorFn:a=>a.products.length?a.products[0].organization.name:"-",header:()=>jsxRuntime.jsx("div",{children:"Partner"}),cell:({row:a})=>a.original.products.length?jsxRuntime.jsxs("div",{className:"flex items-center gap-2",children:[jsxRuntime.jsx("img",{src:a.original.products[0].organization.iconUrl||"",className:"size-6 rounded-full",loading:"lazy"}),a.original.products[0].organization.name]}):"-",enableSorting:true},{accessorKey:"tvl",header:()=>jsxRuntime.jsx("div",{className:"flex w-full justify-end",children:"TVL"}),cell:({row:a})=>jsxRuntime.jsx("div",{className:"text-end",children:utils.formatCurrency(a.original.tvl,0,true)}),enableSorting:true},{accessorKey:"totalYield",header:()=>jsxRuntime.jsx("div",{className:"flex w-full justify-end",children:"Estimated APR"}),cell:({row:a})=>jsxRuntime.jsx("div",{className:"flex flex-row-reverse",children:jsxRuntime.jsx(ee,{incentives:a.original.incentives})}),enableSorting:true,sortingFn:(a,l)=>{let m=J(a.original.incentives),c=J(l.original.incentives);return m-c}}],onRowClick:a=>{o(a);let l=Number(a.token.chain.chainId);l!==r&&(t(l),n(null)),i();},data:e,enableSearch:true,grid:{displayAsGrid:true,headerSlot:"name",rightSlot:"totalYield",excludeColumns:[],className:"grid-cols-1 gap-2.5"}})}function at(){let e=U(),{data:t,isLoading:r,error:o}=hooks.useWidgetOpportunities(e);return r?jsxRuntime.jsx("div",{children:"Loading..."}):o?jsxRuntime.jsxs("div",{children:["Error: ",o.message]}):t===void 0?jsxRuntime.jsx("div",{children:"No data"}):t.opportunities&&t.opportunities.length===0?jsxRuntime.jsx("div",{children:"No opportunities"}):jsxRuntime.jsx(Y,{children:jsxRuntime.jsx(re,{opportunities:t.opportunities||[]})})}var ut=()=>{let{openOverlay:e}=y();return jsxRuntime.jsx("button",{onClick:()=>{e("balances"),console.log("Positions Content Click");},children:"Positions Content Click"})};var lt=()=>jsxRuntime.jsx("div",{children:"Discover Content"});function ye({steps:e,currentStep:t,allCompleted:r,cancelled:o,tokenSymbol:n,amount:i,resetQueue:u,resetForm:s}){let a=e.filter(d=>d.status==="completed"&&d.txHash).pop(),l=t?.txHash?t:null,m=r?a?.txHash:l?.txHash||a?.txHash,c=react.useMemo(()=>({title:o?"Transaction Cancelled":r?"Transaction Completed!":"Processing Transaction",description:o?"Transaction was cancelled by user":r?"Your deposit has been successfully processed.":"Please wait while your transaction is being confirmed...",txHash:m,explorerUrl:"https://etherscan.io",estimatedTime:void 0,amount:`${i?utils.formatNumber(i,5,false,false):"0"}`,token:n,protocol:"Turtle Protocol",completed:r,cancelled:o,onViewDetails:void 0,onClose:()=>{u(),s();},steps:e.map(d=>({label:d.label,completed:d.status==="completed",current:d.status==="executing",txHash:d.txHash}))}),[e,r,o,n,i,u,s,m]);return jsxRuntime.jsx("div",{className:"h-full overflow-hidden",children:jsxRuntime.jsx(ui.TxStatus,{...c,className:"bg-background border-border text-foreground h-full"})})}function dt(e){return e.kind==="approve"&&e.token?`Approve ${e.token.symbol}`:e.kind==="enso"?"Execute Deposit":`Execute ${e.kind}`}function mt(e,t){return e.kind==="approve"&&e.token?`Allow contract to spend ${e.token.symbol}`:`Transaction step ${t+1}`}function pt(e){let t=e instanceof Error?e.message:String(e);return ["user rejected","user denied","user cancelled","cancelled by user","transaction rejected","4001"].some(o=>t.toLowerCase().includes(o.toLowerCase()))}function ft(e){if(e.steps.length<=1||e.queueStatus!=="idle")return false;let t=e.steps[e.currentIndex-1],r=e.steps[e.currentIndex];return e.currentIndex>0&&e.currentIndex<e.steps.length&&t?.status==="completed"&&r?.status==="pending"}var Br=1e3;function yt(e,t){return e.tx?{id:t,label:dt(e),description:mt(e,t),txData:e.tx,status:"pending"}:null}function Qr(e,t){switch(t.type){case "INITIALIZE_QUEUE":return {steps:t.steps,currentIndex:0,queueStatus:"idle",lastError:void 0};case "START_EXECUTION":return {...e,steps:e.steps.map((r,o)=>o===t.index?{...r,status:"executing"}:r),queueStatus:"executing",lastError:void 0};case "COMPLETE_STEP":{let r=e.steps.map((i,u)=>u===t.index?{...i,status:"completed",txHash:t.txHash}:i),o=t.index+1,n=o>=r.length;return {...e,steps:r,currentIndex:n?e.currentIndex:o,queueStatus:n?"completed":"idle"}}case "FAIL_STEP":return {...e,steps:e.steps.map((r,o)=>o===t.index?{...r,status:"failed",error:t.error}:r),queueStatus:t.isCancellation?"cancelled":"error",lastError:t.error};case "RESET_QUEUE":return {steps:t.steps,currentIndex:0,queueStatus:"idle",lastError:void 0};default:return e}}function ve({earnRoute:e,userAddress:t,chainId:r,sendTransaction:o,onError:n=()=>{},onSuccess:i=()=>{}}){let u={steps:[],currentIndex:0,queueStatus:"idle"},[s,a]=react.useReducer(Qr,u);react.useEffect(()=>{if(!e?.steps?.length){a({type:"INITIALIZE_QUEUE",steps:[]});return}let f=e.steps.map((v,g)=>yt(v,g)).filter(v=>v!==null);a({type:"INITIALIZE_QUEUE",steps:f});},[e]);let l=react.useCallback(async()=>{if(!t||!r||!o||s.queueStatus==="executing")return;let f=s.steps[s.currentIndex];if(!f||f.status!=="pending"&&f.status!=="failed")return;if(f.txData.from.toLowerCase()!==t.toLowerCase()){let g=new Error("Transaction 'from' address doesn't match connected wallet");a({type:"FAIL_STEP",index:s.currentIndex,error:g.message,isCancellation:false}),n&&n(g);return}a({type:"START_EXECUTION",index:s.currentIndex});try{let g=await o({...f.txData,chainId:r});a({type:"COMPLETE_STEP",index:s.currentIndex,txHash:g??""}),s.currentIndex+1>=s.steps.length&&i&&i();}catch(g){let L=g instanceof Error?g.message:"Transaction failed",$=pt(g);a({type:"FAIL_STEP",index:s.currentIndex,error:$?"Transaction cancelled by user":L,isCancellation:$}),!$&&n&&n(g instanceof Error?g:new Error(L));}},[t,r,o,s.queueStatus,s.steps,s.currentIndex,i,n]),m=react.useCallback(()=>{if(!e?.steps?.length)return;let f=e.steps.map((v,g)=>yt(v,g)).filter(v=>v!==null);a({type:"RESET_QUEUE",steps:f});},[e]),c=s.steps[s.currentIndex]||null,d=s.queueStatus==="executing",p=s.queueStatus==="completed",b=s.queueStatus==="error",k=s.queueStatus==="cancelled",w=s.steps.filter(f=>f.status==="completed").length,S=s.steps.length,H=S>0?w/S*100:0,E=react.useMemo(()=>c?!!(p||d&&c.id===0||c.id>0):false,[c,p,d]),ne=!!(t&&r&&s.steps.length>0&&s.queueStatus!=="executing"&&s.queueStatus!=="completed");return react.useEffect(()=>{if(ft(s)){let f=setTimeout(()=>{l();},Br);return ()=>clearTimeout(f)}},[s,l]),{steps:s.steps.map((f,v)=>({...f,completed:f.status==="completed",current:v===s.currentIndex})),currentIndex:s.currentIndex,isExecuting:d,allCompleted:p,hasError:b,cancelled:k,error:s.lastError,currentStep:c?{...c,completed:c.status==="completed",current:true}:null,canExecute:ne,executeCurrentTransaction:l,resetQueue:m,totalSteps:S,completedSteps:w,progress:H,showTxStatus:E}}var $r=(e,t,r)=>({in:{icon:t.logos[0],symbol:t.symbol},out:{icon:r.logos[0],symbol:r.symbol},amount:void 0,type:e}),qr=(e,t)=>({in:{icon:e.logos[0],symbol:e.symbol},out:null,amount:utils.formatToken(t,{decimals:e.decimals},true,false,4),type:"approve"});function vt(e){if(!e)return [];let t=[];return e.steps.forEach(r=>{if(r.kind==="approve"&&r.token){let o=qr(r.token,r.amount);t.push(o);}r.kind==="enso"&&r.substeps&&r.substeps.forEach(o=>{let n=o.from[0],i=o.to[0],u=$r(o.kind,n,i);t.push(u);});}),t}function ht(e){return {chainId:Number(e.receiptToken?.chain.chainId)??chains.mainnet.id,address:e.receiptToken?.address??"",symbol:e.receiptToken?.symbol??"",decimals:e.receiptToken?.decimals??18}}function xt(e,t,r,o,n){let i=react.useMemo(()=>{if(!(!o||!e))return {...o,user:t,distributor_id:r,referral_code:n}},[o,t,r,n]),u=react.useMemo(()=>!!(t&&i?.token_in&&i?.token_out&&i?.amount&&i?.chain&&i?.slippage&&i?.distributor_id),[o]),{data:s,isLoading:a,error:l}=hooks.useEarnRoute({params:i,enabled:u&&e}),m=react.useMemo(()=>vt(s??null),[s]);return {fetchedRoute:s??null,outputAmount:s?.amount_out??void 0,isReady:u&&s&&!a,hasRequiredParams:u,routeDetails:m,routeError:l,isLoadingRoute:a}}function xe({fetchedRoute:e,routeError:t,isLoadingRoute:r,canExecute:o,isExecuting:n,hasError:i,cancelled:u,executeCurrentTransaction:s,totalSteps:a,completedSteps:l,showingTransactionStatus:m,hasInsufficientBalance:c}){let d=react.useCallback(async()=>{o&&await s();},[o,s]),p=react.useMemo(()=>m?null:r?{text:"Loading route...",disabled:true,className:"cursor-not-allowed"}:t?{text:"Route Error",disabled:true,className:"cursor-not-allowed"}:!e||!e.steps||e.steps.length===0?{text:"Enter amount to continue",disabled:true,className:"cursor-not-allowed"}:c?{text:"Insufficient Balance",disabled:true,className:"cursor-not-allowed"}:n?{text:"Executing...",disabled:true,className:"cursor-not-allowed"}:i?{text:"Retry Transaction",disabled:!o,onClick:d,className:"cursor-pointer"}:u?{text:"Try Again",disabled:!o,onClick:d,className:"cursor-pointer"}:{text:a>1&&l!==a?`Confirm Transaction (${l}/${a})`:"Confirm Transaction",disabled:false,onClick:d,className:"cursor-pointer"},[m,r,t,e,c,n,i,u,o,a,l,d]);return p?jsxRuntime.jsx(ui.Button,{border:"plain",onClick:()=>p.onClick?.(),disabled:p.disabled,className:p.className+" w-full",children:p.text}):null}function Et({opportunity:e,address:t,distributorId:r,executeTransaction:o,stickyButton:n=false}){let{openOverlay:i}=y(),{chainId:u,symbol:s,decimals:a}=react.useMemo(()=>ht(e),[e]),{setAmount:l,setSlippage:m,token:c,amount:d,slippage:p,options:b,isValid:k}=C(),{usdValue:w,hasInsufficientBalance:S,handleMaxClick:H}=hooks.useTokenBalance({token:c,amount:d??void 0,setAmount:O=>l(O??null)}),{routeDetails:E,isReady:ne,outputAmount:f,fetchedRoute:v,routeError:g,isLoadingRoute:L}=xt(k,t,r,b),$=react.useCallback(async O=>{let ie={from:O.from,to:O.to,data:O.data,value:BigInt(O.value),chainId:u??1};return await o(ie)},[o,u]),{steps:Qt,currentStep:Ne,canExecute:we,isExecuting:F,allCompleted:se,hasError:Oe,cancelled:ae,executeCurrentTransaction:Ae,resetQueue:We,totalSteps:Re,completedSteps:Ie,showTxStatus:zt}=ve({earnRoute:v,userAddress:t,chainId:u,sendTransaction:$}),Ht=react.useMemo(()=>{let O=d?utils.formatNumber(d,6,true,false):"0",ie=f&&a?utils.formatToken(f,{decimals:a},true,false,6):"0";return {deposit:d?`${O} ${c?.symbol||"ETH"}`:"0 ETH",receive:f&&a?`${ie} ${s||"ETH"}`:"0 ETH",equivalentInUsd:d&&c?.price?(Number.parseFloat(d)*c.price).toFixed(2):"0.00",defaultOpen:true,slippage:p,setSlippage:m}},[d,f,a,s,c,p]);return jsxRuntime.jsxs("div",{className:ui.cn("grid gap-3 flex-1 min-h-0",n?"grid-rows-[auto_1fr_auto] pb-6":"grid-rows-[auto_1fr]"),children:[jsxRuntime.jsx(ui.SwapInput,{tokens:[],useCustomTokenSelector:true,selectedTokenData:c,onCustomTokenSelectorClick:()=>i("balances"),value:d??void 0,onChange:l,usdValue:S?void 0:w,balance:c?utils.formatToken(c.balance,c,true,false,5):"0",onMaxClick:H,className:ui.cn("p-5",S?"border-destructive/50 border":"border-border border")}),jsxRuntime.jsxs("div",{className:"overflow-auto min-h-0 space-y-3",children:[ne&&E&&jsxRuntime.jsx(ui.SwapDetails,{details:Ht}),E&&E.length>0&&jsxRuntime.jsx(ui.RouteDetails,{value:{steps:E}}),Ne&&d&&zt&&jsxRuntime.jsx(ye,{steps:Qt,currentStep:Ne,allCompleted:se,cancelled:ae,tokenSymbol:c?.symbol||"",amount:d,resetQueue:We,resetForm:We}),!n&&(!F||se)&&jsxRuntime.jsx("div",{className:"pt-3",children:jsxRuntime.jsx(xe,{fetchedRoute:v,routeError:g,isLoadingRoute:L,canExecute:we,isExecuting:F,hasError:Oe,cancelled:ae,executeCurrentTransaction:Ae,totalSteps:Re,completedSteps:Ie,showingTransactionStatus:F,hasInsufficientBalance:S})})]}),n&&(!F||se)&&jsxRuntime.jsx("div",{className:"w-full",children:jsxRuntime.jsx(xe,{fetchedRoute:v,routeError:g,isLoadingRoute:L,canExecute:we,isExecuting:F,hasError:Oe,cancelled:ae,executeCurrentTransaction:Ae,totalSteps:Re,completedSteps:Ie,showingTransactionStatus:F,hasInsufficientBalance:S})})]})}function co(e,t){let r={address:e.token.address,name:e.token.name,symbol:e.token.symbol,decimals:e.token.decimals,balance:e.amount,price:e.token.price??void 0,chainId:e.token.chain,logo:e.token.logos?.[0]},o=utils.getNetworkByChainId(Number(t));return {id:`${t}-${r.address}`,symbol:r.symbol,name:r.name,icon:r.logo?jsxRuntime.jsx("img",{src:r.logo,alt:r.symbol,className:"h-8 w-8 rounded-full"}):jsxRuntime.jsx("div",{className:"bg-muted flex h-8 w-8 items-center justify-center rounded-full text-xs",children:r.symbol?.charAt(0)||"?"}),balance:utils.formatToken(r.balance,r),balanceUSD:utils.formatCurrencyWithCommas(Number.parseFloat(utils.formatToken(r.balance,r))*(r.price||0),2),chainId:String(t),chainName:o?.name||"Unknown",address:r.address,decimals:r.decimals}}function Te(e){let t=[];return Object.entries(e).forEach(([r,o])=>{o.forEach(n=>{t.push(co(n,r));});}),t}function ke(e,t,r){let n=e[Number(t)]?.find(i=>i.token.address===r);return n?{address:n.token.address,name:n.token.name,symbol:n.token.symbol,decimals:n.token.decimals,logo:n.token.logos?.[0],icon:jsxRuntime.jsx("img",{src:n.token.logos?.[0],alt:n.token.symbol,className:"size-4 rounded-full"}),balance:n.amount,price:n.token.price??void 0,chainId:n.token.chain}:null}function wt(){let{selectToken:e,opportunity:t}=C(),{closeOverlay:r}=y(),{user:o}=W(),{balances:n,isLoading:i,error:u}=hooks.useMultiChainBalances({chainIds:[Number(t?.receiptToken?.chain.chainId)??chains.mainnet.id],address:o||""}),s=react.useCallback(l=>{let m=ke(n,l.chainId,l.address);e(m),r();},[e,r,n]),a=react.useMemo(()=>Te(n),[n]);return i?jsxRuntime.jsx("div",{children:"Loading..."}):u?jsxRuntime.jsxs("div",{children:["Error: ",u.message]}):jsxRuntime.jsx(Y,{children:jsxRuntime.jsx(ui.AssetList,{assets:a,onAssetClick:s,groupByChain:true,showChainIcon:true,filterVariant:"navigation",className:"h-full",itemClassName:"!rounded-full"})})}var yo=e=>{let r=Te(e)[0];return r?ke(e,r.chainId,r.address):null};function At(){let{user:e,network:t,sendTransaction:r}=W(),o=U(),{openOverlay:n}=y(),{token:i,selectOpportunity:u,selectToken:s,opportunity:a}=C(),{balances:l,isLoading:m}=hooks.useMultiChainBalances({chainIds:[Number(a?.receiptToken?.chain.chainId)??chains.mainnet.id],address:e}),{data:c,isLoading:d}=hooks.useWidgetOpportunities(o);react.useEffect(()=>{if(c&&c.opportunities&&c.opportunities.length>0&&!a){let b=c.opportunities[0];u(b);}},[c,a]),react.useEffect(()=>{if(!i&&Object.keys(l).length>0){let b=yo(l);b&&s(b);}},[l,i]);let p=react.useMemo(()=>m||d,[m,d]);return {address:e,network:t,distributorId:o,openOverlay:n,sendTransaction:r,isLoading:p}}function To(e,t=4){return e?`${e.slice(0,t+2)}...${e.slice(-t)}`:""}function Wt(){let{isMember:e,isLoading:t,address:r,isConnected:o,disconnect:n}=R();if(t)return jsxRuntime.jsx("div",{className:"h-10 w-[133px] animate-pulse rounded-full bg-neutral-alpha-10"});if(!o)return null;if(o&&e)return jsxRuntime.jsx(ui.Button,{variant:"ghost",border:"bordered",onClick:n,className:"group min-w-[140px] transition-colors",children:jsxRuntime.jsxs("div",{className:"gap-2 flex text-md items-center justify-between",children:[jsxRuntime.jsx(lucideReact.Wallet2Icon,{className:"size-6 stroke-accent group-hover:hidden"}),jsxRuntime.jsx(lucideReact.LogOutIcon,{className:"hidden size-6 stroke-destructive group-hover:block"}),jsxRuntime.jsx("span",{className:"group-hover:hidden",children:To(r)}),jsxRuntime.jsx("span",{className:"hidden group-hover:block text-foreground",children:"Disconnect"})]})})}function It(){let e=U(),{data:t}=hooks.useWidgetOpportunities(e),r=t?.chains||[],{changeNetwork:o,currentChain:n,isConnected:i}=R(),u=react.useMemo(()=>r.find(a=>Number(a.chainId)===n)||r[0],[r,n]),s=async a=>{try{await o(a);}catch(l){console.error("Failed to change network:",l);}};return i?jsxRuntime.jsxs(ui.DropdownMenu,{children:[jsxRuntime.jsx(ui.DropdownMenuTrigger,{src:u?.logoUrl,children:u?.name}),jsxRuntime.jsx(ui.DropdownMenuContent,{children:r.map(a=>jsxRuntime.jsxs(ui.DropdownMenuItem,{onClick:()=>s(Number(a.chainId)),children:[jsxRuntime.jsx("img",{src:a.logoUrl,alt:a.name,className:"size-6 rounded-full"}),a.name]},a.id))})]}):null}function Ce(){return jsxRuntime.jsxs("div",{className:"flex justify-between items-center gap-2",children:[jsxRuntime.jsx(Wt,{}),jsxRuntime.jsx(It,{})]})}var _t=()=>jsxRuntime.jsx("div",{className:"mt-5 flex flex-col gap-4 h-full",children:jsxRuntime.jsxs("div",{className:"space-y-3",children:[jsxRuntime.jsxs("div",{className:"flex gap-3",children:[jsxRuntime.jsx(ui.Skeleton,{className:"h-12 flex-1 rounded-turtle"}),jsxRuntime.jsx(ui.Skeleton,{className:"h-12 w-48 rounded-turtle"})]}),jsxRuntime.jsxs(ui.Card,{variant:"shadow",gradient:"white",className:"rounded-turtle space-y-2",children:[jsxRuntime.jsxs("div",{className:"flex justify-between p-4",children:[jsxRuntime.jsx(ui.Skeleton,{className:"h-8 w-24"}),jsxRuntime.jsx(ui.Skeleton,{className:"h-8 w-56 rounded-full"})]}),jsxRuntime.jsxs("div",{className:"mx-4 mb-4 space-y-1",children:[jsxRuntime.jsxs("div",{className:"flex justify-between",children:[jsxRuntime.jsx(ui.Skeleton,{className:"h-4 w-16"}),jsxRuntime.jsx(ui.Skeleton,{className:"h-4 w-40"})]}),jsxRuntime.jsxs("div",{className:"flex justify-between",children:[jsxRuntime.jsx(ui.Skeleton,{className:"h-4 w-16"}),jsxRuntime.jsx(ui.Skeleton,{className:"h-4 w-40"})]})]})]}),jsxRuntime.jsxs(ui.Card,{variant:"shadow",className:"rounded-turtle p-4",children:[jsxRuntime.jsx("div",{className:"mb-4",children:jsxRuntime.jsx(ui.Skeleton,{className:"h-20 w-full rounded-turtle"})}),jsxRuntime.jsxs("div",{className:"flex justify-between items-center mb-4",children:[jsxRuntime.jsx(ui.Skeleton,{className:"h-10 w-40 rounded-full"}),jsxRuntime.jsx(ui.Skeleton,{className:"h-5 w-32"})]})]}),jsxRuntime.jsx(ui.Skeleton,{className:"h-14 w-full rounded-turtle"})]})});var Lt=()=>{let{isConnected:e,connect:t}=R(),{address:r,distributorId:o,openOverlay:n,sendTransaction:i,isLoading:u}=At(),{opportunity:s,amount:a,token:l}=C(),m=c=>c.filter(d=>d.rewardType!=="points").reduce((d,p)=>d+(p.yield??0),0);return u?jsxRuntime.jsx(_t,{}):jsxRuntime.jsxs("div",{className:"mt-5 flex flex-col gap-4 h-full",children:[jsxRuntime.jsxs("div",{className:"text-foreground space-y-3",children:[jsxRuntime.jsx(Ce,{}),jsxRuntime.jsxs(ui.Card,{variant:"shadow",gradient:"white",className:ui.cn("rounded-turtle space-y-2"),children:[jsxRuntime.jsxs("div",{className:"flex justify-between p-4",children:[jsxRuntime.jsx(ee,{incentives:s?.incentives||[],className:"text-xl text-primary"}),jsxRuntime.jsx(ui.BaseSelector,{icon:ui.iconUrlToImg(s?.receiptToken?.logoUrl||"",s?.receiptToken?.symbol||""),text:s?.name||"",onClick:()=>n("opportunities"),size:"sm"})]}),jsxRuntime.jsx(ui.OpportunityRateEstimator,{value:{symbol:s?.baseTokens?.symbol||"",price:s?.baseTokens?.priceUsd||0,depositedAmountUsd:Number(Number(a??0)*Number(l?.price??0))||0,apr:m(s?.incentives||[])}})]})]}),s&&r&&o&&jsxRuntime.jsx(Et,{opportunity:s,address:r,distributorId:o,stickyButton:true,executeTransaction:async c=>await i(c)}),!e&&jsxRuntime.jsx("div",{className:"mt-auto sticky bottom-0",children:jsxRuntime.jsx(ui.Button,{variant:"green",border:"interactive",size:"lg",onClick:t,className:"w-full",children:"Connect Wallet"})})]})};function Ut(){let{isMember:e}=R(),t=react.useMemo(()=>({positions:{label:"Your Positions",component:ut,visible:e},earn:{label:"Earn",component:Lt},discover:{label:"Discover",component:lt}}),[e]),r=react.useMemo(()=>({opportunities:{component:at},balances:{component:wt}}),[]);return jsxRuntime.jsx(Ze,{children:jsxRuntime.jsx(de,{tabs:t,overlays:r,defaultTab:"earn"})})}function Bt({adapter:e,config:t,distributorId:r}){return jsxRuntime.jsx(De,{config:t,children:jsxRuntime.jsx(Xe,{adapter:e,distributorId:r,children:jsxRuntime.jsx(Ut,{})})})}var Lo={theme:"dark",widgetWidth:"default",customWidth:"100%",padding:"default",rounding:"default",fontFamily:"Montserrat",fontSecondary:"DM Sans",deals:[],campaigns:[],styles:{background:"#141514",background_dark:"#F9F9F9",foreground:"#F9F9F9",foreground_dark:"#141514",card:"#141514",card_dark:"#F9F9F9",muted_foreground:"#FFFFFF80",muted_foreground_dark:"#14151480",primary:"#73F36C",primary_dark:"#73F36C"}};//! Will be deprecated when just use distributorId to fetch everything from the API
2
+ exports.EarnWidget=Bt;exports.defaultWidgetStyleConfig=Lo;//# sourceMappingURL=index.cjs.map
3
3
  //# sourceMappingURL=index.cjs.map