otx-swap 1.2.17 → 1.2.18
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 +1 -1
- package/dist/index.mjs +10 -8
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -52,4 +52,4 @@ If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHid
|
|
|
52
52
|
|
|
53
53
|
For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return x.useEffect(()=>{e&&(document.getElementById(e)||console.error(r))},[r,e]),null},nc="DialogDescriptionWarning",sc=({contentRef:e,descriptionId:t})=>{const n=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${Fs(nc).contentName}}.`;return x.useEffect(()=>{const o=e.current?.getAttribute("aria-describedby");t&&o&&(document.getElementById(t)||console.warn(n))},[n,e,t]),null},oc=Ss,ac=Ts,ic=Rs,lc=Os,cc=As,uc=Ms,dc=Ds;function fc(e){if(typeof document>"u")return;let t=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css",t.appendChild(r),r.styleSheet?r.styleSheet.cssText=e:r.appendChild(document.createTextNode(e))}const $s=p.createContext({drawerRef:{current:null},overlayRef:{current:null},onPress:()=>{},onRelease:()=>{},onDrag:()=>{},onNestedDrag:()=>{},onNestedOpenChange:()=>{},onNestedRelease:()=>{},openProp:void 0,dismissible:!1,isOpen:!1,isDragging:!1,keyboardIsOpen:{current:!1},snapPointsOffset:null,snapPoints:null,handleOnly:!1,modal:!1,shouldFade:!1,activeSnapPoint:null,onOpenChange:()=>{},setActiveSnapPoint:()=>{},closeDrawer:()=>{},direction:"bottom",shouldAnimate:{current:!0},shouldScaleBackground:!1,setBackgroundColorOnScale:!0,noBodyStyles:!1,container:null,autoFocus:!1}),ct=()=>{const e=p.useContext($s);if(!e)throw new Error("useDrawerContext must be used within a Drawer.Root");return e};fc(`[data-vaul-drawer]{touch-action:none;will-change:transform;transition:transform .5s cubic-bezier(.32, .72, 0, 1);animation-duration:.5s;animation-timing-function:cubic-bezier(0.32,0.72,0,1)}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=open]{animation-name:slideFromBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=closed]{animation-name:slideToBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=open]{animation-name:slideFromTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=closed]{animation-name:slideToTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=open]{animation-name:slideFromLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=closed]{animation-name:slideToLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=open]{animation-name:slideFromRight}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=closed]{animation-name:slideToRight}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--initial-transform,100%),0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--initial-transform,100%),0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,var(--snap-point-height,0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--snap-point-height,0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(var(--snap-point-height,0),0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--snap-point-height,0),0,0)}[data-vaul-overlay][data-vaul-snap-points=false]{animation-duration:.5s;animation-timing-function:cubic-bezier(0.32,0.72,0,1)}[data-vaul-overlay][data-vaul-snap-points=false][data-state=open]{animation-name:fadeIn}[data-vaul-overlay][data-state=closed]{animation-name:fadeOut}[data-vaul-animate=false]{animation:none!important}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:0;transition:opacity .5s cubic-bezier(.32, .72, 0, 1)}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:1}[data-vaul-drawer]:not([data-vaul-custom-container=true])::after{content:'';position:absolute;background:inherit;background-color:inherit}[data-vaul-drawer][data-vaul-drawer-direction=top]::after{top:initial;bottom:100%;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=bottom]::after{top:100%;bottom:initial;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=left]::after{left:initial;right:100%;top:0;bottom:0;width:200%}[data-vaul-drawer][data-vaul-drawer-direction=right]::after{left:100%;right:initial;top:0;bottom:0;width:200%}[data-vaul-overlay][data-vaul-snap-points=true]:not([data-vaul-snap-points-overlay=true]):not(
|
|
54
54
|
[data-state=closed]
|
|
55
|
-
){opacity:0}[data-vaul-overlay][data-vaul-snap-points-overlay=true]{opacity:1}[data-vaul-handle]{display:block;position:relative;opacity:.7;background:#e2e2e4;margin-left:auto;margin-right:auto;height:5px;width:32px;border-radius:1rem;touch-action:pan-y}[data-vaul-handle]:active,[data-vaul-handle]:hover{opacity:1}[data-vaul-handle-hitarea]{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max(100%,2.75rem);height:max(100%,2.75rem);touch-action:inherit}@media (hover:hover) and (pointer:fine){[data-vaul-drawer]{user-select:none}}@media (pointer:fine){[data-vaul-handle-hitarea]:{width:100%;height:100%}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeOut{to{opacity:0}}@keyframes slideFromBottom{from{transform:translate3d(0,var(--initial-transform,100%),0)}to{transform:translate3d(0,0,0)}}@keyframes slideToBottom{to{transform:translate3d(0,var(--initial-transform,100%),0)}}@keyframes slideFromTop{from{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}to{transform:translate3d(0,0,0)}}@keyframes slideToTop{to{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}}@keyframes slideFromLeft{from{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToLeft{to{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}}@keyframes slideFromRight{from{transform:translate3d(var(--initial-transform,100%),0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToRight{to{transform:translate3d(var(--initial-transform,100%),0,0)}}`);function hc(){const e=navigator.userAgent;return typeof window<"u"&&(/Firefox/.test(e)&&/Mobile/.test(e)||/FxiOS/.test(e))}function mc(){return kr(/^Mac/)}function pc(){return kr(/^iPhone/)}function hn(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}function xc(){return kr(/^iPad/)||mc()&&navigator.maxTouchPoints>1}function Bs(){return pc()||xc()}function kr(e){return typeof window<"u"&&window.navigator!=null?e.test(window.navigator.platform):void 0}const vc=24,gc=typeof window<"u"?p.useLayoutEffect:p.useEffect;function mn(...e){return(...t)=>{for(let r of e)typeof r=="function"&&r(...t)}}const qt=typeof document<"u"&&window.visualViewport;function pn(e){let t=window.getComputedStyle(e);return/(auto|scroll)/.test(t.overflow+t.overflowX+t.overflowY)}function zs(e){for(pn(e)&&(e=e.parentElement);e&&!pn(e);)e=e.parentElement;return e||document.scrollingElement||document.documentElement}const bc=new Set(["checkbox","radio","range","color","file","image","button","submit","reset"]);let yt=0,Qt;function yc(e={}){let{isDisabled:t}=e;gc(()=>{if(!t)return yt++,yt===1&&Bs()&&(Qt=wc()),()=>{yt--,yt===0&&Qt?.()}},[t])}function wc(){let e,t=0,r=f=>{e=zs(f.target),!(e===document.documentElement&&e===document.body)&&(t=f.changedTouches[0].pageY)},n=f=>{if(!e||e===document.documentElement||e===document.body){f.preventDefault();return}let m=f.changedTouches[0].pageY,b=e.scrollTop,v=e.scrollHeight-e.clientHeight;v!==0&&((b<=0&&m>t||b>=v&&m<t)&&f.preventDefault(),t=m)},o=f=>{let m=f.target;cr(m)&&m!==document.activeElement&&(f.preventDefault(),m.style.transform="translateY(-2000px)",m.focus(),requestAnimationFrame(()=>{m.style.transform=""}))},a=f=>{let m=f.target;cr(m)&&(m.style.transform="translateY(-2000px)",requestAnimationFrame(()=>{m.style.transform="",qt&&(qt.height<window.innerHeight?requestAnimationFrame(()=>{xn(m)}):qt.addEventListener("resize",()=>xn(m),{once:!0}))}))},l=()=>{window.scrollTo(0,0)},i=window.pageXOffset,c=window.pageYOffset,u=mn(Cc(document.documentElement,"paddingRight",`${window.innerWidth-document.documentElement.clientWidth}px`));window.scrollTo(0,0);let d=mn(tt(document,"touchstart",r,{passive:!1,capture:!0}),tt(document,"touchmove",n,{passive:!1,capture:!0}),tt(document,"touchend",o,{passive:!1,capture:!0}),tt(document,"focus",a,!0),tt(window,"scroll",l));return()=>{u(),d(),window.scrollTo(i,c)}}function Cc(e,t,r){let n=e.style[t];return e.style[t]=r,()=>{e.style[t]=n}}function tt(e,t,r,n){return e.addEventListener(t,r,n),()=>{e.removeEventListener(t,r,n)}}function xn(e){let t=document.scrollingElement||document.documentElement;for(;e&&e!==t;){let r=zs(e);if(r!==document.documentElement&&r!==document.body&&r!==e){let n=r.getBoundingClientRect().top,o=e.getBoundingClientRect().top,a=e.getBoundingClientRect().bottom;const l=r.getBoundingClientRect().bottom+vc;a>l&&(r.scrollTop+=o-n)}e=r.parentElement}}function cr(e){return e instanceof HTMLInputElement&&!bc.has(e.type)||e instanceof HTMLTextAreaElement||e instanceof HTMLElement&&e.isContentEditable}function kc(e,t){typeof e=="function"?e(t):e!=null&&(e.current=t)}function jc(...e){return t=>e.forEach(r=>kc(r,t))}function Ws(...e){return x.useCallback(jc(...e),e)}const Vs=new WeakMap;function ee(e,t,r=!1){if(!e||!(e instanceof HTMLElement))return;let n={};Object.entries(t).forEach(([o,a])=>{if(o.startsWith("--")){e.style.setProperty(o,a);return}n[o]=e.style[o],e.style[o]=a}),!r&&Vs.set(e,n)}function Sc(e,t){if(!e||!(e instanceof HTMLElement))return;let r=Vs.get(e);r&&(e.style[t]=r[t])}const X=e=>{switch(e){case"top":case"bottom":return!0;case"left":case"right":return!1;default:return e}};function wt(e,t){if(!e)return null;const r=window.getComputedStyle(e),n=r.transform||r.webkitTransform||r.mozTransform;let o=n.match(/^matrix3d\((.+)\)$/);return o?parseFloat(o[1].split(", ")[X(t)?13:12]):(o=n.match(/^matrix\((.+)\)$/),o?parseFloat(o[1].split(", ")[X(t)?5:4]):null)}function Ec(e){return 8*(Math.log(e+1)-2)}function Gt(e,t){if(!e)return()=>{};const r=e.style.cssText;return Object.assign(e.style,t),()=>{e.style.cssText=r}}function Nc(...e){return(...t)=>{for(const r of e)typeof r=="function"&&r(...t)}}const G={DURATION:.5,EASE:[.32,.72,0,1]},Us=.4,Tc=.25,Rc=100,Hs=8,Ae=16,ur=26,Kt="vaul-dragging";function qs(e){const t=p.useRef(e);return p.useEffect(()=>{t.current=e}),p.useMemo(()=>(...r)=>t.current==null?void 0:t.current.call(t,...r),[])}function Oc({defaultProp:e,onChange:t}){const r=p.useState(e),[n]=r,o=p.useRef(n),a=qs(t);return p.useEffect(()=>{o.current!==n&&(a(n),o.current=n)},[n,o,a]),r}function Qs({prop:e,defaultProp:t,onChange:r=()=>{}}){const[n,o]=Oc({defaultProp:t,onChange:r}),a=e!==void 0,l=a?e:n,i=qs(r),c=p.useCallback(u=>{if(a){const f=typeof u=="function"?u(e):u;f!==e&&i(f)}else o(u)},[a,e,o,i]);return[l,c]}function _c({activeSnapPointProp:e,setActiveSnapPointProp:t,snapPoints:r,drawerRef:n,overlayRef:o,fadeFromIndex:a,onSnapPointChange:l,direction:i="bottom",container:c,snapToSequentialPoint:u}){const[d,f]=Qs({prop:e,defaultProp:r?.[0],onChange:t}),[m,b]=p.useState(typeof window<"u"?{innerWidth:window.innerWidth,innerHeight:window.innerHeight}:void 0);p.useEffect(()=>{function C(){b({innerWidth:window.innerWidth,innerHeight:window.innerHeight})}return window.addEventListener("resize",C),()=>window.removeEventListener("resize",C)},[]);const v=p.useMemo(()=>d===r?.[r.length-1]||null,[r,d]),h=p.useMemo(()=>{var C;return(C=r?.findIndex(j=>j===d))!=null?C:null},[r,d]),y=r&&r.length>0&&(a||a===0)&&!Number.isNaN(a)&&r[a]===d||!r,g=p.useMemo(()=>{const C=c?{width:c.getBoundingClientRect().width,height:c.getBoundingClientRect().height}:typeof window<"u"?{width:window.innerWidth,height:window.innerHeight}:{width:0,height:0};var j;return(j=r?.map(O=>{const L=typeof O=="string";let M=0;if(L&&(M=parseInt(O,10)),X(i)){const _=L?M:m?O*C.height:0;return m?i==="bottom"?C.height-_:-C.height+_:_}const $=L?M:m?O*C.width:0;return m?i==="right"?C.width-$:-C.width+$:$}))!=null?j:[]},[r,m,c]),S=p.useMemo(()=>h!==null?g?.[h]:null,[g,h]),k=p.useCallback(C=>{var j;const O=(j=g?.findIndex(L=>L===C))!=null?j:null;l(O),ee(n.current,{transition:`transform ${G.DURATION}s cubic-bezier(${G.EASE.join(",")})`,transform:X(i)?`translate3d(0, ${C}px, 0)`:`translate3d(${C}px, 0, 0)`}),g&&O!==g.length-1&&a!==void 0&&O!==a&&O<a?ee(o.current,{transition:`opacity ${G.DURATION}s cubic-bezier(${G.EASE.join(",")})`,opacity:"0"}):ee(o.current,{transition:`opacity ${G.DURATION}s cubic-bezier(${G.EASE.join(",")})`,opacity:"1"}),f(r?.[Math.max(O,0)])},[n.current,r,g,a,o,f]);p.useEffect(()=>{if(d||e){var C;const j=(C=r?.findIndex(O=>O===e||O===d))!=null?C:-1;g&&j!==-1&&typeof g[j]=="number"&&k(g[j])}},[d,e,r,g,k]);function w({draggedDistance:C,closeDrawer:j,velocity:O,dismissible:L}){if(a===void 0)return;const M=i==="bottom"||i==="right"?(S??0)-C:(S??0)+C,$=h===a-1,_=h===0,W=C>0;if($&&ee(o.current,{transition:`opacity ${G.DURATION}s cubic-bezier(${G.EASE.join(",")})`}),!u&&O>2&&!W){L?j():k(g[0]);return}if(!u&&O>2&&W&&g&&r){k(g[r.length-1]);return}const V=g?.reduce((U,E)=>typeof U!="number"||typeof E!="number"?U:Math.abs(E-M)<Math.abs(U-M)?E:U),Q=X(i)?window.innerHeight:window.innerWidth;if(O>Us&&Math.abs(C)<Q*.4){const U=W?1:-1;if(U>0&&v&&r){k(g[r.length-1]);return}if(_&&U<0&&L&&j(),h===null)return;k(g[h+U]);return}k(V)}function N({draggedDistance:C}){if(S===null)return;const j=i==="bottom"||i==="right"?S-C:S+C;(i==="bottom"||i==="right")&&j<g[g.length-1]||(i==="top"||i==="left")&&j>g[g.length-1]||ee(n.current,{transform:X(i)?`translate3d(0, ${j}px, 0)`:`translate3d(${j}px, 0, 0)`})}function A(C,j){if(!r||typeof h!="number"||!g||a===void 0)return null;const O=h===a-1;if(h>=a&&j)return 0;if(O&&!j)return 1;if(!y&&!O)return null;const M=O?h+1:h-1,$=O?g[M]-g[M-1]:g[M+1]-g[M],_=C/Math.abs($);return O?1-_:_}return{isLastSnapPoint:v,activeSnapPoint:d,shouldFade:y,getPercentageDragged:A,setActiveSnapPoint:f,activeSnapPointIndex:h,onRelease:w,onDrag:N,snapPointsOffset:g}}const Ac=()=>()=>{};function Pc(){const{direction:e,isOpen:t,shouldScaleBackground:r,setBackgroundColorOnScale:n,noBodyStyles:o}=ct(),a=p.useRef(null),l=p.useMemo(()=>document.body.style.backgroundColor,[]);function i(){return(window.innerWidth-ur)/window.innerWidth}p.useEffect(()=>{if(t&&r){a.current&&clearTimeout(a.current);const c=document.querySelector("[data-vaul-drawer-wrapper]")||document.querySelector("[vaul-drawer-wrapper]");if(!c)return;Nc(n&&!o?Gt(document.body,{background:"black"}):Ac,Gt(c,{transformOrigin:X(e)?"top":"left",transitionProperty:"transform, border-radius",transitionDuration:`${G.DURATION}s`,transitionTimingFunction:`cubic-bezier(${G.EASE.join(",")})`}));const u=Gt(c,{borderRadius:`${Hs}px`,overflow:"hidden",...X(e)?{transform:`scale(${i()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`}:{transform:`scale(${i()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`}});return()=>{u(),a.current=window.setTimeout(()=>{l?document.body.style.background=l:document.body.style.removeProperty("background")},G.DURATION*1e3)}}},[t,r,l])}let rt=null;function Mc({isOpen:e,modal:t,nested:r,hasBeenOpened:n,preventScrollRestoration:o,noBodyStyles:a}){const[l,i]=p.useState(()=>typeof window<"u"?window.location.href:""),c=p.useRef(0),u=p.useCallback(()=>{if(hn()&&rt===null&&e&&!a){rt={position:document.body.style.position,top:document.body.style.top,left:document.body.style.left,height:document.body.style.height,right:"unset"};const{scrollX:f,innerHeight:m}=window;document.body.style.setProperty("position","fixed","important"),Object.assign(document.body.style,{top:`${-c.current}px`,left:`${-f}px`,right:"0px",height:"auto"}),window.setTimeout(()=>window.requestAnimationFrame(()=>{const b=m-window.innerHeight;b&&c.current>=m&&(document.body.style.top=`${-(c.current+b)}px`)}),300)}},[e]),d=p.useCallback(()=>{if(hn()&&rt!==null&&!a){const f=-parseInt(document.body.style.top,10),m=-parseInt(document.body.style.left,10);Object.assign(document.body.style,rt),window.requestAnimationFrame(()=>{if(o&&l!==window.location.href){i(window.location.href);return}window.scrollTo(m,f)}),rt=null}},[l]);return p.useEffect(()=>{function f(){c.current=window.scrollY}return f(),window.addEventListener("scroll",f),()=>{window.removeEventListener("scroll",f)}},[]),p.useEffect(()=>{if(t)return()=>{typeof document>"u"||document.querySelector("[data-vaul-drawer]")||d()}},[t,d]),p.useEffect(()=>{r||!n||(e?(!window.matchMedia("(display-mode: standalone)").matches&&u(),t||window.setTimeout(()=>{d()},500)):d())},[e,n,l,t,r,u,d]),{restorePositionSetting:d}}function Ic({open:e,onOpenChange:t,children:r,onDrag:n,onRelease:o,snapPoints:a,shouldScaleBackground:l=!1,setBackgroundColorOnScale:i=!0,closeThreshold:c=Tc,scrollLockTimeout:u=Rc,dismissible:d=!0,handleOnly:f=!1,fadeFromIndex:m=a&&a.length-1,activeSnapPoint:b,setActiveSnapPoint:v,fixed:h,modal:y=!0,onClose:g,nested:S,noBodyStyles:k=!1,direction:w="bottom",defaultOpen:N=!1,disablePreventScroll:A=!0,snapToSequentialPoint:C=!1,preventScrollRestoration:j=!1,repositionInputs:O=!0,onAnimationEnd:L,container:M,autoFocus:$=!1}){var _,W;const[V=!1,Q]=Qs({defaultProp:N,prop:e,onChange:P=>{t?.(P),!P&&!S&&co(),setTimeout(()=>{L?.(P)},G.DURATION*1e3),P&&!y&&typeof window<"u"&&window.requestAnimationFrame(()=>{document.body.style.pointerEvents="auto"}),P||(document.body.style.pointerEvents="auto")}}),[U,E]=p.useState(!1),[ne,ie]=p.useState(!1),[Te,pe]=p.useState(!1),H=p.useRef(null),Z=p.useRef(null),de=p.useRef(null),be=p.useRef(null),F=p.useRef(null),xe=p.useRef(!1),ye=p.useRef(null),we=p.useRef(0),fe=p.useRef(!1),Re=p.useRef(!N),Tr=p.useRef(0),I=p.useRef(null),Rr=p.useRef(((_=I.current)==null?void 0:_.getBoundingClientRect().height)||0),Or=p.useRef(((W=I.current)==null?void 0:W.getBoundingClientRect().width)||0),Pt=p.useRef(0),so=p.useCallback(P=>{a&&P===Xe.length-1&&(Z.current=new Date)},[]),{activeSnapPoint:oo,activeSnapPointIndex:$e,setActiveSnapPoint:_r,onRelease:ao,snapPointsOffset:Xe,onDrag:io,shouldFade:Ar,getPercentageDragged:lo}=_c({snapPoints:a,activeSnapPointProp:b,setActiveSnapPointProp:v,drawerRef:I,fadeFromIndex:m,overlayRef:H,onSnapPointChange:so,direction:w,container:M,snapToSequentialPoint:C});yc({isDisabled:!V||ne||!y||Te||!U||!O||!A});const{restorePositionSetting:co}=Mc({isOpen:V,modal:y,nested:S??!1,hasBeenOpened:U,preventScrollRestoration:j,noBodyStyles:k});function ut(){return(window.innerWidth-ur)/window.innerWidth}function uo(P){var z,q;!d&&!a||I.current&&!I.current.contains(P.target)||(Rr.current=((z=I.current)==null?void 0:z.getBoundingClientRect().height)||0,Or.current=((q=I.current)==null?void 0:q.getBoundingClientRect().width)||0,ie(!0),de.current=new Date,Bs()&&window.addEventListener("touchend",()=>xe.current=!1,{once:!0}),P.target.setPointerCapture(P.pointerId),we.current=X(w)?P.pageY:P.pageX)}function Pr(P,z){var q;let B=P;const Y=(q=window.getSelection())==null?void 0:q.toString(),se=I.current?wt(I.current,w):null,re=new Date;if(B.tagName==="SELECT"||B.hasAttribute("data-vaul-no-drag")||B.closest("[data-vaul-no-drag]"))return!1;if(w==="right"||w==="left")return!0;if(Z.current&&re.getTime()-Z.current.getTime()<500)return!1;if(se!==null&&(w==="bottom"?se>0:se<0))return!0;if(Y&&Y.length>0)return!1;if(F.current&&re.getTime()-F.current.getTime()<u&&se===0||z)return F.current=re,!1;for(;B;){if(B.scrollHeight>B.clientHeight){if(B.scrollTop!==0)return F.current=new Date,!1;if(B.getAttribute("role")==="dialog")return!0}B=B.parentNode}return!0}function fo(P){if(I.current&&ne){const z=w==="bottom"||w==="right"?1:-1,q=(we.current-(X(w)?P.pageY:P.pageX))*z,B=q>0,Y=a&&!d&&!B;if(Y&&$e===0)return;const se=Math.abs(q),re=document.querySelector("[data-vaul-drawer-wrapper]"),Ce=w==="bottom"||w==="top"?Rr.current:Or.current;let le=se/Ce;const Oe=lo(se,B);if(Oe!==null&&(le=Oe),Y&&le>=1||!xe.current&&!Pr(P.target,B))return;if(I.current.classList.add(Kt),xe.current=!0,ee(I.current,{transition:"none"}),ee(H.current,{transition:"none"}),a&&io({draggedDistance:q}),B&&!a){const he=Ec(q),dt=Math.min(he*-1,0)*z;ee(I.current,{transform:X(w)?`translate3d(0, ${dt}px, 0)`:`translate3d(${dt}px, 0, 0)`});return}const ke=1-le;if((Ar||m&&$e===m-1)&&(n?.(P,le),ee(H.current,{opacity:`${ke}`,transition:"none"},!0)),re&&H.current&&l){const he=Math.min(ut()+le*(1-ut()),1),dt=8-le*8,Ir=Math.max(0,14-le*14);ee(re,{borderRadius:`${dt}px`,transform:X(w)?`scale(${he}) translate3d(0, ${Ir}px, 0)`:`scale(${he}) translate3d(${Ir}px, 0, 0)`,transition:"none"},!0)}if(!a){const he=se*z;ee(I.current,{transform:X(w)?`translate3d(0, ${he}px, 0)`:`translate3d(${he}px, 0, 0)`})}}}p.useEffect(()=>{window.requestAnimationFrame(()=>{Re.current=!0})},[]),p.useEffect(()=>{var P;function z(){if(!I.current||!O)return;const q=document.activeElement;if(cr(q)||fe.current){var B;const Y=((B=window.visualViewport)==null?void 0:B.height)||0,se=window.innerHeight;let re=se-Y;const Ce=I.current.getBoundingClientRect().height||0,le=Ce>se*.8;Pt.current||(Pt.current=Ce);const Oe=I.current.getBoundingClientRect().top;if(Math.abs(Tr.current-re)>60&&(fe.current=!fe.current),a&&a.length>0&&Xe&&$e){const ke=Xe[$e]||0;re+=ke}if(Tr.current=re,Ce>Y||fe.current){const ke=I.current.getBoundingClientRect().height;let he=ke;ke>Y&&(he=Y-(le?Oe:ur)),h?I.current.style.height=`${ke-Math.max(re,0)}px`:I.current.style.height=`${Math.max(he,Y-Oe)}px`}else hc()||(I.current.style.height=`${Pt.current}px`);a&&a.length>0&&!fe.current?I.current.style.bottom="0px":I.current.style.bottom=`${Math.max(re,0)}px`}}return(P=window.visualViewport)==null||P.addEventListener("resize",z),()=>{var q;return(q=window.visualViewport)==null?void 0:q.removeEventListener("resize",z)}},[$e,a,Xe]);function Je(P){ho(),g?.(),P||Q(!1),setTimeout(()=>{a&&_r(a[0])},G.DURATION*1e3)}function Mr(){if(!I.current)return;const P=document.querySelector("[data-vaul-drawer-wrapper]"),z=wt(I.current,w);ee(I.current,{transform:"translate3d(0, 0, 0)",transition:`transform ${G.DURATION}s cubic-bezier(${G.EASE.join(",")})`}),ee(H.current,{transition:`opacity ${G.DURATION}s cubic-bezier(${G.EASE.join(",")})`,opacity:"1"}),l&&z&&z>0&&V&&ee(P,{borderRadius:`${Hs}px`,overflow:"hidden",...X(w)?{transform:`scale(${ut()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`,transformOrigin:"top"}:{transform:`scale(${ut()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`,transformOrigin:"left"},transitionProperty:"transform, border-radius",transitionDuration:`${G.DURATION}s`,transitionTimingFunction:`cubic-bezier(${G.EASE.join(",")})`},!0)}function ho(){!ne||!I.current||(I.current.classList.remove(Kt),xe.current=!1,ie(!1),be.current=new Date)}function mo(P){if(!ne||!I.current)return;I.current.classList.remove(Kt),xe.current=!1,ie(!1),be.current=new Date;const z=wt(I.current,w);if(!P||!Pr(P.target,!1)||!z||Number.isNaN(z)||de.current===null)return;const q=be.current.getTime()-de.current.getTime(),B=we.current-(X(w)?P.pageY:P.pageX),Y=Math.abs(B)/q;if(Y>.05&&(pe(!0),setTimeout(()=>{pe(!1)},200)),a){ao({draggedDistance:B*(w==="bottom"||w==="right"?1:-1),closeDrawer:Je,velocity:Y,dismissible:d}),o?.(P,!0);return}if(w==="bottom"||w==="right"?B>0:B<0){Mr(),o?.(P,!0);return}if(Y>Us){Je(),o?.(P,!1);return}var se;const re=Math.min((se=I.current.getBoundingClientRect().height)!=null?se:0,window.innerHeight);var Ce;const le=Math.min((Ce=I.current.getBoundingClientRect().width)!=null?Ce:0,window.innerWidth),Oe=w==="left"||w==="right";if(Math.abs(z)>=(Oe?le:re)*c){Je(),o?.(P,!1);return}o?.(P,!0),Mr()}p.useEffect(()=>(V&&(ee(document.documentElement,{scrollBehavior:"auto"}),Z.current=new Date),()=>{Sc(document.documentElement,"scrollBehavior")}),[V]);function po(P){const z=P?(window.innerWidth-Ae)/window.innerWidth:1,q=P?-Ae:0;ye.current&&window.clearTimeout(ye.current),ee(I.current,{transition:`transform ${G.DURATION}s cubic-bezier(${G.EASE.join(",")})`,transform:X(w)?`scale(${z}) translate3d(0, ${q}px, 0)`:`scale(${z}) translate3d(${q}px, 0, 0)`}),!P&&I.current&&(ye.current=setTimeout(()=>{const B=wt(I.current,w);ee(I.current,{transition:"none",transform:X(w)?`translate3d(0, ${B}px, 0)`:`translate3d(${B}px, 0, 0)`})},500))}function xo(P,z){if(z<0)return;const q=(window.innerWidth-Ae)/window.innerWidth,B=q+z*(1-q),Y=-Ae+z*Ae;ee(I.current,{transform:X(w)?`scale(${B}) translate3d(0, ${Y}px, 0)`:`scale(${B}) translate3d(${Y}px, 0, 0)`,transition:"none"})}function vo(P,z){const q=X(w)?window.innerHeight:window.innerWidth,B=z?(q-Ae)/q:1,Y=z?-Ae:0;z&&ee(I.current,{transition:`transform ${G.DURATION}s cubic-bezier(${G.EASE.join(",")})`,transform:X(w)?`scale(${B}) translate3d(0, ${Y}px, 0)`:`scale(${B}) translate3d(${Y}px, 0, 0)`})}return p.useEffect(()=>{y||window.requestAnimationFrame(()=>{document.body.style.pointerEvents="auto"})},[y]),p.createElement(oc,{defaultOpen:N,onOpenChange:P=>{!d&&!P||(P?E(!0):Je(!0),Q(P))},open:V},p.createElement($s.Provider,{value:{activeSnapPoint:oo,snapPoints:a,setActiveSnapPoint:_r,drawerRef:I,overlayRef:H,onOpenChange:t,onPress:uo,onRelease:mo,onDrag:fo,dismissible:d,shouldAnimate:Re,handleOnly:f,isOpen:V,isDragging:ne,shouldFade:Ar,closeDrawer:Je,onNestedDrag:xo,onNestedOpenChange:po,onNestedRelease:vo,keyboardIsOpen:fe,modal:y,snapPointsOffset:Xe,activeSnapPointIndex:$e,direction:w,shouldScaleBackground:l,setBackgroundColorOnScale:i,noBodyStyles:k,container:M,autoFocus:$}},r))}const Gs=p.forwardRef(function({...e},t){const{overlayRef:r,snapPoints:n,onRelease:o,shouldFade:a,isOpen:l,modal:i,shouldAnimate:c}=ct(),u=Ws(t,r),d=n&&n.length>0;if(!i)return null;const f=p.useCallback(m=>o(m),[o]);return p.createElement(ic,{onMouseUp:f,ref:u,"data-vaul-overlay":"","data-vaul-snap-points":l&&d?"true":"false","data-vaul-snap-points-overlay":l&&a?"true":"false","data-vaul-animate":c?.current?"true":"false",...e})});Gs.displayName="Drawer.Overlay";const Ks=p.forwardRef(function({onPointerDownOutside:e,style:t,onOpenAutoFocus:r,...n},o){const{drawerRef:a,onPress:l,onRelease:i,onDrag:c,keyboardIsOpen:u,snapPointsOffset:d,activeSnapPointIndex:f,modal:m,isOpen:b,direction:v,snapPoints:h,container:y,handleOnly:g,shouldAnimate:S,autoFocus:k}=ct(),[w,N]=p.useState(!1),A=Ws(o,a),C=p.useRef(null),j=p.useRef(null),O=p.useRef(!1),L=h&&h.length>0;Pc();const M=(_,W,V=0)=>{if(O.current)return!0;const Q=Math.abs(_.y),U=Math.abs(_.x),E=U>Q,ne=["bottom","right"].includes(W)?1:-1;if(W==="left"||W==="right"){if(!(_.x*ne<0)&&U>=0&&U<=V)return E}else if(!(_.y*ne<0)&&Q>=0&&Q<=V)return!E;return O.current=!0,!0};p.useEffect(()=>{L&&window.requestAnimationFrame(()=>{N(!0)})},[]);function $(_){C.current=null,O.current=!1,i(_)}return p.createElement(lc,{"data-vaul-drawer-direction":v,"data-vaul-drawer":"","data-vaul-delayed-snap-points":w?"true":"false","data-vaul-snap-points":b&&L?"true":"false","data-vaul-custom-container":y?"true":"false","data-vaul-animate":S?.current?"true":"false",...n,ref:A,style:d&&d.length>0?{"--snap-point-height":`${d[f??0]}px`,...t}:t,onPointerDown:_=>{g||(n.onPointerDown==null||n.onPointerDown.call(n,_),C.current={x:_.pageX,y:_.pageY},l(_))},onOpenAutoFocus:_=>{r?.(_),k||_.preventDefault()},onPointerDownOutside:_=>{if(e?.(_),!m||_.defaultPrevented){_.preventDefault();return}u.current&&(u.current=!1)},onFocusOutside:_=>{if(!m){_.preventDefault();return}},onPointerMove:_=>{if(j.current=_,g||(n.onPointerMove==null||n.onPointerMove.call(n,_),!C.current))return;const W=_.pageY-C.current.y,V=_.pageX-C.current.x,Q=_.pointerType==="touch"?10:2;M({x:V,y:W},v,Q)?c(_):(Math.abs(V)>Q||Math.abs(W)>Q)&&(C.current=null)},onPointerUp:_=>{n.onPointerUp==null||n.onPointerUp.call(n,_),C.current=null,O.current=!1,i(_)},onPointerOut:_=>{n.onPointerOut==null||n.onPointerOut.call(n,_),$(j.current)},onContextMenu:_=>{n.onContextMenu==null||n.onContextMenu.call(n,_),j.current&&$(j.current)}})});Ks.displayName="Drawer.Content";const Dc=250,Lc=120,Fc=p.forwardRef(function({preventCycle:e=!1,children:t,...r},n){const{closeDrawer:o,isDragging:a,snapPoints:l,activeSnapPoint:i,setActiveSnapPoint:c,dismissible:u,handleOnly:d,isOpen:f,onPress:m,onDrag:b}=ct(),v=p.useRef(null),h=p.useRef(!1);function y(){if(h.current){k();return}window.setTimeout(()=>{g()},Lc)}function g(){if(a||e||h.current){k();return}if(k(),!l||l.length===0){u||o();return}if(i===l[l.length-1]&&u){o();return}const N=l.findIndex(C=>C===i);if(N===-1)return;const A=l[N+1];c(A)}function S(){v.current=window.setTimeout(()=>{h.current=!0},Dc)}function k(){v.current&&window.clearTimeout(v.current),h.current=!1}return p.createElement("div",{onClick:y,onPointerCancel:k,onPointerDown:w=>{d&&m(w),S()},onPointerMove:w=>{d&&b(w)},ref:n,"data-vaul-drawer-visible":f?"true":"false","data-vaul-handle":"","aria-hidden":"true",...r},p.createElement("span",{"data-vaul-handle-hitarea":"","aria-hidden":"true"},t))});Fc.displayName="Drawer.Handle";function $c(e){const t=ct(),{container:r=t.container,...n}=e;return p.createElement(ac,{container:r,...n})}const Pe={Root:Ic,Content:Ks,Overlay:Gs,Portal:$c,Close:dc,Title:cc,Description:uc};function Bc(e=768){const[t,r]=p.useState(!1);return p.useEffect(()=>{const n=()=>{r(window.innerWidth<e)};return n(),window.addEventListener("resize",n),()=>window.removeEventListener("resize",n)},[e]),t}function jr({open:e,onOpenChange:t,children:r,title:n,description:o,className:a="",showCloseButton:l=!0}){const i=Bc(),[c,u]=p.useState(!1),{theme:d}=ra();p.useEffect(()=>{u(!0)},[]);const f={position:"fixed",inset:0,zIndex:9999,display:"flex",alignItems:"center",justifyContent:"center"},m={position:"absolute",inset:0,backgroundColor:"rgba(0, 0, 0, 0.6)",backdropFilter:"blur(4px)"},b={position:"relative",zIndex:10,display:"flex",flexDirection:"column",maxHeight:"90vh",borderRadius:d.overlay.radius,backgroundColor:d.overlay.background,border:"1px solid rgba(255, 255, 255, 0.1)",boxShadow:"0 25px 50px -12px rgba(0, 0, 0, 0.25)"},v={display:"flex",alignItems:"center",justifyContent:"space-between",padding:"1rem",borderBottom:"1px solid rgba(255, 255, 255, 0.05)",flexShrink:0},h={fontSize:"1.125rem",fontWeight:700,color:d.colors.text.primary,margin:0},y={fontSize:"0.875rem",color:d.colors.text.secondary,margin:0},g={padding:"0.375rem",borderRadius:d.radius.button,color:d.colors.text.secondary,background:"transparent",border:"none",cursor:"pointer"},S={flex:1,overflow:"hidden",display:"flex",flexDirection:"column"};if(i)return s.jsx(Pe.Root,{open:e,onOpenChange:t,children:s.jsxs(Pe.Portal,{children:[s.jsx(Pe.Overlay,{className:"fixed inset-0 z-[9999] bg-black/60 backdrop-blur-sm"}),s.jsxs(Pe.Content,{className:`fixed inset-x-0 bottom-0 z-[9999] mt-24 flex max-h-[96vh] flex-col rounded-t-[var(--optimex-overlay-radius)] bg-[var(--optimex-overlay-background)] border-t border-white/10 outline-none ${a}`,children:[s.jsx("div",{className:"mx-auto mt-4 h-1.5 w-12 flex-shrink-0 rounded-[9999px] bg-white/20"}),(n||l)&&s.jsxs("div",{className:"flex items-center justify-between border-b border-white/[0.05] px-4 pb-4 pt-2",children:[s.jsxs("div",{children:[n&&s.jsx(Pe.Title,{className:"text-lg font-bold text-[var(--optimex-text)]",children:n}),o&&s.jsx(Pe.Description,{className:"text-sm text-[var(--optimex-text-secondary)]",children:o})]}),l&&s.jsx(Pe.Close,{className:"rounded-[var(--optimex-radius-button)] p-1.5 text-[var(--optimex-text-secondary)] transition-colors hover:bg-white/10 hover:text-[var(--optimex-text)]",children:s.jsx(Ie,{})})]}),s.jsx("div",{className:"flex-1 overflow-auto",children:r})]})]})});if(!e||!c)return null;const k=s.jsxs("div",{style:f,children:[s.jsx("div",{style:m,onClick:()=>t(!1)}),s.jsxs("div",{role:"dialog","aria-modal":"true","aria-labelledby":n?"modal-title":void 0,"aria-describedby":o?"modal-description":void 0,style:b,className:a,children:[(n||l)&&s.jsxs("div",{style:v,children:[s.jsxs("div",{children:[n&&s.jsx("h2",{id:"modal-title",style:h,children:n}),o&&s.jsx("p",{id:"modal-description",style:y,children:o})]}),l&&s.jsx("button",{onClick:()=>t(!1),style:g,children:s.jsx(Ie,{})})]}),s.jsx("div",{style:S,children:r})]})]});return hr.createPortal(k,document.body)}const zc=({children:e,className:t=""})=>s.jsx("div",{className:`p-4 ${t}`,children:e}),Wc=({children:e,className:t=""})=>s.jsx("div",{className:`flex gap-2 border-t border-white/[0.05] p-4 ${t}`,children:e});function dr({children:e,onClick:t,isActive:r=!1,type:n="button",className:o=""}){return s.jsx("button",{type:n,onClick:t,className:as(`px-2 py-1 bg-white/5 rounded-md text-xs transition-colors shadow-sm border ${r?"border-[var(--optimex-primary)] text-[var(--optimex-text)]":"border-transparent text-[var(--optimex-text-secondary)] hover:bg-[var(--optimex-surface-hover)] hover:text-[var(--optimex-text)]"} ${o}`),children:e})}const Vc={"bottom-right":"right-0 top-full mt-2","bottom-left":"left-0 top-full mt-2","bottom-center":"left-1/2 -translate-x-1/2 top-full mt-2","top-right":"right-0 bottom-full mb-2","top-left":"left-0 bottom-full mb-2","top-center":"left-1/2 -translate-x-1/2 bottom-full mb-2"},Uc={"bottom-right":"-top-2 right-4 rotate-45 border-l border-t","bottom-left":"-top-2 left-4 rotate-45 border-l border-t","bottom-center":"-top-2 left-1/2 -translate-x-1/2 rotate-45 border-l border-t","top-right":"-bottom-2 right-4 rotate-45 border-r border-b","top-left":"-bottom-2 left-4 rotate-45 border-r border-b","top-center":"-bottom-2 left-1/2 -translate-x-1/2 rotate-45 border-r border-b"};function Hc({isOpen:e,onClose:t,children:r,anchorRef:n,position:o="bottom-right",width:a="w-72",showArrow:l=!0,className:i="",ariaLabel:c}){const u=p.useRef(null);return p.useEffect(()=>{if(!e)return;const d=b=>{const v=b.target;u.current?.contains(v)||n?.current?.contains(v)||t()},f=b=>{b.key==="Escape"&&t()},m=setTimeout(()=>{document.addEventListener("mousedown",d),document.addEventListener("keydown",f)},0);return()=>{clearTimeout(m),document.removeEventListener("mousedown",d),document.removeEventListener("keydown",f)}},[e,t,n]),e?s.jsxs("div",{ref:u,className:`absolute z-50 rounded-[var(--optimex-overlay-radius)] border border-white/10 bg-[var(--optimex-overlay-background)] p-4 shadow-xl ${Vc[o]} ${a} ${i}`,role:"dialog","aria-label":c,children:[l&&s.jsx("div",{className:`absolute h-4 w-4 border-white/10 bg-[var(--optimex-overlay-background)] ${Uc[o]}`}),s.jsx("div",{className:"relative",children:r})]}):null}function qc({value:e,onChange:t,placeholder:r,hasError:n=!1,leftIcon:o,rightContent:a,type:l="text",inputMode:i="text",disabled:c=!1,className:u=""}){return s.jsxs("div",{className:`flex rounded-[var(--optimex-radius-button)] items-center gap-2 bg-white/5 border py-3 px-3 transition-colors ${n?"border-[var(--optimex-error)]":"border-white/10 hover:border-[var(--optimex-primary)] focus-within:border-[var(--optimex-primary)]"} ${c?"opacity-50 cursor-not-allowed":""} ${u}`,children:[o&&s.jsx(o,{className:"size-5 text-[var(--optimex-text-secondary)] shrink-0"}),s.jsx("input",{type:l,inputMode:i,value:e,onChange:d=>t(d.target.value),placeholder:r,disabled:c,className:"flex-1 min-w-0 bg-transparent text-[var(--optimex-text)] text-sm placeholder:text-[var(--optimex-text-secondary)]/30 outline-none disabled:cursor-not-allowed"}),a]})}const Qc={sm:{container:"h-6 w-6",icon:"h-6 w-6",badge:"h-3 w-3"},md:{container:"h-8 w-8",icon:"h-8 w-8",badge:"h-4 w-4"},lg:{container:"h-10 w-10",icon:"h-10 w-10",badge:"h-5 w-5"},xl:{container:"h-14 w-14",icon:"h-14 w-14",badge:"h-6 w-6"}};function Le({token:e,size:t="md",showNetworkBadge:r=!0}){const n=Qc[t];return s.jsxs("div",{className:`relative shrink-0 ${n.container}`,children:[s.jsx("img",{src:e.token_logo_uri||"/placeholder-token.svg",alt:e.token_symbol,className:`${n.icon} rounded-[9999px] bg-[var(--optimex-background)]`,onError:o=>{o.target.src="/placeholder-token.svg"}}),r&&e.network_logo_uri&&s.jsx("img",{src:e.network_logo_uri,alt:e.network_name,className:`absolute -bottom-1 -right-1 ${n.badge} rounded-[9999px] border-2 border-[var(--optimex-surface)]`,onError:o=>{o.target.style.display="none"}})]})}const Gc="widget-container rounded-[var(--optimex-radius-widget)] p-4 shadow-2xl relative w-full min-w-0";function Sr({children:e,className:t}){return s.jsx("div",{className:t??Gc,children:e})}function Kc(){return s.jsxs("div",{className:"relative size-20 mb-4",children:[s.jsx("div",{className:"absolute inset-0 rounded-full bg-[var(--optimex-error)]/10 animate-pulse"}),s.jsx("div",{className:"absolute inset-2 rounded-full bg-[var(--optimex-error)]/20"}),s.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:s.jsx(Ta,{className:"size-10 text-[var(--optimex-error)]"})})]})}function Yc({error:e,onRetry:t,className:r}){const n=()=>{const o=e?.message?.toLowerCase()||"";return o.includes("network")||o.includes("fetch")?"Connection issue. Check your internet and try again.":o.includes("timeout")?"Request timed out. The server might be busy.":o.includes("401")||o.includes("403")?"Access denied. Please check your credentials.":o.includes("500")||o.includes("server")?"Server is having issues. Please try again later.":"Something went wrong while loading. Let's give it another shot!"};return s.jsx(Sr,{className:r,children:s.jsx("div",{className:"bg-[var(--optimex-surface)] rounded-2xl p-6 border border-white/[0.02]",children:s.jsxs("div",{className:"flex flex-col items-center justify-center text-center",children:[s.jsx(Kc,{}),s.jsx("h3",{className:"text-base font-bold text-[var(--optimex-text)] mb-1",children:"Oops! Something went wrong"}),s.jsx("p",{className:"text-sm text-[var(--optimex-text-secondary)] mb-6 max-w-[280px]",children:n()}),s.jsx(qn,{onClick:t,size:"md",fullWidth:!0,leftIcon:s.jsx(Na,{className:"size-4 transition-transform group-hover:rotate-180"}),children:"Try Again"}),e?.message&&s.jsxs("details",{className:"mt-4 w-full",children:[s.jsx("summary",{className:"cursor-pointer text-xs text-[var(--optimex-text-secondary)]/60 hover:text-[var(--optimex-text-secondary)] transition-colors",children:"Technical details"}),s.jsx("p",{className:"mt-2 bg-white/5 p-3 text-left text-xs text-[var(--optimex-text-secondary)] break-all border border-white/[0.02]",children:e.message})]})]})})})}function Zc({className:e}){return s.jsxs("div",{className:"flex flex-col gap-4",children:[s.jsxs("header",{className:"flex items-center justify-between px-2",children:[s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx("div",{className:"size-8 rounded-lg bg-[var(--optimex-primary)]/30 animate-pulse"}),s.jsx("div",{className:"h-6 w-28 rounded bg-white/10 animate-pulse"})]}),s.jsx("div",{className:"size-10 rounded-lg bg-white/5 animate-pulse"})]}),s.jsxs(Sr,{className:e,children:[s.jsxs("div",{className:"bg-[var(--optimex-surface)] rounded-2xl p-4 border border-white/[0.02] mb-2",children:[s.jsx("div",{className:"flex justify-between items-center mb-4",children:s.jsx("div",{className:"h-3 w-10 animate-pulse rounded bg-white/10"})}),s.jsxs("div",{className:"flex items-center justify-between gap-4",children:[s.jsxs("div",{className:"flex-1",children:[s.jsx("div",{className:"h-8 w-24 animate-pulse rounded bg-white/10 mb-2"}),s.jsx("div",{className:"h-3 w-16 animate-pulse rounded bg-white/5"})]}),s.jsxs("div",{className:"flex items-center gap-2 bg-white/5 p-2 pr-3 rounded-full border border-white/10",children:[s.jsx("div",{className:"size-8 rounded-full bg-white/10 animate-pulse"}),s.jsxs("div",{children:[s.jsx("div",{className:"h-4 w-12 animate-pulse rounded bg-white/10 mb-1"}),s.jsx("div",{className:"h-2 w-16 animate-pulse rounded bg-white/5"})]})]})]})]}),s.jsx("div",{className:"relative z-10 -my-4 flex justify-center",children:s.jsx("div",{className:"size-10 rounded-full bg-[var(--optimex-surface)] border-4 border-[var(--optimex-background)] animate-pulse"})}),s.jsxs("div",{className:"bg-[var(--optimex-surface)] rounded-2xl p-4 border border-white/[0.02] mb-4",children:[s.jsx("div",{className:"flex justify-between items-center mb-4",children:s.jsx("div",{className:"h-3 w-6 animate-pulse rounded bg-white/10"})}),s.jsxs("div",{className:"flex items-center justify-between gap-4",children:[s.jsxs("div",{className:"flex-1",children:[s.jsx("div",{className:"h-8 w-20 animate-pulse rounded bg-white/10 mb-2"}),s.jsx("div",{className:"h-3 w-14 animate-pulse rounded bg-white/5"})]}),s.jsxs("div",{className:"flex items-center gap-2 bg-white/5 p-2 pr-3 rounded-full border border-white/10",children:[s.jsx("div",{className:"size-8 rounded-full bg-white/10 animate-pulse"}),s.jsxs("div",{children:[s.jsx("div",{className:"h-4 w-12 animate-pulse rounded bg-white/10 mb-1"}),s.jsx("div",{className:"h-2 w-16 animate-pulse rounded bg-white/5"})]})]})]})]}),s.jsxs("div",{className:"bg-[var(--optimex-surface)] rounded-2xl p-4 border border-white/[0.02] mb-4",children:[s.jsx("div",{className:"h-3 w-28 animate-pulse rounded bg-white/10 mb-2"}),s.jsxs("div",{className:"flex items-center gap-2 bg-white/5 border border-white/10 py-3 px-3 rounded-md",children:[s.jsx("div",{className:"size-5 rounded-full bg-white/10 animate-pulse shrink-0"}),s.jsx("div",{className:"h-4 flex-1 animate-pulse rounded bg-white/5"})]}),s.jsx("div",{className:"h-2 w-48 animate-pulse rounded bg-white/5 mt-2"})]}),s.jsx("div",{className:"h-12 w-full animate-pulse rounded-xl bg-[var(--optimex-primary)]/30 bg-white/5 mt-2"}),s.jsx("div",{className:"mt-4 flex items-center justify-center",children:s.jsx("div",{className:"h-4 w-32 animate-pulse rounded bg-white/5"})})]})]})}const Ys=p.createContext(null);function Xc({children:e}){const t=lt(),{data:r,isLoading:n,error:o,refetch:a}=aa(t.apiBaseUrl),l=t.renderLoading??Zc,i=t.renderError??Yc;if(n)return s.jsx(l,{});if(o||!r){const c=o instanceof Error?o:new Error("Failed to load tokens");return s.jsx(i,{error:c,onRetry:()=>a()})}return s.jsx(Ys.Provider,{value:{tokensData:r,refetch:a},children:e})}function Jc(){const e=p.useContext(Ys);if(!e)throw new Error("useTokensData must be used within TokensProvider");return e}function eu({token:e,value:t,onChange:r,placeholder:n,error:o,onClose:a}){const l=p.useCallback(()=>{r("")},[r]),i=p.useCallback(async()=>{try{const f=await navigator.clipboard.readText();f&&r(f.trim())}catch(f){console.error("Failed to read clipboard:",f)}},[r]),c=()=>n||(e?`Enter ${e.network_name} address`:"Enter receiving address"),u=e?.network_name||"destination",d=p.useMemo(()=>_a(e?.network_name)||Fn,[e?.network_name]);return s.jsxs("div",{className:"bg-[var(--optimex-surface)] rounded-[var(--optimex-radius-input)] p-4 border border-white/[0.05] animate-in slide-in-from-top-2 duration-300",children:[s.jsxs("div",{className:"flex justify-between items-center mb-2",children:[s.jsx("label",{className:"text-[var(--optimex-text-secondary)] text-xs",children:"Recipient Address"}),a&&s.jsx("button",{type:"button",onClick:l,className:"text-[var(--optimex-text-secondary)]/50 hover:text-[var(--optimex-text-secondary)] transition-colors",children:s.jsx(Ie,{className:"size-4"})})]}),s.jsx(qc,{value:t,onChange:r,placeholder:c(),hasError:!!o,leftIcon:d,rightContent:t?s.jsx("button",{type:"button",onClick:l,className:"text-[var(--optimex-text-secondary)] hover:text-[var(--optimex-text)] transition-colors",children:s.jsx(Ie,{className:"size-5"})}):s.jsx("button",{type:"button",onClick:i,className:"text-[var(--optimex-text-secondary)] hover:text-[var(--optimex-primary)] transition-colors",children:s.jsx(Ea,{className:"size-5"})})}),o?s.jsxs("p",{className:"text-[10px] text-[var(--optimex-error)] mt-2 flex items-center gap-1",children:[s.jsx(qr,{className:"size-3"}),o]}):s.jsxs("p",{className:"text-[10px] text-[var(--optimex-text-secondary)] mt-2 flex items-center gap-1",children:[s.jsx(qr,{className:"size-3"}),"Ensure the address matches the ",u," network."]})]})}function vn({token:e,value:t,onChange:r,readOnly:n=!1,onSelectToken:o,isLoading:a=!1,loadingText:l="Loading...",balance:i,isOutput:c=!1,isWalletConnected:u=!1,usdValue:d="$0.00"}){const f=h=>{if(n||!r)return;const y=h.target.value;/^[0-9]*\.?[0-9]*$/.test(y)&&r(y)},m=u&&!c&&i!==void 0,b=()=>{if(!i||!r||n)return;const h=(parseFloat(i)/2).toString();r(h)},v=()=>{!i||!r||n||r(i)};return s.jsxs("div",{className:"bg-[var(--optimex-surface)] rounded-[var(--optimex-radius-input)] p-4 flex flex-col gap-2 border border-white/[0.02] focus-within:border-[var(--optimex-primary)]/40 transition-colors",children:[s.jsxs("div",{className:"flex justify-between items-center",children:[s.jsx("span",{className:"text-[var(--optimex-text-secondary)] text-xs",children:c?"To":"From"}),s.jsx("div",{className:"flex items-center gap-2",children:m&&s.jsxs(s.Fragment,{children:[s.jsxs("span",{className:"text-[var(--optimex-text-secondary)] text-xs",children:["Balance: ",i," ",e?.token_symbol]}),s.jsxs("div",{className:"flex gap-2",children:[s.jsx(dr,{onClick:b,children:"50%"}),s.jsx(dr,{onClick:v,children:"Max"})]})]})})]}),s.jsxs("div",{className:"flex items-center justify-between gap-4",children:[s.jsxs("div",{className:"flex-1 min-w-0",children:[s.jsx("input",{type:"text",inputMode:"decimal",placeholder:"0.0",value:t,onChange:f,readOnly:n,className:"w-full bg-transparent border-none p-0 text-[var(--optimex-text)] text-2xl font-bold focus:ring-0 placeholder:text-[var(--optimex-text-secondary)]/30 outline-none"}),s.jsxs("p",{className:"text-[var(--optimex-text-secondary)] text-xs mt-1",children:["~",d]})]}),s.jsxs("button",{onClick:o,className:"flex items-center gap-2 bg-white/5 hover:bg-white/10 p-2 pr-3 rounded-[9999px] transition-all border border-white/10 active:scale-95 shrink-0",children:[e?s.jsxs(s.Fragment,{children:[s.jsx(Le,{token:e,size:"md"}),s.jsxs("div",{className:"text-left",children:[s.jsx("p",{className:"text-[var(--optimex-text)] text-sm font-bold leading-none",children:e.token_symbol}),s.jsx("p",{className:"text-[var(--optimex-text-secondary)] text-[10px] leading-none mt-1",children:e.network_name})]})]}):s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"size-8 rounded-[9999px] bg-white/10"}),s.jsx("span",{className:"text-[var(--optimex-text)] text-sm font-bold",children:"Select"})]}),s.jsx(Dn,{className:"size-4 text-[var(--optimex-text-secondary)]"})]})]}),a&&s.jsxs("div",{className:"flex items-center justify-end gap-2 text-sm text-[var(--optimex-text-secondary)]",children:[s.jsx("div",{className:"size-3 animate-spin rounded-[9999px] border border-[var(--optimex-primary)] border-t-transparent"}),s.jsx("span",{children:l})]})]})}const Yt=[.5,.75,1];function tu({value:e,onChange:t}){const[r,n]=p.useState(""),[o,a]=p.useState(!Yt.includes(e)),l=p.useCallback(u=>{a(!1),n(""),t(u)},[t]),i=p.useCallback(u=>{const d=u.target.value;if(d===""||/^\d*\.?\d*$/.test(d)){n(d),a(!0);const f=parseFloat(d);!isNaN(f)&&f>0&&f<=50&&t(f)}},[t]),c=p.useCallback(()=>{a(!0),!r&&e&&n(Yt.includes(e)?"":String(e))},[r,e]);return s.jsxs("div",{className:"space-y-3",children:[s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsx("span",{className:"text-sm font-medium text-[var(--optimex-text)]",children:"Slippage Tolerance"}),s.jsxs("span",{className:"text-sm text-[var(--optimex-text-secondary)]",children:[e,"%"]})]}),s.jsxs("div",{className:"flex items-center gap-2",children:[Yt.map(u=>s.jsxs(dr,{onClick:()=>l(u),isActive:e===u&&!o,className:"flex-1",children:[u,"%"]},u)),s.jsxs("div",{className:`flex flex-1 items-center justify-center px-2 rounded-md transition-colors shadow-sm bg-white/5 border ${o?"border-[var(--optimex-primary)]":"border-transparent hover:bg-white/10"}`,children:[s.jsx("input",{type:"text",inputMode:"decimal",placeholder:"Custom",value:r,onChange:i,onFocus:c,className:"w-full min-w-0 py-[6px] bg-transparent text-center text-xs outline-none placeholder:text-[var(--optimex-text-secondary)] text-[var(--optimex-text)]"}),s.jsx("span",{className:"text-xs text-[var(--optimex-text-secondary)]",children:"%"})]})]}),e>5&&s.jsx("p",{className:"text-xs text-[var(--optimex-warning)]",children:"This may result in an unfavorable trade. Try lowering your slippage setting."})]})}function ru({isOpen:e,onClose:t,value:r,onChange:n,anchorRef:o}){const a=p.useCallback(l=>{n(l)},[n]);return s.jsx(Hc,{isOpen:e,onClose:t,anchorRef:o,position:"bottom-right",width:"w-96",ariaLabel:"Slippage settings",children:s.jsx(tu,{value:r,onChange:a})})}const nu=({title:e})=>s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx("div",{className:"size-8 bg-[var(--optimex-primary)] rounded-[var(--optimex-radius-button)] flex items-center justify-center shadow-[0_0_15px_rgba(235,98,0,0.3)]",children:s.jsx(ja,{className:"w-5 h-auto text-white"})}),s.jsx("h2",{className:"text-xl font-bold tracking-tight text-[var(--optimex-text)]",children:e})]});function su({title:e="Swap",headerLeft:t,slippage:r=.75,onSlippageChange:n,isSettingsOpen:o=!1,onSettingsToggle:a,onHistoryClick:l,hideHistory:i=!1}){const c=p.useRef(null);return s.jsxs("header",{className:"flex items-center justify-between px-2",children:[t??s.jsx(nu,{title:e}),s.jsxs("div",{className:"flex items-center gap-2",children:[!i&&s.jsx("button",{onClick:l,className:"size-10 rounded-[var(--optimex-radius-button)] bg-white/5 hover:bg-white/10 text-[var(--optimex-text-secondary)] hover:text-[var(--optimex-text)] transition-colors flex items-center justify-center","aria-label":"Trade History",children:s.jsx(Ca,{className:"size-5"})}),s.jsxs("div",{className:"relative",children:[s.jsx("button",{ref:c,onClick:a,className:"size-10 rounded-[var(--optimex-radius-button)] bg-white/5 hover:bg-white/10 text-[var(--optimex-text-secondary)] hover:text-[var(--optimex-text)] transition-colors flex items-center justify-center","aria-label":"Settings",children:s.jsx(Oa,{className:"size-5"})}),s.jsx(ru,{isOpen:o,onClose:()=>a?.(),value:r,onChange:u=>n?.(u),anchorRef:c})]})]})]})}function Zs({onClick:e,disabled:t}){return s.jsx("div",{className:"!m-0 absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-10",children:s.jsx("button",{onClick:e,disabled:t,className:"size-10 rounded-[9999px] bg-[var(--optimex-surface)] border-4 border-white/5 flex items-center justify-center text-[var(--optimex-primary)] hover:scale-110 transition-all shadow-xl disabled:cursor-not-allowed",children:s.jsx(ba,{className:"size-5"})})})}function ou({quote:e,fromToken:t,toToken:r,amount:n,slippage:o,isFetching:a}){const[l,i]=p.useState(!1),[c,u]=p.useState(!1),d=p.useCallback(()=>{u(g=>!g)},[]),f=p.useCallback(()=>{i(g=>!g)},[]),m=parseFloat(n)||0,b=parseFloat(e.min_amount_out)/Math.pow(10,r.token_decimals),v=m>0?b/m:0,h=b>0?m/b:0,y=()=>c?`1 ${r.token_symbol} = ${h.toFixed(6)} ${t.token_symbol}`:`1 ${t.token_symbol} = ${v.toFixed(6)} ${r.token_symbol}`;return s.jsxs("div",{className:"bg-white/[0.02] rounded-[var(--optimex-radius-button)] border border-white/5 overflow-hidden",children:[s.jsxs("button",{type:"button",onClick:f,className:"w-full flex items-center justify-between p-3 text-xs cursor-pointer hover:bg-white/[0.02] transition-colors",children:[s.jsx("div",{className:"flex items-center gap-2 text-[var(--optimex-text-secondary)] font-medium",children:a?s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("div",{className:"size-3 animate-spin rounded-[9999px] border border-[var(--optimex-primary)] border-t-transparent"}),s.jsx("span",{children:"Updating..."})]}):s.jsx("span",{role:"button",tabIndex:0,onClick:g=>{g.stopPropagation(),d()},onKeyDown:g=>{(g.key==="Enter"||g.key===" ")&&(g.stopPropagation(),d())},className:"hover:text-[var(--optimex-text)] transition-colors",children:y()})}),s.jsx(Dn,{className:`size-4 text-[var(--optimex-text-secondary)] transition-transform ${l?"rotate-180":""}`})]}),l&&s.jsxs("div",{className:"px-3 pb-3 space-y-2 text-xs border-t border-white/5",children:[s.jsxs("div",{className:"flex items-center justify-between pt-3",children:[s.jsx("span",{className:"text-[var(--optimex-text-secondary)]",children:"Min. Received"}),s.jsxs("span",{className:"font-medium text-[var(--optimex-text)]",children:[Ne(e.min_amount_out,r.token_decimals)," ",r.token_symbol]})]}),s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsx("span",{className:"text-[var(--optimex-text-secondary)]",children:"Est. Time"}),s.jsx("span",{className:"font-medium text-[var(--optimex-primary)]",children:"~10 minutes"})]}),s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsx("span",{className:"text-[var(--optimex-text-secondary)]",children:"Slippage Tolerance"}),s.jsxs("span",{className:"font-medium text-[var(--optimex-text)]",children:[o,"%"]})]})]})]})}function au({text:e,disabled:t,onClick:r}){return s.jsx("button",{disabled:t,onClick:r,className:"w-full font-semibold text-black bg-[var(--optimex-primary)] hover:brightness-110 py-4 rounded-[var(--optimex-radius-button)] shadow-lg shadow-[var(--optimex-primary)]/30 flex items-center justify-center transition-all active:scale-[0.98] disabled:cursor-not-allowed disabled:opacity-50",children:e})}function iu(){return s.jsxs("a",{href:"https://optimex.com",target:"_blank",rel:"noopener noreferrer",className:"flex items-center justify-center gap-1.5 text-[var(--optimex-text-secondary)] text-[10px] opacity-50 hover:opacity-70 transition-opacity",children:[s.jsx("span",{children:"Powered by"}),s.jsx(Sa,{className:"h-3 w-auto"})]})}function lu({value:e,onChange:t,placeholder:r="Search by name or symbol..."}){return s.jsx("div",{className:"flex-shrink-0 p-4 pb-3",children:s.jsxs("div",{className:"relative",children:[s.jsx("input",{type:"text",placeholder:r,value:e,onChange:n=>t(n.target.value),className:"w-full rounded-xl bg-white/5 border border-white/10 px-4 py-3 pl-10 pr-10 text-[var(--optimex-text)] outline-none placeholder:text-[var(--optimex-text-secondary)]/60 transition-colors hover:border-[var(--optimex-primary)] focus:border-[var(--optimex-primary)]"}),s.jsx(Ra,{className:"absolute left-3 top-1/2 h-5 w-5 -translate-y-1/2 text-[var(--optimex-text-secondary)]"}),e&&s.jsx("button",{type:"button",onClick:()=>t(""),className:"absolute right-3 top-1/2 -translate-y-1/2 text-[var(--optimex-text-secondary)] hover:text-[var(--optimex-text)] transition-colors",children:s.jsx(Ie,{className:"size-5"})})]})})}function cu({networks:e,selectedNetwork:t,onSelectNetwork:r}){return s.jsxs("div",{className:"w-1/3 min-w-[140px] border-r border-white/[0.05] overflow-y-auto p-2",children:[s.jsx("div",{className:"mb-2 px-2 text-xs font-medium uppercase tracking-wider text-[var(--optimex-text-secondary)]",children:"Networks"}),s.jsxs("div",{className:"space-y-1 px-2",children:[s.jsxs("button",{onClick:()=>r(null),className:`flex w-full items-center gap-2 rounded-lg px-3 py-2 text-sm transition-colors ${t===null?"bg-white/5 text-[var(--optimex-text)]":"text-[var(--optimex-text-secondary)] hover:bg-white/5 hover:text-[var(--optimex-text)]"}`,children:[s.jsx(ga,{}),s.jsx("span",{children:"All"})]}),e.map(n=>s.jsx(uu,{network:n,isSelected:t===n.network_id,onSelect:()=>r(n.network_id)},n.network_id))]})]})}function uu({network:e,isSelected:t,onSelect:r}){return s.jsxs("button",{onClick:r,className:`flex w-full items-center gap-2 rounded-lg px-3 py-2 text-sm transition-colors ${t?"bg-white/5 text-[var(--optimex-text)]":"text-[var(--optimex-text-secondary)] hover:bg-white/5 hover:text-[var(--optimex-text)]"}`,children:[e.logo_uri?s.jsx("img",{src:e.logo_uri,alt:e.name,className:"h-8 w-8 rounded-lg",onError:n=>{n.target.style.display="none"}}):s.jsx("div",{className:"h-6 w-6 rounded-full bg-white/10"}),s.jsx("span",{className:"truncate",children:e.name})]})}function du({tokens:e,selectedSymbol:t,onSelectSymbol:r,maxVisible:n=12}){return s.jsxs("div",{className:"flex-shrink-0 border-b border-white/[0.05] p-2",children:[s.jsx("div",{className:"mb-2 px-2 text-xs font-medium uppercase tracking-wider text-[var(--optimex-text-secondary)]",children:"Tokens"}),s.jsxs("div",{className:"flex flex-wrap gap-1.5 overflow-hidden max-h-[5rem]",children:[s.jsx("button",{onClick:()=>r(null),className:`border rounded-lg px-2.5 py-1 text-xs font-medium transition-colors ${t===null?"border-[var(--optimex-primary)] text-[var(--optimex-text)]":"border-transparent text-[var(--optimex-text-secondary)] hover:bg-white/10 hover:text-[var(--optimex-text)]"}`,children:"All"}),e.slice(0,n).map(o=>s.jsx(fu,{token:o,isSelected:t===o.token_symbol,onSelect:()=>r(o.token_symbol)},o.token_symbol))]})]})}function fu({token:e,isSelected:t,onSelect:r}){return s.jsxs("button",{onClick:r,className:as("flex items-center gap-1 rounded-lg px-2.5 py-1 text-xs font-medium transition-colors outline-none border bg-white/5",t?"border-[var(--optimex-primary)] text-[var(--optimex-text)]":"border-transparent text-[var(--optimex-text-secondary)] hover:bg-white/10 hover:text-[var(--optimex-text)]"),children:[e.token_logo_uri&&s.jsx("img",{src:e.token_logo_uri,alt:e.token_symbol,className:"h-4 w-4 rounded-full",onError:n=>{n.target.style.display="none"}}),e.token_symbol]})}function Ze(){const e=p.useContext(An);if(!e)throw new Error("useWallet must be used within WalletProvider");return e}function At(e){return`https://network-api-stg.bitdex.xyz/${e}/rpc/zwD70RMT9DrE8L5SaMnJNMF8m70Gum`}function hu(e){return e==="bitcoin_testnet"?"https://mempool.space/testnet4/api":"https://mempool.space/api"}function Er(e){return!e.token_address||e.token_address===""||e.token_address==="native"||e.token_address==="0x0000000000000000000000000000000000000000"}function mu(e,t){if(!e||e==="0")return"0";const r=BigInt(e),n=BigInt(10**t),o=r/n,a=r%n;if(a===BigInt(0))return o.toString();let l=a.toString().padStart(t,"0");return l=l.replace(/0+$/,""),l.length>6&&(l=l.slice(0,6)),`${o}.${l}`}function pu(e){return`0x70a08231000000000000000000000000${e.toLowerCase().replace("0x","")}`}async function Xs(e,t){const r=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!r.ok)throw new Error(`RPC request failed: ${r.status}`);return r.json()}async function xu(e,t){const n=await Xs(e,{jsonrpc:"2.0",method:"eth_getBalance",params:[t,"latest"],id:1});if(n.error)throw new Error(`RPC error: ${n.error.message}`);const o=n.result||"0x0";return BigInt(o).toString()}async function vu(e,t,r){const n={jsonrpc:"2.0",method:"eth_call",params:[{to:t,data:pu(r)},"latest"],id:1},o=await Xs(e,n);if(o.error)throw new Error(`RPC error: ${o.error.message}`);const a=o.result||"0x0";return BigInt(a).toString()}async function gu(e,t){const r=At(e.network_id),n=Er(e);let o;return n?o=await xu(r,t):o=await vu(r,e.token_address,t),{rawBalance:o,isNative:n}}async function bu(e,t){const n=`${hu(e.network_id)}/address/${t}`,o=await fetch(n);if(!o.ok)throw new Error(`Mempool API request failed: ${o.status}`);const a=await o.json(),l=a.chain_stats.funded_txo_sum-a.chain_stats.spent_txo_sum,i=a.mempool_stats.funded_txo_sum-a.mempool_stats.spent_txo_sum;return{rawBalance:(l+i).toString(),isNative:!0}}async function Js(e,t){const r=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!r.ok)throw new Error(`RPC request failed: ${r.status}`);return r.json()}async function yu(e,t){const n=await Js(e,{jsonrpc:"2.0",method:"getBalance",params:[t],id:1});if(n.error)throw new Error(`RPC error: ${n.error.message}`);return(n.result?.value||0).toString()}async function wu(e,t,r){const o=await Js(e,{jsonrpc:"2.0",method:"getTokenAccountsByOwner",params:[r,{mint:t},{encoding:"jsonParsed"}],id:1});if(o.error)throw new Error(`RPC error: ${o.error.message}`);const a=o.result?.value||[];let l=BigInt(0);for(const i of a){const c=i.account.data.parsed.info.tokenAmount.amount;l+=BigInt(c)}return l.toString()}async function Cu(e,t){const r=At(e.network_id),n=Er(e);let o;return n?o=await yu(r,t):o=await wu(r,e.token_address,t),{rawBalance:o,isNative:n}}function ku(e,t){if(!t)return!1;switch(t){case K.EVM:return e.isEvmConnected;case K.BTC:return e.isBtcConnected;case K.SOLANA:return e.isSolanaConnected;default:return!1}}function ju(e){if(!e)return"";switch(e){case K.EVM:return"EVM";case K.BTC:return"Bitcoin";case K.SOLANA:return"Solana";default:return e}}function Su(e,t){if(!t)return null;switch(t){case K.EVM:return e.evmAddress;case K.BTC:return e.btcAddress;case K.SOLANA:return e.solanaAddress;default:return null}}async function eo({provider:e,address:t,chainId:r,chainName:n="Unknown"}){let o=t;if(!o){const l=await e.request({method:"eth_accounts"});if(!l||l.length===0)throw new Error("No accounts found. Please connect your wallet first.");o=l[0]}let a=r;if(a===void 0){const l=await e.request({method:"eth_chainId"});a=parseInt(l,16)}return to({provider:e,address:o,chainId:a,chainName:n})}function to({provider:e,address:t,chainId:r,chainName:n="Unknown"}){return{address:t,publicKey:t,chain:{id:r,name:n,type:"EVM"},sendTransaction:async i=>{const c=i;return await e.request({method:"eth_sendTransaction",params:[{from:t,to:c.to,value:c.value?`0x${c.value.toString(16)}`:void 0,data:c.data}]})},getChainId:async()=>{const i=await e.request({method:"eth_chainId"});return parseInt(i,16)},switchChain:async i=>{try{await e.request({method:"wallet_switchEthereumChain",params:[{chainId:`0x${i.toString(16)}`}]})}catch(c){throw c.code===4902?new Error(`Chain ${i} not found in wallet. Please add it first.`):c}}}}const Eu=eo;async function Nu(e,t){const r=e.token_address||"native";let n;switch(e.network_type){case K.BTC:n=await bu(e,t);break;case K.SOLANA:n=await Cu(e,t);break;case K.EVM:default:n=await gu(e,t)}return{tokenId:r,networkId:e.network_id,walletAddress:t,rawBalance:n.rawBalance,formattedBalance:mu(n.rawBalance,e.token_decimals),updatedAt:Date.now()}}const Tu=30*1e3,Ru=15*1e3;function Ou(e,t){return!e||!t?["balance"]:["balance",e.network_id,e.token_address||"native",t]}function ro({token:e,walletAddress:t,enabled:r=!0,polling:n=!1,pollingInterval:o=Ru}){const a=r&&!!e&&!!t,{data:l,isLoading:i,isFetching:c,error:u,refetch:d}=Qe({queryKey:Ou(e,t),queryFn:()=>Nu(e,t),enabled:a,staleTime:Tu,retry:1,refetchOnWindowFocus:!1,refetchInterval:n?o:!1});return{balance:l,formattedBalance:l?.formattedBalance||"0",isLoading:a&&i,isFetching:a&&c,error:u,refetch:d}}function _u({token:e,isSelected:t,isDisabled:r,onSelect:n}){const o=Ze(),a=Su(o,e.network_type),{formattedBalance:l,isLoading:i}=ro({token:e,walletAddress:a,enabled:!!a}),c=!!a;return s.jsxs("button",{onClick:n,disabled:r,className:`flex w-full items-center gap-3 rounded-lg p-2 transition-colors ${t?"bg-white/5 text-[var(--optimex-text)]":r?"cursor-not-allowed opacity-50":"hover:bg-white/5"}`,children:[s.jsx(Le,{token:e}),s.jsxs("div",{className:"flex-1 text-left",children:[s.jsx("div",{className:"text-sm text-[var(--optimex-text-secondary)]",children:e.token_name}),s.jsxs("div",{className:"flex items-center gap-2",children:[c&&s.jsx("span",{className:"text-sm font-medium text-[var(--optimex-text)]",children:i?s.jsx("span",{className:"inline-block h-4 w-12 animate-pulse rounded bg-white/10"}):l}),s.jsx("span",{className:"font-medium text-[var(--optimex-text)]",children:e.token_symbol})]})]}),t&&s.jsx(gr,{className:"h-5 w-5 text-[var(--optimex-primary)]"})]})}function Au({tokens:e,selectedTokenId:t,disabledTokenId:r,disabledTokenIds:n,isLoading:o,emptyMessage:a="No tokens available",onSelect:l}){return o?s.jsx("div",{className:"flex-1 overflow-y-auto p-2",children:s.jsx("div",{className:"flex items-center justify-center py-8",children:s.jsx("div",{className:"h-8 w-8 animate-spin rounded-full border-2 border-[var(--optimex-primary)] border-t-transparent"})})}):e.length===0?s.jsx("div",{className:"flex-1 overflow-y-auto p-2",children:s.jsx("div",{className:"py-8 text-center text-[var(--optimex-text-secondary)]",children:a})}):s.jsx("div",{className:"flex-1 overflow-y-auto p-2",children:s.jsx("div",{className:"space-y-1",children:e.map(i=>{const c=r===i.token_id||n?.has(i.token_id)===!0;return s.jsx(_u,{token:i,isSelected:t===i.token_id,isDisabled:c,onSelect:()=>l(i)},i.token_id)})})})}function Pu({isOpen:e,onClose:t,onSelect:r,tokensData:n,isLoading:o,selectedToken:a,disabledTokenId:l,disabledTokenIds:i,tokens:c,emptyMessage:u,title:d="Select Token",filterNetworkType:f}){const[m,b]=p.useState(""),[v,h]=p.useState(null),[y,g]=p.useState(null),S=p.useMemo(()=>n?.supported_networks?f?n.supported_networks.filter(M=>M.type===f):n.supported_networks:[],[n,f]),k=c??n?.tokens,w=p.useMemo(()=>k?k.filter(M=>{if(f&&M.network_type!==f||v&&M.network_id!==v)return!1;if(m){const $=(W,V)=>W.toLowerCase().includes(V.toLowerCase()),_=m.toLowerCase();return $(M.token_symbol,_)||$(M.token_name,_)||$(M.token_address,_)}return!0}):[],[k,m,v,f]),N=p.useMemo(()=>{if(!k)return[];const M=new Map;return k.forEach($=>{f&&$.network_type!==f||v&&$.network_id!==v||M.has($.token_symbol)||M.set($.token_symbol,$)}),Array.from(M.values())},[k,f,v]),A=p.useMemo(()=>y?w.filter(M=>M.token_symbol===y):w,[w,y]),C=()=>{b(""),h(null),g(null)},j=M=>{r(M),t(),C()},O=M=>{M||(t(),C())},L=M=>{h(M),g(null)};return s.jsx(jr,{open:e,onOpenChange:O,title:d,className:"h-full md:h-[70vh] max-h-[600px] w-full max-w-2xl",children:s.jsxs("div",{className:"flex h-full flex-col",children:[s.jsx(lu,{value:m,onChange:b}),s.jsxs("div",{className:"flex flex-1 overflow-hidden",children:[s.jsx(cu,{networks:S,selectedNetwork:v,onSelectNetwork:L}),s.jsxs("div",{className:"flex flex-1 flex-col overflow-hidden pl-2",children:[s.jsx(du,{tokens:N,selectedSymbol:y,onSelectSymbol:g}),s.jsx(Au,{tokens:A,selectedTokenId:a?.token_id,disabledTokenId:l,disabledTokenIds:i,isLoading:o,emptyMessage:m?"No tokens found":u??"No tokens available",onSelect:j})]})]})]})})}function gn({token:e,amount:t,label:r,isEstimated:n=!1,highlight:o=!1,usdValue:a="$0.00"}){return s.jsx("div",{className:`p-4 rounded-xl border transition-all duration-200 ${o?"bg-zinc-900/50 border-[var(--optimex-primary)]/20 shadow-[0_0_15px_rgba(235,98,0,0.1)]":"bg-zinc-900/50 border-white/5"}`,children:s.jsxs("div",{className:"flex items-center gap-4",children:[s.jsx("div",{className:"size-12 flex items-center justify-center ",children:s.jsx(Le,{token:e,size:"lg"})}),s.jsxs("div",{className:"flex flex-col gap-0.5 min-w-0",children:[s.jsxs("p",{className:`text-xs font-medium uppercase tracking-wider ${o?"text-[var(--optimex-primary)]":"text-zinc-500"}`,children:[r," ",n&&"(Est.)"]}),s.jsx("p",{className:"text-white text-sm font-semibold truncate",children:e.token_symbol}),s.jsx("p",{className:"text-zinc-500 text-xs truncate",children:e.network_name})]}),s.jsxs("div",{className:"flex flex-col items-end gap-0.5 ml-auto shrink-0",children:[s.jsx("p",{className:"text-white text-lg font-bold",children:n?`~${t}`:t}),s.jsx("p",{className:"text-zinc-400 text-xs",children:a})]})]})})}function Mu({fromToken:e,toToken:t,fromAmount:r,toAmount:n,fromUsdValue:o="$0.00",toUsdValue:a="$0.00"}){return s.jsxs("div",{className:"relative flex flex-col gap-2",children:[s.jsx(gn,{token:e,amount:r,label:"You Pay",usdValue:o}),s.jsx(Zs,{onClick:()=>{},disabled:!0}),s.jsx(gn,{token:t,amount:n,label:"You Receive",usdValue:a})]})}function Zt({label:e,value:t,borderTop:r}){return s.jsxs("div",{className:`flex justify-between items-center text-sm ${r?"pt-2 mt-2 border-t border-white/5":""}`,children:[s.jsx("span",{className:"text-zinc-500",children:e}),s.jsx("div",{className:"flex items-center gap-1 text-white font-medium",children:t})]})}function Iu({minReceived:e,estimatedTime:t,slippage:r,networkFee:n="Included"}){return s.jsxs("div",{className:"bg-[var(--optimex-surface)] rounded-xl p-4 border border-white/5 space-y-3",children:[s.jsx(Zt,{label:"Min. Received",value:e}),s.jsx(Zt,{label:"Estimated Time",value:s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("div",{className:"size-2 bg-[var(--optimex-primary)] rounded-full animate-pulse shadow-[0_0_8px_rgba(235,98,0,0.8)]"}),s.jsx("span",{children:t})]})}),s.jsx(Zt,{label:"Slippage Tolerance",value:r})]})}const Du=3e4,Lu=6e4;function Tt({symbol:e,enabled:t=!0}){const r=lt(),{data:n,isLoading:o,isError:a}=Qe({queryKey:["tokenPrice",e],queryFn:async()=>{if(!e)throw new Error("Symbol is required");return(await Ge(r.apiBaseUrl).getTokenPrice(e)).current_price},enabled:t&&!!e,staleTime:Du,refetchInterval:Lu,retry:2});return{price:n??null,isLoading:o,isError:a,calculateUsdValue:i=>{if(!n||!i||isNaN(parseFloat(i)))return"$0.00";const c=parseFloat(i);if(c===0)return"$0.00";const u=c*n;return u<.01?"<$0.01":u<1?`$${u.toFixed(4)}`:u<1e3?`$${u.toFixed(2)}`:u<1e6?`$${(u/1e3).toFixed(2)}K`:`$${(u/1e6).toFixed(2)}M`}}}function Fu({isOpen:e,onClose:t,onConfirm:r,fromToken:n,toToken:o,amountIn:a,quote:l,slippage:i,stage:c,receivingAddress:u=""}){const d=c!=="idle"&&c!=="confirming"&&c!=="error"&&c!=="submitted",f=c==="submitted",m=c==="error",b=Ne(l.min_amount_out,o.token_decimals),{calculateUsdValue:v}=Tt({symbol:n.token_symbol,enabled:e}),{calculateUsdValue:h}=Tt({symbol:o.token_symbol,enabled:e}),y=v(a),g=h(b),S=w=>{!w&&!d&&t()},k=f?"Swap Complete":m?"Swap Failed":"Review Swap";return s.jsxs(jr,{open:e,onOpenChange:S,title:k,showCloseButton:!d,className:"w-full max-w-md",children:[s.jsxs(zc,{className:"space-y-3",children:[s.jsx(Mu,{fromToken:n,toToken:o,fromAmount:a,toAmount:b,fromUsdValue:y,toUsdValue:g}),s.jsx(Iu,{minReceived:`${b} ${o.token_symbol}`,estimatedTime:"~10 minutes",slippage:`${i}%`}),u&&s.jsx("div",{className:"bg-[var(--optimex-surface)] rounded-xl px-2 border border-white/5",children:s.jsx(Pa,{icon:Fn,label:"Receiving Address",address:u})})]}),s.jsx(Wc,{children:s.jsx(Ei,{state:d?"processing":f?"success":m?"error":"idle",onConfirm:f?t:r,confirmText:"Confirm Swap"})})]})}function $u({swap:e}){const{tokens:t,modals:r,tokenSelect:n,actions:o,input:a,quote:l,execution:i}=e;return s.jsxs(s.Fragment,{children:[r.tokenSelect.isOpen&&s.jsx(Pu,{isOpen:r.tokenSelect.isOpen,onClose:r.tokenSelect.close,onSelect:o.selectToken,tokensData:t.data,isLoading:!1,selectedToken:n.type==="from"?t.from:t.to,disabledTokenId:n.type==="from"?t.to?.token_id:t.from?.token_id,tokens:n.type==="to"?t.availableTo:t.all,emptyMessage:n.type==="to"?"No available pairs for selected source token":void 0,title:n.type==="from"?"Select Source Token":"Select Destination Token"}),l.data&&t.from&&t.to&&r.confirm.isOpen&&s.jsx(Fu,{isOpen:r.confirm.isOpen,onClose:o.closeConfirmModal,onConfirm:o.confirmSwap,fromToken:t.from,toToken:t.to,amountIn:a.amount,quote:l.data,slippage:a.slippage,stage:i.stage,txHash:i.txHash,error:i.error,receivingAddress:e.addresses.receiving})]})}function Nr({status:e}){const t={pending:{icon:Ln,text:"Processing",bgClass:"bg-yellow-500/10",textClass:"text-yellow-500",animate:!0},success:{icon:gr,text:"Completed",bgClass:"bg-green-500/10",textClass:"text-green-500",animate:!1},failed:{icon:ya,text:"Failed",bgClass:"bg-red-500/10",textClass:"text-red-500",animate:!1}},{icon:r,text:n,bgClass:o,textClass:a,animate:l}=t[e];return s.jsxs("div",{className:`flex items-center gap-1.5 px-2.5 py-1 rounded-full ${o}`,children:[s.jsx(r,{className:`w-4 h-4 ${a} ${l?"animate-spin":""}`}),s.jsx("span",{className:`text-xs font-medium ${a}`,children:n})]})}function Bu({onClose:e}){return s.jsxs("div",{className:"bg-[var(--optimex-surface)] border border-[var(--optimex-border)] rounded-xl p-4 mt-3",children:[s.jsxs("div",{className:"flex items-center justify-between mb-3",children:[s.jsx("span",{className:"text-xs text-[var(--optimex-text-secondary)] font-medium",children:"Recent Trade"}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(Nr,{status:"pending"}),e&&s.jsx("button",{onClick:e,className:"text-[var(--optimex-text-secondary)] hover:text-[var(--optimex-text)] transition-colors cursor-pointer","aria-label":"Close",children:s.jsx(Ie,{className:"w-4 h-4"})})]})]}),s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("div",{className:"w-6 h-6 rounded-full bg-[var(--optimex-border)] animate-pulse"}),s.jsxs("div",{className:"flex flex-col gap-1",children:[s.jsx("div",{className:"w-16 h-4 bg-[var(--optimex-border)] rounded animate-pulse"}),s.jsx("div",{className:"w-10 h-3 bg-[var(--optimex-border)] rounded animate-pulse"})]})]}),s.jsx("div",{className:"flex items-center px-3",children:s.jsx("svg",{className:"w-5 h-5 text-[var(--optimex-text-secondary)]",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:s.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M14 5l7 7m0 0l-7 7m7-7H3"})})}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsxs("div",{className:"flex flex-col items-end gap-1",children:[s.jsx("div",{className:"w-16 h-4 bg-[var(--optimex-border)] rounded animate-pulse"}),s.jsx("div",{className:"w-10 h-3 bg-[var(--optimex-border)] rounded animate-pulse"})]}),s.jsx("div",{className:"w-6 h-6 rounded-full bg-[var(--optimex-border)] animate-pulse"})]})]})]})}function zu({trade:e,status:t,isLoading:r,onClose:n}){if(r||!e)return s.jsx(Bu,{onClose:n});const o=e.from_token,a=e.to_token,l=Ne(e.amount_in,o.token_decimals),i=Ne(e.min_amount_out,a.token_decimals);return s.jsxs("div",{className:"bg-[var(--optimex-surface)] border border-[var(--optimex-border)] rounded-xl p-4 mt-3",children:[s.jsxs("div",{className:"flex items-center justify-between mb-3",children:[s.jsx("span",{className:"text-xs text-[var(--optimex-text-secondary)] font-medium",children:"Recent Trade"}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(Nr,{status:t}),n&&s.jsx("button",{onClick:n,className:"text-[var(--optimex-text-secondary)] hover:text-[var(--optimex-text)] transition-colors cursor-pointer","aria-label":"Close",children:s.jsx(Ie,{className:"w-4 h-4"})})]})]}),s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(Le,{token:o,size:"sm",showNetworkBadge:!1}),s.jsxs("div",{className:"flex flex-col",children:[s.jsx("span",{className:"text-sm font-semibold text-[var(--optimex-text)]",children:l}),s.jsx("span",{className:"text-xs text-[var(--optimex-text-secondary)]",children:o.token_symbol})]})]}),s.jsx("div",{className:"flex items-center px-3",children:s.jsx("svg",{className:"w-5 h-5 text-[var(--optimex-text-secondary)]",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:s.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M14 5l7 7m0 0l-7 7m7-7H3"})})}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsxs("div",{className:"flex flex-col items-end",children:[s.jsx("span",{className:"text-sm font-semibold text-[var(--optimex-text)]",children:i}),s.jsx("span",{className:"text-xs text-[var(--optimex-text-secondary)]",children:a.token_symbol})]}),s.jsx(Le,{token:a,size:"sm",showNetworkBadge:!1})]})]})]})}const Wu=1e4;function Vu({apiBaseUrl:e,walletAddresses:t,enabled:r=!0,limit:n=20}){const{data:o,isLoading:a,isError:l,refetch:i}=Qe({queryKey:["trades",t,n],queryFn:async()=>Ge(e).listTrades({from_user_address:t,limit:n}),enabled:r&&!!t?.length,refetchInterval:Wu,retry:2,retryDelay:2e3});return{trades:o??[],isLoading:a,isError:l,refetch:i}}function Uu(e){if(!e)return"pending";switch(e.toLowerCase()){case"success":case"completed":return"success";case"failed":case"refunded":case"expired":return"failed";default:return"pending"}}function Hu({trade:e}){const t=e.from_token,r=e.to_token,n=Uu(e.state),o=Ne(e.amount_in,t.token_decimals),a=Ne(e.min_amount_out,r.token_decimals);return s.jsxs("div",{className:"flex items-center justify-between p-3 rounded-lg bg-[var(--optimex-surface)] border border-[var(--optimex-border)]",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(Le,{token:t,size:"sm",showNetworkBadge:!1}),s.jsxs("div",{className:"flex flex-col",children:[s.jsx("span",{className:"text-sm font-semibold text-[var(--optimex-text)]",children:o}),s.jsx("span",{className:"text-xs text-[var(--optimex-text-secondary)]",children:t.token_symbol})]})]}),s.jsx("div",{className:"flex items-center px-2",children:s.jsx("svg",{className:"w-4 h-4 text-[var(--optimex-text-secondary)]",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:s.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M14 5l7 7m0 0l-7 7m7-7H3"})})}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsxs("div",{className:"flex flex-col items-end",children:[s.jsx("span",{className:"text-sm font-semibold text-[var(--optimex-text)]",children:a}),s.jsx("span",{className:"text-xs text-[var(--optimex-text-secondary)]",children:r.token_symbol})]}),s.jsx(Le,{token:r,size:"sm",showNetworkBadge:!1})]}),s.jsx("div",{className:"ml-3",children:s.jsx(Nr,{status:n})})]})}function Xt(){return s.jsxs("div",{className:"flex items-center justify-between p-3 rounded-lg bg-[var(--optimex-surface)] border border-[var(--optimex-border)]",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("div",{className:"w-6 h-6 rounded-full bg-[var(--optimex-border)] animate-pulse"}),s.jsxs("div",{className:"flex flex-col gap-1",children:[s.jsx("div",{className:"w-14 h-4 bg-[var(--optimex-border)] rounded animate-pulse"}),s.jsx("div",{className:"w-8 h-3 bg-[var(--optimex-border)] rounded animate-pulse"})]})]}),s.jsx("div",{className:"w-4 h-4 bg-[var(--optimex-border)] rounded animate-pulse"}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsxs("div",{className:"flex flex-col items-end gap-1",children:[s.jsx("div",{className:"w-14 h-4 bg-[var(--optimex-border)] rounded animate-pulse"}),s.jsx("div",{className:"w-8 h-3 bg-[var(--optimex-border)] rounded animate-pulse"})]}),s.jsx("div",{className:"w-6 h-6 rounded-full bg-[var(--optimex-border)] animate-pulse"})]}),s.jsx("div",{className:"ml-3 w-20 h-6 bg-[var(--optimex-border)] rounded-full animate-pulse"})]})}function qu(){return s.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[s.jsx("div",{className:"w-16 h-16 mb-4 rounded-full bg-[var(--optimex-surface)] flex items-center justify-center",children:s.jsx("svg",{className:"w-8 h-8 text-[var(--optimex-text-secondary)]",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:s.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"})})}),s.jsx("p",{className:"text-sm text-[var(--optimex-text-secondary)]",children:"No trade history yet"})]})}function Qu({open:e,onOpenChange:t,evmAddress:r,btcAddress:n,solanaAddress:o}){const a=lt(),l=[r,n,o].filter(u=>!!u),{trades:i,isLoading:c}=Vu({apiBaseUrl:a.apiBaseUrl,walletAddresses:l.length>0?l:void 0,enabled:e&&l.length>0});return s.jsx(jr,{open:e,onOpenChange:t,title:"Trade History",className:"w-full max-w-md",children:s.jsxs("div",{className:"p-4 space-y-3 max-h-[60vh] overflow-y-auto",children:[c?s.jsxs(s.Fragment,{children:[s.jsx(Xt,{}),s.jsx(Xt,{}),s.jsx(Xt,{})]}):i.length===0?s.jsx(qu,{}):i.map(u=>s.jsx(Hu,{trade:u},u.trade_id)),!c&&i.length>0&&s.jsxs("div",{className:"flex items-center justify-center gap-2 pt-2 text-xs text-[var(--optimex-text-secondary)]",children:[s.jsx(Ln,{className:"w-3 h-3 animate-spin"}),s.jsx("span",{children:"Auto-refreshing"})]})]})})}function Gu(e,t){return p.useMemo(()=>{const r=e.trim();if(!t||!r)return{isValid:!r,error:void 0};const n=vr(r,t.network_type,t.network_id);return{isValid:n.isValid,error:n.isValid?void 0:n.error}},[e,t])}function Ku(){const[e,t]=p.useState(null),[r,n]=p.useState(!1),[o,a]=p.useState(!1),l=p.useCallback(()=>t("from"),[]),i=p.useCallback(()=>t("to"),[]),c=p.useCallback(()=>t(null),[]),u=p.useCallback(()=>n(!0),[]),d=p.useCallback(()=>n(!1),[]),f=p.useCallback(()=>a(b=>!b),[]),m=p.useCallback(()=>a(!1),[]);return{tokenSelect:{isOpen:e!==null,type:e,openFrom:l,openTo:i,close:c},confirm:{isOpen:r,open:u,close:d},settings:{isOpen:o,toggle:f,close:m}}}function Yu({fromToken:e,toToken:t,amount:r,fromUserAddress:n,toUserAddress:o,userRefundPubkey:a,slippage:l,config:i}){return p.useMemo(()=>{const c=o.trim(),u=i.affiliateAddress&&i.affiliateFee?[{provider:i.affiliateProvider??"optimex-widget",rate:String(i.affiliateFee),receiver:i.affiliateAddress,network:"ethereum"}]:void 0,d=Math.round(l*100);return{from_token:e,to_token:t,amount:r,from_user_address:n,to_user_address:c||null,user_refund_pubkey:a,slippage:String(d),affiliate_fee_bps:i.affiliateFee?String(i.affiliateFee):void 0,affiliate_info:u,trade_timeout:i.tradeTimeout,script_timeout:i.scriptTimeout}},[e,t,r,n,o,a,l,i.affiliateFee,i.affiliateAddress,i.affiliateProvider,i.tradeTimeout,i.scriptTimeout])}function Zu(e,t){return p.useMemo(()=>{if(!e||!t)return{walletAccount:void 0,evmWalletAccount:void 0};switch(e.network_type){case K.EVM:return{walletAccount:t.evm,evmWalletAccount:t.evm};case K.BTC:return{walletAccount:t.btc,evmWalletAccount:void 0};case K.SOLANA:return{walletAccount:t.solana,evmWalletAccount:void 0};default:return{walletAccount:void 0,evmWalletAccount:void 0}}},[e,t])}const bn={BTC:1,EVM:2,Solana:3};function Xu(e){const{tokens:t,pairs:r,selectedFromToken:n}=e,o=p.useMemo(()=>{const b=new Map;if(!r)return b;for(const v of r){if(!v.is_active)continue;const h=b.get(v.from_token_id);h?h.add(v.to_token_id):b.set(v.from_token_id,new Set([v.to_token_id]))}return b},[r]),a=p.useMemo(()=>t??[],[t]),l=p.useMemo(()=>{const b=new Set;for(const v of a){const h=o.get(v.token_id);(!h||h.size===0)&&b.add(v.token_id)}return b},[a,o]),i=p.useMemo(()=>{if(!n)return[];const b=o.get(n.token_id);return!b||b.size===0?[]:a.filter(v=>b.has(v.token_id))},[n,o,a]),c=p.useCallback((b,v)=>o.get(b)?.has(v)??!1,[o]),u=p.useCallback(b=>(o.get(b)?.size??0)>0,[o]),d=p.useCallback(b=>[...b].sort((v,h)=>{const y=bn[v.network_type]??99,g=bn[h.network_type]??99;return y-g}),[]),f=p.useCallback(b=>{const v=o.get(b.token_id);if(!v||v.size===0)return null;const h=a.filter(g=>v.has(g.token_id));return h.length===0?null:d(h)[0]??null},[o,a,d]),m=p.useCallback(()=>{if(a.length===0)return null;const b=d(a);for(const v of b){const h=f(v);if(h)return{fromToken:v,toToken:h}}return null},[a,d,f]);return{allTokens:a,tokensWithoutPairs:l,availableToTokens:i,isPairValid:c,findBestToToken:f,hasValidPairs:u,getDefaultPair:m}}function Ju(e){if(!e.chain_id||e.network_type!=="EVM")return;const t=parseInt(e.chain_id,10);return isNaN(t)?void 0:t}async function ed(e,t){const r=Ju(t);if(!r)throw new Error(`Cannot determine chain ID for token: ${t.token_id}`);return await e.getChainId()===r?!1:(await e.switchChain(r),!0)}const td="0xdd62ed3e",rd="0x095ea7b3",nd="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff";function fr(e){return e.toLowerCase().replace("0x","").padStart(64,"0")}function sd(e){return e.toString(16).padStart(64,"0")}function od(e){const t=e.startsWith("0x")?e.slice(2):e;return!t||t===""?0n:BigInt("0x"+t)}async function ad(e,t,r,n){const o=At(e),a=td+fr(r)+fr(n),i=await(await fetch(o,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"eth_call",params:[{to:t,data:a},"latest"]})})).json();if(i.error)throw new Error(`Failed to check allowance: ${i.error.message}`);return od(i.result)}function id(e,t){const r=t?sd(t):nd.slice(2);return`${rd}${fr(e)}${r}`}async function ld(e,t,r,n){const o=id(r,n);return await e.sendTransaction({to:t,data:o})}async function cd(e,t,r=60,n=2e3){const o=At(e);for(let a=0;a<r;a++){const i=await(await fetch(o,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"eth_getTransactionReceipt",params:[t]})})).json();if(i.error)throw new Error(`RPC error: ${i.error.message}`);if(i.result){const c=i.result;return{status:c.status==="0x1"?"success":"reverted",blockNumber:c.blockNumber,transactionHash:c.transactionHash}}await new Promise(c=>setTimeout(c,n))}throw new Error(`Transaction ${t} not confirmed after ${r} attempts`)}function ud(e){return e?"getChainId"in e&&"switchChain"in e&&typeof e.getChainId=="function"&&typeof e.switchChain=="function":!1}function dd({apiBaseUrl:e,onWalletTx:t,onSubmitTx:r,onError:n}){const[o,a]=p.useState({stage:"idle",txHash:null,tradeId:null,error:null}),l=p.useCallback(()=>{a({stage:"idle",txHash:null,tradeId:null,error:null})},[]),i=p.useCallback(()=>{a(f=>({stage:"idle",txHash:f.txHash,tradeId:f.tradeId,error:null}))},[]),c=p.useCallback((f,m,b)=>{a(v=>({...v,stage:"error",error:f})),n?.({error:f,stage:m,trade_id:b})},[n]),u=p.useCallback(async(f,m,b,v)=>{const h=b.deposit_address;if(!h)throw new Error("Missing deposit address for EVM transaction");a(k=>({...k,stage:"switching_chain"})),await ed(f,m);const y=Er(m);if(!y&&m.token_address&&(a(w=>({...w,stage:"checking_allowance"})),await ad(m.network_id,m.token_address,f.address,h)<v)){a(A=>({...A,stage:"approving"}));const w=await ld(f,m.token_address,h,v);if((await cd(m.network_id,w)).status==="reverted")throw new Error("Token approval transaction reverted")}a(k=>({...k,stage:"broadcasting"}));const g={to:h,value:y?v:0n,data:b.payload?b.payload:void 0};return await f.sendTransaction(g)},[]),d=p.useCallback(async({quote:f,fromToken:m,toToken:b,amountIn:v,walletAccount:h,evmWalletAccount:y})=>{const g=Ge(e);try{a({stage:"confirming",txHash:null,tradeId:f.trade_id,error:null});const S=y||h;if(!S)throw new Error("Wallet not available");a(N=>({...N,stage:"signing"}));let k;const w=Mn(v,m.token_decimals);if(m.network_type===K.EVM){const N=y||(ud(h)?h:null);if(N)k=await u(N,m,f,w);else{const A=f.deposit_address,C=f.payload?f.payload:void 0;if(!A)throw new Error("Missing deposit address for EVM transaction");a(O=>({...O,stage:"broadcasting"}));const j={to:A,value:w,data:C};k=await S.sendTransaction(j)}}else if(m.network_type===K.BTC){if(!f.deposit_address)throw new Error("Missing deposit address for BTC transaction");a(N=>({...N,stage:"broadcasting"})),k=await S.sendTransaction({toAddress:f.deposit_address,amount:w})}else if(m.network_type===K.SOLANA){if(!f.payload)throw new Error("Missing payload for Solana transaction");a(N=>({...N,stage:"broadcasting"})),k=await S.sendTransaction(f.payload)}else throw new Error(`Unsupported network type: ${m.network_type}`);t?.({trade_id:f.trade_id,tx_hash:k,from_token:m,to_token:b,amount_in:v}),a(N=>({...N,txHash:k,stage:"submitting"}));try{await g.submitTransaction(f.trade_id,k),r?.({trade_id:f.trade_id,tx_hash:k,status:"success"})}catch(N){throw r?.({trade_id:f.trade_id,tx_hash:k,status:"error",error:N.message}),N}return a(N=>({...N,stage:"submitted"})),{tradeId:f.trade_id,txHash:k}}catch(S){const k=o.stage==="approving"?"approval":"wallet_tx";throw c(S,k,f.trade_id),S}},[e,t,r,c,u,o.stage]);return{...o,executeSwap:d,resetState:l,resetStateKeepTradeId:i,isExecuting:o.stage!=="idle"&&o.stage!=="submitted"&&o.stage!=="error"}}function fd({defaultPair:e,isPairValid:t,findBestToToken:r,hasValidPairs:n,defaultSlippage:o=.75,selectingToken:a=null}){const[l,i]=p.useState(null),[c,u]=p.useState(null),[d,f]=p.useState(""),[m,b]=p.useState(""),[v,h]=p.useState(o),y=l??e?.fromToken??null,g=c??e?.toToken??null,S=p.useCallback(()=>{y&&g&&t(g.token_id,y.token_id)&&(i(g),u(y),f(""))},[y,g,t]),k=p.useCallback(w=>{if(a==="from"){if(!n(w.token_id))return!1;if(w.token_id===g?.token_id)u(y);else if(g&&!t(w.token_id,g.token_id)){const N=r(w);u(N)}return i(w),!0}else if(a==="to")return w.token_id===y?.token_id&&i(g),u(w),!0;return!1},[a,y,g,t,r,n]);return{fromToken:y,toToken:g,handleTokenSelect:k,handleSwapDirection:S,amount:d,setAmount:f,receivingAddress:m,setReceivingAddress:b,slippage:v,setSlippage:h}}function hd({fromToken:e,toToken:t}){const r=Ze();return p.useMemo(()=>{const n=r.evmAddress,o=r.btcAddress,a=r.btcPublicKey;let l=null,i=null;return e?.network_type===K.EVM?(l=n,i=n):e?.network_type===K.BTC&&(l=o,i=a),{fromUserAddress:l,userRefundPubkey:i}},[r.evmAddress,r.btcAddress,r.btcPublicKey,e,t])}function md({fromToken:e,toToken:t,amount:r,quote:n,isLoadingQuote:o,isFetchingQuote:a,receivingAddress:l,onConnectWallet:i,onSwap:c}){const u=Ze();return p.useMemo(()=>{if(!ku(u,e?.network_type)){const m=ju(e?.network_type);return{text:m?`Connect ${m} Wallet`:"Connect Wallet",disabled:!1,action:i}}return!e||!t?{text:"Select Tokens",disabled:!0,action:void 0}:!r||parseFloat(r)<=0?{text:"Enter Amount",disabled:!0,action:void 0}:l.trim()?vr(l,t.network_type,t.network_id).isValid?o||a?{text:"Getting Quote...",disabled:!0,action:void 0}:n?{text:"Review",disabled:!1,action:c}:{text:"Unable to Quote",disabled:!0,action:void 0}:{text:"Enter Receiving Address",disabled:!0,action:void 0}:{text:"Enter Receiving Address",disabled:!0,action:void 0}},[u.isEvmConnected,u.isBtcConnected,u.isSolanaConnected,e,t,r,o,a,n,i,c,l])}function pd({tokens:e,defaultFromToken:t,defaultToToken:r,isPairValid:n}){return p.useMemo(()=>{if(!t||!r||!e)return null;const o=e.find(l=>l.token_id===t),a=e.find(l=>l.token_id===r);return!o||!a?null:n(o.token_id,a.token_id)?{fromToken:o,toToken:a}:null},[e,t,r,n])}function xd(){const e=Ze(),t=lt(),r=Ku(),{tokensData:n}=Jc(),o=n.tokens,a=n.pairs,{allTokens:l,tokensWithoutPairs:i,isPairValid:c,findBestToToken:u,hasValidPairs:d,getDefaultPair:f}=Xu({tokens:o,pairs:a,selectedFromToken:null}),b=pd({tokens:o,defaultFromToken:t.defaultFromToken,defaultToToken:t.defaultToToken,isPairValid:c})??f(),{fromToken:v,toToken:h,handleTokenSelect:y,handleSwapDirection:g,amount:S,setAmount:k,receivingAddress:w,setReceivingAddress:N,slippage:A,setSlippage:C}=fd({defaultPair:b,isPairValid:c,findBestToToken:u,hasValidPairs:d,defaultSlippage:t.defaultSlippage,selectingToken:r.tokenSelect.type}),j=p.useMemo(()=>v?l.filter(F=>c(v.token_id,F.token_id)):[],[v,l,c]),O=Gu(w,h),{fromUserAddress:L,userRefundPubkey:M}=hd({fromToken:v,toToken:h}),$=Yu({fromToken:v,toToken:h,amount:S,fromUserAddress:L,toUserAddress:w,userRefundPubkey:M,slippage:A,config:{affiliateFee:t.affiliateFee,affiliateAddress:t.affiliateAddress,affiliateProvider:t.affiliateProvider,tradeTimeout:t.tradeTimeout,scriptTimeout:t.scriptTimeout}}),_=!!v&&!!h&&parseFloat(S)>0&&!!w.trim()&&!r.confirm.isOpen,{data:W,isLoading:V,isFetching:Q,refetch:U}=xa(t.apiBaseUrl,{...$,enabled:_,onQuote:t.callbacks?.onQuote}),E=dd({apiBaseUrl:t.apiBaseUrl,onWalletTx:t.callbacks?.onWalletTx,onSubmitTx:t.callbacks?.onSubmitTx,onError:t.callbacks?.onError}),{walletAccount:ne,evmWalletAccount:ie}=Zu(v,e.externalWalletClient??void 0),Te=p.useCallback(()=>{e.isExternalWallet?e.onRequestWallet?.(v?.network_id??""):e.openConnectModal?.()},[e,v?.network_id]),pe=p.useCallback(()=>{!W||!v||!h||(E.resetState(),r.confirm.open())},[W,v,h,r.confirm,E]),H=p.useCallback((F=!1)=>{E.isExecuting||(r.confirm.close(),F&&E.resetStateKeepTradeId())},[E,r.confirm]),Z=p.useCallback(async()=>{if(!(!W||!v||!h))try{const{txHash:F}=await E.executeSwap({quote:W,fromToken:v,toToken:h,amountIn:S,walletAccount:ne,evmWalletAccount:ie});H(!!F),k(""),N("")}catch(F){console.error("Swap failed:",F)}},[W,v,h,S,ne,ie,E,H,k,N]),de=p.useCallback(F=>{y(F)&&r.tokenSelect.close()},[y,r.tokenSelect]),be=md({fromToken:v,toToken:h,amount:S,quote:W,isLoadingQuote:V,isFetchingQuote:Q,receivingAddress:w,onConnectWallet:Te,onSwap:pe});return{tokens:{from:v,to:h,all:l,availableTo:j,withoutPairs:i,data:n},input:{amount:S,setAmount:k,receivingAddress:w,setReceivingAddress:N,slippage:A,setSlippage:C},quote:{data:W,isLoading:V,isFetching:Q,refetch:U},validation:{address:O},buttonState:be,modals:r,tokenSelect:{type:r.tokenSelect.type},actions:{selectToken:de,swapDirection:g,connectWallet:Te,openSwapConfirm:pe,closeConfirmModal:H,confirmSwap:Z},execution:{stage:E.stage,txHash:E.txHash,tradeId:E.tradeId,error:E.error,isExecuting:E.isExecuting},wallet:e,addresses:{sending:L,receiving:w}}}const vd=5e3;function yn(e){if(!e)return"pending";switch(e.toLowerCase()){case"success":case"completed":return"success";case"failed":case"refunded":case"expired":return"failed";default:return"pending"}}function gd({apiBaseUrl:e,tradeId:t}){const{data:r,isLoading:n}=Qe({queryKey:["trade",t],queryFn:async()=>Ge(e).getTrade(t),enabled:!!t,refetchInterval:o=>{const a=o.state.data;return a&&yn(a.state)==="success"?!1:vd},retry:!0,retryDelay:2e3});return{trade:r??null,status:yn(r?.state),isLoading:n}}function no(){const e=xd(),t=lt(),{tokens:r,input:n,quote:o,modals:a,buttonState:l,validation:i,actions:c,addresses:u,wallet:d,execution:f}=e,[m,b]=p.useState(!1),{trade:v,status:h,isLoading:y}=gd({apiBaseUrl:t.apiBaseUrl,tradeId:f.tradeId}),{formattedBalance:g}=ro({token:r.from,walletAddress:u.sending,enabled:!!r.from&&!!u.sending,polling:!0}),{calculateUsdValue:S}=Tt({symbol:r.from?.token_symbol,enabled:!!r.from}),{calculateUsdValue:k}=Tt({symbol:r.to?.token_symbol,enabled:!!r.to}),w=d.isConnected,N=S(n.amount),A=o.data?k(Ne(o.data.min_amount_out,r.to?.token_decimals||18)):"$0.00";return s.jsxs(s.Fragment,{children:[s.jsxs("div",{className:"flex flex-col gap-4 w-full min-w-0",children:[s.jsx(su,{headerLeft:t.headerLeft,slippage:n.slippage,onSlippageChange:n.setSlippage,isSettingsOpen:a.settings.isOpen,onSettingsToggle:a.settings.toggle,onHistoryClick:()=>b(!0),hideHistory:t.hideHistory||!d.isConnected}),s.jsxs(Sr,{children:[s.jsxs("div",{className:"space-y-2 relative",children:[s.jsx(vn,{token:r.from,value:n.amount,onChange:n.setAmount,onSelectToken:a.tokenSelect.openFrom,balance:g,isWalletConnected:w,usdValue:N}),s.jsx(Zs,{onClick:c.swapDirection}),s.jsx(vn,{token:r.to,value:o.data?Ne(o.data.min_amount_out,r.to?.token_decimals||18):"",readOnly:!0,onSelectToken:a.tokenSelect.openTo,isOutput:!0,usdValue:A})]}),s.jsx("div",{className:"mt-4",children:s.jsx(eu,{token:r.to,value:n.receivingAddress,onChange:n.setReceivingAddress,error:i.address.error})}),s.jsx("div",{className:"mt-4",children:s.jsx(au,{text:l.text,disabled:l.disabled,onClick:l.action})}),o.data&&r.from&&r.to&&s.jsx("div",{className:"mt-4",children:s.jsx(ou,{quote:o.data,fromToken:r.from,toToken:r.to,amount:n.amount,slippage:n.slippage,isFetching:o.isFetching,onRefresh:o.refetch})}),s.jsx("div",{className:"mt-4",children:s.jsx(iu,{})}),f.tradeId&&f.txHash&&s.jsx("div",{className:"mt-4",children:s.jsx(zu,{trade:v,status:h,isLoading:y})})]})]}),s.jsx($u,{swap:e}),m&&s.jsx(Qu,{open:m,onOpenChange:b,evmAddress:d.evmAddress??void 0,btcAddress:d.btcAddress??void 0,solanaAddress:d.solanaAddress??void 0})]})}function bd({className:e,connectLabel:t="Connect Wallet",showNetworkBadge:r=!0,onClick:n}){const o=Ze(),a=o.evmAddress||o.btcAddress||o.solanaAddress,l=()=>{if(n){n();return}o.isExternalWallet?o.onRequestWallet?.():o.openConnectModal?.()},i=()=>r?o.isEvmConnected?s.jsx("span",{className:"rounded bg-blue-500/20 px-1.5 py-0.5 text-xs text-blue-400",children:"EVM"}):o.isBtcConnected?s.jsx("span",{className:"rounded bg-orange-500/20 px-1.5 py-0.5 text-xs text-orange-400",children:"BTC"}):o.isSolanaConnected?s.jsx("span",{className:"rounded bg-purple-500/20 px-1.5 py-0.5 text-xs text-purple-400",children:"SOL"}):null:null;return o.isConnected?s.jsxs("div",{className:`flex items-center gap-2 ${e||""}`,children:[i(),s.jsxs("button",{onClick:l,className:"group flex items-center gap-1.5 rounded-[0.25rem] bg-[var(--optimex-surface-hover)] px-3 py-1.5 text-sm text-[var(--optimex-text)] transition-colors hover:bg-[rgba(239,68,68,0.2)]",children:[s.jsx("span",{children:ca(a)}),s.jsx(ka,{className:"h-3.5 w-3.5 opacity-0 transition-opacity group-hover:opacity-100"})]})]}):s.jsx("button",{onClick:l,className:`rounded-[0.25rem] bg-[var(--optimex-primary)] px-4 py-1.5 text-sm font-medium text-white transition-colors hover:bg-[var(--optimex-primary-hover)] ${e||""}`,children:t})}function yd({apiBaseUrl:e,walletClient:t,onRequestWallet:r,theme:n,defaultFromToken:o,defaultToToken:a,headerLeft:l,affiliateFee:i,affiliateAddress:c,affiliateProvider:u,tradeTimeout:d,scriptTimeout:f,defaultSlippage:m=.75,hideHistory:b=!1,children:v,renderLoading:h,renderError:y,queryClient:g,onQuote:S,onWalletTx:k,onSubmitTx:w,onSwapComplete:N,onError:A}){sa(e);const C=p.useMemo(()=>g??new Mo,[g]),O={apiBaseUrl:e,defaultSlippage:m,affiliateFee:i,affiliateAddress:c,affiliateProvider:u,tradeTimeout:d,scriptTimeout:f,defaultFromToken:o,defaultToToken:a,hideHistory:b,headerLeft:l,callbacks:{onQuote:S,onWalletTx:k,onSubmitTx:w,onSwapComplete:N,onError:A},renderLoading:h,renderError:y},L=v??s.jsx(no,{});return s.jsx("div",{className:"optx-widget",children:s.jsx($o,{client:C,children:s.jsx(va,{value:O,children:s.jsx(ta,{theme:n,children:s.jsx(na,{externalWalletClient:t,onRequestWallet:r,children:s.jsx(Xc,{children:L})})})})})})}exports.ConnectButton=bd;exports.SwapCard=no;exports.SwapWidget=yd;exports.createEvmWalletClient=eo;exports.createEvmWalletClientAsync=Eu;exports.createEvmWalletClientSync=to;exports.useWallet=Ze;
|
|
55
|
+
){opacity:0}[data-vaul-overlay][data-vaul-snap-points-overlay=true]{opacity:1}[data-vaul-handle]{display:block;position:relative;opacity:.7;background:#e2e2e4;margin-left:auto;margin-right:auto;height:5px;width:32px;border-radius:1rem;touch-action:pan-y}[data-vaul-handle]:active,[data-vaul-handle]:hover{opacity:1}[data-vaul-handle-hitarea]{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max(100%,2.75rem);height:max(100%,2.75rem);touch-action:inherit}@media (hover:hover) and (pointer:fine){[data-vaul-drawer]{user-select:none}}@media (pointer:fine){[data-vaul-handle-hitarea]:{width:100%;height:100%}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeOut{to{opacity:0}}@keyframes slideFromBottom{from{transform:translate3d(0,var(--initial-transform,100%),0)}to{transform:translate3d(0,0,0)}}@keyframes slideToBottom{to{transform:translate3d(0,var(--initial-transform,100%),0)}}@keyframes slideFromTop{from{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}to{transform:translate3d(0,0,0)}}@keyframes slideToTop{to{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}}@keyframes slideFromLeft{from{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToLeft{to{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}}@keyframes slideFromRight{from{transform:translate3d(var(--initial-transform,100%),0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToRight{to{transform:translate3d(var(--initial-transform,100%),0,0)}}`);function hc(){const e=navigator.userAgent;return typeof window<"u"&&(/Firefox/.test(e)&&/Mobile/.test(e)||/FxiOS/.test(e))}function mc(){return kr(/^Mac/)}function pc(){return kr(/^iPhone/)}function hn(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}function xc(){return kr(/^iPad/)||mc()&&navigator.maxTouchPoints>1}function Bs(){return pc()||xc()}function kr(e){return typeof window<"u"&&window.navigator!=null?e.test(window.navigator.platform):void 0}const vc=24,gc=typeof window<"u"?p.useLayoutEffect:p.useEffect;function mn(...e){return(...t)=>{for(let r of e)typeof r=="function"&&r(...t)}}const qt=typeof document<"u"&&window.visualViewport;function pn(e){let t=window.getComputedStyle(e);return/(auto|scroll)/.test(t.overflow+t.overflowX+t.overflowY)}function zs(e){for(pn(e)&&(e=e.parentElement);e&&!pn(e);)e=e.parentElement;return e||document.scrollingElement||document.documentElement}const bc=new Set(["checkbox","radio","range","color","file","image","button","submit","reset"]);let yt=0,Qt;function yc(e={}){let{isDisabled:t}=e;gc(()=>{if(!t)return yt++,yt===1&&Bs()&&(Qt=wc()),()=>{yt--,yt===0&&Qt?.()}},[t])}function wc(){let e,t=0,r=f=>{e=zs(f.target),!(e===document.documentElement&&e===document.body)&&(t=f.changedTouches[0].pageY)},n=f=>{if(!e||e===document.documentElement||e===document.body){f.preventDefault();return}let m=f.changedTouches[0].pageY,b=e.scrollTop,v=e.scrollHeight-e.clientHeight;v!==0&&((b<=0&&m>t||b>=v&&m<t)&&f.preventDefault(),t=m)},o=f=>{let m=f.target;cr(m)&&m!==document.activeElement&&(f.preventDefault(),m.style.transform="translateY(-2000px)",m.focus(),requestAnimationFrame(()=>{m.style.transform=""}))},a=f=>{let m=f.target;cr(m)&&(m.style.transform="translateY(-2000px)",requestAnimationFrame(()=>{m.style.transform="",qt&&(qt.height<window.innerHeight?requestAnimationFrame(()=>{xn(m)}):qt.addEventListener("resize",()=>xn(m),{once:!0}))}))},l=()=>{window.scrollTo(0,0)},i=window.pageXOffset,c=window.pageYOffset,u=mn(Cc(document.documentElement,"paddingRight",`${window.innerWidth-document.documentElement.clientWidth}px`));window.scrollTo(0,0);let d=mn(tt(document,"touchstart",r,{passive:!1,capture:!0}),tt(document,"touchmove",n,{passive:!1,capture:!0}),tt(document,"touchend",o,{passive:!1,capture:!0}),tt(document,"focus",a,!0),tt(window,"scroll",l));return()=>{u(),d(),window.scrollTo(i,c)}}function Cc(e,t,r){let n=e.style[t];return e.style[t]=r,()=>{e.style[t]=n}}function tt(e,t,r,n){return e.addEventListener(t,r,n),()=>{e.removeEventListener(t,r,n)}}function xn(e){let t=document.scrollingElement||document.documentElement;for(;e&&e!==t;){let r=zs(e);if(r!==document.documentElement&&r!==document.body&&r!==e){let n=r.getBoundingClientRect().top,o=e.getBoundingClientRect().top,a=e.getBoundingClientRect().bottom;const l=r.getBoundingClientRect().bottom+vc;a>l&&(r.scrollTop+=o-n)}e=r.parentElement}}function cr(e){return e instanceof HTMLInputElement&&!bc.has(e.type)||e instanceof HTMLTextAreaElement||e instanceof HTMLElement&&e.isContentEditable}function kc(e,t){typeof e=="function"?e(t):e!=null&&(e.current=t)}function jc(...e){return t=>e.forEach(r=>kc(r,t))}function Ws(...e){return x.useCallback(jc(...e),e)}const Vs=new WeakMap;function ee(e,t,r=!1){if(!e||!(e instanceof HTMLElement))return;let n={};Object.entries(t).forEach(([o,a])=>{if(o.startsWith("--")){e.style.setProperty(o,a);return}n[o]=e.style[o],e.style[o]=a}),!r&&Vs.set(e,n)}function Sc(e,t){if(!e||!(e instanceof HTMLElement))return;let r=Vs.get(e);r&&(e.style[t]=r[t])}const X=e=>{switch(e){case"top":case"bottom":return!0;case"left":case"right":return!1;default:return e}};function wt(e,t){if(!e)return null;const r=window.getComputedStyle(e),n=r.transform||r.webkitTransform||r.mozTransform;let o=n.match(/^matrix3d\((.+)\)$/);return o?parseFloat(o[1].split(", ")[X(t)?13:12]):(o=n.match(/^matrix\((.+)\)$/),o?parseFloat(o[1].split(", ")[X(t)?5:4]):null)}function Ec(e){return 8*(Math.log(e+1)-2)}function Gt(e,t){if(!e)return()=>{};const r=e.style.cssText;return Object.assign(e.style,t),()=>{e.style.cssText=r}}function Nc(...e){return(...t)=>{for(const r of e)typeof r=="function"&&r(...t)}}const G={DURATION:.5,EASE:[.32,.72,0,1]},Us=.4,Tc=.25,Rc=100,Hs=8,Ae=16,ur=26,Kt="vaul-dragging";function qs(e){const t=p.useRef(e);return p.useEffect(()=>{t.current=e}),p.useMemo(()=>(...r)=>t.current==null?void 0:t.current.call(t,...r),[])}function Oc({defaultProp:e,onChange:t}){const r=p.useState(e),[n]=r,o=p.useRef(n),a=qs(t);return p.useEffect(()=>{o.current!==n&&(a(n),o.current=n)},[n,o,a]),r}function Qs({prop:e,defaultProp:t,onChange:r=()=>{}}){const[n,o]=Oc({defaultProp:t,onChange:r}),a=e!==void 0,l=a?e:n,i=qs(r),c=p.useCallback(u=>{if(a){const f=typeof u=="function"?u(e):u;f!==e&&i(f)}else o(u)},[a,e,o,i]);return[l,c]}function _c({activeSnapPointProp:e,setActiveSnapPointProp:t,snapPoints:r,drawerRef:n,overlayRef:o,fadeFromIndex:a,onSnapPointChange:l,direction:i="bottom",container:c,snapToSequentialPoint:u}){const[d,f]=Qs({prop:e,defaultProp:r?.[0],onChange:t}),[m,b]=p.useState(typeof window<"u"?{innerWidth:window.innerWidth,innerHeight:window.innerHeight}:void 0);p.useEffect(()=>{function C(){b({innerWidth:window.innerWidth,innerHeight:window.innerHeight})}return window.addEventListener("resize",C),()=>window.removeEventListener("resize",C)},[]);const v=p.useMemo(()=>d===r?.[r.length-1]||null,[r,d]),h=p.useMemo(()=>{var C;return(C=r?.findIndex(j=>j===d))!=null?C:null},[r,d]),y=r&&r.length>0&&(a||a===0)&&!Number.isNaN(a)&&r[a]===d||!r,g=p.useMemo(()=>{const C=c?{width:c.getBoundingClientRect().width,height:c.getBoundingClientRect().height}:typeof window<"u"?{width:window.innerWidth,height:window.innerHeight}:{width:0,height:0};var j;return(j=r?.map(O=>{const L=typeof O=="string";let M=0;if(L&&(M=parseInt(O,10)),X(i)){const _=L?M:m?O*C.height:0;return m?i==="bottom"?C.height-_:-C.height+_:_}const $=L?M:m?O*C.width:0;return m?i==="right"?C.width-$:-C.width+$:$}))!=null?j:[]},[r,m,c]),S=p.useMemo(()=>h!==null?g?.[h]:null,[g,h]),k=p.useCallback(C=>{var j;const O=(j=g?.findIndex(L=>L===C))!=null?j:null;l(O),ee(n.current,{transition:`transform ${G.DURATION}s cubic-bezier(${G.EASE.join(",")})`,transform:X(i)?`translate3d(0, ${C}px, 0)`:`translate3d(${C}px, 0, 0)`}),g&&O!==g.length-1&&a!==void 0&&O!==a&&O<a?ee(o.current,{transition:`opacity ${G.DURATION}s cubic-bezier(${G.EASE.join(",")})`,opacity:"0"}):ee(o.current,{transition:`opacity ${G.DURATION}s cubic-bezier(${G.EASE.join(",")})`,opacity:"1"}),f(r?.[Math.max(O,0)])},[n.current,r,g,a,o,f]);p.useEffect(()=>{if(d||e){var C;const j=(C=r?.findIndex(O=>O===e||O===d))!=null?C:-1;g&&j!==-1&&typeof g[j]=="number"&&k(g[j])}},[d,e,r,g,k]);function w({draggedDistance:C,closeDrawer:j,velocity:O,dismissible:L}){if(a===void 0)return;const M=i==="bottom"||i==="right"?(S??0)-C:(S??0)+C,$=h===a-1,_=h===0,W=C>0;if($&&ee(o.current,{transition:`opacity ${G.DURATION}s cubic-bezier(${G.EASE.join(",")})`}),!u&&O>2&&!W){L?j():k(g[0]);return}if(!u&&O>2&&W&&g&&r){k(g[r.length-1]);return}const V=g?.reduce((U,E)=>typeof U!="number"||typeof E!="number"?U:Math.abs(E-M)<Math.abs(U-M)?E:U),Q=X(i)?window.innerHeight:window.innerWidth;if(O>Us&&Math.abs(C)<Q*.4){const U=W?1:-1;if(U>0&&v&&r){k(g[r.length-1]);return}if(_&&U<0&&L&&j(),h===null)return;k(g[h+U]);return}k(V)}function N({draggedDistance:C}){if(S===null)return;const j=i==="bottom"||i==="right"?S-C:S+C;(i==="bottom"||i==="right")&&j<g[g.length-1]||(i==="top"||i==="left")&&j>g[g.length-1]||ee(n.current,{transform:X(i)?`translate3d(0, ${j}px, 0)`:`translate3d(${j}px, 0, 0)`})}function A(C,j){if(!r||typeof h!="number"||!g||a===void 0)return null;const O=h===a-1;if(h>=a&&j)return 0;if(O&&!j)return 1;if(!y&&!O)return null;const M=O?h+1:h-1,$=O?g[M]-g[M-1]:g[M+1]-g[M],_=C/Math.abs($);return O?1-_:_}return{isLastSnapPoint:v,activeSnapPoint:d,shouldFade:y,getPercentageDragged:A,setActiveSnapPoint:f,activeSnapPointIndex:h,onRelease:w,onDrag:N,snapPointsOffset:g}}const Ac=()=>()=>{};function Pc(){const{direction:e,isOpen:t,shouldScaleBackground:r,setBackgroundColorOnScale:n,noBodyStyles:o}=ct(),a=p.useRef(null),l=p.useMemo(()=>document.body.style.backgroundColor,[]);function i(){return(window.innerWidth-ur)/window.innerWidth}p.useEffect(()=>{if(t&&r){a.current&&clearTimeout(a.current);const c=document.querySelector("[data-vaul-drawer-wrapper]")||document.querySelector("[vaul-drawer-wrapper]");if(!c)return;Nc(n&&!o?Gt(document.body,{background:"black"}):Ac,Gt(c,{transformOrigin:X(e)?"top":"left",transitionProperty:"transform, border-radius",transitionDuration:`${G.DURATION}s`,transitionTimingFunction:`cubic-bezier(${G.EASE.join(",")})`}));const u=Gt(c,{borderRadius:`${Hs}px`,overflow:"hidden",...X(e)?{transform:`scale(${i()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`}:{transform:`scale(${i()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`}});return()=>{u(),a.current=window.setTimeout(()=>{l?document.body.style.background=l:document.body.style.removeProperty("background")},G.DURATION*1e3)}}},[t,r,l])}let rt=null;function Mc({isOpen:e,modal:t,nested:r,hasBeenOpened:n,preventScrollRestoration:o,noBodyStyles:a}){const[l,i]=p.useState(()=>typeof window<"u"?window.location.href:""),c=p.useRef(0),u=p.useCallback(()=>{if(hn()&&rt===null&&e&&!a){rt={position:document.body.style.position,top:document.body.style.top,left:document.body.style.left,height:document.body.style.height,right:"unset"};const{scrollX:f,innerHeight:m}=window;document.body.style.setProperty("position","fixed","important"),Object.assign(document.body.style,{top:`${-c.current}px`,left:`${-f}px`,right:"0px",height:"auto"}),window.setTimeout(()=>window.requestAnimationFrame(()=>{const b=m-window.innerHeight;b&&c.current>=m&&(document.body.style.top=`${-(c.current+b)}px`)}),300)}},[e]),d=p.useCallback(()=>{if(hn()&&rt!==null&&!a){const f=-parseInt(document.body.style.top,10),m=-parseInt(document.body.style.left,10);Object.assign(document.body.style,rt),window.requestAnimationFrame(()=>{if(o&&l!==window.location.href){i(window.location.href);return}window.scrollTo(m,f)}),rt=null}},[l]);return p.useEffect(()=>{function f(){c.current=window.scrollY}return f(),window.addEventListener("scroll",f),()=>{window.removeEventListener("scroll",f)}},[]),p.useEffect(()=>{if(t)return()=>{typeof document>"u"||document.querySelector("[data-vaul-drawer]")||d()}},[t,d]),p.useEffect(()=>{r||!n||(e?(!window.matchMedia("(display-mode: standalone)").matches&&u(),t||window.setTimeout(()=>{d()},500)):d())},[e,n,l,t,r,u,d]),{restorePositionSetting:d}}function Ic({open:e,onOpenChange:t,children:r,onDrag:n,onRelease:o,snapPoints:a,shouldScaleBackground:l=!1,setBackgroundColorOnScale:i=!0,closeThreshold:c=Tc,scrollLockTimeout:u=Rc,dismissible:d=!0,handleOnly:f=!1,fadeFromIndex:m=a&&a.length-1,activeSnapPoint:b,setActiveSnapPoint:v,fixed:h,modal:y=!0,onClose:g,nested:S,noBodyStyles:k=!1,direction:w="bottom",defaultOpen:N=!1,disablePreventScroll:A=!0,snapToSequentialPoint:C=!1,preventScrollRestoration:j=!1,repositionInputs:O=!0,onAnimationEnd:L,container:M,autoFocus:$=!1}){var _,W;const[V=!1,Q]=Qs({defaultProp:N,prop:e,onChange:P=>{t?.(P),!P&&!S&&co(),setTimeout(()=>{L?.(P)},G.DURATION*1e3),P&&!y&&typeof window<"u"&&window.requestAnimationFrame(()=>{document.body.style.pointerEvents="auto"}),P||(document.body.style.pointerEvents="auto")}}),[U,E]=p.useState(!1),[ne,ie]=p.useState(!1),[Te,pe]=p.useState(!1),H=p.useRef(null),Z=p.useRef(null),de=p.useRef(null),be=p.useRef(null),F=p.useRef(null),xe=p.useRef(!1),ye=p.useRef(null),we=p.useRef(0),fe=p.useRef(!1),Re=p.useRef(!N),Tr=p.useRef(0),I=p.useRef(null),Rr=p.useRef(((_=I.current)==null?void 0:_.getBoundingClientRect().height)||0),Or=p.useRef(((W=I.current)==null?void 0:W.getBoundingClientRect().width)||0),Pt=p.useRef(0),so=p.useCallback(P=>{a&&P===Xe.length-1&&(Z.current=new Date)},[]),{activeSnapPoint:oo,activeSnapPointIndex:$e,setActiveSnapPoint:_r,onRelease:ao,snapPointsOffset:Xe,onDrag:io,shouldFade:Ar,getPercentageDragged:lo}=_c({snapPoints:a,activeSnapPointProp:b,setActiveSnapPointProp:v,drawerRef:I,fadeFromIndex:m,overlayRef:H,onSnapPointChange:so,direction:w,container:M,snapToSequentialPoint:C});yc({isDisabled:!V||ne||!y||Te||!U||!O||!A});const{restorePositionSetting:co}=Mc({isOpen:V,modal:y,nested:S??!1,hasBeenOpened:U,preventScrollRestoration:j,noBodyStyles:k});function ut(){return(window.innerWidth-ur)/window.innerWidth}function uo(P){var z,q;!d&&!a||I.current&&!I.current.contains(P.target)||(Rr.current=((z=I.current)==null?void 0:z.getBoundingClientRect().height)||0,Or.current=((q=I.current)==null?void 0:q.getBoundingClientRect().width)||0,ie(!0),de.current=new Date,Bs()&&window.addEventListener("touchend",()=>xe.current=!1,{once:!0}),P.target.setPointerCapture(P.pointerId),we.current=X(w)?P.pageY:P.pageX)}function Pr(P,z){var q;let B=P;const Y=(q=window.getSelection())==null?void 0:q.toString(),se=I.current?wt(I.current,w):null,re=new Date;if(B.tagName==="SELECT"||B.hasAttribute("data-vaul-no-drag")||B.closest("[data-vaul-no-drag]"))return!1;if(w==="right"||w==="left")return!0;if(Z.current&&re.getTime()-Z.current.getTime()<500)return!1;if(se!==null&&(w==="bottom"?se>0:se<0))return!0;if(Y&&Y.length>0)return!1;if(F.current&&re.getTime()-F.current.getTime()<u&&se===0||z)return F.current=re,!1;for(;B;){if(B.scrollHeight>B.clientHeight){if(B.scrollTop!==0)return F.current=new Date,!1;if(B.getAttribute("role")==="dialog")return!0}B=B.parentNode}return!0}function fo(P){if(I.current&&ne){const z=w==="bottom"||w==="right"?1:-1,q=(we.current-(X(w)?P.pageY:P.pageX))*z,B=q>0,Y=a&&!d&&!B;if(Y&&$e===0)return;const se=Math.abs(q),re=document.querySelector("[data-vaul-drawer-wrapper]"),Ce=w==="bottom"||w==="top"?Rr.current:Or.current;let le=se/Ce;const Oe=lo(se,B);if(Oe!==null&&(le=Oe),Y&&le>=1||!xe.current&&!Pr(P.target,B))return;if(I.current.classList.add(Kt),xe.current=!0,ee(I.current,{transition:"none"}),ee(H.current,{transition:"none"}),a&&io({draggedDistance:q}),B&&!a){const he=Ec(q),dt=Math.min(he*-1,0)*z;ee(I.current,{transform:X(w)?`translate3d(0, ${dt}px, 0)`:`translate3d(${dt}px, 0, 0)`});return}const ke=1-le;if((Ar||m&&$e===m-1)&&(n?.(P,le),ee(H.current,{opacity:`${ke}`,transition:"none"},!0)),re&&H.current&&l){const he=Math.min(ut()+le*(1-ut()),1),dt=8-le*8,Ir=Math.max(0,14-le*14);ee(re,{borderRadius:`${dt}px`,transform:X(w)?`scale(${he}) translate3d(0, ${Ir}px, 0)`:`scale(${he}) translate3d(${Ir}px, 0, 0)`,transition:"none"},!0)}if(!a){const he=se*z;ee(I.current,{transform:X(w)?`translate3d(0, ${he}px, 0)`:`translate3d(${he}px, 0, 0)`})}}}p.useEffect(()=>{window.requestAnimationFrame(()=>{Re.current=!0})},[]),p.useEffect(()=>{var P;function z(){if(!I.current||!O)return;const q=document.activeElement;if(cr(q)||fe.current){var B;const Y=((B=window.visualViewport)==null?void 0:B.height)||0,se=window.innerHeight;let re=se-Y;const Ce=I.current.getBoundingClientRect().height||0,le=Ce>se*.8;Pt.current||(Pt.current=Ce);const Oe=I.current.getBoundingClientRect().top;if(Math.abs(Tr.current-re)>60&&(fe.current=!fe.current),a&&a.length>0&&Xe&&$e){const ke=Xe[$e]||0;re+=ke}if(Tr.current=re,Ce>Y||fe.current){const ke=I.current.getBoundingClientRect().height;let he=ke;ke>Y&&(he=Y-(le?Oe:ur)),h?I.current.style.height=`${ke-Math.max(re,0)}px`:I.current.style.height=`${Math.max(he,Y-Oe)}px`}else hc()||(I.current.style.height=`${Pt.current}px`);a&&a.length>0&&!fe.current?I.current.style.bottom="0px":I.current.style.bottom=`${Math.max(re,0)}px`}}return(P=window.visualViewport)==null||P.addEventListener("resize",z),()=>{var q;return(q=window.visualViewport)==null?void 0:q.removeEventListener("resize",z)}},[$e,a,Xe]);function Je(P){ho(),g?.(),P||Q(!1),setTimeout(()=>{a&&_r(a[0])},G.DURATION*1e3)}function Mr(){if(!I.current)return;const P=document.querySelector("[data-vaul-drawer-wrapper]"),z=wt(I.current,w);ee(I.current,{transform:"translate3d(0, 0, 0)",transition:`transform ${G.DURATION}s cubic-bezier(${G.EASE.join(",")})`}),ee(H.current,{transition:`opacity ${G.DURATION}s cubic-bezier(${G.EASE.join(",")})`,opacity:"1"}),l&&z&&z>0&&V&&ee(P,{borderRadius:`${Hs}px`,overflow:"hidden",...X(w)?{transform:`scale(${ut()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`,transformOrigin:"top"}:{transform:`scale(${ut()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`,transformOrigin:"left"},transitionProperty:"transform, border-radius",transitionDuration:`${G.DURATION}s`,transitionTimingFunction:`cubic-bezier(${G.EASE.join(",")})`},!0)}function ho(){!ne||!I.current||(I.current.classList.remove(Kt),xe.current=!1,ie(!1),be.current=new Date)}function mo(P){if(!ne||!I.current)return;I.current.classList.remove(Kt),xe.current=!1,ie(!1),be.current=new Date;const z=wt(I.current,w);if(!P||!Pr(P.target,!1)||!z||Number.isNaN(z)||de.current===null)return;const q=be.current.getTime()-de.current.getTime(),B=we.current-(X(w)?P.pageY:P.pageX),Y=Math.abs(B)/q;if(Y>.05&&(pe(!0),setTimeout(()=>{pe(!1)},200)),a){ao({draggedDistance:B*(w==="bottom"||w==="right"?1:-1),closeDrawer:Je,velocity:Y,dismissible:d}),o?.(P,!0);return}if(w==="bottom"||w==="right"?B>0:B<0){Mr(),o?.(P,!0);return}if(Y>Us){Je(),o?.(P,!1);return}var se;const re=Math.min((se=I.current.getBoundingClientRect().height)!=null?se:0,window.innerHeight);var Ce;const le=Math.min((Ce=I.current.getBoundingClientRect().width)!=null?Ce:0,window.innerWidth),Oe=w==="left"||w==="right";if(Math.abs(z)>=(Oe?le:re)*c){Je(),o?.(P,!1);return}o?.(P,!0),Mr()}p.useEffect(()=>(V&&(ee(document.documentElement,{scrollBehavior:"auto"}),Z.current=new Date),()=>{Sc(document.documentElement,"scrollBehavior")}),[V]);function po(P){const z=P?(window.innerWidth-Ae)/window.innerWidth:1,q=P?-Ae:0;ye.current&&window.clearTimeout(ye.current),ee(I.current,{transition:`transform ${G.DURATION}s cubic-bezier(${G.EASE.join(",")})`,transform:X(w)?`scale(${z}) translate3d(0, ${q}px, 0)`:`scale(${z}) translate3d(${q}px, 0, 0)`}),!P&&I.current&&(ye.current=setTimeout(()=>{const B=wt(I.current,w);ee(I.current,{transition:"none",transform:X(w)?`translate3d(0, ${B}px, 0)`:`translate3d(${B}px, 0, 0)`})},500))}function xo(P,z){if(z<0)return;const q=(window.innerWidth-Ae)/window.innerWidth,B=q+z*(1-q),Y=-Ae+z*Ae;ee(I.current,{transform:X(w)?`scale(${B}) translate3d(0, ${Y}px, 0)`:`scale(${B}) translate3d(${Y}px, 0, 0)`,transition:"none"})}function vo(P,z){const q=X(w)?window.innerHeight:window.innerWidth,B=z?(q-Ae)/q:1,Y=z?-Ae:0;z&&ee(I.current,{transition:`transform ${G.DURATION}s cubic-bezier(${G.EASE.join(",")})`,transform:X(w)?`scale(${B}) translate3d(0, ${Y}px, 0)`:`scale(${B}) translate3d(${Y}px, 0, 0)`})}return p.useEffect(()=>{y||window.requestAnimationFrame(()=>{document.body.style.pointerEvents="auto"})},[y]),p.createElement(oc,{defaultOpen:N,onOpenChange:P=>{!d&&!P||(P?E(!0):Je(!0),Q(P))},open:V},p.createElement($s.Provider,{value:{activeSnapPoint:oo,snapPoints:a,setActiveSnapPoint:_r,drawerRef:I,overlayRef:H,onOpenChange:t,onPress:uo,onRelease:mo,onDrag:fo,dismissible:d,shouldAnimate:Re,handleOnly:f,isOpen:V,isDragging:ne,shouldFade:Ar,closeDrawer:Je,onNestedDrag:xo,onNestedOpenChange:po,onNestedRelease:vo,keyboardIsOpen:fe,modal:y,snapPointsOffset:Xe,activeSnapPointIndex:$e,direction:w,shouldScaleBackground:l,setBackgroundColorOnScale:i,noBodyStyles:k,container:M,autoFocus:$}},r))}const Gs=p.forwardRef(function({...e},t){const{overlayRef:r,snapPoints:n,onRelease:o,shouldFade:a,isOpen:l,modal:i,shouldAnimate:c}=ct(),u=Ws(t,r),d=n&&n.length>0;if(!i)return null;const f=p.useCallback(m=>o(m),[o]);return p.createElement(ic,{onMouseUp:f,ref:u,"data-vaul-overlay":"","data-vaul-snap-points":l&&d?"true":"false","data-vaul-snap-points-overlay":l&&a?"true":"false","data-vaul-animate":c?.current?"true":"false",...e})});Gs.displayName="Drawer.Overlay";const Ks=p.forwardRef(function({onPointerDownOutside:e,style:t,onOpenAutoFocus:r,...n},o){const{drawerRef:a,onPress:l,onRelease:i,onDrag:c,keyboardIsOpen:u,snapPointsOffset:d,activeSnapPointIndex:f,modal:m,isOpen:b,direction:v,snapPoints:h,container:y,handleOnly:g,shouldAnimate:S,autoFocus:k}=ct(),[w,N]=p.useState(!1),A=Ws(o,a),C=p.useRef(null),j=p.useRef(null),O=p.useRef(!1),L=h&&h.length>0;Pc();const M=(_,W,V=0)=>{if(O.current)return!0;const Q=Math.abs(_.y),U=Math.abs(_.x),E=U>Q,ne=["bottom","right"].includes(W)?1:-1;if(W==="left"||W==="right"){if(!(_.x*ne<0)&&U>=0&&U<=V)return E}else if(!(_.y*ne<0)&&Q>=0&&Q<=V)return!E;return O.current=!0,!0};p.useEffect(()=>{L&&window.requestAnimationFrame(()=>{N(!0)})},[]);function $(_){C.current=null,O.current=!1,i(_)}return p.createElement(lc,{"data-vaul-drawer-direction":v,"data-vaul-drawer":"","data-vaul-delayed-snap-points":w?"true":"false","data-vaul-snap-points":b&&L?"true":"false","data-vaul-custom-container":y?"true":"false","data-vaul-animate":S?.current?"true":"false",...n,ref:A,style:d&&d.length>0?{"--snap-point-height":`${d[f??0]}px`,...t}:t,onPointerDown:_=>{g||(n.onPointerDown==null||n.onPointerDown.call(n,_),C.current={x:_.pageX,y:_.pageY},l(_))},onOpenAutoFocus:_=>{r?.(_),k||_.preventDefault()},onPointerDownOutside:_=>{if(e?.(_),!m||_.defaultPrevented){_.preventDefault();return}u.current&&(u.current=!1)},onFocusOutside:_=>{if(!m){_.preventDefault();return}},onPointerMove:_=>{if(j.current=_,g||(n.onPointerMove==null||n.onPointerMove.call(n,_),!C.current))return;const W=_.pageY-C.current.y,V=_.pageX-C.current.x,Q=_.pointerType==="touch"?10:2;M({x:V,y:W},v,Q)?c(_):(Math.abs(V)>Q||Math.abs(W)>Q)&&(C.current=null)},onPointerUp:_=>{n.onPointerUp==null||n.onPointerUp.call(n,_),C.current=null,O.current=!1,i(_)},onPointerOut:_=>{n.onPointerOut==null||n.onPointerOut.call(n,_),$(j.current)},onContextMenu:_=>{n.onContextMenu==null||n.onContextMenu.call(n,_),j.current&&$(j.current)}})});Ks.displayName="Drawer.Content";const Dc=250,Lc=120,Fc=p.forwardRef(function({preventCycle:e=!1,children:t,...r},n){const{closeDrawer:o,isDragging:a,snapPoints:l,activeSnapPoint:i,setActiveSnapPoint:c,dismissible:u,handleOnly:d,isOpen:f,onPress:m,onDrag:b}=ct(),v=p.useRef(null),h=p.useRef(!1);function y(){if(h.current){k();return}window.setTimeout(()=>{g()},Lc)}function g(){if(a||e||h.current){k();return}if(k(),!l||l.length===0){u||o();return}if(i===l[l.length-1]&&u){o();return}const N=l.findIndex(C=>C===i);if(N===-1)return;const A=l[N+1];c(A)}function S(){v.current=window.setTimeout(()=>{h.current=!0},Dc)}function k(){v.current&&window.clearTimeout(v.current),h.current=!1}return p.createElement("div",{onClick:y,onPointerCancel:k,onPointerDown:w=>{d&&m(w),S()},onPointerMove:w=>{d&&b(w)},ref:n,"data-vaul-drawer-visible":f?"true":"false","data-vaul-handle":"","aria-hidden":"true",...r},p.createElement("span",{"data-vaul-handle-hitarea":"","aria-hidden":"true"},t))});Fc.displayName="Drawer.Handle";function $c(e){const t=ct(),{container:r=t.container,...n}=e;return p.createElement(ac,{container:r,...n})}const Pe={Root:Ic,Content:Ks,Overlay:Gs,Portal:$c,Close:dc,Title:cc,Description:uc};function Bc(e=768){const[t,r]=p.useState(!1);return p.useEffect(()=>{const n=()=>{r(window.innerWidth<e)};return n(),window.addEventListener("resize",n),()=>window.removeEventListener("resize",n)},[e]),t}function jr({open:e,onOpenChange:t,children:r,title:n,description:o,className:a="",showCloseButton:l=!0}){const i=Bc(),[c,u]=p.useState(!1),{theme:d}=ra();p.useEffect(()=>{u(!0)},[]);const f={position:"fixed",inset:0,zIndex:9999,display:"flex",alignItems:"center",justifyContent:"center"},m={position:"absolute",inset:0,backgroundColor:"rgba(0, 0, 0, 0.6)",backdropFilter:"blur(4px)"},b={position:"relative",zIndex:10,display:"flex",flexDirection:"column",width:"min(672px, 95vw)",maxHeight:"70vh",borderRadius:d.overlay.radius,backgroundColor:d.overlay.background,border:"1px solid rgba(255, 255, 255, 0.1)",boxShadow:"0 25px 50px -12px rgba(0, 0, 0, 0.25)"},v={display:"flex",alignItems:"center",justifyContent:"space-between",padding:"1rem",borderBottom:"1px solid rgba(255, 255, 255, 0.05)",flexShrink:0},h={fontSize:"1.125rem",fontWeight:700,color:d.colors.text.primary,margin:0},y={fontSize:"0.875rem",color:d.colors.text.secondary,margin:0},g={padding:"0.375rem",borderRadius:d.radius.button,color:d.colors.text.secondary,background:"transparent",border:"none",cursor:"pointer"},S={flex:1,overflow:"hidden",display:"flex",flexDirection:"column"};if(i)return s.jsx(Pe.Root,{open:e,onOpenChange:t,children:s.jsxs(Pe.Portal,{children:[s.jsx(Pe.Overlay,{className:"fixed inset-0 z-[9999] bg-black/60 backdrop-blur-sm"}),s.jsxs(Pe.Content,{className:`fixed inset-x-0 bottom-0 z-[9999] mt-24 flex max-h-[96vh] flex-col rounded-t-[var(--optimex-overlay-radius)] bg-[var(--optimex-overlay-background)] border-t border-white/10 outline-none ${a}`,children:[s.jsx("div",{className:"mx-auto mt-4 h-1.5 w-12 flex-shrink-0 rounded-[9999px] bg-white/20"}),(n||l)&&s.jsxs("div",{className:"flex items-center justify-between border-b border-white/[0.05] px-4 pb-4 pt-2",children:[s.jsxs("div",{children:[n&&s.jsx(Pe.Title,{className:"text-lg font-bold text-[var(--optimex-text)]",children:n}),o&&s.jsx(Pe.Description,{className:"text-sm text-[var(--optimex-text-secondary)]",children:o})]}),l&&s.jsx(Pe.Close,{className:"rounded-[var(--optimex-radius-button)] p-1.5 text-[var(--optimex-text-secondary)] transition-colors hover:bg-white/10 hover:text-[var(--optimex-text)]",children:s.jsx(Ie,{})})]}),s.jsx("div",{className:"flex-1 overflow-auto",children:r})]})]})});if(!e||!c)return null;const k=s.jsxs("div",{style:f,children:[s.jsx("div",{style:m,onClick:()=>t(!1)}),s.jsxs("div",{role:"dialog","aria-modal":"true","aria-labelledby":n?"modal-title":void 0,"aria-describedby":o?"modal-description":void 0,style:b,className:a,children:[(n||l)&&s.jsxs("div",{style:v,children:[s.jsxs("div",{children:[n&&s.jsx("h2",{id:"modal-title",style:h,children:n}),o&&s.jsx("p",{id:"modal-description",style:y,children:o})]}),l&&s.jsx("button",{onClick:()=>t(!1),style:g,children:s.jsx(Ie,{})})]}),s.jsx("div",{style:S,children:r})]})]});return hr.createPortal(k,document.body)}const zc=({children:e,className:t=""})=>s.jsx("div",{className:`p-4 ${t}`,children:e}),Wc=({children:e,className:t=""})=>s.jsx("div",{className:`flex gap-2 border-t border-white/[0.05] p-4 ${t}`,children:e});function dr({children:e,onClick:t,isActive:r=!1,type:n="button",className:o=""}){return s.jsx("button",{type:n,onClick:t,className:as(`px-2 py-1 bg-white/5 rounded-md text-xs transition-colors shadow-sm border ${r?"border-[var(--optimex-primary)] text-[var(--optimex-text)]":"border-transparent text-[var(--optimex-text-secondary)] hover:bg-[var(--optimex-surface-hover)] hover:text-[var(--optimex-text)]"} ${o}`),children:e})}const Vc={"bottom-right":"right-0 top-full mt-2","bottom-left":"left-0 top-full mt-2","bottom-center":"left-1/2 -translate-x-1/2 top-full mt-2","top-right":"right-0 bottom-full mb-2","top-left":"left-0 bottom-full mb-2","top-center":"left-1/2 -translate-x-1/2 bottom-full mb-2"},Uc={"bottom-right":"-top-2 right-4 rotate-45 border-l border-t border-white/10","bottom-left":"-top-2 left-4 rotate-45 border-l border-t border-white/10","bottom-center":"-top-2 left-1/2 -translate-x-1/2 rotate-45 border-l border-t border-white/10","top-right":"-bottom-2 right-4 rotate-45 border-r border-b border-white/10","top-left":"-bottom-2 left-4 rotate-45 border-r border-b border-white/10","top-center":"-bottom-2 left-1/2 -translate-x-1/2 rotate-45 border-r border-b border-white/10"};function Hc({isOpen:e,onClose:t,children:r,anchorRef:n,position:o="bottom-right",width:a="w-72",showArrow:l=!0,className:i="",ariaLabel:c}){const u=p.useRef(null);return p.useEffect(()=>{if(!e)return;const d=b=>{const v=b.target;u.current?.contains(v)||n?.current?.contains(v)||t()},f=b=>{b.key==="Escape"&&t()},m=setTimeout(()=>{document.addEventListener("mousedown",d),document.addEventListener("keydown",f)},0);return()=>{clearTimeout(m),document.removeEventListener("mousedown",d),document.removeEventListener("keydown",f)}},[e,t,n]),e?s.jsxs("div",{ref:u,className:`absolute z-50 rounded-[var(--optimex-overlay-radius)] border border-white/10 bg-[var(--optimex-overlay-background)] p-4 shadow-xl ${Vc[o]} ${a} ${i}`,role:"dialog","aria-label":c,children:[l&&s.jsx("div",{className:`absolute h-4 w-4 bg-[var(--optimex-overlay-background)] ${Uc[o]}`}),s.jsx("div",{className:"relative",children:r})]}):null}function qc({value:e,onChange:t,placeholder:r,hasError:n=!1,leftIcon:o,rightContent:a,type:l="text",inputMode:i="text",disabled:c=!1,className:u=""}){return s.jsxs("div",{className:`flex rounded-[var(--optimex-radius-button)] items-center gap-2 bg-white/5 border py-3 px-3 transition-colors ${n?"border-[var(--optimex-error)]":"border-white/10 hover:border-[var(--optimex-primary)] focus-within:border-[var(--optimex-primary)]"} ${c?"opacity-50 cursor-not-allowed":""} ${u}`,children:[o&&s.jsx(o,{className:"size-5 text-[var(--optimex-text-secondary)] shrink-0"}),s.jsx("input",{type:l,inputMode:i,value:e,onChange:d=>t(d.target.value),placeholder:r,disabled:c,className:"flex-1 min-w-0 bg-transparent text-[var(--optimex-text)] text-sm placeholder:text-[var(--optimex-text-secondary)]/30 outline-none disabled:cursor-not-allowed"}),a]})}const Qc={sm:{container:"h-6 w-6",icon:"h-6 w-6",badge:"h-3 w-3"},md:{container:"h-8 w-8",icon:"h-8 w-8",badge:"h-4 w-4"},lg:{container:"h-10 w-10",icon:"h-10 w-10",badge:"h-5 w-5"},xl:{container:"h-14 w-14",icon:"h-14 w-14",badge:"h-6 w-6"}};function Le({token:e,size:t="md",showNetworkBadge:r=!0}){const n=Qc[t];return s.jsxs("div",{className:`relative shrink-0 ${n.container}`,children:[s.jsx("img",{src:e.token_logo_uri||"/placeholder-token.svg",alt:e.token_symbol,className:`${n.icon} rounded-[9999px] bg-[var(--optimex-background)]`,onError:o=>{o.target.src="/placeholder-token.svg"}}),r&&e.network_logo_uri&&s.jsx("img",{src:e.network_logo_uri,alt:e.network_name,className:`absolute -bottom-1 -right-1 ${n.badge} rounded-[9999px] border-2 border-[var(--optimex-surface)]`,onError:o=>{o.target.style.display="none"}})]})}const Gc="widget-container rounded-[var(--optimex-radius-widget)] p-4 shadow-2xl relative w-full min-w-0";function Sr({children:e,className:t}){return s.jsx("div",{className:t??Gc,children:e})}function Kc(){return s.jsxs("div",{className:"relative size-20 mb-4",children:[s.jsx("div",{className:"absolute inset-0 rounded-full bg-[var(--optimex-error)]/10 animate-pulse"}),s.jsx("div",{className:"absolute inset-2 rounded-full bg-[var(--optimex-error)]/20"}),s.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:s.jsx(Ta,{className:"size-10 text-[var(--optimex-error)]"})})]})}function Yc({error:e,onRetry:t,className:r}){const n=()=>{const o=e?.message?.toLowerCase()||"";return o.includes("network")||o.includes("fetch")?"Connection issue. Check your internet and try again.":o.includes("timeout")?"Request timed out. The server might be busy.":o.includes("401")||o.includes("403")?"Access denied. Please check your credentials.":o.includes("500")||o.includes("server")?"Server is having issues. Please try again later.":"Something went wrong while loading. Let's give it another shot!"};return s.jsx(Sr,{className:r,children:s.jsx("div",{className:"bg-[var(--optimex-surface)] rounded-2xl p-6 border border-white/[0.02]",children:s.jsxs("div",{className:"flex flex-col items-center justify-center text-center",children:[s.jsx(Kc,{}),s.jsx("h3",{className:"text-base font-bold text-[var(--optimex-text)] mb-1",children:"Oops! Something went wrong"}),s.jsx("p",{className:"text-sm text-[var(--optimex-text-secondary)] mb-6 max-w-[280px]",children:n()}),s.jsx(qn,{onClick:t,size:"md",fullWidth:!0,leftIcon:s.jsx(Na,{className:"size-4 transition-transform group-hover:rotate-180"}),children:"Try Again"}),e?.message&&s.jsxs("details",{className:"mt-4 w-full",children:[s.jsx("summary",{className:"cursor-pointer text-xs text-[var(--optimex-text-secondary)]/60 hover:text-[var(--optimex-text-secondary)] transition-colors",children:"Technical details"}),s.jsx("p",{className:"mt-2 bg-white/5 p-3 text-left text-xs text-[var(--optimex-text-secondary)] break-all border border-white/[0.02]",children:e.message})]})]})})})}function Zc({className:e}){return s.jsxs("div",{className:"flex flex-col gap-4",children:[s.jsxs("header",{className:"flex items-center justify-between px-2",children:[s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx("div",{className:"size-8 rounded-lg bg-[var(--optimex-primary)]/30 animate-pulse"}),s.jsx("div",{className:"h-6 w-28 rounded bg-white/10 animate-pulse"})]}),s.jsx("div",{className:"size-10 rounded-lg bg-white/5 animate-pulse"})]}),s.jsxs(Sr,{className:e,children:[s.jsxs("div",{className:"bg-[var(--optimex-surface)] rounded-2xl p-4 border border-white/[0.02] mb-2",children:[s.jsx("div",{className:"flex justify-between items-center mb-4",children:s.jsx("div",{className:"h-3 w-10 animate-pulse rounded bg-white/10"})}),s.jsxs("div",{className:"flex items-center justify-between gap-4",children:[s.jsxs("div",{className:"flex-1",children:[s.jsx("div",{className:"h-8 w-24 animate-pulse rounded bg-white/10 mb-2"}),s.jsx("div",{className:"h-3 w-16 animate-pulse rounded bg-white/5"})]}),s.jsxs("div",{className:"flex items-center gap-2 bg-white/5 p-2 pr-3 rounded-full border border-white/10",children:[s.jsx("div",{className:"size-8 rounded-full bg-white/10 animate-pulse"}),s.jsxs("div",{children:[s.jsx("div",{className:"h-4 w-12 animate-pulse rounded bg-white/10 mb-1"}),s.jsx("div",{className:"h-2 w-16 animate-pulse rounded bg-white/5"})]})]})]})]}),s.jsx("div",{className:"relative z-10 -my-4 flex justify-center",children:s.jsx("div",{className:"size-10 rounded-full bg-[var(--optimex-surface)] border-4 border-[var(--optimex-background)] animate-pulse"})}),s.jsxs("div",{className:"bg-[var(--optimex-surface)] rounded-2xl p-4 border border-white/[0.02] mb-4",children:[s.jsx("div",{className:"flex justify-between items-center mb-4",children:s.jsx("div",{className:"h-3 w-6 animate-pulse rounded bg-white/10"})}),s.jsxs("div",{className:"flex items-center justify-between gap-4",children:[s.jsxs("div",{className:"flex-1",children:[s.jsx("div",{className:"h-8 w-20 animate-pulse rounded bg-white/10 mb-2"}),s.jsx("div",{className:"h-3 w-14 animate-pulse rounded bg-white/5"})]}),s.jsxs("div",{className:"flex items-center gap-2 bg-white/5 p-2 pr-3 rounded-full border border-white/10",children:[s.jsx("div",{className:"size-8 rounded-full bg-white/10 animate-pulse"}),s.jsxs("div",{children:[s.jsx("div",{className:"h-4 w-12 animate-pulse rounded bg-white/10 mb-1"}),s.jsx("div",{className:"h-2 w-16 animate-pulse rounded bg-white/5"})]})]})]})]}),s.jsxs("div",{className:"bg-[var(--optimex-surface)] rounded-2xl p-4 border border-white/[0.02] mb-4",children:[s.jsx("div",{className:"h-3 w-28 animate-pulse rounded bg-white/10 mb-2"}),s.jsxs("div",{className:"flex items-center gap-2 bg-white/5 border border-white/10 py-3 px-3 rounded-md",children:[s.jsx("div",{className:"size-5 rounded-full bg-white/10 animate-pulse shrink-0"}),s.jsx("div",{className:"h-4 flex-1 animate-pulse rounded bg-white/5"})]}),s.jsx("div",{className:"h-2 w-48 animate-pulse rounded bg-white/5 mt-2"})]}),s.jsx("div",{className:"h-12 w-full animate-pulse rounded-xl bg-[var(--optimex-primary)]/30 bg-white/5 mt-2"}),s.jsx("div",{className:"mt-4 flex items-center justify-center",children:s.jsx("div",{className:"h-4 w-32 animate-pulse rounded bg-white/5"})})]})]})}const Ys=p.createContext(null);function Xc({children:e}){const t=lt(),{data:r,isLoading:n,error:o,refetch:a}=aa(t.apiBaseUrl),l=t.renderLoading??Zc,i=t.renderError??Yc;if(n)return s.jsx(l,{});if(o||!r){const c=o instanceof Error?o:new Error("Failed to load tokens");return s.jsx(i,{error:c,onRetry:()=>a()})}return s.jsx(Ys.Provider,{value:{tokensData:r,refetch:a},children:e})}function Jc(){const e=p.useContext(Ys);if(!e)throw new Error("useTokensData must be used within TokensProvider");return e}function eu({token:e,value:t,onChange:r,placeholder:n,error:o,onClose:a}){const l=p.useCallback(()=>{r("")},[r]),i=p.useCallback(async()=>{try{const f=await navigator.clipboard.readText();f&&r(f.trim())}catch(f){console.error("Failed to read clipboard:",f)}},[r]),c=()=>n||(e?`Enter ${e.network_name} address`:"Enter receiving address"),u=e?.network_name||"destination",d=p.useMemo(()=>_a(e?.network_name)||Fn,[e?.network_name]);return s.jsxs("div",{className:"bg-[var(--optimex-surface)] rounded-[var(--optimex-radius-input)] p-4 border border-white/[0.05] animate-in slide-in-from-top-2 duration-300",children:[s.jsxs("div",{className:"flex justify-between items-center mb-2",children:[s.jsx("label",{className:"text-[var(--optimex-text-secondary)] text-xs",children:"Recipient Address"}),a&&s.jsx("button",{type:"button",onClick:l,className:"text-[var(--optimex-text-secondary)]/50 hover:text-[var(--optimex-text-secondary)] transition-colors",children:s.jsx(Ie,{className:"size-4"})})]}),s.jsx(qc,{value:t,onChange:r,placeholder:c(),hasError:!!o,leftIcon:d,rightContent:t?s.jsx("button",{type:"button",onClick:l,className:"text-[var(--optimex-text-secondary)] hover:text-[var(--optimex-text)] transition-colors",children:s.jsx(Ie,{className:"size-5"})}):s.jsx("button",{type:"button",onClick:i,className:"text-[var(--optimex-text-secondary)] hover:text-[var(--optimex-primary)] transition-colors",children:s.jsx(Ea,{className:"size-5"})})}),o?s.jsxs("p",{className:"text-[10px] text-[var(--optimex-error)] mt-2 flex items-center gap-1",children:[s.jsx(qr,{className:"size-3"}),o]}):s.jsxs("p",{className:"text-[10px] text-[var(--optimex-text-secondary)] mt-2 flex items-center gap-1",children:[s.jsx(qr,{className:"size-3"}),"Ensure the address matches the ",u," network."]})]})}function vn({token:e,value:t,onChange:r,readOnly:n=!1,onSelectToken:o,isLoading:a=!1,loadingText:l="Loading...",balance:i,isOutput:c=!1,isWalletConnected:u=!1,usdValue:d="$0.00"}){const f=h=>{if(n||!r)return;const y=h.target.value;/^[0-9]*\.?[0-9]*$/.test(y)&&r(y)},m=u&&!c&&i!==void 0,b=()=>{if(!i||!r||n)return;const h=(parseFloat(i)/2).toString();r(h)},v=()=>{!i||!r||n||r(i)};return s.jsxs("div",{className:"bg-[var(--optimex-surface)] rounded-[var(--optimex-radius-input)] p-4 flex flex-col gap-2 border border-white/[0.02] focus-within:border-[var(--optimex-primary)]/40 transition-colors",children:[s.jsxs("div",{className:"flex justify-between items-center",children:[s.jsx("span",{className:"text-[var(--optimex-text-secondary)] text-xs",children:c?"To":"From"}),s.jsx("div",{className:"flex items-center gap-2",children:m&&s.jsxs(s.Fragment,{children:[s.jsxs("span",{className:"text-[var(--optimex-text-secondary)] text-xs",children:["Balance: ",i," ",e?.token_symbol]}),s.jsxs("div",{className:"flex gap-2",children:[s.jsx(dr,{onClick:b,children:"50%"}),s.jsx(dr,{onClick:v,children:"Max"})]})]})})]}),s.jsxs("div",{className:"flex items-center justify-between gap-4",children:[s.jsxs("div",{className:"flex-1 min-w-0",children:[s.jsx("input",{type:"text",inputMode:"decimal",placeholder:"0.0",value:t,onChange:f,readOnly:n,className:"w-full bg-transparent border-none p-0 text-[var(--optimex-text)] text-2xl font-bold focus:ring-0 placeholder:text-[var(--optimex-text-secondary)]/30 outline-none"}),s.jsxs("p",{className:"text-[var(--optimex-text-secondary)] text-xs mt-1",children:["~",d]})]}),s.jsxs("button",{onClick:o,className:"flex items-center gap-2 bg-white/5 hover:bg-white/10 p-2 pr-3 rounded-[9999px] transition-all border border-white/10 active:scale-95 shrink-0",children:[e?s.jsxs(s.Fragment,{children:[s.jsx(Le,{token:e,size:"md"}),s.jsxs("div",{className:"text-left",children:[s.jsx("p",{className:"text-[var(--optimex-text)] text-sm font-bold leading-none",children:e.token_symbol}),s.jsx("p",{className:"text-[var(--optimex-text-secondary)] text-[10px] leading-none mt-1",children:e.network_name})]})]}):s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"size-8 rounded-[9999px] bg-white/10"}),s.jsx("span",{className:"text-[var(--optimex-text)] text-sm font-bold",children:"Select"})]}),s.jsx(Dn,{className:"size-4 text-[var(--optimex-text-secondary)]"})]})]}),a&&s.jsxs("div",{className:"flex items-center justify-end gap-2 text-sm text-[var(--optimex-text-secondary)]",children:[s.jsx("div",{className:"size-3 animate-spin rounded-[9999px] border border-[var(--optimex-primary)] border-t-transparent"}),s.jsx("span",{children:l})]})]})}const Yt=[.5,.75,1];function tu({value:e,onChange:t}){const[r,n]=p.useState(""),[o,a]=p.useState(!Yt.includes(e)),l=p.useCallback(u=>{a(!1),n(""),t(u)},[t]),i=p.useCallback(u=>{const d=u.target.value;if(d===""||/^\d*\.?\d*$/.test(d)){n(d),a(!0);const f=parseFloat(d);!isNaN(f)&&f>0&&f<=50&&t(f)}},[t]),c=p.useCallback(()=>{a(!0),!r&&e&&n(Yt.includes(e)?"":String(e))},[r,e]);return s.jsxs("div",{className:"space-y-3",children:[s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsx("span",{className:"text-sm font-medium text-[var(--optimex-text)]",children:"Slippage Tolerance"}),s.jsxs("span",{className:"text-sm text-[var(--optimex-text-secondary)]",children:[e,"%"]})]}),s.jsxs("div",{className:"flex items-center gap-2",children:[Yt.map(u=>s.jsxs(dr,{onClick:()=>l(u),isActive:e===u&&!o,className:"flex-1",children:[u,"%"]},u)),s.jsxs("div",{className:`flex flex-1 items-center justify-center px-2 rounded-md transition-colors shadow-sm bg-white/5 border ${o?"border-[var(--optimex-primary)]":"border-transparent hover:bg-white/10"}`,children:[s.jsx("input",{type:"text",inputMode:"decimal",placeholder:"Custom",value:r,onChange:i,onFocus:c,className:"w-full min-w-0 py-[6px] bg-transparent text-center text-xs outline-none placeholder:text-[var(--optimex-text-secondary)] text-[var(--optimex-text)]"}),s.jsx("span",{className:"text-xs text-[var(--optimex-text-secondary)]",children:"%"})]})]}),e>5&&s.jsx("p",{className:"text-xs text-[var(--optimex-warning)]",children:"This may result in an unfavorable trade. Try lowering your slippage setting."})]})}function ru({isOpen:e,onClose:t,value:r,onChange:n,anchorRef:o}){const a=p.useCallback(l=>{n(l)},[n]);return s.jsx(Hc,{isOpen:e,onClose:t,anchorRef:o,position:"bottom-right",width:"w-96",ariaLabel:"Slippage settings",children:s.jsx(tu,{value:r,onChange:a})})}const nu=({title:e})=>s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx("div",{className:"size-8 bg-[var(--optimex-primary)] rounded-[var(--optimex-radius-button)] flex items-center justify-center shadow-[0_0_15px_rgba(235,98,0,0.3)]",children:s.jsx(ja,{className:"w-5 h-auto text-white"})}),s.jsx("h2",{className:"text-xl font-bold tracking-tight text-[var(--optimex-text)]",children:e})]});function su({title:e="Swap",headerLeft:t,slippage:r=.75,onSlippageChange:n,isSettingsOpen:o=!1,onSettingsToggle:a,onHistoryClick:l,hideHistory:i=!1}){const c=p.useRef(null);return s.jsxs("header",{className:"flex items-center justify-between px-2",children:[t??s.jsx(nu,{title:e}),s.jsxs("div",{className:"flex items-center gap-2",children:[!i&&s.jsx("button",{onClick:l,className:"size-10 rounded-[var(--optimex-radius-button)] bg-white/5 hover:bg-white/10 text-[var(--optimex-text-secondary)] hover:text-[var(--optimex-text)] transition-colors flex items-center justify-center","aria-label":"Trade History",children:s.jsx(Ca,{className:"size-5"})}),s.jsxs("div",{className:"relative",children:[s.jsx("button",{ref:c,onClick:a,className:"size-10 rounded-[var(--optimex-radius-button)] bg-white/5 hover:bg-white/10 text-[var(--optimex-text-secondary)] hover:text-[var(--optimex-text)] transition-colors flex items-center justify-center","aria-label":"Settings",children:s.jsx(Oa,{className:"size-5"})}),s.jsx(ru,{isOpen:o,onClose:()=>a?.(),value:r,onChange:u=>n?.(u),anchorRef:c})]})]})]})}function Zs({onClick:e,disabled:t}){return s.jsx("div",{className:"!m-0 absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-10",children:s.jsx("button",{onClick:e,disabled:t,className:"size-10 rounded-[9999px] bg-[var(--optimex-surface)] border-4 border-white/5 flex items-center justify-center text-[var(--optimex-primary)] hover:scale-110 transition-all shadow-xl disabled:cursor-not-allowed",children:s.jsx(ba,{className:"size-5"})})})}function ou({quote:e,fromToken:t,toToken:r,amount:n,slippage:o,isFetching:a}){const[l,i]=p.useState(!1),[c,u]=p.useState(!1),d=p.useCallback(()=>{u(g=>!g)},[]),f=p.useCallback(()=>{i(g=>!g)},[]),m=parseFloat(n)||0,b=parseFloat(e.min_amount_out)/Math.pow(10,r.token_decimals),v=m>0?b/m:0,h=b>0?m/b:0,y=()=>c?`1 ${r.token_symbol} = ${h.toFixed(6)} ${t.token_symbol}`:`1 ${t.token_symbol} = ${v.toFixed(6)} ${r.token_symbol}`;return s.jsxs("div",{className:"bg-white/[0.02] rounded-[var(--optimex-radius-button)] border border-white/5 overflow-hidden",children:[s.jsxs("button",{type:"button",onClick:f,className:"w-full flex items-center justify-between p-3 text-xs cursor-pointer hover:bg-white/[0.02] transition-colors",children:[s.jsx("div",{className:"flex items-center gap-2 text-[var(--optimex-text-secondary)] font-medium",children:a?s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("div",{className:"size-3 animate-spin rounded-[9999px] border border-[var(--optimex-primary)] border-t-transparent"}),s.jsx("span",{children:"Updating..."})]}):s.jsx("span",{role:"button",tabIndex:0,onClick:g=>{g.stopPropagation(),d()},onKeyDown:g=>{(g.key==="Enter"||g.key===" ")&&(g.stopPropagation(),d())},className:"hover:text-[var(--optimex-text)] transition-colors",children:y()})}),s.jsx(Dn,{className:`size-4 text-[var(--optimex-text-secondary)] transition-transform ${l?"rotate-180":""}`})]}),l&&s.jsxs("div",{className:"px-3 pb-3 space-y-2 text-xs border-t border-white/5",children:[s.jsxs("div",{className:"flex items-center justify-between pt-3",children:[s.jsx("span",{className:"text-[var(--optimex-text-secondary)]",children:"Min. Received"}),s.jsxs("span",{className:"font-medium text-[var(--optimex-text)]",children:[Ne(e.min_amount_out,r.token_decimals)," ",r.token_symbol]})]}),s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsx("span",{className:"text-[var(--optimex-text-secondary)]",children:"Est. Time"}),s.jsx("span",{className:"font-medium text-[var(--optimex-primary)]",children:"~10 minutes"})]}),s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsx("span",{className:"text-[var(--optimex-text-secondary)]",children:"Slippage Tolerance"}),s.jsxs("span",{className:"font-medium text-[var(--optimex-text)]",children:[o,"%"]})]})]})]})}function au({text:e,disabled:t,onClick:r}){return s.jsx("button",{disabled:t,onClick:r,className:"w-full font-semibold text-black bg-[var(--optimex-primary)] hover:brightness-110 py-4 rounded-[var(--optimex-radius-button)] shadow-lg shadow-[var(--optimex-primary)]/30 flex items-center justify-center transition-all active:scale-[0.98] disabled:cursor-not-allowed disabled:opacity-50",children:e})}function iu(){return s.jsxs("a",{href:"https://optimex.com",target:"_blank",rel:"noopener noreferrer",className:"flex items-center justify-center gap-1.5 text-[var(--optimex-text-secondary)] text-[10px] opacity-50 hover:opacity-70 transition-opacity",children:[s.jsx("span",{children:"Powered by"}),s.jsx(Sa,{className:"h-3 w-auto"})]})}function lu({value:e,onChange:t,placeholder:r="Search by name or symbol..."}){return s.jsx("div",{className:"flex-shrink-0 p-4 pb-3",children:s.jsxs("div",{className:"relative",children:[s.jsx("input",{type:"text",placeholder:r,value:e,onChange:n=>t(n.target.value),className:"w-full rounded-xl bg-white/5 border border-white/10 px-4 py-3 pl-10 pr-10 text-[var(--optimex-text)] outline-none placeholder:text-[var(--optimex-text-secondary)]/60 transition-colors hover:border-[var(--optimex-primary)] focus:border-[var(--optimex-primary)]"}),s.jsx(Ra,{className:"absolute left-3 top-1/2 h-5 w-5 -translate-y-1/2 text-[var(--optimex-text-secondary)]"}),e&&s.jsx("button",{type:"button",onClick:()=>t(""),className:"absolute right-3 top-1/2 -translate-y-1/2 text-[var(--optimex-text-secondary)] hover:text-[var(--optimex-text)] transition-colors",children:s.jsx(Ie,{className:"size-5"})})]})})}function cu({networks:e,selectedNetwork:t,onSelectNetwork:r}){return s.jsxs("div",{className:"w-1/3 min-w-[140px] border-r border-white/[0.05] overflow-y-auto p-2",children:[s.jsx("div",{className:"mb-2 px-2 text-xs font-medium uppercase tracking-wider text-[var(--optimex-text-secondary)]",children:"Networks"}),s.jsxs("div",{className:"space-y-1 px-2",children:[s.jsxs("button",{onClick:()=>r(null),className:`flex w-full items-center gap-2 rounded-lg px-3 py-2 text-sm transition-colors ${t===null?"bg-white/5 text-[var(--optimex-text)]":"text-[var(--optimex-text-secondary)] hover:bg-white/5 hover:text-[var(--optimex-text)]"}`,children:[s.jsx(ga,{}),s.jsx("span",{children:"All"})]}),e.map(n=>s.jsx(uu,{network:n,isSelected:t===n.network_id,onSelect:()=>r(n.network_id)},n.network_id))]})]})}function uu({network:e,isSelected:t,onSelect:r}){return s.jsxs("button",{onClick:r,className:`flex w-full items-center gap-2 rounded-lg px-3 py-2 text-sm transition-colors ${t?"bg-white/5 text-[var(--optimex-text)]":"text-[var(--optimex-text-secondary)] hover:bg-white/5 hover:text-[var(--optimex-text)]"}`,children:[e.logo_uri?s.jsx("img",{src:e.logo_uri,alt:e.name,className:"h-8 w-8 rounded-lg",onError:n=>{n.target.style.display="none"}}):s.jsx("div",{className:"h-6 w-6 rounded-full bg-white/10"}),s.jsx("span",{className:"truncate",children:e.name})]})}function du({tokens:e,selectedSymbol:t,onSelectSymbol:r,maxVisible:n=12}){return s.jsxs("div",{className:"flex-shrink-0 border-b border-white/[0.05] p-2",children:[s.jsx("div",{className:"mb-2 px-2 text-xs font-medium uppercase tracking-wider text-[var(--optimex-text-secondary)]",children:"Tokens"}),s.jsxs("div",{className:"flex flex-wrap gap-1.5 overflow-hidden max-h-[5rem]",children:[s.jsx("button",{onClick:()=>r(null),className:`border rounded-lg px-2.5 py-1 text-xs font-medium transition-colors ${t===null?"border-[var(--optimex-primary)] text-[var(--optimex-text)]":"border-transparent text-[var(--optimex-text-secondary)] hover:bg-white/10 hover:text-[var(--optimex-text)]"}`,children:"All"}),e.slice(0,n).map(o=>s.jsx(fu,{token:o,isSelected:t===o.token_symbol,onSelect:()=>r(o.token_symbol)},o.token_symbol))]})]})}function fu({token:e,isSelected:t,onSelect:r}){return s.jsxs("button",{onClick:r,className:as("flex items-center gap-1 rounded-lg px-2.5 py-1 text-xs font-medium transition-colors outline-none border bg-white/5",t?"border-[var(--optimex-primary)] text-[var(--optimex-text)]":"border-transparent text-[var(--optimex-text-secondary)] hover:bg-white/10 hover:text-[var(--optimex-text)]"),children:[e.token_logo_uri&&s.jsx("img",{src:e.token_logo_uri,alt:e.token_symbol,className:"h-4 w-4 rounded-full",onError:n=>{n.target.style.display="none"}}),e.token_symbol]})}function Ze(){const e=p.useContext(An);if(!e)throw new Error("useWallet must be used within WalletProvider");return e}function At(e){return`https://network-api-stg.bitdex.xyz/${e}/rpc/zwD70RMT9DrE8L5SaMnJNMF8m70Gum`}function hu(e){return e==="bitcoin_testnet"?"https://mempool.space/testnet4/api":"https://mempool.space/api"}function Er(e){return!e.token_address||e.token_address===""||e.token_address==="native"||e.token_address==="0x0000000000000000000000000000000000000000"}function mu(e,t){if(!e||e==="0")return"0";const r=BigInt(e),n=BigInt(10**t),o=r/n,a=r%n;if(a===BigInt(0))return o.toString();let l=a.toString().padStart(t,"0");return l=l.replace(/0+$/,""),l.length>6&&(l=l.slice(0,6)),`${o}.${l}`}function pu(e){return`0x70a08231000000000000000000000000${e.toLowerCase().replace("0x","")}`}async function Xs(e,t){const r=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!r.ok)throw new Error(`RPC request failed: ${r.status}`);return r.json()}async function xu(e,t){const n=await Xs(e,{jsonrpc:"2.0",method:"eth_getBalance",params:[t,"latest"],id:1});if(n.error)throw new Error(`RPC error: ${n.error.message}`);const o=n.result||"0x0";return BigInt(o).toString()}async function vu(e,t,r){const n={jsonrpc:"2.0",method:"eth_call",params:[{to:t,data:pu(r)},"latest"],id:1},o=await Xs(e,n);if(o.error)throw new Error(`RPC error: ${o.error.message}`);const a=o.result||"0x0";return BigInt(a).toString()}async function gu(e,t){const r=At(e.network_id),n=Er(e);let o;return n?o=await xu(r,t):o=await vu(r,e.token_address,t),{rawBalance:o,isNative:n}}async function bu(e,t){const n=`${hu(e.network_id)}/address/${t}`,o=await fetch(n);if(!o.ok)throw new Error(`Mempool API request failed: ${o.status}`);const a=await o.json(),l=a.chain_stats.funded_txo_sum-a.chain_stats.spent_txo_sum,i=a.mempool_stats.funded_txo_sum-a.mempool_stats.spent_txo_sum;return{rawBalance:(l+i).toString(),isNative:!0}}async function Js(e,t){const r=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!r.ok)throw new Error(`RPC request failed: ${r.status}`);return r.json()}async function yu(e,t){const n=await Js(e,{jsonrpc:"2.0",method:"getBalance",params:[t],id:1});if(n.error)throw new Error(`RPC error: ${n.error.message}`);return(n.result?.value||0).toString()}async function wu(e,t,r){const o=await Js(e,{jsonrpc:"2.0",method:"getTokenAccountsByOwner",params:[r,{mint:t},{encoding:"jsonParsed"}],id:1});if(o.error)throw new Error(`RPC error: ${o.error.message}`);const a=o.result?.value||[];let l=BigInt(0);for(const i of a){const c=i.account.data.parsed.info.tokenAmount.amount;l+=BigInt(c)}return l.toString()}async function Cu(e,t){const r=At(e.network_id),n=Er(e);let o;return n?o=await yu(r,t):o=await wu(r,e.token_address,t),{rawBalance:o,isNative:n}}function ku(e,t){if(!t)return!1;switch(t){case K.EVM:return e.isEvmConnected;case K.BTC:return e.isBtcConnected;case K.SOLANA:return e.isSolanaConnected;default:return!1}}function ju(e){if(!e)return"";switch(e){case K.EVM:return"EVM";case K.BTC:return"Bitcoin";case K.SOLANA:return"Solana";default:return e}}function Su(e,t){if(!t)return null;switch(t){case K.EVM:return e.evmAddress;case K.BTC:return e.btcAddress;case K.SOLANA:return e.solanaAddress;default:return null}}async function eo({provider:e,address:t,chainId:r,chainName:n="Unknown"}){let o=t;if(!o){const l=await e.request({method:"eth_accounts"});if(!l||l.length===0)throw new Error("No accounts found. Please connect your wallet first.");o=l[0]}let a=r;if(a===void 0){const l=await e.request({method:"eth_chainId"});a=parseInt(l,16)}return to({provider:e,address:o,chainId:a,chainName:n})}function to({provider:e,address:t,chainId:r,chainName:n="Unknown"}){return{address:t,publicKey:t,chain:{id:r,name:n,type:"EVM"},sendTransaction:async i=>{const c=i;return await e.request({method:"eth_sendTransaction",params:[{from:t,to:c.to,value:c.value?`0x${c.value.toString(16)}`:void 0,data:c.data}]})},getChainId:async()=>{const i=await e.request({method:"eth_chainId"});return parseInt(i,16)},switchChain:async i=>{try{await e.request({method:"wallet_switchEthereumChain",params:[{chainId:`0x${i.toString(16)}`}]})}catch(c){throw c.code===4902?new Error(`Chain ${i} not found in wallet. Please add it first.`):c}}}}const Eu=eo;async function Nu(e,t){const r=e.token_address||"native";let n;switch(e.network_type){case K.BTC:n=await bu(e,t);break;case K.SOLANA:n=await Cu(e,t);break;case K.EVM:default:n=await gu(e,t)}return{tokenId:r,networkId:e.network_id,walletAddress:t,rawBalance:n.rawBalance,formattedBalance:mu(n.rawBalance,e.token_decimals),updatedAt:Date.now()}}const Tu=30*1e3,Ru=15*1e3;function Ou(e,t){return!e||!t?["balance"]:["balance",e.network_id,e.token_address||"native",t]}function ro({token:e,walletAddress:t,enabled:r=!0,polling:n=!1,pollingInterval:o=Ru}){const a=r&&!!e&&!!t,{data:l,isLoading:i,isFetching:c,error:u,refetch:d}=Qe({queryKey:Ou(e,t),queryFn:()=>Nu(e,t),enabled:a,staleTime:Tu,retry:1,refetchOnWindowFocus:!1,refetchInterval:n?o:!1});return{balance:l,formattedBalance:l?.formattedBalance||"0",isLoading:a&&i,isFetching:a&&c,error:u,refetch:d}}function _u({token:e,isSelected:t,isDisabled:r,onSelect:n}){const o=Ze(),a=Su(o,e.network_type),{formattedBalance:l,isLoading:i}=ro({token:e,walletAddress:a,enabled:!!a}),c=!!a;return s.jsxs("button",{onClick:n,disabled:r,className:`flex w-full items-center gap-3 rounded-lg p-2 transition-colors ${t?"bg-white/5 text-[var(--optimex-text)]":r?"cursor-not-allowed opacity-50":"hover:bg-white/5"}`,children:[s.jsx(Le,{token:e}),s.jsxs("div",{className:"flex-1 text-left",children:[s.jsx("div",{className:"text-sm text-[var(--optimex-text-secondary)]",children:e.token_name}),s.jsxs("div",{className:"flex items-center gap-2",children:[c&&s.jsx("span",{className:"text-sm font-medium text-[var(--optimex-text)]",children:i?s.jsx("span",{className:"inline-block h-4 w-12 animate-pulse rounded bg-white/10"}):l}),s.jsx("span",{className:"font-medium text-[var(--optimex-text)]",children:e.token_symbol})]})]}),t&&s.jsx(gr,{className:"h-5 w-5 text-[var(--optimex-primary)]"})]})}function Au({tokens:e,selectedTokenId:t,disabledTokenId:r,disabledTokenIds:n,isLoading:o,emptyMessage:a="No tokens available",onSelect:l}){return o?s.jsx("div",{className:"flex-1 overflow-y-auto p-2",children:s.jsx("div",{className:"flex items-center justify-center py-8",children:s.jsx("div",{className:"h-8 w-8 animate-spin rounded-full border-2 border-[var(--optimex-primary)] border-t-transparent"})})}):e.length===0?s.jsx("div",{className:"flex-1 overflow-y-auto p-2",children:s.jsx("div",{className:"py-8 text-center text-[var(--optimex-text-secondary)]",children:a})}):s.jsx("div",{className:"flex-1 overflow-y-auto p-2",children:s.jsx("div",{className:"space-y-1",children:e.map(i=>{const c=r===i.token_id||n?.has(i.token_id)===!0;return s.jsx(_u,{token:i,isSelected:t===i.token_id,isDisabled:c,onSelect:()=>l(i)},i.token_id)})})})}function Pu({isOpen:e,onClose:t,onSelect:r,tokensData:n,isLoading:o,selectedToken:a,disabledTokenId:l,disabledTokenIds:i,tokens:c,emptyMessage:u,title:d="Select Token",filterNetworkType:f}){const[m,b]=p.useState(""),[v,h]=p.useState(null),[y,g]=p.useState(null),S=p.useMemo(()=>n?.supported_networks?f?n.supported_networks.filter(M=>M.type===f):n.supported_networks:[],[n,f]),k=c??n?.tokens,w=p.useMemo(()=>k?k.filter(M=>{if(f&&M.network_type!==f||v&&M.network_id!==v)return!1;if(m){const $=(W,V)=>W.toLowerCase().includes(V.toLowerCase()),_=m.toLowerCase();return $(M.token_symbol,_)||$(M.token_name,_)||$(M.token_address,_)}return!0}):[],[k,m,v,f]),N=p.useMemo(()=>{if(!k)return[];const M=new Map;return k.forEach($=>{f&&$.network_type!==f||v&&$.network_id!==v||M.has($.token_symbol)||M.set($.token_symbol,$)}),Array.from(M.values())},[k,f,v]),A=p.useMemo(()=>y?w.filter(M=>M.token_symbol===y):w,[w,y]),C=()=>{b(""),h(null),g(null)},j=M=>{r(M),t(),C()},O=M=>{M||(t(),C())},L=M=>{h(M),g(null)};return s.jsx(jr,{open:e,onOpenChange:O,title:d,className:"h-full md:h-[70vh] max-h-[600px] w-full max-w-2xl",children:s.jsxs("div",{className:"flex h-full flex-col",children:[s.jsx(lu,{value:m,onChange:b}),s.jsxs("div",{className:"flex flex-1 overflow-hidden",children:[s.jsx(cu,{networks:S,selectedNetwork:v,onSelectNetwork:L}),s.jsxs("div",{className:"flex flex-1 flex-col overflow-hidden pl-2",children:[s.jsx(du,{tokens:N,selectedSymbol:y,onSelectSymbol:g}),s.jsx(Au,{tokens:A,selectedTokenId:a?.token_id,disabledTokenId:l,disabledTokenIds:i,isLoading:o,emptyMessage:m?"No tokens found":u??"No tokens available",onSelect:j})]})]})]})})}function gn({token:e,amount:t,label:r,isEstimated:n=!1,highlight:o=!1,usdValue:a="$0.00"}){return s.jsx("div",{className:`p-4 rounded-xl border transition-all duration-200 ${o?"bg-zinc-900/50 border-[var(--optimex-primary)]/20 shadow-[0_0_15px_rgba(235,98,0,0.1)]":"bg-zinc-900/50 border-white/5"}`,children:s.jsxs("div",{className:"flex items-center gap-4",children:[s.jsx("div",{className:"size-12 flex items-center justify-center ",children:s.jsx(Le,{token:e,size:"lg"})}),s.jsxs("div",{className:"flex flex-col gap-0.5 min-w-0",children:[s.jsxs("p",{className:`text-xs font-medium uppercase tracking-wider ${o?"text-[var(--optimex-primary)]":"text-zinc-500"}`,children:[r," ",n&&"(Est.)"]}),s.jsx("p",{className:"text-white text-sm font-semibold truncate",children:e.token_symbol}),s.jsx("p",{className:"text-zinc-500 text-xs truncate",children:e.network_name})]}),s.jsxs("div",{className:"flex flex-col items-end gap-0.5 ml-auto shrink-0",children:[s.jsx("p",{className:"text-white text-lg font-bold",children:n?`~${t}`:t}),s.jsx("p",{className:"text-zinc-400 text-xs",children:a})]})]})})}function Mu({fromToken:e,toToken:t,fromAmount:r,toAmount:n,fromUsdValue:o="$0.00",toUsdValue:a="$0.00"}){return s.jsxs("div",{className:"relative flex flex-col gap-2",children:[s.jsx(gn,{token:e,amount:r,label:"You Pay",usdValue:o}),s.jsx(Zs,{onClick:()=>{},disabled:!0}),s.jsx(gn,{token:t,amount:n,label:"You Receive",usdValue:a})]})}function Zt({label:e,value:t,borderTop:r}){return s.jsxs("div",{className:`flex justify-between items-center text-sm ${r?"pt-2 mt-2 border-t border-white/5":""}`,children:[s.jsx("span",{className:"text-zinc-500",children:e}),s.jsx("div",{className:"flex items-center gap-1 text-white font-medium",children:t})]})}function Iu({minReceived:e,estimatedTime:t,slippage:r,networkFee:n="Included"}){return s.jsxs("div",{className:"bg-[var(--optimex-surface)] rounded-xl p-4 border border-white/5 space-y-3",children:[s.jsx(Zt,{label:"Min. Received",value:e}),s.jsx(Zt,{label:"Estimated Time",value:s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("div",{className:"size-2 bg-[var(--optimex-primary)] rounded-full animate-pulse shadow-[0_0_8px_rgba(235,98,0,0.8)]"}),s.jsx("span",{children:t})]})}),s.jsx(Zt,{label:"Slippage Tolerance",value:r})]})}const Du=3e4,Lu=6e4;function Tt({symbol:e,enabled:t=!0}){const r=lt(),{data:n,isLoading:o,isError:a}=Qe({queryKey:["tokenPrice",e],queryFn:async()=>{if(!e)throw new Error("Symbol is required");return(await Ge(r.apiBaseUrl).getTokenPrice(e)).current_price},enabled:t&&!!e,staleTime:Du,refetchInterval:Lu,retry:2});return{price:n??null,isLoading:o,isError:a,calculateUsdValue:i=>{if(!n||!i||isNaN(parseFloat(i)))return"$0.00";const c=parseFloat(i);if(c===0)return"$0.00";const u=c*n;return u<.01?"<$0.01":u<1?`$${u.toFixed(4)}`:u<1e3?`$${u.toFixed(2)}`:u<1e6?`$${(u/1e3).toFixed(2)}K`:`$${(u/1e6).toFixed(2)}M`}}}function Fu({isOpen:e,onClose:t,onConfirm:r,fromToken:n,toToken:o,amountIn:a,quote:l,slippage:i,stage:c,receivingAddress:u=""}){const d=c!=="idle"&&c!=="confirming"&&c!=="error"&&c!=="submitted",f=c==="submitted",m=c==="error",b=Ne(l.min_amount_out,o.token_decimals),{calculateUsdValue:v}=Tt({symbol:n.token_symbol,enabled:e}),{calculateUsdValue:h}=Tt({symbol:o.token_symbol,enabled:e}),y=v(a),g=h(b),S=w=>{!w&&!d&&t()},k=f?"Swap Complete":m?"Swap Failed":"Review Swap";return s.jsxs(jr,{open:e,onOpenChange:S,title:k,showCloseButton:!d,className:"w-full max-w-md",children:[s.jsxs(zc,{className:"space-y-3",children:[s.jsx(Mu,{fromToken:n,toToken:o,fromAmount:a,toAmount:b,fromUsdValue:y,toUsdValue:g}),s.jsx(Iu,{minReceived:`${b} ${o.token_symbol}`,estimatedTime:"~10 minutes",slippage:`${i}%`}),u&&s.jsx("div",{className:"bg-[var(--optimex-surface)] rounded-xl px-2 border border-white/5",children:s.jsx(Pa,{icon:Fn,label:"Receiving Address",address:u})})]}),s.jsx(Wc,{children:s.jsx(Ei,{state:d?"processing":f?"success":m?"error":"idle",onConfirm:f?t:r,confirmText:"Confirm Swap"})})]})}function $u({swap:e}){const{tokens:t,modals:r,tokenSelect:n,actions:o,input:a,quote:l,execution:i}=e;return s.jsxs(s.Fragment,{children:[r.tokenSelect.isOpen&&s.jsx(Pu,{isOpen:r.tokenSelect.isOpen,onClose:r.tokenSelect.close,onSelect:o.selectToken,tokensData:t.data,isLoading:!1,selectedToken:n.type==="from"?t.from:t.to,disabledTokenId:n.type==="from"?t.to?.token_id:t.from?.token_id,tokens:n.type==="to"?t.availableTo:t.all,emptyMessage:n.type==="to"?"No available pairs for selected source token":void 0,title:n.type==="from"?"Select Source Token":"Select Destination Token"}),l.data&&t.from&&t.to&&r.confirm.isOpen&&s.jsx(Fu,{isOpen:r.confirm.isOpen,onClose:o.closeConfirmModal,onConfirm:o.confirmSwap,fromToken:t.from,toToken:t.to,amountIn:a.amount,quote:l.data,slippage:a.slippage,stage:i.stage,txHash:i.txHash,error:i.error,receivingAddress:e.addresses.receiving})]})}function Nr({status:e}){const t={pending:{icon:Ln,text:"Processing",bgClass:"bg-yellow-500/10",textClass:"text-yellow-500",animate:!0},success:{icon:gr,text:"Completed",bgClass:"bg-green-500/10",textClass:"text-green-500",animate:!1},failed:{icon:ya,text:"Failed",bgClass:"bg-red-500/10",textClass:"text-red-500",animate:!1}},{icon:r,text:n,bgClass:o,textClass:a,animate:l}=t[e];return s.jsxs("div",{className:`flex items-center gap-1.5 px-2.5 py-1 rounded-full ${o}`,children:[s.jsx(r,{className:`w-4 h-4 ${a} ${l?"animate-spin":""}`}),s.jsx("span",{className:`text-xs font-medium ${a}`,children:n})]})}function Bu({onClose:e}){return s.jsxs("div",{className:"bg-[var(--optimex-surface)] border border-[var(--optimex-border)] rounded-xl p-4 mt-3",children:[s.jsxs("div",{className:"flex items-center justify-between mb-3",children:[s.jsx("span",{className:"text-xs text-[var(--optimex-text-secondary)] font-medium",children:"Recent Trade"}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(Nr,{status:"pending"}),e&&s.jsx("button",{onClick:e,className:"text-[var(--optimex-text-secondary)] hover:text-[var(--optimex-text)] transition-colors cursor-pointer","aria-label":"Close",children:s.jsx(Ie,{className:"w-4 h-4"})})]})]}),s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("div",{className:"w-6 h-6 rounded-full bg-[var(--optimex-border)] animate-pulse"}),s.jsxs("div",{className:"flex flex-col gap-1",children:[s.jsx("div",{className:"w-16 h-4 bg-[var(--optimex-border)] rounded animate-pulse"}),s.jsx("div",{className:"w-10 h-3 bg-[var(--optimex-border)] rounded animate-pulse"})]})]}),s.jsx("div",{className:"flex items-center px-3",children:s.jsx("svg",{className:"w-5 h-5 text-[var(--optimex-text-secondary)]",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:s.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M14 5l7 7m0 0l-7 7m7-7H3"})})}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsxs("div",{className:"flex flex-col items-end gap-1",children:[s.jsx("div",{className:"w-16 h-4 bg-[var(--optimex-border)] rounded animate-pulse"}),s.jsx("div",{className:"w-10 h-3 bg-[var(--optimex-border)] rounded animate-pulse"})]}),s.jsx("div",{className:"w-6 h-6 rounded-full bg-[var(--optimex-border)] animate-pulse"})]})]})]})}function zu({trade:e,status:t,isLoading:r,onClose:n}){if(r||!e)return s.jsx(Bu,{onClose:n});const o=e.from_token,a=e.to_token,l=Ne(e.amount_in,o.token_decimals),i=Ne(e.min_amount_out,a.token_decimals);return s.jsxs("div",{className:"bg-[var(--optimex-surface)] border border-[var(--optimex-border)] rounded-xl p-4 mt-3",children:[s.jsxs("div",{className:"flex items-center justify-between mb-3",children:[s.jsx("span",{className:"text-xs text-[var(--optimex-text-secondary)] font-medium",children:"Recent Trade"}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(Nr,{status:t}),n&&s.jsx("button",{onClick:n,className:"text-[var(--optimex-text-secondary)] hover:text-[var(--optimex-text)] transition-colors cursor-pointer","aria-label":"Close",children:s.jsx(Ie,{className:"w-4 h-4"})})]})]}),s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(Le,{token:o,size:"sm",showNetworkBadge:!1}),s.jsxs("div",{className:"flex flex-col",children:[s.jsx("span",{className:"text-sm font-semibold text-[var(--optimex-text)]",children:l}),s.jsx("span",{className:"text-xs text-[var(--optimex-text-secondary)]",children:o.token_symbol})]})]}),s.jsx("div",{className:"flex items-center px-3",children:s.jsx("svg",{className:"w-5 h-5 text-[var(--optimex-text-secondary)]",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:s.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M14 5l7 7m0 0l-7 7m7-7H3"})})}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsxs("div",{className:"flex flex-col items-end",children:[s.jsx("span",{className:"text-sm font-semibold text-[var(--optimex-text)]",children:i}),s.jsx("span",{className:"text-xs text-[var(--optimex-text-secondary)]",children:a.token_symbol})]}),s.jsx(Le,{token:a,size:"sm",showNetworkBadge:!1})]})]})]})}const Wu=1e4;function Vu({apiBaseUrl:e,walletAddresses:t,enabled:r=!0,limit:n=20}){const{data:o,isLoading:a,isError:l,refetch:i}=Qe({queryKey:["trades",t,n],queryFn:async()=>Ge(e).listTrades({from_user_address:t,limit:n}),enabled:r&&!!t?.length,refetchInterval:Wu,retry:2,retryDelay:2e3});return{trades:o??[],isLoading:a,isError:l,refetch:i}}function Uu(e){if(!e)return"pending";switch(e.toLowerCase()){case"success":case"completed":return"success";case"failed":case"refunded":case"expired":return"failed";default:return"pending"}}function Hu({trade:e}){const t=e.from_token,r=e.to_token,n=Uu(e.state),o=Ne(e.amount_in,t.token_decimals),a=Ne(e.min_amount_out,r.token_decimals);return s.jsxs("div",{className:"flex items-center justify-between p-3 rounded-lg bg-[var(--optimex-surface)] border border-[var(--optimex-border)]",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(Le,{token:t,size:"sm",showNetworkBadge:!1}),s.jsxs("div",{className:"flex flex-col",children:[s.jsx("span",{className:"text-sm font-semibold text-[var(--optimex-text)]",children:o}),s.jsx("span",{className:"text-xs text-[var(--optimex-text-secondary)]",children:t.token_symbol})]})]}),s.jsx("div",{className:"flex items-center px-2",children:s.jsx("svg",{className:"w-4 h-4 text-[var(--optimex-text-secondary)]",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:s.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M14 5l7 7m0 0l-7 7m7-7H3"})})}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsxs("div",{className:"flex flex-col items-end",children:[s.jsx("span",{className:"text-sm font-semibold text-[var(--optimex-text)]",children:a}),s.jsx("span",{className:"text-xs text-[var(--optimex-text-secondary)]",children:r.token_symbol})]}),s.jsx(Le,{token:r,size:"sm",showNetworkBadge:!1})]}),s.jsx("div",{className:"ml-3",children:s.jsx(Nr,{status:n})})]})}function Xt(){return s.jsxs("div",{className:"flex items-center justify-between p-3 rounded-lg bg-[var(--optimex-surface)] border border-[var(--optimex-border)]",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("div",{className:"w-6 h-6 rounded-full bg-[var(--optimex-border)] animate-pulse"}),s.jsxs("div",{className:"flex flex-col gap-1",children:[s.jsx("div",{className:"w-14 h-4 bg-[var(--optimex-border)] rounded animate-pulse"}),s.jsx("div",{className:"w-8 h-3 bg-[var(--optimex-border)] rounded animate-pulse"})]})]}),s.jsx("div",{className:"w-4 h-4 bg-[var(--optimex-border)] rounded animate-pulse"}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsxs("div",{className:"flex flex-col items-end gap-1",children:[s.jsx("div",{className:"w-14 h-4 bg-[var(--optimex-border)] rounded animate-pulse"}),s.jsx("div",{className:"w-8 h-3 bg-[var(--optimex-border)] rounded animate-pulse"})]}),s.jsx("div",{className:"w-6 h-6 rounded-full bg-[var(--optimex-border)] animate-pulse"})]}),s.jsx("div",{className:"ml-3 w-20 h-6 bg-[var(--optimex-border)] rounded-full animate-pulse"})]})}function qu(){return s.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[s.jsx("div",{className:"w-16 h-16 mb-4 rounded-full bg-[var(--optimex-surface)] flex items-center justify-center",children:s.jsx("svg",{className:"w-8 h-8 text-[var(--optimex-text-secondary)]",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:s.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"})})}),s.jsx("p",{className:"text-sm text-[var(--optimex-text-secondary)]",children:"No trade history yet"})]})}function Qu({open:e,onOpenChange:t,evmAddress:r,btcAddress:n,solanaAddress:o}){const a=lt(),l=[r,n,o].filter(u=>!!u),{trades:i,isLoading:c}=Vu({apiBaseUrl:a.apiBaseUrl,walletAddresses:l.length>0?l:void 0,enabled:e&&l.length>0});return s.jsx(jr,{open:e,onOpenChange:t,title:"Trade History",className:"w-full max-w-md",children:s.jsxs("div",{className:"p-4 space-y-3 max-h-[60vh] overflow-y-auto",children:[c?s.jsxs(s.Fragment,{children:[s.jsx(Xt,{}),s.jsx(Xt,{}),s.jsx(Xt,{})]}):i.length===0?s.jsx(qu,{}):i.map(u=>s.jsx(Hu,{trade:u},u.trade_id)),!c&&i.length>0&&s.jsxs("div",{className:"flex items-center justify-center gap-2 pt-2 text-xs text-[var(--optimex-text-secondary)]",children:[s.jsx(Ln,{className:"w-3 h-3 animate-spin"}),s.jsx("span",{children:"Auto-refreshing"})]})]})})}function Gu(e,t){return p.useMemo(()=>{const r=e.trim();if(!t||!r)return{isValid:!r,error:void 0};const n=vr(r,t.network_type,t.network_id);return{isValid:n.isValid,error:n.isValid?void 0:n.error}},[e,t])}function Ku(){const[e,t]=p.useState(null),[r,n]=p.useState(!1),[o,a]=p.useState(!1),l=p.useCallback(()=>t("from"),[]),i=p.useCallback(()=>t("to"),[]),c=p.useCallback(()=>t(null),[]),u=p.useCallback(()=>n(!0),[]),d=p.useCallback(()=>n(!1),[]),f=p.useCallback(()=>a(b=>!b),[]),m=p.useCallback(()=>a(!1),[]);return{tokenSelect:{isOpen:e!==null,type:e,openFrom:l,openTo:i,close:c},confirm:{isOpen:r,open:u,close:d},settings:{isOpen:o,toggle:f,close:m}}}function Yu({fromToken:e,toToken:t,amount:r,fromUserAddress:n,toUserAddress:o,userRefundPubkey:a,slippage:l,config:i}){return p.useMemo(()=>{const c=o.trim(),u=i.affiliateAddress&&i.affiliateFee?[{provider:i.affiliateProvider??"optimex-widget",rate:String(i.affiliateFee),receiver:i.affiliateAddress,network:"ethereum"}]:void 0,d=Math.round(l*100);return{from_token:e,to_token:t,amount:r,from_user_address:n,to_user_address:c||null,user_refund_pubkey:a,slippage:String(d),affiliate_fee_bps:i.affiliateFee?String(i.affiliateFee):void 0,affiliate_info:u,trade_timeout:i.tradeTimeout,script_timeout:i.scriptTimeout}},[e,t,r,n,o,a,l,i.affiliateFee,i.affiliateAddress,i.affiliateProvider,i.tradeTimeout,i.scriptTimeout])}function Zu(e,t){return p.useMemo(()=>{if(!e||!t)return{walletAccount:void 0,evmWalletAccount:void 0};switch(e.network_type){case K.EVM:return{walletAccount:t.evm,evmWalletAccount:t.evm};case K.BTC:return{walletAccount:t.btc,evmWalletAccount:void 0};case K.SOLANA:return{walletAccount:t.solana,evmWalletAccount:void 0};default:return{walletAccount:void 0,evmWalletAccount:void 0}}},[e,t])}const bn={BTC:1,EVM:2,Solana:3};function Xu(e){const{tokens:t,pairs:r,selectedFromToken:n}=e,o=p.useMemo(()=>{const b=new Map;if(!r)return b;for(const v of r){if(!v.is_active)continue;const h=b.get(v.from_token_id);h?h.add(v.to_token_id):b.set(v.from_token_id,new Set([v.to_token_id]))}return b},[r]),a=p.useMemo(()=>t??[],[t]),l=p.useMemo(()=>{const b=new Set;for(const v of a){const h=o.get(v.token_id);(!h||h.size===0)&&b.add(v.token_id)}return b},[a,o]),i=p.useMemo(()=>{if(!n)return[];const b=o.get(n.token_id);return!b||b.size===0?[]:a.filter(v=>b.has(v.token_id))},[n,o,a]),c=p.useCallback((b,v)=>o.get(b)?.has(v)??!1,[o]),u=p.useCallback(b=>(o.get(b)?.size??0)>0,[o]),d=p.useCallback(b=>[...b].sort((v,h)=>{const y=bn[v.network_type]??99,g=bn[h.network_type]??99;return y-g}),[]),f=p.useCallback(b=>{const v=o.get(b.token_id);if(!v||v.size===0)return null;const h=a.filter(g=>v.has(g.token_id));return h.length===0?null:d(h)[0]??null},[o,a,d]),m=p.useCallback(()=>{if(a.length===0)return null;const b=d(a);for(const v of b){const h=f(v);if(h)return{fromToken:v,toToken:h}}return null},[a,d,f]);return{allTokens:a,tokensWithoutPairs:l,availableToTokens:i,isPairValid:c,findBestToToken:f,hasValidPairs:u,getDefaultPair:m}}function Ju(e){if(!e.chain_id||e.network_type!=="EVM")return;const t=parseInt(e.chain_id,10);return isNaN(t)?void 0:t}async function ed(e,t){const r=Ju(t);if(!r)throw new Error(`Cannot determine chain ID for token: ${t.token_id}`);return await e.getChainId()===r?!1:(await e.switchChain(r),!0)}const td="0xdd62ed3e",rd="0x095ea7b3",nd="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff";function fr(e){return e.toLowerCase().replace("0x","").padStart(64,"0")}function sd(e){return e.toString(16).padStart(64,"0")}function od(e){const t=e.startsWith("0x")?e.slice(2):e;return!t||t===""?0n:BigInt("0x"+t)}async function ad(e,t,r,n){const o=At(e),a=td+fr(r)+fr(n),i=await(await fetch(o,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"eth_call",params:[{to:t,data:a},"latest"]})})).json();if(i.error)throw new Error(`Failed to check allowance: ${i.error.message}`);return od(i.result)}function id(e,t){const r=t?sd(t):nd.slice(2);return`${rd}${fr(e)}${r}`}async function ld(e,t,r,n){const o=id(r,n);return await e.sendTransaction({to:t,data:o})}async function cd(e,t,r=60,n=2e3){const o=At(e);for(let a=0;a<r;a++){const i=await(await fetch(o,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"eth_getTransactionReceipt",params:[t]})})).json();if(i.error)throw new Error(`RPC error: ${i.error.message}`);if(i.result){const c=i.result;return{status:c.status==="0x1"?"success":"reverted",blockNumber:c.blockNumber,transactionHash:c.transactionHash}}await new Promise(c=>setTimeout(c,n))}throw new Error(`Transaction ${t} not confirmed after ${r} attempts`)}function ud(e){return e?"getChainId"in e&&"switchChain"in e&&typeof e.getChainId=="function"&&typeof e.switchChain=="function":!1}function dd({apiBaseUrl:e,onWalletTx:t,onSubmitTx:r,onError:n}){const[o,a]=p.useState({stage:"idle",txHash:null,tradeId:null,error:null}),l=p.useCallback(()=>{a({stage:"idle",txHash:null,tradeId:null,error:null})},[]),i=p.useCallback(()=>{a(f=>({stage:"idle",txHash:f.txHash,tradeId:f.tradeId,error:null}))},[]),c=p.useCallback((f,m,b)=>{a(v=>({...v,stage:"error",error:f})),n?.({error:f,stage:m,trade_id:b})},[n]),u=p.useCallback(async(f,m,b,v)=>{const h=b.deposit_address;if(!h)throw new Error("Missing deposit address for EVM transaction");a(k=>({...k,stage:"switching_chain"})),await ed(f,m);const y=Er(m);if(!y&&m.token_address&&(a(w=>({...w,stage:"checking_allowance"})),await ad(m.network_id,m.token_address,f.address,h)<v)){a(A=>({...A,stage:"approving"}));const w=await ld(f,m.token_address,h,v);if((await cd(m.network_id,w)).status==="reverted")throw new Error("Token approval transaction reverted")}a(k=>({...k,stage:"broadcasting"}));const g={to:h,value:y?v:0n,data:b.payload?b.payload:void 0};return await f.sendTransaction(g)},[]),d=p.useCallback(async({quote:f,fromToken:m,toToken:b,amountIn:v,walletAccount:h,evmWalletAccount:y})=>{const g=Ge(e);try{a({stage:"confirming",txHash:null,tradeId:f.trade_id,error:null});const S=y||h;if(!S)throw new Error("Wallet not available");a(N=>({...N,stage:"signing"}));let k;const w=Mn(v,m.token_decimals);if(m.network_type===K.EVM){const N=y||(ud(h)?h:null);if(N)k=await u(N,m,f,w);else{const A=f.deposit_address,C=f.payload?f.payload:void 0;if(!A)throw new Error("Missing deposit address for EVM transaction");a(O=>({...O,stage:"broadcasting"}));const j={to:A,value:w,data:C};k=await S.sendTransaction(j)}}else if(m.network_type===K.BTC){if(!f.deposit_address)throw new Error("Missing deposit address for BTC transaction");a(N=>({...N,stage:"broadcasting"})),k=await S.sendTransaction({toAddress:f.deposit_address,amount:w})}else if(m.network_type===K.SOLANA){if(!f.payload)throw new Error("Missing payload for Solana transaction");a(N=>({...N,stage:"broadcasting"})),k=await S.sendTransaction(f.payload)}else throw new Error(`Unsupported network type: ${m.network_type}`);t?.({trade_id:f.trade_id,tx_hash:k,from_token:m,to_token:b,amount_in:v}),a(N=>({...N,txHash:k,stage:"submitting"}));try{await g.submitTransaction(f.trade_id,k),r?.({trade_id:f.trade_id,tx_hash:k,status:"success"})}catch(N){throw r?.({trade_id:f.trade_id,tx_hash:k,status:"error",error:N.message}),N}return a(N=>({...N,stage:"submitted"})),{tradeId:f.trade_id,txHash:k}}catch(S){const k=o.stage==="approving"?"approval":"wallet_tx";throw c(S,k,f.trade_id),S}},[e,t,r,c,u,o.stage]);return{...o,executeSwap:d,resetState:l,resetStateKeepTradeId:i,isExecuting:o.stage!=="idle"&&o.stage!=="submitted"&&o.stage!=="error"}}function fd({defaultPair:e,isPairValid:t,findBestToToken:r,hasValidPairs:n,defaultSlippage:o=.75,selectingToken:a=null}){const[l,i]=p.useState(null),[c,u]=p.useState(null),[d,f]=p.useState(""),[m,b]=p.useState(""),[v,h]=p.useState(o),y=l??e?.fromToken??null,g=c??e?.toToken??null,S=p.useCallback(()=>{y&&g&&t(g.token_id,y.token_id)&&(i(g),u(y),f(""))},[y,g,t]),k=p.useCallback(w=>{if(a==="from"){if(!n(w.token_id))return!1;if(w.token_id===g?.token_id)u(y);else if(g&&!t(w.token_id,g.token_id)){const N=r(w);u(N)}return i(w),!0}else if(a==="to")return w.token_id===y?.token_id&&i(g),u(w),!0;return!1},[a,y,g,t,r,n]);return{fromToken:y,toToken:g,handleTokenSelect:k,handleSwapDirection:S,amount:d,setAmount:f,receivingAddress:m,setReceivingAddress:b,slippage:v,setSlippage:h}}function hd({fromToken:e,toToken:t}){const r=Ze();return p.useMemo(()=>{const n=r.evmAddress,o=r.btcAddress,a=r.btcPublicKey;let l=null,i=null;return e?.network_type===K.EVM?(l=n,i=n):e?.network_type===K.BTC&&(l=o,i=a),{fromUserAddress:l,userRefundPubkey:i}},[r.evmAddress,r.btcAddress,r.btcPublicKey,e,t])}function md({fromToken:e,toToken:t,amount:r,quote:n,isLoadingQuote:o,isFetchingQuote:a,receivingAddress:l,onConnectWallet:i,onSwap:c}){const u=Ze();return p.useMemo(()=>{if(!ku(u,e?.network_type)){const m=ju(e?.network_type);return{text:m?`Connect ${m} Wallet`:"Connect Wallet",disabled:!1,action:i}}return!e||!t?{text:"Select Tokens",disabled:!0,action:void 0}:!r||parseFloat(r)<=0?{text:"Enter Amount",disabled:!0,action:void 0}:l.trim()?vr(l,t.network_type,t.network_id).isValid?o||a?{text:"Getting Quote...",disabled:!0,action:void 0}:n?{text:"Review",disabled:!1,action:c}:{text:"Unable to Quote",disabled:!0,action:void 0}:{text:"Enter Receiving Address",disabled:!0,action:void 0}:{text:"Enter Receiving Address",disabled:!0,action:void 0}},[u.isEvmConnected,u.isBtcConnected,u.isSolanaConnected,e,t,r,o,a,n,i,c,l])}function pd({tokens:e,defaultFromToken:t,defaultToToken:r,isPairValid:n}){return p.useMemo(()=>{if(!t||!r||!e)return null;const o=e.find(l=>l.token_id===t),a=e.find(l=>l.token_id===r);return!o||!a?null:n(o.token_id,a.token_id)?{fromToken:o,toToken:a}:null},[e,t,r,n])}function xd(){const e=Ze(),t=lt(),r=Ku(),{tokensData:n}=Jc(),o=n.tokens,a=n.pairs,{allTokens:l,tokensWithoutPairs:i,isPairValid:c,findBestToToken:u,hasValidPairs:d,getDefaultPair:f}=Xu({tokens:o,pairs:a,selectedFromToken:null}),b=pd({tokens:o,defaultFromToken:t.defaultFromToken,defaultToToken:t.defaultToToken,isPairValid:c})??f(),{fromToken:v,toToken:h,handleTokenSelect:y,handleSwapDirection:g,amount:S,setAmount:k,receivingAddress:w,setReceivingAddress:N,slippage:A,setSlippage:C}=fd({defaultPair:b,isPairValid:c,findBestToToken:u,hasValidPairs:d,defaultSlippage:t.defaultSlippage,selectingToken:r.tokenSelect.type}),j=p.useMemo(()=>v?l.filter(F=>c(v.token_id,F.token_id)):[],[v,l,c]),O=Gu(w,h),{fromUserAddress:L,userRefundPubkey:M}=hd({fromToken:v,toToken:h}),$=Yu({fromToken:v,toToken:h,amount:S,fromUserAddress:L,toUserAddress:w,userRefundPubkey:M,slippage:A,config:{affiliateFee:t.affiliateFee,affiliateAddress:t.affiliateAddress,affiliateProvider:t.affiliateProvider,tradeTimeout:t.tradeTimeout,scriptTimeout:t.scriptTimeout}}),_=!!v&&!!h&&parseFloat(S)>0&&!!w.trim()&&!r.confirm.isOpen,{data:W,isLoading:V,isFetching:Q,refetch:U}=xa(t.apiBaseUrl,{...$,enabled:_,onQuote:t.callbacks?.onQuote}),E=dd({apiBaseUrl:t.apiBaseUrl,onWalletTx:t.callbacks?.onWalletTx,onSubmitTx:t.callbacks?.onSubmitTx,onError:t.callbacks?.onError}),{walletAccount:ne,evmWalletAccount:ie}=Zu(v,e.externalWalletClient??void 0),Te=p.useCallback(()=>{e.isExternalWallet?e.onRequestWallet?.(v?.network_id??""):e.openConnectModal?.()},[e,v?.network_id]),pe=p.useCallback(()=>{!W||!v||!h||(E.resetState(),r.confirm.open())},[W,v,h,r.confirm,E]),H=p.useCallback((F=!1)=>{E.isExecuting||(r.confirm.close(),F&&E.resetStateKeepTradeId())},[E,r.confirm]),Z=p.useCallback(async()=>{if(!(!W||!v||!h))try{const{txHash:F}=await E.executeSwap({quote:W,fromToken:v,toToken:h,amountIn:S,walletAccount:ne,evmWalletAccount:ie});H(!!F),k(""),N("")}catch(F){console.error("Swap failed:",F)}},[W,v,h,S,ne,ie,E,H,k,N]),de=p.useCallback(F=>{y(F)&&r.tokenSelect.close()},[y,r.tokenSelect]),be=md({fromToken:v,toToken:h,amount:S,quote:W,isLoadingQuote:V,isFetchingQuote:Q,receivingAddress:w,onConnectWallet:Te,onSwap:pe});return{tokens:{from:v,to:h,all:l,availableTo:j,withoutPairs:i,data:n},input:{amount:S,setAmount:k,receivingAddress:w,setReceivingAddress:N,slippage:A,setSlippage:C},quote:{data:W,isLoading:V,isFetching:Q,refetch:U},validation:{address:O},buttonState:be,modals:r,tokenSelect:{type:r.tokenSelect.type},actions:{selectToken:de,swapDirection:g,connectWallet:Te,openSwapConfirm:pe,closeConfirmModal:H,confirmSwap:Z},execution:{stage:E.stage,txHash:E.txHash,tradeId:E.tradeId,error:E.error,isExecuting:E.isExecuting},wallet:e,addresses:{sending:L,receiving:w}}}const vd=5e3;function yn(e){if(!e)return"pending";switch(e.toLowerCase()){case"success":case"completed":return"success";case"failed":case"refunded":case"expired":return"failed";default:return"pending"}}function gd({apiBaseUrl:e,tradeId:t}){const{data:r,isLoading:n}=Qe({queryKey:["trade",t],queryFn:async()=>Ge(e).getTrade(t),enabled:!!t,refetchInterval:o=>{const a=o.state.data;return a&&yn(a.state)==="success"?!1:vd},retry:!0,retryDelay:2e3});return{trade:r??null,status:yn(r?.state),isLoading:n}}function no(){const e=xd(),t=lt(),{tokens:r,input:n,quote:o,modals:a,buttonState:l,validation:i,actions:c,addresses:u,wallet:d,execution:f}=e,[m,b]=p.useState(!1),{trade:v,status:h,isLoading:y}=gd({apiBaseUrl:t.apiBaseUrl,tradeId:f.tradeId}),{formattedBalance:g}=ro({token:r.from,walletAddress:u.sending,enabled:!!r.from&&!!u.sending,polling:!0}),{calculateUsdValue:S}=Tt({symbol:r.from?.token_symbol,enabled:!!r.from}),{calculateUsdValue:k}=Tt({symbol:r.to?.token_symbol,enabled:!!r.to}),w=d.isConnected,N=S(n.amount),A=o.data?k(Ne(o.data.min_amount_out,r.to?.token_decimals||18)):"$0.00";return s.jsxs(s.Fragment,{children:[s.jsxs("div",{className:"flex flex-col gap-4 w-full min-w-0",children:[s.jsx(su,{headerLeft:t.headerLeft,slippage:n.slippage,onSlippageChange:n.setSlippage,isSettingsOpen:a.settings.isOpen,onSettingsToggle:a.settings.toggle,onHistoryClick:()=>b(!0),hideHistory:t.hideHistory||!d.isConnected}),s.jsxs(Sr,{children:[s.jsxs("div",{className:"space-y-2 relative",children:[s.jsx(vn,{token:r.from,value:n.amount,onChange:n.setAmount,onSelectToken:a.tokenSelect.openFrom,balance:g,isWalletConnected:w,usdValue:N}),s.jsx(Zs,{onClick:c.swapDirection}),s.jsx(vn,{token:r.to,value:o.data?Ne(o.data.min_amount_out,r.to?.token_decimals||18):"",readOnly:!0,onSelectToken:a.tokenSelect.openTo,isOutput:!0,usdValue:A})]}),s.jsx("div",{className:"mt-4",children:s.jsx(eu,{token:r.to,value:n.receivingAddress,onChange:n.setReceivingAddress,error:i.address.error})}),s.jsx("div",{className:"mt-4",children:s.jsx(au,{text:l.text,disabled:l.disabled,onClick:l.action})}),o.data&&r.from&&r.to&&s.jsx("div",{className:"mt-4",children:s.jsx(ou,{quote:o.data,fromToken:r.from,toToken:r.to,amount:n.amount,slippage:n.slippage,isFetching:o.isFetching,onRefresh:o.refetch})}),s.jsx("div",{className:"mt-4",children:s.jsx(iu,{})}),f.tradeId&&f.txHash&&s.jsx("div",{className:"mt-4",children:s.jsx(zu,{trade:v,status:h,isLoading:y})})]})]}),s.jsx($u,{swap:e}),m&&s.jsx(Qu,{open:m,onOpenChange:b,evmAddress:d.evmAddress??void 0,btcAddress:d.btcAddress??void 0,solanaAddress:d.solanaAddress??void 0})]})}function bd({className:e,connectLabel:t="Connect Wallet",showNetworkBadge:r=!0,onClick:n}){const o=Ze(),a=o.evmAddress||o.btcAddress||o.solanaAddress,l=()=>{if(n){n();return}o.isExternalWallet?o.onRequestWallet?.():o.openConnectModal?.()},i=()=>r?o.isEvmConnected?s.jsx("span",{className:"rounded bg-blue-500/20 px-1.5 py-0.5 text-xs text-blue-400",children:"EVM"}):o.isBtcConnected?s.jsx("span",{className:"rounded bg-orange-500/20 px-1.5 py-0.5 text-xs text-orange-400",children:"BTC"}):o.isSolanaConnected?s.jsx("span",{className:"rounded bg-purple-500/20 px-1.5 py-0.5 text-xs text-purple-400",children:"SOL"}):null:null;return o.isConnected?s.jsxs("div",{className:`flex items-center gap-2 ${e||""}`,children:[i(),s.jsxs("button",{onClick:l,className:"group flex items-center gap-1.5 rounded-[0.25rem] bg-[var(--optimex-surface-hover)] px-3 py-1.5 text-sm text-[var(--optimex-text)] transition-colors hover:bg-[rgba(239,68,68,0.2)]",children:[s.jsx("span",{children:ca(a)}),s.jsx(ka,{className:"h-3.5 w-3.5 opacity-0 transition-opacity group-hover:opacity-100"})]})]}):s.jsx("button",{onClick:l,className:`rounded-[0.25rem] bg-[var(--optimex-primary)] px-4 py-1.5 text-sm font-medium text-white transition-colors hover:bg-[var(--optimex-primary-hover)] ${e||""}`,children:t})}function yd({apiBaseUrl:e,walletClient:t,onRequestWallet:r,theme:n,defaultFromToken:o,defaultToToken:a,headerLeft:l,affiliateFee:i,affiliateAddress:c,affiliateProvider:u,tradeTimeout:d,scriptTimeout:f,defaultSlippage:m=.75,hideHistory:b=!1,children:v,renderLoading:h,renderError:y,queryClient:g,onQuote:S,onWalletTx:k,onSubmitTx:w,onSwapComplete:N,onError:A}){sa(e);const C=p.useMemo(()=>g??new Mo,[g]),O={apiBaseUrl:e,defaultSlippage:m,affiliateFee:i,affiliateAddress:c,affiliateProvider:u,tradeTimeout:d,scriptTimeout:f,defaultFromToken:o,defaultToToken:a,hideHistory:b,headerLeft:l,callbacks:{onQuote:S,onWalletTx:k,onSubmitTx:w,onSwapComplete:N,onError:A},renderLoading:h,renderError:y},L=v??s.jsx(no,{});return s.jsx("div",{className:"optx-widget",children:s.jsx($o,{client:C,children:s.jsx(va,{value:O,children:s.jsx(ta,{theme:n,children:s.jsx(na,{externalWalletClient:t,onRequestWallet:r,children:s.jsx(Xc,{children:L})})})})})})}exports.ConnectButton=bd;exports.SwapCard=no;exports.SwapWidget=yd;exports.createEvmWalletClient=eo;exports.createEvmWalletClientAsync=Eu;exports.createEvmWalletClientSync=to;exports.useWallet=Ze;
|
package/dist/index.mjs
CHANGED
|
@@ -8069,7 +8069,9 @@ function Ar({
|
|
|
8069
8069
|
zIndex: 10,
|
|
8070
8070
|
display: "flex",
|
|
8071
8071
|
flexDirection: "column",
|
|
8072
|
-
|
|
8072
|
+
width: "min(672px, 95vw)",
|
|
8073
|
+
// max-w-2xl equivalent
|
|
8074
|
+
maxHeight: "70vh",
|
|
8073
8075
|
borderRadius: d.overlay.radius,
|
|
8074
8076
|
backgroundColor: d.overlay.background,
|
|
8075
8077
|
border: "1px solid rgba(255, 255, 255, 0.1)",
|
|
@@ -8194,12 +8196,12 @@ const Yc = {
|
|
|
8194
8196
|
"top-left": "left-0 bottom-full mb-2",
|
|
8195
8197
|
"top-center": "left-1/2 -translate-x-1/2 bottom-full mb-2"
|
|
8196
8198
|
}, Zc = {
|
|
8197
|
-
"bottom-right": "-top-2 right-4 rotate-45 border-l border-t",
|
|
8198
|
-
"bottom-left": "-top-2 left-4 rotate-45 border-l border-t",
|
|
8199
|
-
"bottom-center": "-top-2 left-1/2 -translate-x-1/2 rotate-45 border-l border-t",
|
|
8200
|
-
"top-right": "-bottom-2 right-4 rotate-45 border-r border-b",
|
|
8201
|
-
"top-left": "-bottom-2 left-4 rotate-45 border-r border-b",
|
|
8202
|
-
"top-center": "-bottom-2 left-1/2 -translate-x-1/2 rotate-45 border-r border-b"
|
|
8199
|
+
"bottom-right": "-top-2 right-4 rotate-45 border-l border-t border-white/10",
|
|
8200
|
+
"bottom-left": "-top-2 left-4 rotate-45 border-l border-t border-white/10",
|
|
8201
|
+
"bottom-center": "-top-2 left-1/2 -translate-x-1/2 rotate-45 border-l border-t border-white/10",
|
|
8202
|
+
"top-right": "-bottom-2 right-4 rotate-45 border-r border-b border-white/10",
|
|
8203
|
+
"top-left": "-bottom-2 left-4 rotate-45 border-r border-b border-white/10",
|
|
8204
|
+
"top-center": "-bottom-2 left-1/2 -translate-x-1/2 rotate-45 border-r border-b border-white/10"
|
|
8203
8205
|
};
|
|
8204
8206
|
function Xc({
|
|
8205
8207
|
isOpen: e,
|
|
@@ -8237,7 +8239,7 @@ function Xc({
|
|
|
8237
8239
|
l && /* @__PURE__ */ a(
|
|
8238
8240
|
"div",
|
|
8239
8241
|
{
|
|
8240
|
-
className: `absolute h-4 w-4
|
|
8242
|
+
className: `absolute h-4 w-4 bg-[var(--optimex-overlay-background)] ${Zc[o]}`
|
|
8241
8243
|
}
|
|
8242
8244
|
),
|
|
8243
8245
|
/* @__PURE__ */ a("div", { className: "relative", children: r })
|