otx-swap 1.2.32 → 1.2.34
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 +9 -9
- 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},dc="DialogDescriptionWarning",fc=({contentRef:e,descriptionId:t})=>{const n=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${zs(dc).contentName}}.`;return x.useEffect(()=>{const o=e.current?.getAttribute("aria-describedby");t&&o&&(document.getElementById(t)||console.warn(n))},[n,e,t]),null},Ws=Ts,Vs=_s,Hs=As,Us=Ps,qs=Is,Qs=Ds,Gs=$s;function hc(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 Ks=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(Ks);if(!e)throw new Error("useDrawerContext must be used within a Drawer.Root");return e};hc(`[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 mc(){const e=navigator.userAgent;return typeof window<"u"&&(/Firefox/.test(e)&&/Mobile/.test(e)||/FxiOS/.test(e))}function pc(){return kr(/^Mac/)}function xc(){return kr(/^iPhone/)}function hn(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}function vc(){return kr(/^iPad/)||pc()&&navigator.maxTouchPoints>1}function Ys(){return xc()||vc()}function kr(e){return typeof window<"u"&&window.navigator!=null?e.test(window.navigator.platform):void 0}const gc=24,bc=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 yc=new Set(["checkbox","radio","range","color","file","image","button","submit","reset"]);let yt=0,Gt;function wc(e={}){let{isDisabled:t}=e;bc(()=>{if(!t)return yt++,yt===1&&Ys()&&(Gt=Cc()),()=>{yt--,yt===0&&Gt?.()}},[t])}function Cc(){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;ur(m)&&m!==document.activeElement&&(f.preventDefault(),m.style.transform="translateY(-2000px)",m.focus(),requestAnimationFrame(()=>{m.style.transform=""}))},a=f=>{let m=f.target;ur(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(kc(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 kc(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+gc;a>l&&(r.scrollTop+=o-n)}e=r.parentElement}}function ur(e){return e instanceof HTMLInputElement&&!yc.has(e.type)||e instanceof HTMLTextAreaElement||e instanceof HTMLElement&&e.isContentEditable}function jc(e,t){typeof e=="function"?e(t):e!=null&&(e.current=t)}function Sc(...e){return t=>e.forEach(r=>jc(r,t))}function Xs(...e){return x.useCallback(Sc(...e),e)}const Js=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&&Js.set(e,n)}function Ec(e,t){if(!e||!(e instanceof HTMLElement))return;let r=Js.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 Nc(e){return 8*(Math.log(e+1)-2)}function Kt(e,t){if(!e)return()=>{};const r=e.style.cssText;return Object.assign(e.style,t),()=>{e.style.cssText=r}}function Tc(...e){return(...t)=>{for(const r of e)typeof r=="function"&&r(...t)}}const G={DURATION:.5,EASE:[.32,.72,0,1]},eo=.4,Rc=.25,Oc=100,to=8,Ae=16,dr=26,Yt="vaul-dragging";function ro(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 _c({defaultProp:e,onChange:t}){const r=p.useState(e),[n]=r,o=p.useRef(n),a=ro(t);return p.useEffect(()=>{o.current!==n&&(a(n),o.current=n)},[n,o,a]),r}function no({prop:e,defaultProp:t,onChange:r=()=>{}}){const[n,o]=_c({defaultProp:t,onChange:r}),a=e!==void 0,l=a?e:n,i=ro(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 Ac({activeSnapPointProp:e,setActiveSnapPointProp:t,snapPoints:r,drawerRef:n,overlayRef:o,fadeFromIndex:a,onSnapPointChange:l,direction:i="bottom",container:c,snapToSequentialPoint:u}){const[d,f]=no({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 D=typeof O=="string";let M=0;if(D&&(M=parseInt(O,10)),X(i)){const _=D?M:m?O*C.height:0;return m?i==="bottom"?C.height-_:-C.height+_:_}const $=D?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(D=>D===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:D}){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){D?j():k(g[0]);return}if(!u&&O>2&&W&&g&&r){k(g[r.length-1]);return}const V=g?.reduce((H,E)=>typeof H!="number"||typeof E!="number"?H:Math.abs(E-M)<Math.abs(H-M)?E:H),Q=X(i)?window.innerHeight:window.innerWidth;if(O>eo&&Math.abs(C)<Q*.4){const H=W?1:-1;if(H>0&&v&&r){k(g[r.length-1]);return}if(_&&H<0&&D&&j(),h===null)return;k(g[h+H]);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 Pc=()=>()=>{};function Mc(){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-dr)/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;Tc(n&&!o?Kt(document.body,{background:"black"}):Pc,Kt(c,{transformOrigin:X(e)?"top":"left",transitionProperty:"transform, border-radius",transitionDuration:`${G.DURATION}s`,transitionTimingFunction:`cubic-bezier(${G.EASE.join(",")})`}));const u=Kt(c,{borderRadius:`${to}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 Ic({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 Lc({open:e,onOpenChange:t,children:r,onDrag:n,onRelease:o,snapPoints:a,shouldScaleBackground:l=!1,setBackgroundColorOnScale:i=!0,closeThreshold:c=Rc,scrollLockTimeout:u=Oc,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:D,container:M,autoFocus:$=!1}){var _,W;const[V=!1,Q]=no({defaultProp:N,prop:e,onChange:P=>{t?.(P),!P&&!S&&yo(),setTimeout(()=>{D?.(P)},G.DURATION*1e3),P&&!y&&typeof window<"u"&&window.requestAnimationFrame(()=>{document.body.style.pointerEvents="auto"}),P||(document.body.style.pointerEvents="auto")}}),[H,E]=p.useState(!1),[ne,ie]=p.useState(!1),[Te,pe]=p.useState(!1),U=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),Mt=p.useRef(0),po=p.useCallback(P=>{a&&P===Xe.length-1&&(Z.current=new Date)},[]),{activeSnapPoint:xo,activeSnapPointIndex:$e,setActiveSnapPoint:_r,onRelease:vo,snapPointsOffset:Xe,onDrag:go,shouldFade:Ar,getPercentageDragged:bo}=Ac({snapPoints:a,activeSnapPointProp:b,setActiveSnapPointProp:v,drawerRef:I,fadeFromIndex:m,overlayRef:U,onSnapPointChange:po,direction:w,container:M,snapToSequentialPoint:C});wc({isDisabled:!V||ne||!y||Te||!H||!O||!A});const{restorePositionSetting:yo}=Ic({isOpen:V,modal:y,nested:S??!1,hasBeenOpened:H,preventScrollRestoration:j,noBodyStyles:k});function ut(){return(window.innerWidth-dr)/window.innerWidth}function wo(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,Ys()&&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 Co(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=bo(se,B);if(Oe!==null&&(le=Oe),Y&&le>=1||!xe.current&&!Pr(P.target,B))return;if(I.current.classList.add(Yt),xe.current=!0,ee(I.current,{transition:"none"}),ee(U.current,{transition:"none"}),a&&go({draggedDistance:q}),B&&!a){const he=Nc(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(U.current,{opacity:`${ke}`,transition:"none"},!0)),re&&U.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(ur(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;Mt.current||(Mt.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:dr)),h?I.current.style.height=`${ke-Math.max(re,0)}px`:I.current.style.height=`${Math.max(he,Y-Oe)}px`}else mc()||(I.current.style.height=`${Mt.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){ko(),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(U.current,{transition:`opacity ${G.DURATION}s cubic-bezier(${G.EASE.join(",")})`,opacity:"1"}),l&&z&&z>0&&V&&ee(P,{borderRadius:`${to}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 ko(){!ne||!I.current||(I.current.classList.remove(Yt),xe.current=!1,ie(!1),be.current=new Date)}function jo(P){if(!ne||!I.current)return;I.current.classList.remove(Yt),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){vo({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>eo){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),()=>{Ec(document.documentElement,"scrollBehavior")}),[V]);function So(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 Eo(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 No(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(Ws,{defaultOpen:N,onOpenChange:P=>{!d&&!P||(P?E(!0):Je(!0),Q(P))},open:V},p.createElement(Ks.Provider,{value:{activeSnapPoint:xo,snapPoints:a,setActiveSnapPoint:_r,drawerRef:I,overlayRef:U,onOpenChange:t,onPress:wo,onRelease:jo,onDrag:Co,dismissible:d,shouldAnimate:Re,handleOnly:f,isOpen:V,isDragging:ne,shouldFade:Ar,closeDrawer:Je,onNestedDrag:Eo,onNestedOpenChange:So,onNestedRelease:No,keyboardIsOpen:fe,modal:y,snapPointsOffset:Xe,activeSnapPointIndex:$e,direction:w,shouldScaleBackground:l,setBackgroundColorOnScale:i,noBodyStyles:k,container:M,autoFocus:$}},r))}const so=p.forwardRef(function({...e},t){const{overlayRef:r,snapPoints:n,onRelease:o,shouldFade:a,isOpen:l,modal:i,shouldAnimate:c}=ct(),u=Xs(t,r),d=n&&n.length>0;if(!i)return null;const f=p.useCallback(m=>o(m),[o]);return p.createElement(Hs,{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})});so.displayName="Drawer.Overlay";const oo=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=Xs(o,a),C=p.useRef(null),j=p.useRef(null),O=p.useRef(!1),D=h&&h.length>0;Mc();const M=(_,W,V=0)=>{if(O.current)return!0;const Q=Math.abs(_.y),H=Math.abs(_.x),E=H>Q,ne=["bottom","right"].includes(W)?1:-1;if(W==="left"||W==="right"){if(!(_.x*ne<0)&&H>=0&&H<=V)return E}else if(!(_.y*ne<0)&&Q>=0&&Q<=V)return!E;return O.current=!0,!0};p.useEffect(()=>{D&&window.requestAnimationFrame(()=>{N(!0)})},[]);function $(_){C.current=null,O.current=!1,i(_)}return p.createElement(Us,{"data-vaul-drawer-direction":v,"data-vaul-drawer":"","data-vaul-delayed-snap-points":w?"true":"false","data-vaul-snap-points":b&&D?"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)}})});oo.displayName="Drawer.Content";const Dc=250,Fc=120,$c=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()},Fc)}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))});$c.displayName="Drawer.Handle";function Bc(e){const t=ct(),{container:r=t.container,...n}=e;return p.createElement(Vs,{container:r,...n})}const Pe={Root:Lc,Content:oo,Overlay:so,Portal:Bc,Close:Gs,Title:qs,Description:Qs};function zc(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 Tt(...e){return ls(Kn(e))}const Wc={position:"fixed",inset:0,zIndex:9999,backgroundColor:"rgba(0, 0, 0, 0.6)",backdropFilter:"blur(4px)"},Vc={position:"fixed",left:"50%",top:"50%",transform:"translate(-50%, -50%)",zIndex:9999,width:"calc(100% - 2rem)",maxWidth:"42rem",display:"flex",flexDirection:"column"},Hc={position:"fixed",inset:0,zIndex:9999,backgroundColor:"rgba(0, 0, 0, 0.6)",backdropFilter:"blur(4px)"},Uc={position:"fixed",left:0,right:0,bottom:0,zIndex:9999,maxHeight:"96vh"};function jr({open:e,onOpenChange:t,children:r,title:n,description:o,className:a="",showCloseButton:l=!0,height:i}){const c=zc(),{theme:u}=fa(),d={"--optimex-primary":u.colors.primary,"--optimex-background":u.colors.background,"--optimex-surface":u.colors.surface,"--optimex-text":u.colors.text.primary,"--optimex-text-secondary":u.colors.text.secondary,"--optimex-error":u.colors.error,"--optimex-success":u.colors.success,"--optimex-radius-widget":u.radius.widget,"--optimex-radius-input":u.radius.input,"--optimex-radius-button":u.radius.button,"--optimex-overlay-background":u.overlay.background,"--optimex-overlay-radius":u.overlay.radius,"--optimex-font-family":u.fontFamily};return c?s.jsx(Pe.Root,{open:e,onOpenChange:t,children:s.jsxs(Pe.Portal,{children:[s.jsx(Pe.Overlay,{style:Hc}),s.jsx(Pe.Content,{style:Uc,children:s.jsxs("div",{className:Tt("optx-widget flex flex-col bg-[var(--optimex-overlay-background)] outline-none",a),style:{...d,height:i,maxHeight:"96vh",borderStyle:"solid",borderColor:"rgba(255, 255, 255, 0.1)",backgroundColor:u.overlay.background,borderRadius:`${u.overlay.radius} ${u.overlay.radius} 0 0`},children:[s.jsx("div",{className:"mx-auto mt-4 h-1.5 w-12 flex-shrink-0 rounded-full 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 flex-1 flex-col overflow-auto",children:r})]})})]})}):s.jsx(Ws,{open:e,onOpenChange:t,children:s.jsxs(Vs,{children:[s.jsx(Hs,{style:Wc}),s.jsx(Us,{style:{...Vc,height:i,maxHeight:i||"85vh"},children:s.jsxs("div",{className:Tt("optx-widget flex flex-col rounded-[var(--optimex-overlay-radius)] border border-white/10 bg-[var(--optimex-overlay-background)] shadow-2xl outline-none",a),style:{...d,flex:1,minHeight:0,height:"100%",borderStyle:"solid",borderColor:"rgba(255, 255, 255, 0.1)",backgroundColor:u.overlay.background,borderRadius:u.overlay.radius},children:[(n||o||l)&&s.jsxs("div",{className:"flex flex-shrink-0 items-center justify-between border-b border-white/[0.05] p-4",children:[s.jsxs("div",{className:"flex flex-col gap-1.5",children:[n&&s.jsx(qs,{className:"text-lg font-bold leading-none text-[var(--optimex-text)]",children:n}),o&&s.jsx(Qs,{className:"text-sm text-[var(--optimex-text-secondary)]",children:o})]}),l&&s.jsxs(Gs,{className:"rounded-[var(--optimex-radius-button)] p-1.5 text-[var(--optimex-text-secondary)] opacity-70 transition-opacity hover:opacity-100 hover:bg-white/10 focus:outline-none",children:[s.jsx(Ie,{}),s.jsx("span",{className:"sr-only",children:"Close"})]})]}),s.jsx("div",{className:"flex flex-1 flex-col overflow-hidden min-h-0",children:r})]})})]})})}const qc=({children:e,className:t=""})=>s.jsx("div",{className:Tt("p-4",t),children:e}),Qc=({children:e,className:t=""})=>s.jsx("div",{className:Tt("flex gap-2 border-t border-white/[0.05] p-4",t),children:e});function fr({children:e,onClick:t,isActive:r=!1,type:n="button",className:o=""}){return s.jsx("button",{type:n,onClick:t,className:cs(`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 Gc={"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"},Kc={"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 Yc({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 ${Gc[o]} ${a} ${i}`,role:"dialog","aria-label":c,children:[l&&s.jsx("div",{className:`absolute h-4 w-4 bg-[var(--optimex-overlay-background)] ${Kc[o]}`}),s.jsx("div",{className:"relative",children:r})]}):null}function Zc({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 Xc={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 De({token:e,size:t="md",showNetworkBadge:r=!0}){const n=Xc[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 Jc="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??Jc,children:e})}function eu(){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(Fa,{className:"size-10 text-[var(--optimex-error)]"})})]})}function tu({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(eu,{}),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(Da,{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 ru({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 ao=p.createContext(null);function nu({children:e}){const t=lt(),{data:r,isLoading:n,error:o,refetch:a}=xa(t.apiBaseUrl),l=t.renderLoading??ru,i=t.renderError??tu;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(ao.Provider,{value:{tokensData:r,refetch:a},children:e})}function su(){const e=p.useContext(ao);if(!e)throw new Error("useTokensData must be used within TokensProvider");return e}function ou({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(()=>za(e?.network_name)||$n,[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(Zc,{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(La,{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(fr,{onClick:b,children:"50%"}),s.jsx(fr,{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(De,{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 Zt=[.5,.75,1];function au({value:e,onChange:t}){const[r,n]=p.useState(""),[o,a]=p.useState(!Zt.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(Zt.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:[Zt.map(u=>s.jsxs(fr,{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 iu({isOpen:e,onClose:t,value:r,onChange:n,anchorRef:o}){const a=p.useCallback(l=>{n(l)},[n]);return s.jsx(Yc,{isOpen:e,onClose:t,anchorRef:o,position:"bottom-right",width:"w-96",ariaLabel:"Slippage settings",children:s.jsx(au,{value:r,onChange:a})})}const lu=({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(Ma,{className:"w-5 h-auto text-white"})}),s.jsx("h2",{className:"text-xl font-bold tracking-tight text-[var(--optimex-text)]",children:e})]});function cu({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(lu,{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(Aa,{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(Ba,{className:"size-5"})}),s.jsx(iu,{isOpen:o,onClose:()=>a?.(),value:r,onChange:u=>n?.(u),anchorRef:c})]})]})]})}function io({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(Ra,{className:"size-5"})})})}function uu({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 du({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 fu(){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(Ia,{className:"h-3 w-auto"})]})}function hu({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($a,{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 mu({networks:e,selectedNetwork:t,onSelectNetwork:r}){return s.jsxs("div",{className:"w-1/3 min-w-[140px] min-h-0 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(Ta,{}),s.jsx("span",{children:"All"})]}),e.map(n=>s.jsx(pu,{network:n,isSelected:t===n.network_id,onSelect:()=>r(n.network_id)},n.network_id))]})]})}function pu({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 xu({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(vu,{token:o,isSelected:t===o.token_symbol,onSelect:()=>r(o.token_symbol)},o.token_symbol))]})]})}function vu({token:e,isSelected:t,onSelect:r}){return s.jsxs("button",{onClick:r,className:cs("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(Pn);if(!e)throw new Error("useWallet must be used within WalletProvider");return e}function Pt(e){return`https://network-api-stg.bitdex.xyz/${e}/rpc/zwD70RMT9DrE8L5SaMnJNMF8m70Gum`}function gu(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 bu(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 yu(e){return`0x70a08231000000000000000000000000${e.toLowerCase().replace("0x","")}`}async function lo(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 wu(e,t){const n=await lo(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 Cu(e,t,r){const n={jsonrpc:"2.0",method:"eth_call",params:[{to:t,data:yu(r)},"latest"],id:1},o=await lo(e,n);if(o.error)throw new Error(`RPC error: ${o.error.message}`);const a=o.result||"0x0";return BigInt(a).toString()}async function ku(e,t){const r=Pt(e.network_id),n=Er(e);let o;return n?o=await wu(r,t):o=await Cu(r,e.token_address,t),{rawBalance:o,isNative:n}}async function ju(e,t){const n=`${gu(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 co(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 Su(e,t){const n=await co(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 Eu(e,t,r){const o=await co(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 Nu(e,t){const r=Pt(e.network_id),n=Er(e);let o;return n?o=await Su(r,t):o=await Eu(r,e.token_address,t),{rawBalance:o,isNative:n}}function Tu(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 Ru(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 Ou(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 uo({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 fo({provider:e,address:o,chainId:a,chainName:n})}function fo({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 _u=uo;async function Au(e,t){const r=e.token_address||"native";let n;switch(e.network_type){case K.BTC:n=await ju(e,t);break;case K.SOLANA:n=await Nu(e,t);break;case K.EVM:default:n=await ku(e,t)}return{tokenId:r,networkId:e.network_id,walletAddress:t,rawBalance:n.rawBalance,formattedBalance:bu(n.rawBalance,e.token_decimals),updatedAt:Date.now()}}const Pu=30*1e3,Mu=15*1e3;function Iu(e,t){return!e||!t?["balance"]:["balance",e.network_id,e.token_address||"native",t]}function ho({token:e,walletAddress:t,enabled:r=!0,polling:n=!1,pollingInterval:o=Mu}){const a=r&&!!e&&!!t,{data:l,isLoading:i,isFetching:c,error:u,refetch:d}=Qe({queryKey:Iu(e,t),queryFn:()=>Au(e,t),enabled:a,staleTime:Pu,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 Lu({token:e,isSelected:t,isDisabled:r,onSelect:n}){const o=Ze(),a=Ou(o,e.network_type),{formattedBalance:l,isLoading:i}=ho({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(De,{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 Du({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 min-h-0 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(Lu,{token:i,isSelected:t===i.token_id,isDisabled:c,onSelect:()=>l(i)},i.token_id)})})})}function Fu({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())},D=M=>{h(M),g(null)};return s.jsx(jr,{open:e,onOpenChange:O,title:d,height:"70vh",children:s.jsxs("div",{className:"flex h-full min-h-0 flex-col",children:[s.jsx(hu,{value:m,onChange:b}),s.jsxs("div",{className:"flex flex-1 min-h-0 overflow-hidden",children:[s.jsx(mu,{networks:S,selectedNetwork:v,onSelectNetwork:D}),s.jsxs("div",{className:"flex flex-1 min-h-0 flex-col overflow-hidden pl-2",children:[s.jsx(xu,{tokens:N,selectedSymbol:y,onSelectSymbol:g}),s.jsx(Du,{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(De,{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 $u({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(io,{onClick:()=>{},disabled:!0}),s.jsx(gn,{token:t,amount:n,label:"You Receive",usdValue:a})]})}function Xt({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 Bu({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(Xt,{label:"Min. Received",value:e}),s.jsx(Xt,{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(Xt,{label:"Slippage Tolerance",value:r})]})}const zu=3e4,Wu=6e4;function Rt({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:zu,refetchInterval:Wu,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 Vu({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}=Rt({symbol:n.token_symbol,enabled:e}),{calculateUsdValue:h}=Rt({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(qc,{className:"space-y-3",children:[s.jsx($u,{fromToken:n,toToken:o,fromAmount:a,toAmount:b,fromUsdValue:y,toUsdValue:g}),s.jsx(Bu,{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(Va,{icon:$n,label:"Receiving Address",address:u})})]}),s.jsx(Qc,{children:s.jsx(Mi,{state:d?"processing":f?"success":m?"error":"idle",onConfirm:f?t:r,confirmText:"Confirm Swap"})})]})}function Hu({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(Fu,{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(Vu,{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:Fn,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:Oa,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 Uu({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 qu({trade:e,status:t,isLoading:r,onClose:n}){if(r||!e)return s.jsx(Uu,{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(De,{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(De,{token:a,size:"sm",showNetworkBadge:!1})]})]})]})}const Qu=1e4;function Gu({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:Qu,retry:2,retryDelay:2e3});return{trades:o??[],isLoading:a,isError:l,refetch:i}}function Ku(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 Yu({trade:e}){const t=e.from_token,r=e.to_token,n=Ku(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(De,{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(De,{token:r,size:"sm",showNetworkBadge:!1})]}),s.jsx("div",{className:"ml-3",children:s.jsx(Nr,{status:n})})]})}function Jt(){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 Zu(){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 Xu({open:e,onOpenChange:t,evmAddress:r,btcAddress:n,solanaAddress:o}){const a=lt(),l=[r,n,o].filter(u=>!!u),{trades:i,isLoading:c}=Gu({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(Jt,{}),s.jsx(Jt,{}),s.jsx(Jt,{})]}):i.length===0?s.jsx(Zu,{}):i.map(u=>s.jsx(Yu,{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(Fn,{className:"w-3 h-3 animate-spin"}),s.jsx("span",{children:"Auto-refreshing"})]})]})})}function Ju(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 ed(){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 td({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 rd(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 nd(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 sd(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 od(e,t){const r=sd(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 ad="0xdd62ed3e",id="0x095ea7b3",ld="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff";function hr(e){return e.toLowerCase().replace("0x","").padStart(64,"0")}function cd(e){return e.toString(16).padStart(64,"0")}function ud(e){const t=e.startsWith("0x")?e.slice(2):e;return!t||t===""?0n:BigInt("0x"+t)}async function dd(e,t,r,n){const o=Pt(e),a=ad+hr(r)+hr(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 ud(i.result)}function fd(e,t){const r=t?cd(t):ld.slice(2);return`${id}${hr(e)}${r}`}async function hd(e,t,r,n){const o=fd(r,n);return await e.sendTransaction({to:t,data:o})}async function md(e,t,r=60,n=2e3){const o=Pt(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 pd(e){return e?"getChainId"in e&&"switchChain"in e&&typeof e.getChainId=="function"&&typeof e.switchChain=="function":!1}function xd({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 od(f,m);const y=Er(m);if(!y&&m.token_address&&(a(w=>({...w,stage:"checking_allowance"})),await dd(m.network_id,m.token_address,f.address,h)<v)){a(A=>({...A,stage:"approving"}));const w=await hd(f,m.token_address,h,v);if((await md(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=In(v,m.token_decimals);if(m.network_type===K.EVM){const N=y||(pd(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 vd({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 gd({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 bd({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(!Tu(u,e?.network_type)){const m=Ru(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 yd({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 wd(){const e=Ze(),t=lt(),r=ed(),{tokensData:n}=su(),o=n.tokens,a=n.pairs,{allTokens:l,tokensWithoutPairs:i,isPairValid:c,findBestToToken:u,hasValidPairs:d,getDefaultPair:f}=nd({tokens:o,pairs:a,selectedFromToken:null}),b=yd({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}=vd({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=Ju(w,h),{fromUserAddress:D,userRefundPubkey:M}=gd({fromToken:v,toToken:h}),$=td({fromToken:v,toToken:h,amount:S,fromUserAddress:D,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:H}=Ea(t.apiBaseUrl,{...$,enabled:_,onQuote:t.callbacks?.onQuote}),E=xd({apiBaseUrl:t.apiBaseUrl,onWalletTx:t.callbacks?.onWalletTx,onSubmitTx:t.callbacks?.onSubmitTx,onError:t.callbacks?.onError}),{walletAccount:ne,evmWalletAccount:ie}=rd(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]),U=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});U(!!F),k(""),N("")}catch(F){console.error("Swap failed:",F)}},[W,v,h,S,ne,ie,E,U,k,N]),de=p.useCallback(F=>{y(F)&&r.tokenSelect.close()},[y,r.tokenSelect]),be=bd({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:H},validation:{address:O},buttonState:be,modals:r,tokenSelect:{type:r.tokenSelect.type},actions:{selectToken:de,swapDirection:g,connectWallet:Te,openSwapConfirm:pe,closeConfirmModal:U,confirmSwap:Z},execution:{stage:E.stage,txHash:E.txHash,tradeId:E.tradeId,error:E.error,isExecuting:E.isExecuting},wallet:e,addresses:{sending:D,receiving:w}}}const Cd=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 kd({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:Cd},retry:!0,retryDelay:2e3});return{trade:r??null,status:yn(r?.state),isLoading:n}}function mo(){const e=wd(),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}=kd({apiBaseUrl:t.apiBaseUrl,tradeId:f.tradeId}),{formattedBalance:g}=ho({token:r.from,walletAddress:u.sending,enabled:!!r.from&&!!u.sending,polling:!0}),{calculateUsdValue:S}=Rt({symbol:r.from?.token_symbol,enabled:!!r.from}),{calculateUsdValue:k}=Rt({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(cu,{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(io,{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(ou,{token:r.to,value:n.receivingAddress,onChange:n.setReceivingAddress,error:i.address.error})}),s.jsx("div",{className:"mt-4",children:s.jsx(du,{text:l.text,disabled:l.disabled,onClick:l.action})}),o.data&&r.from&&r.to&&s.jsx("div",{className:"mt-4",children:s.jsx(uu,{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(fu,{})}),f.tradeId&&f.txHash&&s.jsx("div",{className:"mt-4",children:s.jsx(qu,{trade:v,status:h,isLoading:y})})]})]}),s.jsx(Hu,{swap:e}),m&&s.jsx(Xu,{open:m,onOpenChange:b,evmAddress:d.evmAddress??void 0,btcAddress:d.btcAddress??void 0,solanaAddress:d.solanaAddress??void 0})]})}function jd({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:ba(a)}),s.jsx(Pa,{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 Sd({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}){ma(e);const C=p.useMemo(()=>g??new Ho,[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},D=v??s.jsx(mo,{});return s.jsx("div",{className:"optx-widget",children:s.jsx(Ko,{client:C,children:s.jsx(Na,{value:O,children:s.jsx(da,{theme:n,children:s.jsx(ha,{externalWalletClient:t,onRequestWallet:r,children:s.jsx(nu,{children:D})})})})})})}exports.ConnectButton=jd;exports.SwapCard=mo;exports.SwapWidget=Sd;exports.createEvmWalletClient=uo;exports.createEvmWalletClientAsync=_u;exports.createEvmWalletClientSync=fo;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 mc(){const e=navigator.userAgent;return typeof window<"u"&&(/Firefox/.test(e)&&/Mobile/.test(e)||/FxiOS/.test(e))}function pc(){return kr(/^Mac/)}function xc(){return kr(/^iPhone/)}function hn(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}function vc(){return kr(/^iPad/)||pc()&&navigator.maxTouchPoints>1}function Ys(){return xc()||vc()}function kr(e){return typeof window<"u"&&window.navigator!=null?e.test(window.navigator.platform):void 0}const gc=24,bc=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 yc=new Set(["checkbox","radio","range","color","file","image","button","submit","reset"]);let yt=0,Gt;function wc(e={}){let{isDisabled:t}=e;bc(()=>{if(!t)return yt++,yt===1&&Ys()&&(Gt=Cc()),()=>{yt--,yt===0&&Gt?.()}},[t])}function Cc(){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;ur(m)&&m!==document.activeElement&&(f.preventDefault(),m.style.transform="translateY(-2000px)",m.focus(),requestAnimationFrame(()=>{m.style.transform=""}))},a=f=>{let m=f.target;ur(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(kc(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 kc(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+gc;a>l&&(r.scrollTop+=o-n)}e=r.parentElement}}function ur(e){return e instanceof HTMLInputElement&&!yc.has(e.type)||e instanceof HTMLTextAreaElement||e instanceof HTMLElement&&e.isContentEditable}function jc(e,t){typeof e=="function"?e(t):e!=null&&(e.current=t)}function Sc(...e){return t=>e.forEach(r=>jc(r,t))}function Xs(...e){return x.useCallback(Sc(...e),e)}const Js=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&&Js.set(e,n)}function Ec(e,t){if(!e||!(e instanceof HTMLElement))return;let r=Js.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 Nc(e){return 8*(Math.log(e+1)-2)}function Kt(e,t){if(!e)return()=>{};const r=e.style.cssText;return Object.assign(e.style,t),()=>{e.style.cssText=r}}function Tc(...e){return(...t)=>{for(const r of e)typeof r=="function"&&r(...t)}}const G={DURATION:.5,EASE:[.32,.72,0,1]},eo=.4,Rc=.25,Oc=100,to=8,Ae=16,dr=26,Yt="vaul-dragging";function ro(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 _c({defaultProp:e,onChange:t}){const r=p.useState(e),[n]=r,o=p.useRef(n),a=ro(t);return p.useEffect(()=>{o.current!==n&&(a(n),o.current=n)},[n,o,a]),r}function no({prop:e,defaultProp:t,onChange:r=()=>{}}){const[n,o]=_c({defaultProp:t,onChange:r}),a=e!==void 0,l=a?e:n,i=ro(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 Ac({activeSnapPointProp:e,setActiveSnapPointProp:t,snapPoints:r,drawerRef:n,overlayRef:o,fadeFromIndex:a,onSnapPointChange:l,direction:i="bottom",container:c,snapToSequentialPoint:u}){const[d,f]=no({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 D=typeof O=="string";let M=0;if(D&&(M=parseInt(O,10)),X(i)){const _=D?M:m?O*C.height:0;return m?i==="bottom"?C.height-_:-C.height+_:_}const $=D?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(D=>D===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:D}){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){D?j():k(g[0]);return}if(!u&&O>2&&W&&g&&r){k(g[r.length-1]);return}const V=g?.reduce((H,E)=>typeof H!="number"||typeof E!="number"?H:Math.abs(E-M)<Math.abs(H-M)?E:H),Q=X(i)?window.innerHeight:window.innerWidth;if(O>eo&&Math.abs(C)<Q*.4){const H=W?1:-1;if(H>0&&v&&r){k(g[r.length-1]);return}if(_&&H<0&&D&&j(),h===null)return;k(g[h+H]);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 Pc=()=>()=>{};function Mc(){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-dr)/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;Tc(n&&!o?Kt(document.body,{background:"black"}):Pc,Kt(c,{transformOrigin:X(e)?"top":"left",transitionProperty:"transform, border-radius",transitionDuration:`${G.DURATION}s`,transitionTimingFunction:`cubic-bezier(${G.EASE.join(",")})`}));const u=Kt(c,{borderRadius:`${to}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 Ic({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 Lc({open:e,onOpenChange:t,children:r,onDrag:n,onRelease:o,snapPoints:a,shouldScaleBackground:l=!1,setBackgroundColorOnScale:i=!0,closeThreshold:c=Rc,scrollLockTimeout:u=Oc,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:D,container:M,autoFocus:$=!1}){var _,W;const[V=!1,Q]=no({defaultProp:N,prop:e,onChange:P=>{t?.(P),!P&&!S&&yo(),setTimeout(()=>{D?.(P)},G.DURATION*1e3),P&&!y&&typeof window<"u"&&window.requestAnimationFrame(()=>{document.body.style.pointerEvents="auto"}),P||(document.body.style.pointerEvents="auto")}}),[H,E]=p.useState(!1),[ne,ie]=p.useState(!1),[Te,pe]=p.useState(!1),U=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),Mt=p.useRef(0),po=p.useCallback(P=>{a&&P===Xe.length-1&&(Z.current=new Date)},[]),{activeSnapPoint:xo,activeSnapPointIndex:$e,setActiveSnapPoint:_r,onRelease:vo,snapPointsOffset:Xe,onDrag:go,shouldFade:Ar,getPercentageDragged:bo}=Ac({snapPoints:a,activeSnapPointProp:b,setActiveSnapPointProp:v,drawerRef:I,fadeFromIndex:m,overlayRef:U,onSnapPointChange:po,direction:w,container:M,snapToSequentialPoint:C});wc({isDisabled:!V||ne||!y||Te||!H||!O||!A});const{restorePositionSetting:yo}=Ic({isOpen:V,modal:y,nested:S??!1,hasBeenOpened:H,preventScrollRestoration:j,noBodyStyles:k});function ut(){return(window.innerWidth-dr)/window.innerWidth}function wo(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,Ys()&&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 Co(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=bo(se,B);if(Oe!==null&&(le=Oe),Y&&le>=1||!xe.current&&!Pr(P.target,B))return;if(I.current.classList.add(Yt),xe.current=!0,ee(I.current,{transition:"none"}),ee(U.current,{transition:"none"}),a&&go({draggedDistance:q}),B&&!a){const he=Nc(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(U.current,{opacity:`${ke}`,transition:"none"},!0)),re&&U.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(ur(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;Mt.current||(Mt.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:dr)),h?I.current.style.height=`${ke-Math.max(re,0)}px`:I.current.style.height=`${Math.max(he,Y-Oe)}px`}else mc()||(I.current.style.height=`${Mt.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){ko(),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(U.current,{transition:`opacity ${G.DURATION}s cubic-bezier(${G.EASE.join(",")})`,opacity:"1"}),l&&z&&z>0&&V&&ee(P,{borderRadius:`${to}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 ko(){!ne||!I.current||(I.current.classList.remove(Yt),xe.current=!1,ie(!1),be.current=new Date)}function jo(P){if(!ne||!I.current)return;I.current.classList.remove(Yt),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){vo({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>eo){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),()=>{Ec(document.documentElement,"scrollBehavior")}),[V]);function So(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 Eo(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 No(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(Ws,{defaultOpen:N,onOpenChange:P=>{!d&&!P||(P?E(!0):Je(!0),Q(P))},open:V},p.createElement(Ks.Provider,{value:{activeSnapPoint:xo,snapPoints:a,setActiveSnapPoint:_r,drawerRef:I,overlayRef:U,onOpenChange:t,onPress:wo,onRelease:jo,onDrag:Co,dismissible:d,shouldAnimate:Re,handleOnly:f,isOpen:V,isDragging:ne,shouldFade:Ar,closeDrawer:Je,onNestedDrag:Eo,onNestedOpenChange:So,onNestedRelease:No,keyboardIsOpen:fe,modal:y,snapPointsOffset:Xe,activeSnapPointIndex:$e,direction:w,shouldScaleBackground:l,setBackgroundColorOnScale:i,noBodyStyles:k,container:M,autoFocus:$}},r))}const so=p.forwardRef(function({...e},t){const{overlayRef:r,snapPoints:n,onRelease:o,shouldFade:a,isOpen:l,modal:i,shouldAnimate:c}=ct(),u=Xs(t,r),d=n&&n.length>0;if(!i)return null;const f=p.useCallback(m=>o(m),[o]);return p.createElement(Hs,{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})});so.displayName="Drawer.Overlay";const oo=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=Xs(o,a),C=p.useRef(null),j=p.useRef(null),O=p.useRef(!1),D=h&&h.length>0;Mc();const M=(_,W,V=0)=>{if(O.current)return!0;const Q=Math.abs(_.y),H=Math.abs(_.x),E=H>Q,ne=["bottom","right"].includes(W)?1:-1;if(W==="left"||W==="right"){if(!(_.x*ne<0)&&H>=0&&H<=V)return E}else if(!(_.y*ne<0)&&Q>=0&&Q<=V)return!E;return O.current=!0,!0};p.useEffect(()=>{D&&window.requestAnimationFrame(()=>{N(!0)})},[]);function $(_){C.current=null,O.current=!1,i(_)}return p.createElement(Us,{"data-vaul-drawer-direction":v,"data-vaul-drawer":"","data-vaul-delayed-snap-points":w?"true":"false","data-vaul-snap-points":b&&D?"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)}})});oo.displayName="Drawer.Content";const Dc=250,Fc=120,$c=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()},Fc)}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))});$c.displayName="Drawer.Handle";function Bc(e){const t=ct(),{container:r=t.container,...n}=e;return p.createElement(Vs,{container:r,...n})}const Pe={Root:Lc,Content:oo,Overlay:so,Portal:Bc,Close:Gs,Title:qs,Description:Qs};function zc(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 Tt(...e){return ls(Kn(e))}const Wc={position:"fixed",inset:0,zIndex:9999,backgroundColor:"rgba(0, 0, 0, 0.6)",backdropFilter:"blur(4px)"},Vc={position:"fixed",left:"50%",top:"50%",transform:"translate(-50%, -50%)",zIndex:9999,width:"calc(100% - 2rem)",maxWidth:"42rem",display:"flex",flexDirection:"column"},Hc={position:"fixed",inset:0,zIndex:9999,backgroundColor:"rgba(0, 0, 0, 0.6)",backdropFilter:"blur(4px)"},Uc={position:"fixed",left:0,right:0,bottom:0,zIndex:9999,maxHeight:"96vh"};function jr({open:e,onOpenChange:t,children:r,title:n,description:o,className:a="",showCloseButton:l=!0,height:i}){const c=zc(),{theme:u}=fa(),d={"--optimex-primary":u.colors.primary,"--optimex-background":u.colors.background,"--optimex-surface":u.colors.surface,"--optimex-text":u.colors.text.primary,"--optimex-text-secondary":u.colors.text.secondary,"--optimex-error":u.colors.error,"--optimex-success":u.colors.success,"--optimex-radius-widget":u.radius.widget,"--optimex-radius-input":u.radius.input,"--optimex-radius-button":u.radius.button,"--optimex-overlay-background":u.overlay.background,"--optimex-overlay-radius":u.overlay.radius,"--optimex-font-family":u.fontFamily};return c?s.jsx(Pe.Root,{open:e,onOpenChange:t,children:s.jsxs(Pe.Portal,{children:[s.jsx(Pe.Overlay,{style:Hc}),s.jsx(Pe.Content,{style:Uc,children:s.jsxs("div",{className:Tt("optx-widget flex flex-col bg-[var(--optimex-overlay-background)] outline-none",a),style:{...d,height:i,maxHeight:"96vh",borderStyle:"solid",borderColor:"rgba(255, 255, 255, 0.1)",backgroundColor:u.overlay.background,borderRadius:`${u.overlay.radius} ${u.overlay.radius} 0 0`},children:[s.jsx("div",{className:"mx-auto mt-4 h-1.5 w-12 flex-shrink-0 rounded-full 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 flex-1 flex-col overflow-auto",children:r})]})})]})}):s.jsx(Ws,{open:e,onOpenChange:t,children:s.jsxs(Vs,{children:[s.jsx(Hs,{style:Wc}),s.jsx(Us,{style:{...Vc,height:i,maxHeight:i||"85vh"},children:s.jsxs("div",{className:Tt("optx-widget flex flex-col rounded-[var(--optimex-overlay-radius)] border border-white/10 bg-[var(--optimex-overlay-background)] shadow-2xl outline-none",a),style:{...d,flex:1,minHeight:0,height:"100%",borderStyle:"solid",borderColor:"rgba(255, 255, 255, 0.1)",backgroundColor:u.overlay.background,borderRadius:u.overlay.radius},children:[(n||o||l)&&s.jsxs("div",{className:"flex flex-shrink-0 items-center justify-between border-b border-white/[0.05] p-4",children:[s.jsxs("div",{className:"flex flex-col gap-1.5",children:[n&&s.jsx(qs,{className:"text-lg font-bold leading-none text-[var(--optimex-text)]",children:n}),o&&s.jsx(Qs,{className:"text-sm text-[var(--optimex-text-secondary)]",children:o})]}),l&&s.jsxs(Gs,{className:"rounded-[var(--optimex-radius-button)] p-1.5 text-[var(--optimex-text-secondary)] opacity-70 transition-opacity hover:opacity-100 hover:bg-white/10 focus:outline-none",children:[s.jsx(Ie,{}),s.jsx("span",{className:"sr-only",children:"Close"})]})]}),s.jsx("div",{className:"flex flex-1 flex-col overflow-hidden min-h-0",children:r})]})})]})})}const qc=({children:e,className:t=""})=>s.jsx("div",{className:Tt("p-4",t),children:e}),Qc=({children:e,className:t=""})=>s.jsx("div",{className:Tt("flex gap-2 border-t border-white/[0.05] p-4",t),children:e});function fr({children:e,onClick:t,isActive:r=!1,type:n="button",className:o=""}){return s.jsx("button",{type:n,onClick:t,className:cs(`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 Gc={"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"},Kc={"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 Yc({isOpen:e,onClose:t,children:r,anchorRef:n,position:o="bottom-right",width:a="w-72",showArrow:l=!1,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 ${Gc[o]} ${a} ${i}`,role:"dialog","aria-label":c,children:[l&&s.jsx("div",{className:`absolute h-4 w-4 bg-[var(--optimex-overlay-background)] ${Kc[o]}`}),s.jsx("div",{className:"relative",children:r})]}):null}function Zc({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 Xc={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 De({token:e,size:t="md",showNetworkBadge:r=!0}){const n=Xc[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 Jc="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??Jc,children:e})}function eu(){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(Fa,{className:"size-10 text-[var(--optimex-error)]"})})]})}function tu({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(eu,{}),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(Da,{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 ru({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 ao=p.createContext(null);function nu({children:e}){const t=lt(),{data:r,isLoading:n,error:o,refetch:a}=xa(t.apiBaseUrl),l=t.renderLoading??ru,i=t.renderError??tu;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(ao.Provider,{value:{tokensData:r,refetch:a},children:e})}function su(){const e=p.useContext(ao);if(!e)throw new Error("useTokensData must be used within TokensProvider");return e}function ou({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(()=>za(e?.network_name)||$n,[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(Zc,{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(La,{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(fr,{onClick:b,children:"50%"}),s.jsx(fr,{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(De,{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 Zt=[.5,.75,1];function au({value:e,onChange:t}){const[r,n]=p.useState(""),[o,a]=p.useState(!Zt.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(Zt.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:[Zt.map(u=>s.jsxs(fr,{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 iu({isOpen:e,onClose:t,value:r,onChange:n,anchorRef:o}){const a=p.useCallback(l=>{n(l)},[n]);return s.jsx(Yc,{isOpen:e,onClose:t,anchorRef:o,position:"bottom-right",width:"w-96",ariaLabel:"Slippage settings",children:s.jsx(au,{value:r,onChange:a})})}const lu=({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(Ma,{className:"w-5 h-auto text-white"})}),s.jsx("h2",{className:"text-xl font-bold tracking-tight text-[var(--optimex-text)]",children:e})]});function cu({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(lu,{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(Aa,{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(Ba,{className:"size-5"})}),s.jsx(iu,{isOpen:o,onClose:()=>a?.(),value:r,onChange:u=>n?.(u),anchorRef:c})]})]})]})}function io({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(Ra,{className:"size-5"})})})}function uu({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 du({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 fu(){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(Ia,{className:"h-3 w-auto"})]})}function hu({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($a,{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 mu({networks:e,selectedNetwork:t,onSelectNetwork:r}){return s.jsxs("div",{className:"w-1/3 min-w-[140px] min-h-0 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(Ta,{}),s.jsx("span",{children:"All"})]}),e.map(n=>s.jsx(pu,{network:n,isSelected:t===n.network_id,onSelect:()=>r(n.network_id)},n.network_id))]})]})}function pu({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 xu({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(vu,{token:o,isSelected:t===o.token_symbol,onSelect:()=>r(o.token_symbol)},o.token_symbol))]})]})}function vu({token:e,isSelected:t,onSelect:r}){return s.jsxs("button",{onClick:r,className:cs("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(Pn);if(!e)throw new Error("useWallet must be used within WalletProvider");return e}function Pt(e){return`https://network-api-stg.bitdex.xyz/${e}/rpc/zwD70RMT9DrE8L5SaMnJNMF8m70Gum`}function gu(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 bu(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 yu(e){return`0x70a08231000000000000000000000000${e.toLowerCase().replace("0x","")}`}async function lo(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 wu(e,t){const n=await lo(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 Cu(e,t,r){const n={jsonrpc:"2.0",method:"eth_call",params:[{to:t,data:yu(r)},"latest"],id:1},o=await lo(e,n);if(o.error)throw new Error(`RPC error: ${o.error.message}`);const a=o.result||"0x0";return BigInt(a).toString()}async function ku(e,t){const r=Pt(e.network_id),n=Er(e);let o;return n?o=await wu(r,t):o=await Cu(r,e.token_address,t),{rawBalance:o,isNative:n}}async function ju(e,t){const n=`${gu(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 co(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 Su(e,t){const n=await co(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 Eu(e,t,r){const o=await co(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 Nu(e,t){const r=Pt(e.network_id),n=Er(e);let o;return n?o=await Su(r,t):o=await Eu(r,e.token_address,t),{rawBalance:o,isNative:n}}function Tu(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 Ru(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 Ou(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 uo({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 fo({provider:e,address:o,chainId:a,chainName:n})}function fo({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 _u=uo;async function Au(e,t){const r=e.token_address||"native";let n;switch(e.network_type){case K.BTC:n=await ju(e,t);break;case K.SOLANA:n=await Nu(e,t);break;case K.EVM:default:n=await ku(e,t)}return{tokenId:r,networkId:e.network_id,walletAddress:t,rawBalance:n.rawBalance,formattedBalance:bu(n.rawBalance,e.token_decimals),updatedAt:Date.now()}}const Pu=30*1e3,Mu=15*1e3;function Iu(e,t){return!e||!t?["balance"]:["balance",e.network_id,e.token_address||"native",t]}function ho({token:e,walletAddress:t,enabled:r=!0,polling:n=!1,pollingInterval:o=Mu}){const a=r&&!!e&&!!t,{data:l,isLoading:i,isFetching:c,error:u,refetch:d}=Qe({queryKey:Iu(e,t),queryFn:()=>Au(e,t),enabled:a,staleTime:Pu,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 Lu({token:e,isSelected:t,isDisabled:r,onSelect:n}){const o=Ze(),a=Ou(o,e.network_type),{formattedBalance:l,isLoading:i}=ho({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(De,{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 Du({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 min-h-0 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(Lu,{token:i,isSelected:t===i.token_id,isDisabled:c,onSelect:()=>l(i)},i.token_id)})})})}function Fu({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())},D=M=>{h(M),g(null)};return s.jsx(jr,{open:e,onOpenChange:O,title:d,height:"70vh",children:s.jsxs("div",{className:"flex h-full min-h-0 flex-col",children:[s.jsx(hu,{value:m,onChange:b}),s.jsxs("div",{className:"flex flex-1 min-h-0 overflow-hidden",children:[s.jsx(mu,{networks:S,selectedNetwork:v,onSelectNetwork:D}),s.jsxs("div",{className:"flex flex-1 min-h-0 flex-col overflow-hidden pl-2",children:[s.jsx(xu,{tokens:N,selectedSymbol:y,onSelectSymbol:g}),s.jsx(Du,{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(De,{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 $u({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(io,{onClick:()=>{},disabled:!0}),s.jsx(gn,{token:t,amount:n,label:"You Receive",usdValue:a})]})}function Xt({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 Bu({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(Xt,{label:"Min. Received",value:e}),s.jsx(Xt,{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(Xt,{label:"Slippage Tolerance",value:r})]})}const zu=3e4,Wu=6e4;function Rt({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:zu,refetchInterval:Wu,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 Vu({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}=Rt({symbol:n.token_symbol,enabled:e}),{calculateUsdValue:h}=Rt({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(qc,{className:"space-y-3",children:[s.jsx($u,{fromToken:n,toToken:o,fromAmount:a,toAmount:b,fromUsdValue:y,toUsdValue:g}),s.jsx(Bu,{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(Va,{icon:$n,label:"Receiving Address",address:u})})]}),s.jsx(Qc,{children:s.jsx(Mi,{state:d?"processing":f?"success":m?"error":"idle",onConfirm:f?t:r,confirmText:"Confirm Swap"})})]})}function Hu({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(Fu,{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(Vu,{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:Fn,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:Oa,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 Uu({onClose:e}){return s.jsxs("div",{className:"bg-[var(--optimex-surface)] border border-white/10 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-white/10 animate-pulse"}),s.jsxs("div",{className:"flex flex-col gap-1",children:[s.jsx("div",{className:"w-16 h-4 bg-white/10 rounded animate-pulse"}),s.jsx("div",{className:"w-10 h-3 bg-white/10 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-white/10 rounded animate-pulse"}),s.jsx("div",{className:"w-10 h-3 bg-white/10 rounded animate-pulse"})]}),s.jsx("div",{className:"w-6 h-6 rounded-full bg-white/10 animate-pulse"})]})]})]})}function qu({trade:e,status:t,isLoading:r,onClose:n}){if(r||!e)return s.jsx(Uu,{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-white/10 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(De,{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(De,{token:a,size:"sm",showNetworkBadge:!1})]})]})]})}const Qu=1e4;function Gu({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:Qu,retry:2,retryDelay:2e3});return{trades:o??[],isLoading:a,isError:l,refetch:i}}function Ku(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 Yu({trade:e}){const t=e.from_token,r=e.to_token,n=Ku(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(De,{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(De,{token:r,size:"sm",showNetworkBadge:!1})]}),s.jsx("div",{className:"ml-3",children:s.jsx(Nr,{status:n})})]})}function Jt(){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 Zu(){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 Xu({open:e,onOpenChange:t,evmAddress:r,btcAddress:n,solanaAddress:o}){const a=lt(),l=[r,n,o].filter(u=>!!u),{trades:i,isLoading:c}=Gu({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(Jt,{}),s.jsx(Jt,{}),s.jsx(Jt,{})]}):i.length===0?s.jsx(Zu,{}):i.map(u=>s.jsx(Yu,{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(Fn,{className:"w-3 h-3 animate-spin"}),s.jsx("span",{children:"Auto-refreshing"})]})]})})}function Ju(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 ed(){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 td({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 rd(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 nd(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 sd(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 od(e,t){const r=sd(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 ad="0xdd62ed3e",id="0x095ea7b3",ld="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff";function hr(e){return e.toLowerCase().replace("0x","").padStart(64,"0")}function cd(e){return e.toString(16).padStart(64,"0")}function ud(e){const t=e.startsWith("0x")?e.slice(2):e;return!t||t===""?0n:BigInt("0x"+t)}async function dd(e,t,r,n){const o=Pt(e),a=ad+hr(r)+hr(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 ud(i.result)}function fd(e,t){const r=t?cd(t):ld.slice(2);return`${id}${hr(e)}${r}`}async function hd(e,t,r,n){const o=fd(r,n);return await e.sendTransaction({to:t,data:o})}async function md(e,t,r=60,n=2e3){const o=Pt(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 pd(e){return e?"getChainId"in e&&"switchChain"in e&&typeof e.getChainId=="function"&&typeof e.switchChain=="function":!1}function xd({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 od(f,m);const y=Er(m);if(!y&&m.token_address&&(a(w=>({...w,stage:"checking_allowance"})),await dd(m.network_id,m.token_address,f.address,h)<v)){a(A=>({...A,stage:"approving"}));const w=await hd(f,m.token_address,h,v);if((await md(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=In(v,m.token_decimals);if(m.network_type===K.EVM){const N=y||(pd(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 vd({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 gd({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 bd({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(!Tu(u,e?.network_type)){const m=Ru(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 yd({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 wd(){const e=Ze(),t=lt(),r=ed(),{tokensData:n}=su(),o=n.tokens,a=n.pairs,{allTokens:l,tokensWithoutPairs:i,isPairValid:c,findBestToToken:u,hasValidPairs:d,getDefaultPair:f}=nd({tokens:o,pairs:a,selectedFromToken:null}),b=yd({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}=vd({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=Ju(w,h),{fromUserAddress:D,userRefundPubkey:M}=gd({fromToken:v,toToken:h}),$=td({fromToken:v,toToken:h,amount:S,fromUserAddress:D,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:H}=Ea(t.apiBaseUrl,{...$,enabled:_,onQuote:t.callbacks?.onQuote}),E=xd({apiBaseUrl:t.apiBaseUrl,onWalletTx:t.callbacks?.onWalletTx,onSubmitTx:t.callbacks?.onSubmitTx,onError:t.callbacks?.onError}),{walletAccount:ne,evmWalletAccount:ie}=rd(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]),U=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});U(!!F),k(""),N("")}catch(F){console.error("Swap failed:",F)}},[W,v,h,S,ne,ie,E,U,k,N]),de=p.useCallback(F=>{y(F)&&r.tokenSelect.close()},[y,r.tokenSelect]),be=bd({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:H},validation:{address:O},buttonState:be,modals:r,tokenSelect:{type:r.tokenSelect.type},actions:{selectToken:de,swapDirection:g,connectWallet:Te,openSwapConfirm:pe,closeConfirmModal:U,confirmSwap:Z},execution:{stage:E.stage,txHash:E.txHash,tradeId:E.tradeId,error:E.error,isExecuting:E.isExecuting},wallet:e,addresses:{sending:D,receiving:w}}}const Cd=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 kd({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:Cd},retry:!0,retryDelay:2e3});return{trade:r??null,status:yn(r?.state),isLoading:n}}function mo(){const e=wd(),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}=kd({apiBaseUrl:t.apiBaseUrl,tradeId:f.tradeId}),{formattedBalance:g}=ho({token:r.from,walletAddress:u.sending,enabled:!!r.from&&!!u.sending,polling:!0}),{calculateUsdValue:S}=Rt({symbol:r.from?.token_symbol,enabled:!!r.from}),{calculateUsdValue:k}=Rt({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(cu,{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(io,{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(ou,{token:r.to,value:n.receivingAddress,onChange:n.setReceivingAddress,error:i.address.error})}),s.jsx("div",{className:"mt-4",children:s.jsx(du,{text:l.text,disabled:l.disabled,onClick:l.action})}),o.data&&r.from&&r.to&&s.jsx("div",{className:"mt-4",children:s.jsx(uu,{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(fu,{})}),f.tradeId&&f.txHash&&s.jsx("div",{className:"mt-4",children:s.jsx(qu,{trade:v,status:h,isLoading:y})})]})]}),s.jsx(Hu,{swap:e}),m&&s.jsx(Xu,{open:m,onOpenChange:b,evmAddress:d.evmAddress??void 0,btcAddress:d.btcAddress??void 0,solanaAddress:d.solanaAddress??void 0})]})}function jd({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:ba(a)}),s.jsx(Pa,{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 Sd({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}){ma(e);const C=p.useMemo(()=>g??new Ho,[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},D=v??s.jsx(mo,{});return s.jsx("div",{className:"optx-widget",children:s.jsx(Ko,{client:C,children:s.jsx(Na,{value:O,children:s.jsx(da,{theme:n,children:s.jsx(ha,{externalWalletClient:t,onRequestWallet:r,children:s.jsx(nu,{children:D})})})})})})}exports.ConnectButton=jd;exports.SwapCard=mo;exports.SwapWidget=Sd;exports.createEvmWalletClient=uo;exports.createEvmWalletClientAsync=_u;exports.createEvmWalletClientSync=fo;exports.useWallet=Ze;
|
package/dist/index.mjs
CHANGED
|
@@ -8216,7 +8216,7 @@ function ru({
|
|
|
8216
8216
|
anchorRef: n,
|
|
8217
8217
|
position: o = "bottom-right",
|
|
8218
8218
|
width: s = "w-72",
|
|
8219
|
-
showArrow: l = !
|
|
8219
|
+
showArrow: l = !1,
|
|
8220
8220
|
className: i = "",
|
|
8221
8221
|
ariaLabel: c
|
|
8222
8222
|
}) {
|
|
@@ -9746,7 +9746,7 @@ function Lr({ status: e }) {
|
|
|
9746
9746
|
);
|
|
9747
9747
|
}
|
|
9748
9748
|
function Xu({ onClose: e }) {
|
|
9749
|
-
return /* @__PURE__ */ p("div", { className: "bg-[var(--optimex-surface)] border border-
|
|
9749
|
+
return /* @__PURE__ */ p("div", { className: "bg-[var(--optimex-surface)] border border-white/10 rounded-xl p-4 mt-3", children: [
|
|
9750
9750
|
/* @__PURE__ */ p("div", { className: "flex items-center justify-between mb-3", children: [
|
|
9751
9751
|
/* @__PURE__ */ a("span", { className: "text-xs text-[var(--optimex-text-secondary)] font-medium", children: "Recent Trade" }),
|
|
9752
9752
|
/* @__PURE__ */ p("div", { className: "flex items-center gap-2", children: [
|
|
@@ -9764,10 +9764,10 @@ function Xu({ onClose: e }) {
|
|
|
9764
9764
|
] }),
|
|
9765
9765
|
/* @__PURE__ */ p("div", { className: "flex items-center justify-between", children: [
|
|
9766
9766
|
/* @__PURE__ */ p("div", { className: "flex items-center gap-2", children: [
|
|
9767
|
-
/* @__PURE__ */ a("div", { className: "w-6 h-6 rounded-full bg-
|
|
9767
|
+
/* @__PURE__ */ a("div", { className: "w-6 h-6 rounded-full bg-white/10 animate-pulse" }),
|
|
9768
9768
|
/* @__PURE__ */ p("div", { className: "flex flex-col gap-1", children: [
|
|
9769
|
-
/* @__PURE__ */ a("div", { className: "w-16 h-4 bg-
|
|
9770
|
-
/* @__PURE__ */ a("div", { className: "w-10 h-3 bg-
|
|
9769
|
+
/* @__PURE__ */ a("div", { className: "w-16 h-4 bg-white/10 rounded animate-pulse" }),
|
|
9770
|
+
/* @__PURE__ */ a("div", { className: "w-10 h-3 bg-white/10 rounded animate-pulse" })
|
|
9771
9771
|
] })
|
|
9772
9772
|
] }),
|
|
9773
9773
|
/* @__PURE__ */ a("div", { className: "flex items-center px-3", children: /* @__PURE__ */ a(
|
|
@@ -9790,10 +9790,10 @@ function Xu({ onClose: e }) {
|
|
|
9790
9790
|
) }),
|
|
9791
9791
|
/* @__PURE__ */ p("div", { className: "flex items-center gap-2", children: [
|
|
9792
9792
|
/* @__PURE__ */ p("div", { className: "flex flex-col items-end gap-1", children: [
|
|
9793
|
-
/* @__PURE__ */ a("div", { className: "w-16 h-4 bg-
|
|
9794
|
-
/* @__PURE__ */ a("div", { className: "w-10 h-3 bg-
|
|
9793
|
+
/* @__PURE__ */ a("div", { className: "w-16 h-4 bg-white/10 rounded animate-pulse" }),
|
|
9794
|
+
/* @__PURE__ */ a("div", { className: "w-10 h-3 bg-white/10 rounded animate-pulse" })
|
|
9795
9795
|
] }),
|
|
9796
|
-
/* @__PURE__ */ a("div", { className: "w-6 h-6 rounded-full bg-
|
|
9796
|
+
/* @__PURE__ */ a("div", { className: "w-6 h-6 rounded-full bg-white/10 animate-pulse" })
|
|
9797
9797
|
] })
|
|
9798
9798
|
] })
|
|
9799
9799
|
] });
|
|
@@ -9810,7 +9810,7 @@ function Ju({
|
|
|
9810
9810
|
e.min_amount_out,
|
|
9811
9811
|
s.token_decimals
|
|
9812
9812
|
);
|
|
9813
|
-
return /* @__PURE__ */ p("div", { className: "bg-[var(--optimex-surface)] border border-
|
|
9813
|
+
return /* @__PURE__ */ p("div", { className: "bg-[var(--optimex-surface)] border border-white/10 rounded-xl p-4 mt-3", children: [
|
|
9814
9814
|
/* @__PURE__ */ p("div", { className: "flex items-center justify-between mb-3", children: [
|
|
9815
9815
|
/* @__PURE__ */ a("span", { className: "text-xs text-[var(--optimex-text-secondary)] font-medium", children: "Recent Trade" }),
|
|
9816
9816
|
/* @__PURE__ */ p("div", { className: "flex items-center gap-2", children: [
|