@naculus/connect-appkit-ui 0.1.9 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/dist/index.cjs +10 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +696 -0
- package/dist/index.d.ts +696 -0
- package/dist/index.js +10 -3
- package/dist/index.js.map +1 -1
- package/dist/styles/index.css +2 -0
- package/dist/styles/tokens.css +44 -0
- package/dist/styles/utilities.css +14 -0
- package/package.json +15 -9
package/dist/index.js
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
|
-
import{useState as ze,useEffect as sn,useCallback as ln,useRef as cn}from"react";import{AppkitConnectButton as dn}from"@naculus/connect-appkit-react";import{createContext as Yt,useContext as Ze,useState as Ne,useCallback as Pe,useMemo as Je,useRef as Jt}from"react";import{useWeb3 as Zt}from"@naculus/connect-appkit-react";import{jsx as tn}from"react/jsx-runtime";var De=Yt(null);function Ae({children:e}){let t=Zt(),[n,o]=Ne(null),[r,a]=Ne(!1),[d,c]=Ne("idle"),[i,l]=Ne(null),p=Pe(()=>{o(null),a(!1),c("cancelled"),l(null)},[]),m=Jt(void 0);m.current=async()=>{if(!t.startPairing||!t.completePairing){l("WalletConnect pairing not available"),c("error");return}c("loading"),l(null),a(!0);try{let g=await t.startPairing();o(g),c("ready");try{await t.completePairing(),setTimeout(()=>{a(!1),o(null),c("idle")},1e3)}catch(w){c("error"),l(w instanceof Error?w.message:"Connection failed")}}catch(g){c("error"),l(g instanceof Error?g.message:"Failed to generate QR code")}};let f=Pe(async()=>{m.current?.()},[]),x=Pe(()=>{o(null),l(null),c("loading"),m.current?.()},[]),N=Je(()=>({qrUri:n,showQR:r,qrStatus:d,error:i}),[n,r,d,i]),u=Je(()=>({state:N,connectWalletConnect:f,cancelQR:p,retryQR:x}),[N,f,p,x]);return tn(De.Provider,{value:u,children:e})}function en(){let e=Ze(De);if(!e)throw new Error("useWalletConnect must be used within a WalletConnectProvider");return e}function Ee(){return Ze(De)}import{useState as et,useEffect as nn,useRef as on}from"react";function ue(){let[e,t]=et([]),[n,o]=et(!0),r=on(new Set);return nn(()=>{r.current.clear(),o(!0);let a=c=>{let i=c.detail,l=i?.info,p=i?.provider;!l?.rdns||r.current.has(l.rdns)||(r.current.add(l.rdns),t(m=>m.find(f=>f.id===l.rdns)?m:[...m,{id:l.rdns,name:l.name||l.rdns,icon:l.icon||"",rdns:l.rdns,provider:p}]))};window.addEventListener("eip6963:announceProvider",a),window.dispatchEvent(new Event("eip6963:requestProvider"));let d=setTimeout(()=>o(!1),500);return()=>{window.removeEventListener("eip6963:announceProvider",a),clearTimeout(d)}},[]),{wallets:e,isDetecting:n,hasWallets:e.length>0}}import{useState as rn,useEffect as an}from"react";function me(){let[e,t]=rn(!1);return an(()=>{if(typeof navigator>"u"||typeof window>"u")return;let n=navigator.userAgent.toLowerCase();t(/(iphone|ipad|ipod|android|mobile)/i.test(n))},[]),e}import{jsx as tt}from"react/jsx-runtime";function te({className:e,isConnected:t,isConnecting:n,onConnect:o,onDisconnect:r,onMobileDeepLink:a,mobileWalletName:d,startPairing:c,completePairing:i,address:l,balance:p,balanceSymbol:m,tokenBalances:f,isBalanceLoading:x,explorerUrl:N,explorerLabel:u}){let g=Ee(),{wallets:w}=ue(),s=me(),[R,A]=ze(null),[H,K]=ze(!1),[U,Q]=ze(null),_=cn({aborted:!1});sn(()=>{if(!g)return;let{qrStatus:L,qrUri:G,error:j}=g.state;L==="loading"?(K(!0),A(null),Q(null)):L==="ready"&&G?(K(!1),A(G),Q(null)):L==="error"?(K(!1),Q(j)):L==="idle"&&(K(!1),A(null),Q(null))},[g?.state?.qrStatus,g?.state?.qrUri,g?.state?.error]);let F=ln((L,G)=>{if(L==="walletconnect"){if(g){g.connectWalletConnect();return}if(c&&i){K(!0),Q(null),_.current.aborted=!1,c().then(j=>{_.current.aborted||(A(j),K(!1),i().then(()=>{_.current.aborted||A(null)}).catch(se=>{_.current.aborted||Q(se instanceof Error?se.message:"Connection failed")}))}).catch(j=>{_.current.aborted||(K(!1),Q(j instanceof Error?j.message:"Connection failed"))});return}}o?.(L,()=>{},G)},[g,c,i,o]);return tt("div",{className:e,children:tt(dn,{connected:t??!1,connecting:n??!1,address:l??"",balance:p??null,balanceSymbol:m??"ETH",isBalanceLoading:x??!1,tokenBalancesJson:JSON.stringify(f??[]),explorerUrl:N??"",explorerLabel:u??"",walletsJson:JSON.stringify(w),isMobile:s,mobileWalletName:d??"",qrUri:R,qrLoading:H,qrError:U,onAppkitConnect:L=>{F(L.detail.kind,L.detail.walletId)},onAppkitDisconnect:()=>r?.(),onAppkitStartPairing:()=>F("walletconnect"),onAppkitRetry:()=>{_.current.aborted=!0,Q(null),A(null),F("walletconnect")},onAppkitMobileDeepLink:()=>a?.(),onAppkitCopyAddress:L=>{navigator.clipboard?.writeText(L.detail).catch(()=>{})}})})}import{logger as St}from"@naculus/connect-core";import{useState as Co,useRef as No,useEffect as wo}from"react";import{useChain as Ro,useWallet as ko}from"@naculus/connect-appkit-react";import{clsx as un}from"clsx";import{twMerge as mn}from"tailwind-merge";function k(...e){return mn(un(e))}var nt='<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 0l-.26.97v28.15l.26.26 13.07-7.72L12 0z" fill="#8C8C8C"/><path d="M12 0L-.87 21.69l12.87 7.72V0z" fill="#3C3C3B"/><path d="M12 31.88l-.16.2v10.55l.16.47 13.08-18.42L12 31.88z" fill="#8C8C8C"/><path d="M12 42.9V31.88L-.87 24.68 12 42.9z" fill="#3C3C3B"/><path d="M12 28.41l13.07-7.72L12 14.09v14.32z" fill="#141414"/><path d="M-.87 20.69L12 28.41V14.09l-12.87 6.6z" fill="#393939"/></svg>',pn='<svg viewBox="0 0 24 22" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M15 12.3l-3.7 2.2-3.8-2.2V7.9L11.3 5.7 15 7.9v2.7l-2.2 1.3-1.5-.9v-2l1.5.9 2.2-1.3V7.9L11.3 4 6 7.9v6.3l5.3 3.1 5.3-3.1-1.6-2.8z" fill="#6C00F6"/></svg>',fn='<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="12" r="12" fill="#F0B90B"/><path d="M12 4l2.7 1.6L14.7 7 12 5.4 9.3 7l-.7-.4L12 4zm4.7 2.7l-2.7 1.6V10l4 2.3v4.7L16 18.7v-4l-1.3-.7v4L12 20l-2.7-1.6v-4L8 14.7v4l-1.3-.7V12.3l4-2.3V8.3l-2.7-1.6.7-.4L12 8l2.7-1.7.7.4z" fill="white"/></svg>',gn='<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 1.5c.3 0 .6.1.8.2l8.8 5.1c.5.3.9.9.9 1.5v10.2c0 .6-.3 1.2-.9 1.5l-8.8 5.1c-.3.2-.6.2-.8.2s-.6-.1-.8-.2l-8.8-5.1c-.5-.3-.9-.9-.9-1.5V8.3c0-.6.3-1.2.9-1.5l8.8-5.1c.3-.2.6-.2.8-.2z" fill="#213147"/><path d="M14.7 13.8l-1.2 3.2c0 .1 0 .2.1.3l2 5.5 2.3-1.3-2.8-7.6c-.1-.2-.3-.2-.4-.1z" fill="#12AAFF"/><path d="M16.3 8.5c0-.2-.3-.2-.4 0l-1.1 3.2c0 .1 0 .2.1.3l3.3 9 2.3-1.3-4.2-9.1v-.1z" fill="#12AAFF"/><path d="M12 3.5c.1 0 .2 0 .3.1l8.8 5.1c.1.1.2.2.2.3v10.2c0 .1-.1.2-.2.3l-8.8 5.1c-.1 0-.2.1-.3.1s-.2 0-.3-.1l-8.8-5.1c-.1-.1-.2-.2-.2-.3V9c0-.1.1-.2.2-.3l8.8-5.1c.1 0 .2-.1.3-.1z" fill="#9DCCED" fill-opacity="0.3"/><path d="M13.3 6.2h-2.2c-.2 0-.3.1-.4.3L5.9 19.6l2.3 1.3L13 6.5c0-.1-.1-.3-.2-.3h.4z" fill="white"/><path d="M15.2 6.2H13c-.2 0-.3.1-.4.3L8.1 21.4l2.3 1.3 6-16.4c0-.1-.1-.3-.2-.3v.2z" fill="white"/></svg>',vn='<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="12" r="12" fill="#FF0420"/><path d="M8.5 16c-.5 0-.9-.1-1.3-.3-.4-.2-.7-.5-1-.8-.3-.4-.4-.8-.4-1.3V10c0-.5.1-1 .4-1.4.3-.4.6-.7 1-.9.4-.2.8-.3 1.3-.3.4 0 .8.1 1.2.2.3.2.6.4.8.7l-1 1c-.2-.2-.4-.3-.6-.4-.2-.1-.5-.2-.8-.2-.3 0-.6.1-.9.2-.3.2-.5.4-.6.7-.1.3-.2.6-.2 1v3.5c0 .3.1.6.2.9.1.3.3.5.6.6.3.2.6.2.9.2.3 0 .6-.1.8-.2.2-.1.4-.3.6-.5l1 1c-.2.3-.5.5-.8.7-.4.2-.9.3-1.4.3z" fill="white"/><path d="M15.5 16c-.5 0-.9-.1-1.3-.3-.4-.2-.7-.5-1-.8-.2-.4-.4-.8-.4-1.3V10c0-.5.1-1 .4-1.4.2-.4.5-.7.9-.9.4-.2.8-.3 1.3-.3.5 0 1 .1 1.4.3.4.2.7.5.9.9.2.4.3.9.3 1.4v.7h-2.9v-1.1c0-.3-.1-.6-.2-.9-.1-.3-.3-.5-.5-.6-.2-.1-.5-.2-.8-.2-.3 0-.6.1-.8.2-.3.2-.5.4-.6.7-.1.3-.2.6-.2 1v3.5c0 .3.1.6.2.8.1.3.3.5.6.6.2.2.5.2.8.2.3 0 .6-.1.8-.2.2-.1.4-.3.5-.6.1-.3.2-.6.2-1v-1.1h2.9v.7c0 .5-.1 1-.3 1.4-.2.4-.5.7-.9.9-.4.2-.9.3-1.4.3z" fill="white"/></svg>',bn='<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="12" r="12" fill="#E84142"/><path d="M8.6 16.8H6.3c-.5 0-.8-.1-1-.3-.2-.2-.3-.5-.3-.8 0-.2 0-.4.1-.6l5.8-10.7c.2-.4.5-.7.8-.8.3-.1.5-.1.7 0 .2.1.5.3.7.8l1.2 2.1.1.2c.3.5.5.9.5 1.3.1.4.1.8 0 1.1-.1.4-.3.8-.6 1.3l-3 5.4c-.2.5-.5.8-.8 1-.4.2-.7.2-1.2.2z" fill="white"/><path d="M14.5 16.8h3.3c.5 0 .7-.1 1-.3.2-.2.3-.5.3-.8 0-.2-.1-.4-.3-.7l-1.7-3-.2-.3c-.2-.4-.4-.7-.6-.8-.2-.1-.4-.1-.6 0-.2.1-.4.3-.6.8l-1.6 3c-.2.4-.4.7-.4.9 0 .2.1.5.3.7.1.1.4.3.9.3z" fill="white"/></svg>',xn='<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="12" r="12" fill="#1969FF"/><path d="M11.3 3.8c.4-.2 1-.2 1.4 0l4.1 2.2c.2.1.4.3.4.5h0v10.9c0 .2-.1.4-.4.6l-4.1 2.2c-.4.2-1 .2-1.4 0l-4.1-2.2c-.3-.1-.4-.4-.4-.6V6.5c0-.2.1-.4.4-.5l4.1-2.2zm5.3 8.7l-3.9 2c-.4.2-1 .2-1.4 0l-3.9-2v4.8l3.9 2c.2.1.5.2.7.2.2 0 .5-.1.7-.2l3.9-2v-4.8z" fill="white"/></svg>',yn={"eip155:1":nt,"eip155:137":pn,"eip155:56":fn,"eip155:42161":gn,"eip155:10":vn,"eip155:43114":bn,"eip155:250":xn,"eip155:11155111":nt};function we(e){return yn[e]}import{createContext as go,useContext as vo,useMemo as bo}from"react";import{Wallet as hn}from"lucide-react";import{jsx as ie,jsxs as Me}from"react/jsx-runtime";function Cn({children:e}){return ie("div",{className:"flex h-8 w-8 items-center justify-center rounded-full bg-primary text-primary-foreground",children:e})}function We({className:e,showAddress:t=!0,showBalance:n=!1,address:o,balance:r,balanceSymbol:a,onConnect:d}){let i=T().Button;if(!o)return Me(i,{"aria-label":"Connect Wallet",onClick:d,className:e,children:[ie(hn,{size:18,className:"shrink-0"}),"Connect Wallet"]});let l=o.includes(":")?o.split(":").pop():o,p=l.slice(0,6)+"..."+l.slice(-4),m=r!=null?parseFloat(r).toLocaleString(void 0,{maximumFractionDigits:4})+" "+(a??"ETH"):null;return Me(i,{className:e,children:[ie(Cn,{children:"W"}),Me("div",{className:"flex flex-col items-start gap-0",children:[t&&ie("span",{className:"font-mono text-xs",children:p}),n&&m&&ie("span",{className:"text-xs text-muted-foreground",children:m}),n&&!m&&r===null&&ie("span",{className:"text-xs text-muted-foreground",children:"Loading..."})]})]})}import{useRef as st,useEffect as it,useState as lt,useCallback as wn}from"react";import{Smartphone as Rn,RefreshCw as ct,CheckCircle2 as kn,AlertCircle as dt,Loader2 as Tn}from"lucide-react";import{useEffect as ot}from"react";import{X as Nn}from"lucide-react";import{jsx as Y,jsxs as Le}from"react/jsx-runtime";function le({open:e,onClose:t,children:n,closable:o}){return ot(()=>{if(!e)return;let r=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=r}},[e]),ot(()=>{if(!e||!t)return;let r=a=>{a.key==="Escape"&&t()};return window.addEventListener("keydown",r),()=>window.removeEventListener("keydown",r)},[e,t]),e?Le("div",{className:"fixed inset-0 z-50 flex items-center justify-center p-4",children:[Y("div",{className:"absolute inset-0 bg-black/80","aria-hidden":"true",onClick:t}),Le("div",{role:"dialog","aria-modal":"true",className:"relative z-10 w-full max-w-sm rounded-xl border bg-card text-card-foreground shadow-2xl max-h-[85vh] overflow-y-auto p-6",children:[o&&t&&Y("button",{onClick:t,type:"button","aria-label":"Close modal",className:"absolute right-4 top-4 z-20 rounded-md p-1 text-muted-foreground hover:text-foreground",children:Y("svg",{className:"h-4 w-4",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:Y("path",{d:"M18 6 6 18M6 6l12 12","data-testid":"x-icon"})})}),n]})]}):null}function rt({title:e,onClose:t,showCloseButton:n=!0}){return Le("div",{className:"flex items-center justify-between mb-4",children:[Y("h2",{className:"text-lg font-semibold m-0",children:e}),n&&t&&Y("button",{onClick:t,type:"button",className:"rounded-md p-1 text-muted-foreground hover:text-foreground transition-all duration-200","aria-label":"Close",children:Y(Nn,{size:16})})]})}function at({children:e,className:t=""}){return Y("div",{className:k("flex flex-col gap-4",t),children:e})}import{jsx as z,jsxs as q}from"react/jsx-runtime";async function Sn(e,t){let n=await import("qrcode");return new Promise((o,r)=>{n.toCanvas(e,t,{width:280,margin:2},a=>{a?r(a):o()})})}function pe({uri:e,open:t,onClose:n,onDeepLink:o,onRetry:r,status:a="pending",showDeepLink:d,timeoutMs:c=300*1e3,title:i="Scan with WalletConnect",description:l="Open your wallet app and scan this QR code to connect.",className:p}){let m=st(null),[f,x]=lt(!1),[N,u]=lt(0),g=me(),w=T(),s=w.Button,R=d??g,A=st(null);it(()=>{!t||!e||!m.current||(x(!1),Sn(m.current,e).catch(()=>x(!0)))},[t,e]),it(()=>{if(!t||a!=="pending"){A.current&&(clearInterval(A.current),A.current=null),u(0);return}let ye=Date.now();return A.current=setInterval(()=>u(Date.now()-ye),1e3),()=>{A.current&&clearInterval(A.current)}},[t,a,c]);let H=N>=c&&a==="pending",K=H||a==="expired"||a==="error",U=Math.max(0,Math.ceil((c-N)/1e3)),Q=Math.floor(U/60),_=U%60,F=Math.min(N/c,1),L=wn(()=>{e&&o&&o(e)},[e,o]),G=e&&!H&&a==="pending"?f?q("div",{className:"w-[280px] h-[280px] flex flex-col items-center justify-center bg-muted rounded-lg gap-2",children:[z(dt,{size:24,className:"text-muted-foreground"}),z("span",{className:"text-sm text-muted-foreground",children:"Failed to render QR code"})]}):z("canvas",{ref:m,width:280,height:280,className:"rounded-lg border border-border"}):q("div",{className:"flex flex-col items-center justify-center gap-3 bg-muted rounded-lg w-[280px] h-[280px]",children:[a==="scanned"?z(kn,{size:48,className:"text-[hsl(var(--primary))]"}):z(dt,{size:48,className:"text-destructive"}),z("span",{className:"text-sm text-muted-foreground","data-testid":"status-label",children:a==="scanned"?"QR code scanned! Connecting...":H||a==="expired"?"Connection timed out.":"Something went wrong. Try again."})]}),se=w.Modal??le;return z(se,{open:t,onClose:n,closable:!0,title:i,className:p,children:q("div",{className:"p-6",children:[q("div",{className:"text-center mb-5",children:[z("div",{className:"flex justify-center mb-3",children:a==="pending"&&!H&&z(Tn,{size:20,className:"animate-spin text-primary","data-testid":"loader-icon-inline"})}),z("h3",{className:"text-lg font-semibold m-0 text-foreground",children:i}),l&&z("p",{className:"text-sm text-muted-foreground mt-1.5 mb-0",children:l})]}),z("div",{className:"flex justify-center mb-4",children:G}),a==="pending"&&!H&&q("div",{className:"mb-3",children:[z("div",{className:"h-1 bg-muted rounded-full overflow-hidden",role:"progressbar","aria-valuenow":Math.round((1-F)*100),"aria-valuemin":0,"aria-valuemax":100,children:z("div",{className:"h-full bg-primary rounded-full transition-all duration-1000",style:{width:`${(1-F)*100}%`}})}),q("p",{"data-testid":"countdown",className:"text-xs text-muted-foreground text-center mt-1.5 mb-0",children:["Expires in ",Q,":",_.toString().padStart(2,"0")]})]}),q("div",{className:"flex flex-col gap-2",children:[R&&e&&a==="pending"&&!H&&q("button",{onClick:L,className:"inline-flex items-center justify-center gap-2 w-full rounded-lg border border-input bg-card px-4 py-2.5 text-sm font-medium text-foreground hover:bg-accent hover:text-accent-foreground transition-all duration-200 cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",children:[z(Rn,{size:16})," Open in Wallet App"]}),K&&r&&(s?q(s,{onClick:r,variant:"default",size:"default",className:"w-full",children:[z(ct,{size:16})," Generate New QR Code"]}):q("button",{onClick:r,className:"inline-flex items-center justify-center gap-2 w-full rounded-lg bg-primary text-primary-foreground px-4 py-2.5 text-sm font-medium hover:bg-primary/90 transition-all duration-200 cursor-pointer border-0 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",children:[z(ct,{size:16})," Generate New QR Code"]})),s?z(s,{onClick:n,variant:"outline",size:"default",className:"w-full",children:"Cancel"}):z("button",{onClick:n,className:"inline-flex items-center justify-center w-full rounded-lg border border-input bg-transparent px-4 py-2.5 text-sm text-muted-foreground hover:bg-accent hover:text-accent-foreground transition-all duration-200 cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",children:"Cancel"})]})]})})}import{useState as ut}from"react";import{LogIn as Bn,Loader2 as Pn,CheckCircle2 as He,AlertCircle as Dn,X as An,Copy as En,Check as zn}from"lucide-react";import{Fragment as mt,jsx as y,jsxs as M}from"react/jsx-runtime";function Ve({className:e,isSignedIn:t=!1,isSigningIn:n=!1,result:o=null,error:r=null,onSignIn:a,onClearError:d,children:c}){let[i,l]=ut(!1),[p,m]=ut(!1),f=T(),x=f.Button,N=f.Dialog,u=f.DialogContent,g=f.DialogHeader,w=f.DialogTitle,s=async()=>{if(o?.signature)try{await navigator.clipboard.writeText(o.signature),m(!0),setTimeout(()=>m(!1),2e3)}catch{}};return!t&&!n&&!r?y(x,{onClick:a,className:e,"aria-label":"Sign In",children:M("span",{style:{display:"inline-flex",alignItems:"center",gap:"0.5rem"},children:[y(Bn,{size:16}),c??"Sign In"]})}):n?y(x,{disabled:!0,className:e,"aria-label":"Signing In",children:M("span",{style:{display:"inline-flex",alignItems:"center",gap:"0.5rem"},children:[y(Pn,{size:16,className:"animate-spin"}),"Signing In..."]})}):r&&!t?M("div",{style:{position:"relative",display:"inline-flex",flexDirection:"column"},children:[y(x,{onClick:a,className:e,"aria-label":"Retry Sign In",children:M("span",{style:{display:"inline-flex",alignItems:"center",gap:"0.5rem"},children:[y(Dn,{size:16,style:{color:"var(--destructive, #ef4444)"}}),c??"Retry Sign In"]})}),y("div",{style:{fontSize:"0.75rem",color:"var(--destructive, #ef4444)",padding:"0.25rem 0.5rem",borderRadius:"0.375rem",background:"var(--destructive-foreground, #fef2f2)",marginTop:"2px",wordBreak:"break-word",maxWidth:"100%",lineHeight:1.4},children:r.message})]}):M("div",{style:{position:"relative",display:"inline-block"},children:[y(x,{onClick:()=>l(R=>!R),className:e,children:M("span",{style:{display:"inline-flex",alignItems:"center",gap:"0.5rem"},children:[y(He,{size:16,style:{color:"#22c55e"}}),y("span",{style:{fontSize:"0.875rem",fontWeight:500},children:"Signed In"})]})}),i&&(N&&u?y(N,{open:!0,onOpenChange:R=>{R||l(!1)},children:y(u,{children:g&&w?M(mt,{children:[y(g,{children:y(w,{children:"Sign-In Details"})}),y(Ie,{result:o,onClose:()=>l(!1),copiedSign:p,onCopy:s})]}):M(mt,{children:[y("div",{style:{fontWeight:600,fontSize:"1.125rem",marginBottom:"0.75rem"},children:"Sign-In Details"}),y(Ie,{result:o,onClose:()=>l(!1),copiedSign:p,onCopy:s})]})})}):i&&y("div",{style:{position:"absolute",top:"calc(100% + 8px)",right:0,zIndex:100,width:"340px",maxWidth:"90vw",background:"var(--card, #fff)",border:"1px solid var(--border, #e2e8f0)",borderRadius:"0.75rem",boxShadow:"0 10px 25px rgba(0,0,0,0.1)",padding:"1rem"},children:y(Ie,{result:o,onClose:()=>l(!1),copiedSign:p,onCopy:s})}))]})}function Ie({result:e,onClose:t,copiedSign:n,onCopy:o}){let a=T().Button;if(!e)return M("div",{style:{textAlign:"center",padding:"1rem 0"},children:[y(He,{size:32,style:{color:"#22c55e",margin:"0 auto 0.75rem"}}),y("p",{style:{fontSize:"0.875rem",color:"var(--muted-foreground, #64748b)"},children:"Authenticated successfully"}),y(a,{variant:"outline",size:"sm",onClick:t,children:"Close"})]});let{message:d,signature:c}=e,i=c.length>20?c.slice(0,14)+"..."+c.slice(-6):c;return M("div",{style:{display:"flex",flexDirection:"column",gap:"0.75rem"},children:[M("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[M("div",{style:{display:"flex",alignItems:"center",gap:"0.5rem"},children:[y(He,{size:18,color:"#22c55e"}),y("span",{style:{fontWeight:600,fontSize:"0.9375rem"},children:"Signed In"})]}),y(a,{variant:"ghost",size:"icon",onClick:t,children:y(An,{size:16})})]}),M("div",{style:{display:"grid",gap:"0.375rem"},children:[M("div",{children:[y("span",{className:"text-xs uppercase tracking-wider text-muted-foreground",children:"Domain"}),y("p",{style:{fontSize:"0.8125rem",fontFamily:"monospace",marginTop:"0.125rem"},children:d.domain})]}),M("div",{children:[y("span",{className:"text-xs uppercase tracking-wider text-muted-foreground",children:"Address"}),y("p",{style:{fontSize:"0.8125rem",fontFamily:"monospace",marginTop:"0.125rem",wordBreak:"break-all"},children:d.address})]}),M("div",{children:[y("span",{className:"text-xs uppercase tracking-wider text-muted-foreground",children:"Chain"}),y("p",{style:{fontSize:"0.8125rem",fontFamily:"monospace",marginTop:"0.125rem"},children:d.chainId})]})]}),d.statement&&y("div",{style:{padding:"0.5rem 0.625rem",borderRadius:"0.375rem",background:"var(--muted, #f1f5f9)",fontSize:"0.8125rem",lineHeight:1.5},children:d.statement}),M("div",{children:[M("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"0.25rem"},children:[y("span",{className:"text-xs uppercase tracking-wider text-muted-foreground",children:"Signature"}),y(a,{variant:"ghost",size:"icon",onClick:o,title:"Copy signature",children:n?y(zn,{size:12,color:"#22c55e"}):y(En,{size:12})})]}),y("p",{style:{fontSize:"0.75rem",fontFamily:"monospace",wordBreak:"break-all",lineHeight:1.4,color:"var(--muted-foreground, #64748b)",background:"var(--muted, #f1f5f9)",padding:"0.375rem 0.5rem",borderRadius:"0.375rem"},children:i})]}),y(a,{variant:"outline",className:"w-full",onClick:t,children:"Close"})]})}import{useState as J,useCallback as ne,useMemo as Mn}from"react";import{AlertTriangle as Wn,Check as Oe,Copy as Ln,Download as In,Eye as Hn,EyeOff as Vn,SkipForward as pt,ArrowLeft as On,ArrowRight as Un,Shield as Kn,X as Qn}from"lucide-react";import{Fragment as Ke,jsx as h,jsxs as S}from"react/jsx-runtime";function Ue(e){let t=[...e];for(let n=t.length-1;n>0;n--){let o=Math.floor(Math.random()*(n+1));[t[n],t[o]]=[t[o],t[n]]}return t}function ft(e,t=3){let n=e.trim().split(/\s+/);return Ue(n.map((r,a)=>a)).slice(0,Math.min(t,n.length)).map(r=>{let a=n[r],d=n.filter((l,p)=>p!==r),c=Ue(d).slice(0,3),i=Ue([a,...c]);return{index:r,correct:a,options:i}})}function fe({seedPhrase:e,onConfirm:t,onSkip:n,onExportPrivateKey:o,className:r,wordCount:a,inline:d=!1,open:c=!0,onOpenChange:i}){let l=T(),p=l.Button,m=l.Dialog,f=l.DialogContent,x=l.DialogHeader,N=l.DialogTitle,[u,g]=J("reveal"),[w,s]=J(!1),[R,A]=J(!1),[H,K]=J(()=>ft(e,3)),[U,Q]=J({}),[_,F]=J([]),[L,G]=J(!1),[j,se]=J(null),ye=Mn(()=>e.trim().split(/\s+/),[e]),hr=a??(ye.length===24?24:12),Ot=ne(()=>s(!0),[]),Ut=ne(async()=>{try{await navigator.clipboard.writeText(e),A(!0),setTimeout(()=>A(!1),2e3)}catch{}},[e]),Kt=ne(()=>{K(ft(e,3)),Q({}),F([]),g("confirm")},[e]),Qt=ne((E,$)=>{Q(X=>({...X,[E]:$})),F(X=>X.filter(Be=>Be!==E))},[]),$t=ne(()=>{let E=[];for(let $ of H)U[$.index]!==$.correct&&E.push($.index);if(E.length>0){F(E);return}g("done"),t()},[H,U,t]),Ye=ne(()=>{n?.()},[n]),_t=ne(()=>{if(o){let E=o();se(E),G(!0)}},[o]),Ft=H.every(E=>U[E.index]!==void 0),jt=S("div",{className:"space-y-4",children:[h("div",{className:"rounded-lg border border-amber-200 bg-amber-50 dark:border-amber-800 dark:bg-amber-950/30 px-4 py-3",children:S("div",{className:"flex items-start gap-2",children:[h(Wn,{size:16,className:"mt-0.5 shrink-0 text-amber-600 dark:text-amber-400"}),h("p",{className:"text-sm text-amber-800 dark:text-amber-200",children:"Write down these words in order and store them somewhere safe. Never share them with anyone. If you lose your seed phrase, your funds cannot be recovered."})]})}),w?S(Ke,{children:[h("div",{className:"grid grid-cols-3 gap-2 sm:grid-cols-4",children:ye.map((E,$)=>S("div",{className:"flex items-center gap-1.5 rounded-md border bg-card px-2.5 py-1.5 text-sm",children:[h("span",{className:"text-xs text-muted-foreground w-5 shrink-0 text-right",children:$+1}),h("span",{className:"font-mono font-medium",children:E})]},$))}),S("div",{className:"flex flex-wrap gap-2",children:[S(p,{onClick:Ut,variant:"outline",size:"sm",children:[R?h(Oe,{size:14}):h(Ln,{size:14}),R?"Copied":"Copy"]}),o&&S(p,{onClick:_t,variant:"outline",size:"sm",children:[h(In,{size:14}),"Export Private Key"]})]}),L&&j&&S("div",{className:"rounded-lg border border-border bg-muted p-3 space-y-2",children:[S("div",{className:"flex items-center gap-2",children:[h(Vn,{size:14,className:"text-muted-foreground"}),h("span",{className:"text-xs font-medium text-muted-foreground",children:"Private Key (keep secret!)"})]}),h("p",{className:"font-mono text-xs break-all select-all",children:j})]}),S("div",{className:"flex flex-col gap-2 sm:flex-row sm:justify-between",children:[S(p,{onClick:Kt,variant:"default",children:["I've Saved It",h(Un,{size:16})]}),n&&S(p,{onClick:Ye,variant:"ghost",size:"sm",children:[h(pt,{size:14}),"Skip Backup"]})]})]}):S("div",{className:"flex flex-col items-center gap-3 py-6",children:[h(Kn,{size:40,className:"text-muted-foreground"}),h("p",{className:"text-sm text-muted-foreground text-center",children:"Click the button below to reveal your seed phrase. Make sure no one is watching your screen."}),S(p,{onClick:Ot,variant:"default",children:[h(Hn,{size:16}),"Reveal Seed Phrase"]})]})]}),qt=S("div",{className:"space-y-4",children:[h("p",{className:"text-sm text-muted-foreground",children:"Verify your backup by selecting the correct word for each position."}),H.map(E=>{let $=_.includes(E.index);return S("div",{className:"space-y-2",children:[S("p",{className:k("text-sm font-medium",$?"text-destructive":"text-foreground"),children:["Word #",E.index+1,$&&h("span",{className:"ml-2 text-xs text-destructive",children:"(incorrect)"})]}),h("div",{className:"grid grid-cols-2 gap-2",children:E.options.map(X=>{let Be=U[E.index]===X;return h("button",{onClick:()=>Qt(E.index,X),className:k("rounded-md border px-3 py-2 text-sm font-mono transition-all duration-200 cursor-pointer text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",Be?"border-primary bg-primary/10 text-primary font-medium":$?"border-destructive/50 bg-destructive/5":"border-border bg-card hover:border-primary/50"),children:X},X)})})]},E.index)}),S("div",{className:"flex flex-col gap-2 sm:flex-row sm:justify-between",children:[S(p,{onClick:$t,variant:"default",disabled:!Ft,children:[h(Oe,{size:16}),"Verify & Confirm"]}),S("div",{className:"flex gap-2",children:[S(p,{onClick:()=>g("reveal"),variant:"ghost",size:"sm",children:[h(On,{size:14}),"Back"]}),n&&S(p,{onClick:Ye,variant:"ghost",size:"sm",children:[h(pt,{size:14}),"Skip"]})]})]})]}),Gt={reveal:jt,confirm:qt,done:S("div",{className:"flex flex-col items-center gap-3 py-6 text-center",children:[h("div",{className:"flex h-12 w-12 items-center justify-center rounded-full bg-green-100 dark:bg-green-900/30",children:h(Oe,{size:24,className:"text-green-600 dark:text-green-400"})}),h("p",{className:"font-medium text-foreground",children:"Backup Confirmed"}),h("p",{className:"text-sm text-muted-foreground",children:"Your seed phrase has been backed up successfully."})]})},Xt={reveal:"Backup Seed Phrase",confirm:"Verify Backup",done:"Backup Complete"},he=Gt[u],Ce=Xt[u];return d?S("div",{className:k("space-y-4",r),children:[u!=="done"&&h("h3",{className:"text-lg font-semibold",children:Ce}),he]}):c?m&&f?h(m,{open:!0,onOpenChange:E=>{E||i?.(!1)},children:h(f,{children:x&&N?S(Ke,{children:[h(x,{children:h(N,{children:Ce})}),h("div",{className:"mt-2 max-h-[55vh] overflow-y-auto",children:he})]}):S(Ke,{children:[h("div",{className:"mb-3 text-lg font-semibold",children:Ce}),h("div",{className:"max-h-[55vh] overflow-y-auto",children:he})]})})}):S(le,{open:!0,onClose:()=>i?.(!1),children:[S("div",{className:"flex items-center justify-between mb-4",children:[h("h2",{className:"text-lg font-semibold m-0",children:Ce}),i&&h("button",{onClick:()=>i(!1),type:"button",className:"rounded-md p-1 text-muted-foreground hover:text-foreground transition-all duration-200 cursor-pointer border-none bg-transparent","aria-label":"Close",children:h(Qn,{size:16})})]}),he]}):null}import $n from"react";import{Fragment as gt,jsx as I,jsxs as Z}from"react/jsx-runtime";function _n({error:e,reset:t,dismiss:n,retryLabel:o="Try Again"}){let r=T(),a=r.Button,d=r.Dialog,c=r.DialogContent,i=r.DialogHeader,l=r.DialogTitle;if(d&&c)return I(d,{open:!0,onOpenChange:()=>{},children:I(c,{children:i&&l?Z(gt,{children:[I(i,{children:I(l,{children:"Something went wrong"})}),Z("div",{style:{marginTop:"0.5rem"},children:[I("p",{style:{color:"var(--muted-foreground, #666)",fontSize:"0.875rem",lineHeight:"1.5",margin:0},children:e.message||"An unexpected error occurred while connecting your wallet."}),Z("div",{style:{display:"flex",gap:"0.5rem",marginTop:"0.5rem"},children:[n&&I(a,{variant:"outline",size:"default",onClick:n,children:"Dismiss"}),I(a,{variant:"default",size:"default",onClick:t,children:o})]})]})]}):Z(gt,{children:[I("div",{style:{fontWeight:600,fontSize:"1.125rem",marginBottom:"0.75rem"},children:"Something went wrong"}),I("p",{style:{color:"var(--muted-foreground, #666)",fontSize:"0.875rem",lineHeight:"1.5",margin:0},children:e.message||"An unexpected error occurred while connecting your wallet."}),Z("div",{style:{display:"flex",gap:"0.5rem",marginTop:"0.5rem"},children:[n&&I(a,{variant:"outline",size:"default",onClick:n,children:"Dismiss"}),I(a,{variant:"default",size:"default",onClick:t,children:o})]})]})})});let p=!0,m=n??void 0;return Z(le,{open:p,onClose:m,children:[I(rt,{title:"Something went wrong",onClose:m,showCloseButton:!!n}),Z(at,{children:[I("p",{style:{color:"var(--muted-foreground, #666)",fontSize:"0.875rem",lineHeight:"1.5",margin:0},children:e.message||"An unexpected error occurred while connecting your wallet."}),Z("div",{style:{display:"flex",gap:"0.5rem",marginTop:"0.5rem"},children:[n&&I(a,{variant:"outline",size:"default",onClick:n,children:"Dismiss"}),I(a,{variant:"default",size:"default",onClick:t,children:o})]})]})]})}var ge=class extends $n.Component{constructor(t){super(t),this.state={hasError:!1,error:null,dismissed:!1}}static getDerivedStateFromError(t){return{hasError:!0,error:t,dismissed:!1}}componentDidCatch(t,n){this.props.onError?.(t,n)}handleReset=()=>{this.setState({hasError:!1,error:null,dismissed:!1}),this.props.onReset?.()};handleDismiss=()=>{this.setState(t=>({...t,dismissed:!0})),this.props.onDismiss?.()};render(){return this.state.dismissed?this.props.children:this.state.hasError&&this.state.error?this.props.fallback?this.props.fallback({error:this.state.error,reset:this.handleReset}):I(_n,{error:this.state.error,reset:this.handleReset,dismiss:this.props.onDismiss?this.handleDismiss:void 0,retryLabel:this.props.retryLabel}):this.props.children}};import{createContext as so,useContext as io,useMemo as ht,useState as yt,useCallback as Se,useEffect as lo}from"react";import{useAccount as Ct,useWallet as co,useChain as uo,useEmbeddedWallet as mo,useDisconnect as Nt,useBalance as po}from"@naculus/connect-appkit-react";import{createContext as to,useContext as no,useMemo as oo}from"react";import{Web3ConnectProvider as ro}from"@naculus/connect-appkit-react";import{createContext as jn,useContext as qn,useMemo as Re,useEffect as ke,useCallback as Gn,useState as Te}from"react";var ce={primary:{name:"--primary",fallback:"221.2 83.2% 53.3%"},"primary-foreground":{name:"--primary-foreground",fallback:"210 40% 98%"},background:{name:"--background",fallback:"0 0% 100%"},foreground:{name:"--foreground",fallback:"222.2 84% 4.9%"},card:{name:"--card",fallback:"0 0% 100%"},"card-foreground":{name:"--card-foreground",fallback:"222.2 84% 4.9%"},popover:{name:"--popover",fallback:"0 0% 100%"},"popover-foreground":{name:"--popover-foreground",fallback:"222.2 84% 4.9%"},secondary:{name:"--secondary",fallback:"210 40% 96.1%"},"secondary-foreground":{name:"--secondary-foreground",fallback:"222.2 47.4% 11.2%"},muted:{name:"--muted",fallback:"210 40% 96.1%"},"muted-foreground":{name:"--muted-foreground",fallback:"215.4 16.3% 46.9%"},accent:{name:"--accent",fallback:"210 40% 96.1%"},"accent-foreground":{name:"--accent-foreground",fallback:"222.2 47.4% 11.2%"},destructive:{name:"--destructive",fallback:"0 84.2% 60.2%"},border:{name:"--border",fallback:"214.3 31.8% 91.4%"},input:{name:"--input",fallback:"214.3 31.8% 91.4%"},ring:{name:"--ring",fallback:"221.2 83.2% 53.3%"},radius:{name:"--radius",fallback:"0.5rem"}},Fn=new Map;function Qe(){Fn.clear()}import{jsx as Zn,jsxs as eo}from"react/jsx-runtime";var vt=jn({theme:{},isDark:!1,setTheme:()=>{},toggleDarkMode:()=>{}});function Xn(e){let t=[];for(let[n,o]of Object.entries(e)){let r=ce[n];r&&o&&t.push(" "+r.name+": "+o+";")}return t.length===0?"":`:root {
|
|
2
|
-
|
|
1
|
+
var Vr=Object.create;var Cn=Object.defineProperty;var Hr=Object.getOwnPropertyDescriptor;var Ur=Object.getOwnPropertyNames;var Or=Object.getPrototypeOf,_r=Object.prototype.hasOwnProperty;var E=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Fr=(t,e,n,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Ur(e))!_r.call(t,r)&&r!==n&&Cn(t,r,{get:()=>e[r],enumerable:!(o=Hr(e,r))||o.enumerable});return t};var Kr=(t,e,n)=>(n=t!=null?Vr(Or(t)):{},Fr(e||!t||!t.__esModule?Cn(n,"default",{value:t,enumerable:!0}):n,t));var Dn=E((wc,An)=>{"use strict";An.exports=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}});var ue=E(xe=>{"use strict";var Dt,gs=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];xe.getSymbolSize=function(e){if(!e)throw new Error('"version" cannot be null or undefined');if(e<1||e>40)throw new Error('"version" should be in range from 1 to 40');return e*4+17};xe.getSymbolTotalCodewords=function(e){return gs[e]};xe.getBCHDigit=function(t){let e=0;for(;t!==0;)e++,t>>>=1;return e};xe.setToSJISFunction=function(e){if(typeof e!="function")throw new Error('"toSJISFunc" is not a valid function.');Dt=e};xe.isKanjiModeEnabled=function(){return typeof Dt<"u"};xe.toSJIS=function(e){return Dt(e)}});var it=E(ne=>{"use strict";ne.L={bit:1};ne.M={bit:0};ne.Q={bit:3};ne.H={bit:2};function hs(t){if(typeof t!="string")throw new Error("Param is not a string");switch(t.toLowerCase()){case"l":case"low":return ne.L;case"m":case"medium":return ne.M;case"q":case"quartile":return ne.Q;case"h":case"high":return ne.H;default:throw new Error("Unknown EC Level: "+t)}}ne.isValid=function(e){return e&&typeof e.bit<"u"&&e.bit>=0&&e.bit<4};ne.from=function(e,n){if(ne.isValid(e))return e;try{return hs(e)}catch{return n}}});var Ln=E((Rc,In)=>{"use strict";function Mn(){this.buffer=[],this.length=0}Mn.prototype={get:function(t){let e=Math.floor(t/8);return(this.buffer[e]>>>7-t%8&1)===1},put:function(t,e){for(let n=0;n<e;n++)this.putBit((t>>>e-n-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(t){let e=Math.floor(this.length/8);this.buffer.length<=e&&this.buffer.push(0),t&&(this.buffer[e]|=128>>>this.length%8),this.length++}};In.exports=Mn});var Wn=E((Sc,zn)=>{"use strict";function _e(t){if(!t||t<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=t,this.data=new Uint8Array(t*t),this.reservedBit=new Uint8Array(t*t)}_e.prototype.set=function(t,e,n,o){let r=t*this.size+e;this.data[r]=n,o&&(this.reservedBit[r]=!0)};_e.prototype.get=function(t,e){return this.data[t*this.size+e]};_e.prototype.xor=function(t,e,n){this.data[t*this.size+e]^=n};_e.prototype.isReserved=function(t,e){return this.reservedBit[t*this.size+e]};zn.exports=_e});var Vn=E(lt=>{"use strict";var bs=ue().getSymbolSize;lt.getRowColCoords=function(e){if(e===1)return[];let n=Math.floor(e/7)+2,o=bs(e),r=o===145?26:Math.ceil((o-13)/(2*n-2))*2,s=[o-7];for(let a=1;a<n-1;a++)s[a]=s[a-1]-r;return s.push(6),s.reverse()};lt.getPositions=function(e){let n=[],o=lt.getRowColCoords(e),r=o.length;for(let s=0;s<r;s++)for(let a=0;a<r;a++)s===0&&a===0||s===0&&a===r-1||s===r-1&&a===0||n.push([o[s],o[a]]);return n}});var On=E(Un=>{"use strict";var ys=ue().getSymbolSize,Hn=7;Un.getPositions=function(e){let n=ys(e);return[[0,0],[n-Hn,0],[0,n-Hn]]}});var _n=E(I=>{"use strict";I.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var ve={N1:3,N2:3,N3:40,N4:10};I.isValid=function(e){return e!=null&&e!==""&&!isNaN(e)&&e>=0&&e<=7};I.from=function(e){return I.isValid(e)?parseInt(e,10):void 0};I.getPenaltyN1=function(e){let n=e.size,o=0,r=0,s=0,a=null,i=null;for(let l=0;l<n;l++){r=s=0,a=i=null;for(let c=0;c<n;c++){let u=e.get(l,c);u===a?r++:(r>=5&&(o+=ve.N1+(r-5)),a=u,r=1),u=e.get(c,l),u===i?s++:(s>=5&&(o+=ve.N1+(s-5)),i=u,s=1)}r>=5&&(o+=ve.N1+(r-5)),s>=5&&(o+=ve.N1+(s-5))}return o};I.getPenaltyN2=function(e){let n=e.size,o=0;for(let r=0;r<n-1;r++)for(let s=0;s<n-1;s++){let a=e.get(r,s)+e.get(r,s+1)+e.get(r+1,s)+e.get(r+1,s+1);(a===4||a===0)&&o++}return o*ve.N2};I.getPenaltyN3=function(e){let n=e.size,o=0,r=0,s=0;for(let a=0;a<n;a++){r=s=0;for(let i=0;i<n;i++)r=r<<1&2047|e.get(a,i),i>=10&&(r===1488||r===93)&&o++,s=s<<1&2047|e.get(i,a),i>=10&&(s===1488||s===93)&&o++}return o*ve.N3};I.getPenaltyN4=function(e){let n=0,o=e.data.length;for(let s=0;s<o;s++)n+=e.data[s];return Math.abs(Math.ceil(n*100/o/5)-10)*ve.N4};function xs(t,e,n){switch(t){case I.Patterns.PATTERN000:return(e+n)%2===0;case I.Patterns.PATTERN001:return e%2===0;case I.Patterns.PATTERN010:return n%3===0;case I.Patterns.PATTERN011:return(e+n)%3===0;case I.Patterns.PATTERN100:return(Math.floor(e/2)+Math.floor(n/3))%2===0;case I.Patterns.PATTERN101:return e*n%2+e*n%3===0;case I.Patterns.PATTERN110:return(e*n%2+e*n%3)%2===0;case I.Patterns.PATTERN111:return(e*n%3+(e+n)%2)%2===0;default:throw new Error("bad maskPattern:"+t)}}I.applyMask=function(e,n){let o=n.size;for(let r=0;r<o;r++)for(let s=0;s<o;s++)n.isReserved(s,r)||n.xor(s,r,xs(e,s,r))};I.getBestMask=function(e,n){let o=Object.keys(I.Patterns).length,r=0,s=1/0;for(let a=0;a<o;a++){n(a),I.applyMask(a,e);let i=I.getPenaltyN1(e)+I.getPenaltyN2(e)+I.getPenaltyN3(e)+I.getPenaltyN4(e);I.applyMask(a,e),i<s&&(s=i,r=a)}return r}});var It=E(Mt=>{"use strict";var me=it(),ct=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],dt=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];Mt.getBlocksCount=function(e,n){switch(n){case me.L:return ct[(e-1)*4+0];case me.M:return ct[(e-1)*4+1];case me.Q:return ct[(e-1)*4+2];case me.H:return ct[(e-1)*4+3];default:return}};Mt.getTotalCodewordsCount=function(e,n){switch(n){case me.L:return dt[(e-1)*4+0];case me.M:return dt[(e-1)*4+1];case me.Q:return dt[(e-1)*4+2];case me.H:return dt[(e-1)*4+3];default:return}}});var Fn=E(mt=>{"use strict";var Fe=new Uint8Array(512),ut=new Uint8Array(256);(function(){let e=1;for(let n=0;n<255;n++)Fe[n]=e,ut[e]=n,e<<=1,e&256&&(e^=285);for(let n=255;n<512;n++)Fe[n]=Fe[n-255]})();mt.log=function(e){if(e<1)throw new Error("log("+e+")");return ut[e]};mt.exp=function(e){return Fe[e]};mt.mul=function(e,n){return e===0||n===0?0:Fe[ut[e]+ut[n]]}});var Kn=E(Ke=>{"use strict";var Lt=Fn();Ke.mul=function(e,n){let o=new Uint8Array(e.length+n.length-1);for(let r=0;r<e.length;r++)for(let s=0;s<n.length;s++)o[r+s]^=Lt.mul(e[r],n[s]);return o};Ke.mod=function(e,n){let o=new Uint8Array(e);for(;o.length-n.length>=0;){let r=o[0];for(let a=0;a<n.length;a++)o[a]^=Lt.mul(n[a],r);let s=0;for(;s<o.length&&o[s]===0;)s++;o=o.slice(s)}return o};Ke.generateECPolynomial=function(e){let n=new Uint8Array([1]);for(let o=0;o<e;o++)n=Ke.mul(n,new Uint8Array([1,Lt.exp(o)]));return n}});var Qn=E((Mc,jn)=>{"use strict";var qn=Kn();function zt(t){this.genPoly=void 0,this.degree=t,this.degree&&this.initialize(this.degree)}zt.prototype.initialize=function(e){this.degree=e,this.genPoly=qn.generateECPolynomial(this.degree)};zt.prototype.encode=function(e){if(!this.genPoly)throw new Error("Encoder not initialized");let n=new Uint8Array(e.length+this.degree);n.set(e);let o=qn.mod(n,this.genPoly),r=this.degree-o.length;if(r>0){let s=new Uint8Array(this.degree);return s.set(o,r),s}return o};jn.exports=zt});var Wt=E($n=>{"use strict";$n.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}});var Vt=E(le=>{"use strict";var Gn="[0-9]+",vs="[A-Z $%*+\\-./:]+",qe="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";qe=qe.replace(/u/g,"\\u");var Cs="(?:(?![A-Z0-9 $%*+\\-./:]|"+qe+`)(?:.|[\r
|
|
2
|
+
]))+`;le.KANJI=new RegExp(qe,"g");le.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g");le.BYTE=new RegExp(Cs,"g");le.NUMERIC=new RegExp(Gn,"g");le.ALPHANUMERIC=new RegExp(vs,"g");var ws=new RegExp("^"+qe+"$"),Ns=new RegExp("^"+Gn+"$"),ks=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");le.testKanji=function(e){return ws.test(e)};le.testNumeric=function(e){return Ns.test(e)};le.testAlphanumeric=function(e){return ks.test(e)}});var pe=E(V=>{"use strict";var Rs=Wt(),Ht=Vt();V.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]};V.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]};V.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]};V.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]};V.MIXED={bit:-1};V.getCharCountIndicator=function(e,n){if(!e.ccBits)throw new Error("Invalid mode: "+e);if(!Rs.isValid(n))throw new Error("Invalid version: "+n);return n>=1&&n<10?e.ccBits[0]:n<27?e.ccBits[1]:e.ccBits[2]};V.getBestModeForData=function(e){return Ht.testNumeric(e)?V.NUMERIC:Ht.testAlphanumeric(e)?V.ALPHANUMERIC:Ht.testKanji(e)?V.KANJI:V.BYTE};V.toString=function(e){if(e&&e.id)return e.id;throw new Error("Invalid mode")};V.isValid=function(e){return e&&e.bit&&e.ccBits};function Ss(t){if(typeof t!="string")throw new Error("Param is not a string");switch(t.toLowerCase()){case"numeric":return V.NUMERIC;case"alphanumeric":return V.ALPHANUMERIC;case"kanji":return V.KANJI;case"byte":return V.BYTE;default:throw new Error("Unknown mode: "+t)}}V.from=function(e,n){if(V.isValid(e))return e;try{return Ss(e)}catch{return n}}});var eo=E(Ce=>{"use strict";var pt=ue(),Ts=It(),Yn=it(),fe=pe(),Ut=Wt(),Xn=7973,Jn=pt.getBCHDigit(Xn);function Ps(t,e,n){for(let o=1;o<=40;o++)if(e<=Ce.getCapacity(o,n,t))return o}function Zn(t,e){return fe.getCharCountIndicator(t,e)+4}function Bs(t,e){let n=0;return t.forEach(function(o){let r=Zn(o.mode,e);n+=r+o.getBitsLength()}),n}function Es(t,e){for(let n=1;n<=40;n++)if(Bs(t,n)<=Ce.getCapacity(n,e,fe.MIXED))return n}Ce.from=function(e,n){return Ut.isValid(e)?parseInt(e,10):n};Ce.getCapacity=function(e,n,o){if(!Ut.isValid(e))throw new Error("Invalid QR Code version");typeof o>"u"&&(o=fe.BYTE);let r=pt.getSymbolTotalCodewords(e),s=Ts.getTotalCodewordsCount(e,n),a=(r-s)*8;if(o===fe.MIXED)return a;let i=a-Zn(o,e);switch(o){case fe.NUMERIC:return Math.floor(i/10*3);case fe.ALPHANUMERIC:return Math.floor(i/11*2);case fe.KANJI:return Math.floor(i/13);case fe.BYTE:default:return Math.floor(i/8)}};Ce.getBestVersionForData=function(e,n){let o,r=Yn.from(n,Yn.M);if(Array.isArray(e)){if(e.length>1)return Es(e,r);if(e.length===0)return 1;o=e[0]}else o=e;return Ps(o.mode,o.getLength(),r)};Ce.getEncodedBits=function(e){if(!Ut.isValid(e)||e<7)throw new Error("Invalid QR Code version");let n=e<<12;for(;pt.getBCHDigit(n)-Jn>=0;)n^=Xn<<pt.getBCHDigit(n)-Jn;return e<<12|n}});var ro=E(oo=>{"use strict";var Ot=ue(),no=1335,As=21522,to=Ot.getBCHDigit(no);oo.getEncodedBits=function(e,n){let o=e.bit<<3|n,r=o<<10;for(;Ot.getBCHDigit(r)-to>=0;)r^=no<<Ot.getBCHDigit(r)-to;return(o<<10|r)^As}});var ao=E((Hc,so)=>{"use strict";var Ds=pe();function Ee(t){this.mode=Ds.NUMERIC,this.data=t.toString()}Ee.getBitsLength=function(e){return 10*Math.floor(e/3)+(e%3?e%3*3+1:0)};Ee.prototype.getLength=function(){return this.data.length};Ee.prototype.getBitsLength=function(){return Ee.getBitsLength(this.data.length)};Ee.prototype.write=function(e){let n,o,r;for(n=0;n+3<=this.data.length;n+=3)o=this.data.substr(n,3),r=parseInt(o,10),e.put(r,10);let s=this.data.length-n;s>0&&(o=this.data.substr(n),r=parseInt(o,10),e.put(r,s*3+1))};so.exports=Ee});var lo=E((Uc,io)=>{"use strict";var Ms=pe(),_t=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function Ae(t){this.mode=Ms.ALPHANUMERIC,this.data=t}Ae.getBitsLength=function(e){return 11*Math.floor(e/2)+6*(e%2)};Ae.prototype.getLength=function(){return this.data.length};Ae.prototype.getBitsLength=function(){return Ae.getBitsLength(this.data.length)};Ae.prototype.write=function(e){let n;for(n=0;n+2<=this.data.length;n+=2){let o=_t.indexOf(this.data[n])*45;o+=_t.indexOf(this.data[n+1]),e.put(o,11)}this.data.length%2&&e.put(_t.indexOf(this.data[n]),6)};io.exports=Ae});var uo=E((Oc,co)=>{"use strict";var Is=pe();function De(t){this.mode=Is.BYTE,typeof t=="string"?this.data=new TextEncoder().encode(t):this.data=new Uint8Array(t)}De.getBitsLength=function(e){return e*8};De.prototype.getLength=function(){return this.data.length};De.prototype.getBitsLength=function(){return De.getBitsLength(this.data.length)};De.prototype.write=function(t){for(let e=0,n=this.data.length;e<n;e++)t.put(this.data[e],8)};co.exports=De});var po=E((_c,mo)=>{"use strict";var Ls=pe(),zs=ue();function Me(t){this.mode=Ls.KANJI,this.data=t}Me.getBitsLength=function(e){return e*13};Me.prototype.getLength=function(){return this.data.length};Me.prototype.getBitsLength=function(){return Me.getBitsLength(this.data.length)};Me.prototype.write=function(t){let e;for(e=0;e<this.data.length;e++){let n=zs.toSJIS(this.data[e]);if(n>=33088&&n<=40956)n-=33088;else if(n>=57408&&n<=60351)n-=49472;else throw new Error("Invalid SJIS character: "+this.data[e]+`
|
|
3
|
+
Make sure your charset is UTF-8`);n=(n>>>8&255)*192+(n&255),t.put(n,13)}};mo.exports=Me});var fo=E((Fc,Ft)=>{"use strict";var je={single_source_shortest_paths:function(t,e,n){var o={},r={};r[e]=0;var s=je.PriorityQueue.make();s.push(e,0);for(var a,i,l,c,u,d,p,g,b;!s.empty();){a=s.pop(),i=a.value,c=a.cost,u=t[i]||{};for(l in u)u.hasOwnProperty(l)&&(d=u[l],p=c+d,g=r[l],b=typeof r[l]>"u",(b||g>p)&&(r[l]=p,s.push(l,p),o[l]=i))}if(typeof n<"u"&&typeof r[n]>"u"){var f=["Could not find a path from ",e," to ",n,"."].join("");throw new Error(f)}return o},extract_shortest_path_from_predecessor_list:function(t,e){for(var n=[],o=e,r;o;)n.push(o),r=t[o],o=t[o];return n.reverse(),n},find_path:function(t,e,n){var o=je.single_source_shortest_paths(t,e,n);return je.extract_shortest_path_from_predecessor_list(o,n)},PriorityQueue:{make:function(t){var e=je.PriorityQueue,n={},o;t=t||{};for(o in e)e.hasOwnProperty(o)&&(n[o]=e[o]);return n.queue=[],n.sorter=t.sorter||e.default_sorter,n},default_sorter:function(t,e){return t.cost-e.cost},push:function(t,e){var n={value:t,cost:e};this.queue.push(n),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};typeof Ft<"u"&&(Ft.exports=je)});var wo=E(Ie=>{"use strict";var P=pe(),bo=ao(),yo=lo(),xo=uo(),vo=po(),Qe=Vt(),ft=ue(),Ws=fo();function go(t){return unescape(encodeURIComponent(t)).length}function $e(t,e,n){let o=[],r;for(;(r=t.exec(n))!==null;)o.push({data:r[0],index:r.index,mode:e,length:r[0].length});return o}function Co(t){let e=$e(Qe.NUMERIC,P.NUMERIC,t),n=$e(Qe.ALPHANUMERIC,P.ALPHANUMERIC,t),o,r;return ft.isKanjiModeEnabled()?(o=$e(Qe.BYTE,P.BYTE,t),r=$e(Qe.KANJI,P.KANJI,t)):(o=$e(Qe.BYTE_KANJI,P.BYTE,t),r=[]),e.concat(n,o,r).sort(function(a,i){return a.index-i.index}).map(function(a){return{data:a.data,mode:a.mode,length:a.length}})}function Kt(t,e){switch(e){case P.NUMERIC:return bo.getBitsLength(t);case P.ALPHANUMERIC:return yo.getBitsLength(t);case P.KANJI:return vo.getBitsLength(t);case P.BYTE:return xo.getBitsLength(t)}}function Vs(t){return t.reduce(function(e,n){let o=e.length-1>=0?e[e.length-1]:null;return o&&o.mode===n.mode?(e[e.length-1].data+=n.data,e):(e.push(n),e)},[])}function Hs(t){let e=[];for(let n=0;n<t.length;n++){let o=t[n];switch(o.mode){case P.NUMERIC:e.push([o,{data:o.data,mode:P.ALPHANUMERIC,length:o.length},{data:o.data,mode:P.BYTE,length:o.length}]);break;case P.ALPHANUMERIC:e.push([o,{data:o.data,mode:P.BYTE,length:o.length}]);break;case P.KANJI:e.push([o,{data:o.data,mode:P.BYTE,length:go(o.data)}]);break;case P.BYTE:e.push([{data:o.data,mode:P.BYTE,length:go(o.data)}])}}return e}function Us(t,e){let n={},o={start:{}},r=["start"];for(let s=0;s<t.length;s++){let a=t[s],i=[];for(let l=0;l<a.length;l++){let c=a[l],u=""+s+l;i.push(u),n[u]={node:c,lastCount:0},o[u]={};for(let d=0;d<r.length;d++){let p=r[d];n[p]&&n[p].node.mode===c.mode?(o[p][u]=Kt(n[p].lastCount+c.length,c.mode)-Kt(n[p].lastCount,c.mode),n[p].lastCount+=c.length):(n[p]&&(n[p].lastCount=c.length),o[p][u]=Kt(c.length,c.mode)+4+P.getCharCountIndicator(c.mode,e))}}r=i}for(let s=0;s<r.length;s++)o[r[s]].end=0;return{map:o,table:n}}function ho(t,e){let n,o=P.getBestModeForData(t);if(n=P.from(e,o),n!==P.BYTE&&n.bit<o.bit)throw new Error('"'+t+'" cannot be encoded with mode '+P.toString(n)+`.
|
|
4
|
+
Suggested mode is: `+P.toString(o));switch(n===P.KANJI&&!ft.isKanjiModeEnabled()&&(n=P.BYTE),n){case P.NUMERIC:return new bo(t);case P.ALPHANUMERIC:return new yo(t);case P.KANJI:return new vo(t);case P.BYTE:return new xo(t)}}Ie.fromArray=function(e){return e.reduce(function(n,o){return typeof o=="string"?n.push(ho(o,null)):o.data&&n.push(ho(o.data,o.mode)),n},[])};Ie.fromString=function(e,n){let o=Co(e,ft.isKanjiModeEnabled()),r=Hs(o),s=Us(r,n),a=Ws.find_path(s.map,"start","end"),i=[];for(let l=1;l<a.length-1;l++)i.push(s.table[a[l]].node);return Ie.fromArray(Vs(i))};Ie.rawSplit=function(e){return Ie.fromArray(Co(e,ft.isKanjiModeEnabled()))}});var ko=E(No=>{"use strict";var ht=ue(),qt=it(),Os=Ln(),_s=Wn(),Fs=Vn(),Ks=On(),$t=_n(),Gt=It(),qs=Qn(),gt=eo(),js=ro(),Qs=pe(),jt=wo();function $s(t,e){let n=t.size,o=Ks.getPositions(e);for(let r=0;r<o.length;r++){let s=o[r][0],a=o[r][1];for(let i=-1;i<=7;i++)if(!(s+i<=-1||n<=s+i))for(let l=-1;l<=7;l++)a+l<=-1||n<=a+l||(i>=0&&i<=6&&(l===0||l===6)||l>=0&&l<=6&&(i===0||i===6)||i>=2&&i<=4&&l>=2&&l<=4?t.set(s+i,a+l,!0,!0):t.set(s+i,a+l,!1,!0))}}function Gs(t){let e=t.size;for(let n=8;n<e-8;n++){let o=n%2===0;t.set(n,6,o,!0),t.set(6,n,o,!0)}}function Ys(t,e){let n=Fs.getPositions(e);for(let o=0;o<n.length;o++){let r=n[o][0],s=n[o][1];for(let a=-2;a<=2;a++)for(let i=-2;i<=2;i++)a===-2||a===2||i===-2||i===2||a===0&&i===0?t.set(r+a,s+i,!0,!0):t.set(r+a,s+i,!1,!0)}}function Js(t,e){let n=t.size,o=gt.getEncodedBits(e),r,s,a;for(let i=0;i<18;i++)r=Math.floor(i/3),s=i%3+n-8-3,a=(o>>i&1)===1,t.set(r,s,a,!0),t.set(s,r,a,!0)}function Qt(t,e,n){let o=t.size,r=js.getEncodedBits(e,n),s,a;for(s=0;s<15;s++)a=(r>>s&1)===1,s<6?t.set(s,8,a,!0):s<8?t.set(s+1,8,a,!0):t.set(o-15+s,8,a,!0),s<8?t.set(8,o-s-1,a,!0):s<9?t.set(8,15-s-1+1,a,!0):t.set(8,15-s-1,a,!0);t.set(o-8,8,1,!0)}function Xs(t,e){let n=t.size,o=-1,r=n-1,s=7,a=0;for(let i=n-1;i>0;i-=2)for(i===6&&i--;;){for(let l=0;l<2;l++)if(!t.isReserved(r,i-l)){let c=!1;a<e.length&&(c=(e[a]>>>s&1)===1),t.set(r,i-l,c),s--,s===-1&&(a++,s=7)}if(r+=o,r<0||n<=r){r-=o,o=-o;break}}}function Zs(t,e,n){let o=new Os;n.forEach(function(l){o.put(l.mode.bit,4),o.put(l.getLength(),Qs.getCharCountIndicator(l.mode,t)),l.write(o)});let r=ht.getSymbolTotalCodewords(t),s=Gt.getTotalCodewordsCount(t,e),a=(r-s)*8;for(o.getLengthInBits()+4<=a&&o.put(0,4);o.getLengthInBits()%8!==0;)o.putBit(0);let i=(a-o.getLengthInBits())/8;for(let l=0;l<i;l++)o.put(l%2?17:236,8);return ea(o,t,e)}function ea(t,e,n){let o=ht.getSymbolTotalCodewords(e),r=Gt.getTotalCodewordsCount(e,n),s=o-r,a=Gt.getBlocksCount(e,n),i=o%a,l=a-i,c=Math.floor(o/a),u=Math.floor(s/a),d=u+1,p=c-u,g=new qs(p),b=0,f=new Array(a),h=new Array(a),N=0,m=new Uint8Array(t.buffer);for(let D=0;D<a;D++){let ae=D<l?u:d;f[D]=m.slice(b,b+ae),h[D]=g.encode(f[D]),b+=ae,N=Math.max(N,ae)}let x=new Uint8Array(o),T=0,S,O;for(S=0;S<N;S++)for(O=0;O<a;O++)S<f[O].length&&(x[T++]=f[O][S]);for(S=0;S<p;S++)for(O=0;O<a;O++)x[T++]=h[O][S];return x}function ta(t,e,n,o){let r;if(Array.isArray(t))r=jt.fromArray(t);else if(typeof t=="string"){let c=e;if(!c){let u=jt.rawSplit(t);c=gt.getBestVersionForData(u,n)}r=jt.fromString(t,c||40)}else throw new Error("Invalid data");let s=gt.getBestVersionForData(r,n);if(!s)throw new Error("The amount of data is too big to be stored in a QR Code");if(!e)e=s;else if(e<s)throw new Error(`
|
|
5
|
+
The chosen QR Code version cannot contain this amount of data.
|
|
6
|
+
Minimum version required to store current data is: `+s+`.
|
|
7
|
+
`);let a=Zs(e,n,r),i=ht.getSymbolSize(e),l=new _s(i);return $s(l,e),Gs(l),Ys(l,e),Qt(l,n,0),e>=7&&Js(l,e),Xs(l,a),isNaN(o)&&(o=$t.getBestMask(l,Qt.bind(null,l,n))),$t.applyMask(o,l),Qt(l,n,o),{modules:l,version:e,errorCorrectionLevel:n,maskPattern:o,segments:r}}No.create=function(e,n){if(typeof e>"u"||e==="")throw new Error("No input text");let o=qt.M,r,s;return typeof n<"u"&&(o=qt.from(n.errorCorrectionLevel,qt.M),r=gt.from(n.version),s=$t.from(n.maskPattern),n.toSJISFunc&&ht.setToSJISFunction(n.toSJISFunc)),ta(e,r,o,s)}});var Yt=E(we=>{"use strict";function Ro(t){if(typeof t=="number"&&(t=t.toString()),typeof t!="string")throw new Error("Color should be defined as hex string");let e=t.slice().replace("#","").split("");if(e.length<3||e.length===5||e.length>8)throw new Error("Invalid hex color: "+t);(e.length===3||e.length===4)&&(e=Array.prototype.concat.apply([],e.map(function(o){return[o,o]}))),e.length===6&&e.push("F","F");let n=parseInt(e.join(""),16);return{r:n>>24&255,g:n>>16&255,b:n>>8&255,a:n&255,hex:"#"+e.slice(0,6).join("")}}we.getOptions=function(e){e||(e={}),e.color||(e.color={});let n=typeof e.margin>"u"||e.margin===null||e.margin<0?4:e.margin,o=e.width&&e.width>=21?e.width:void 0,r=e.scale||4;return{width:o,scale:o?4:r,margin:n,color:{dark:Ro(e.color.dark||"#000000ff"),light:Ro(e.color.light||"#ffffffff")},type:e.type,rendererOpts:e.rendererOpts||{}}};we.getScale=function(e,n){return n.width&&n.width>=e+n.margin*2?n.width/(e+n.margin*2):n.scale};we.getImageWidth=function(e,n){let o=we.getScale(e,n);return Math.floor((e+n.margin*2)*o)};we.qrToImageData=function(e,n,o){let r=n.modules.size,s=n.modules.data,a=we.getScale(r,o),i=Math.floor((r+o.margin*2)*a),l=o.margin*a,c=[o.color.light,o.color.dark];for(let u=0;u<i;u++)for(let d=0;d<i;d++){let p=(u*i+d)*4,g=o.color.light;if(u>=l&&d>=l&&u<i-l&&d<i-l){let b=Math.floor((u-l)/a),f=Math.floor((d-l)/a);g=c[s[b*r+f]?1:0]}e[p++]=g.r,e[p++]=g.g,e[p++]=g.b,e[p]=g.a}}});var So=E(bt=>{"use strict";var Jt=Yt();function na(t,e,n){t.clearRect(0,0,e.width,e.height),e.style||(e.style={}),e.height=n,e.width=n,e.style.height=n+"px",e.style.width=n+"px"}function oa(){try{return document.createElement("canvas")}catch{throw new Error("You need to specify a canvas element")}}bt.render=function(e,n,o){let r=o,s=n;typeof r>"u"&&(!n||!n.getContext)&&(r=n,n=void 0),n||(s=oa()),r=Jt.getOptions(r);let a=Jt.getImageWidth(e.modules.size,r),i=s.getContext("2d"),l=i.createImageData(a,a);return Jt.qrToImageData(l.data,e,r),na(i,s,a),i.putImageData(l,0,0),s};bt.renderToDataURL=function(e,n,o){let r=o;typeof r>"u"&&(!n||!n.getContext)&&(r=n,n=void 0),r||(r={});let s=bt.render(e,n,r),a=r.type||"image/png",i=r.rendererOpts||{};return s.toDataURL(a,i.quality)}});var Bo=E(Po=>{"use strict";var ra=Yt();function To(t,e){let n=t.a/255,o=e+'="'+t.hex+'"';return n<1?o+" "+e+'-opacity="'+n.toFixed(2).slice(1)+'"':o}function Xt(t,e,n){let o=t+e;return typeof n<"u"&&(o+=" "+n),o}function sa(t,e,n){let o="",r=0,s=!1,a=0;for(let i=0;i<t.length;i++){let l=Math.floor(i%e),c=Math.floor(i/e);!l&&!s&&(s=!0),t[i]?(a++,i>0&&l>0&&t[i-1]||(o+=s?Xt("M",l+n,.5+c+n):Xt("m",r,0),r=0,s=!1),l+1<e&&t[i+1]||(o+=Xt("h",a),a=0)):r++}return o}Po.render=function(e,n,o){let r=ra.getOptions(n),s=e.modules.size,a=e.modules.data,i=s+r.margin*2,l=r.color.light.a?"<path "+To(r.color.light,"fill")+' d="M0 0h'+i+"v"+i+'H0z"/>':"",c="<path "+To(r.color.dark,"stroke")+' d="'+sa(a,s,r.margin)+'"/>',u='viewBox="0 0 '+i+" "+i+'"',p='<svg xmlns="http://www.w3.org/2000/svg" '+(r.width?'width="'+r.width+'" height="'+r.width+'" ':"")+u+' shape-rendering="crispEdges">'+l+c+`</svg>
|
|
8
|
+
`;return typeof o=="function"&&o(null,p),p}});var Ao=E(Ge=>{"use strict";var aa=Dn(),Zt=ko(),Eo=So(),ia=Bo();function en(t,e,n,o,r){let s=[].slice.call(arguments,1),a=s.length,i=typeof s[a-1]=="function";if(!i&&!aa())throw new Error("Callback required as last argument");if(i){if(a<2)throw new Error("Too few arguments provided");a===2?(r=n,n=e,e=o=void 0):a===3&&(e.getContext&&typeof r>"u"?(r=o,o=void 0):(r=o,o=n,n=e,e=void 0))}else{if(a<1)throw new Error("Too few arguments provided");return a===1?(n=e,e=o=void 0):a===2&&!e.getContext&&(o=n,n=e,e=void 0),new Promise(function(l,c){try{let u=Zt.create(n,o);l(t(u,e,o))}catch(u){c(u)}})}try{let l=Zt.create(n,o);r(null,t(l,e,o))}catch(l){r(l)}}Ge.create=Zt.create;Ge.toCanvas=en.bind(null,Eo.render);Ge.toDataURL=en.bind(null,Eo.renderToDataURL);Ge.toString=en.bind(null,function(t,e,n){return ia.render(t,n)})});import{useState as Pt,useEffect as es,useCallback as Rn,useRef as ts}from"react";import{AppkitConnectButton as ns}from"@naculus/connect-appkit-react";import{createContext as qr,useContext as Nn,useState as st,useCallback as Nt,useEffect as jr,useMemo as wn,useRef as kt}from"react";import{useWeb3 as Qr}from"@naculus/connect-appkit-react";import{jsx as Gr}from"react/jsx-runtime";var Rt=qr(null);function St({children:t}){let e=Qr(),[n,o]=st(null),[r,s]=st(!1),[a,i]=st("idle"),[l,c]=st(null),u=kt(0),d=kt(null);jr(()=>()=>{d.current&&clearTimeout(d.current)},[]);let p=Nt(()=>{u.current+=1,e.cancelPairing?.(),d.current&&(clearTimeout(d.current),d.current=null),o(null),s(!1),i("cancelled"),c(null)},[e]),g=kt(void 0);g.current=async()=>{if(!e.startPairing||!e.completePairing){c("WalletConnect pairing not available"),i("error");return}let m=++u.current,x=()=>u.current===m;i("loading"),c(null),s(!0);try{let T=await e.startPairing();if(!x())return;o(T),i("ready");try{if(await e.completePairing(),!x())return;d.current=setTimeout(()=>{d.current=null,x()&&(s(!1),o(null),i("idle"))},1e3)}catch(S){if(!x())return;i("error"),c(S instanceof Error?S.message:"Connection failed")}}catch(T){if(!x())return;i("error"),c(T instanceof Error?T.message:"Failed to generate QR code")}};let b=Nt(async()=>{await g.current?.()},[]),f=Nt(()=>{o(null),c(null),i("loading"),g.current?.()},[]),h=wn(()=>({qrUri:n,showQR:r,qrStatus:a,error:l}),[n,r,a,l]),N=wn(()=>({state:h,connectWalletConnect:b,cancelQR:p,retryQR:f}),[h,b,p,f]);return Gr(Rt.Provider,{value:N,children:t})}function $r(){let t=Nn(Rt);if(!t)throw new Error("useWalletConnect must be used within a WalletConnectProvider");return t}function Tt(){return Nn(Rt)}import{useState as kn,useEffect as Yr,useRef as Jr}from"react";function Ue(){let[t,e]=kn([]),[n,o]=kn(!0),r=Jr(new Set);return Yr(()=>{r.current.clear(),o(!0);let s=i=>{let l=i.detail,c=l?.info,u=l?.provider;!c?.rdns||r.current.has(c.rdns)||(r.current.add(c.rdns),e(d=>d.find(p=>p.id===c.rdns)?d:[...d,{id:c.rdns,name:c.name||c.rdns,icon:c.icon||"",rdns:c.rdns,provider:u}]))};window.addEventListener("eip6963:announceProvider",s),window.dispatchEvent(new Event("eip6963:requestProvider"));let a=setTimeout(()=>o(!1),500);return()=>{window.removeEventListener("eip6963:announceProvider",s),clearTimeout(a)}},[]),{wallets:t,isDetecting:n,hasWallets:t.length>0}}import{useState as Xr,useEffect as Zr}from"react";function Oe(){let[t,e]=Xr(!1);return Zr(()=>{if(typeof navigator>"u"||typeof window>"u")return;let n=navigator.userAgent.toLowerCase();e(/(iphone|ipad|ipod|android|mobile)/i.test(n))},[]),t}import{jsx as Sn}from"react/jsx-runtime";function ye({className:t,isConnected:e,isConnecting:n,onConnect:o,onDisconnect:r,onMobileDeepLink:s,mobileWalletName:a,startPairing:i,completePairing:l,address:c,balance:u,balanceSymbol:d,tokenBalances:p,isBalanceLoading:g,explorerUrl:b,explorerLabel:f}){let h=Tt(),{wallets:N}=Ue(),m=Oe(),x=JSON.stringify(N.map(({id:_,name:re,icon:j,rdns:Te})=>({id:_,name:re,icon:j,rdns:Te}))),[T,S]=Pt(null),[O,D]=Pt(!1),[ae,q]=Pt(null),Z=ts({aborted:!1}),He=Rn(()=>{Z.current.aborted=!0,h?.cancelQR(),D(!1),S(null),q(null)},[h]);es(()=>{if(!h)return;let{qrStatus:_,qrUri:re,error:j}=h.state;_==="loading"?(D(!0),S(null),q(null)):_==="ready"&&re?(D(!1),S(re),q(null)):_==="error"?(D(!1),q(j)):(_==="idle"||_==="cancelled")&&(D(!1),S(null),q(null))},[h?.state?.qrStatus,h?.state?.qrUri,h?.state?.error]);let ie=Rn((_,re)=>{if(_==="walletconnect"){if(h){h.connectWalletConnect();return}if(i&&l){D(!0),q(null),Z.current.aborted=!1,i().then(j=>{Z.current.aborted||(S(j),D(!1),l().then(()=>{Z.current.aborted||S(null)}).catch(Te=>{Z.current.aborted||q(Te instanceof Error?Te.message:"Connection failed")}))}).catch(j=>{Z.current.aborted||(D(!1),q(j instanceof Error?j.message:"Connection failed"))});return}}o?.(_,()=>{},re)},[h,i,l,o]);return Sn("div",{className:t,children:Sn(ns,{connected:e??!1,connecting:n??!1,address:c??"",balance:u??null,balanceSymbol:d??"",isBalanceLoading:g??!1,tokenBalancesJson:JSON.stringify(p??[]),explorerUrl:b??"",explorerLabel:f??"",walletsJson:x,isMobile:m,mobileWalletName:a??"",qrUri:T,qrLoading:O,qrError:ae,onAppkitConnect:_=>{ie(_.detail.kind,_.detail.walletId)},onAppkitDisconnect:()=>r?.(),onAppkitStartPairing:()=>ie("walletconnect"),onAppkitRetry:()=>{Z.current.aborted=!0,q(null),S(null),ie("walletconnect")},onAppkitCancelPairing:He,onAppkitMobileDeepLink:()=>s?.(),onAppkitCopyAddress:_=>{navigator.clipboard?.writeText(_.detail).catch(()=>{})}})})}import{logger as Ja}from"@naculus/connect-core";import{useState as Xa,useRef as Za,useEffect as ei}from"react";import{useChain as ti,useWallet as ni}from"@naculus/connect-appkit-react";import{clsx as os}from"clsx";import{twMerge as rs}from"tailwind-merge";function y(...t){return rs(os(t))}var Tn='<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 0l-.26.97v28.15l.26.26 13.07-7.72L12 0z" fill="#8C8C8C"/><path d="M12 0L-.87 21.69l12.87 7.72V0z" fill="#3C3C3B"/><path d="M12 31.88l-.16.2v10.55l.16.47 13.08-18.42L12 31.88z" fill="#8C8C8C"/><path d="M12 42.9V31.88L-.87 24.68 12 42.9z" fill="#3C3C3B"/><path d="M12 28.41l13.07-7.72L12 14.09v14.32z" fill="#141414"/><path d="M-.87 20.69L12 28.41V14.09l-12.87 6.6z" fill="#393939"/></svg>',ss='<svg viewBox="0 0 24 22" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M15 12.3l-3.7 2.2-3.8-2.2V7.9L11.3 5.7 15 7.9v2.7l-2.2 1.3-1.5-.9v-2l1.5.9 2.2-1.3V7.9L11.3 4 6 7.9v6.3l5.3 3.1 5.3-3.1-1.6-2.8z" fill="#6C00F6"/></svg>',as='<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="12" r="12" fill="#F0B90B"/><path d="M12 4l2.7 1.6L14.7 7 12 5.4 9.3 7l-.7-.4L12 4zm4.7 2.7l-2.7 1.6V10l4 2.3v4.7L16 18.7v-4l-1.3-.7v4L12 20l-2.7-1.6v-4L8 14.7v4l-1.3-.7V12.3l4-2.3V8.3l-2.7-1.6.7-.4L12 8l2.7-1.7.7.4z" fill="white"/></svg>',is='<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 1.5c.3 0 .6.1.8.2l8.8 5.1c.5.3.9.9.9 1.5v10.2c0 .6-.3 1.2-.9 1.5l-8.8 5.1c-.3.2-.6.2-.8.2s-.6-.1-.8-.2l-8.8-5.1c-.5-.3-.9-.9-.9-1.5V8.3c0-.6.3-1.2.9-1.5l8.8-5.1c.3-.2.6-.2.8-.2z" fill="#213147"/><path d="M14.7 13.8l-1.2 3.2c0 .1 0 .2.1.3l2 5.5 2.3-1.3-2.8-7.6c-.1-.2-.3-.2-.4-.1z" fill="#12AAFF"/><path d="M16.3 8.5c0-.2-.3-.2-.4 0l-1.1 3.2c0 .1 0 .2.1.3l3.3 9 2.3-1.3-4.2-9.1v-.1z" fill="#12AAFF"/><path d="M12 3.5c.1 0 .2 0 .3.1l8.8 5.1c.1.1.2.2.2.3v10.2c0 .1-.1.2-.2.3l-8.8 5.1c-.1 0-.2.1-.3.1s-.2 0-.3-.1l-8.8-5.1c-.1-.1-.2-.2-.2-.3V9c0-.1.1-.2.2-.3l8.8-5.1c.1 0 .2-.1.3-.1z" fill="#9DCCED" fill-opacity="0.3"/><path d="M13.3 6.2h-2.2c-.2 0-.3.1-.4.3L5.9 19.6l2.3 1.3L13 6.5c0-.1-.1-.3-.2-.3h.4z" fill="white"/><path d="M15.2 6.2H13c-.2 0-.3.1-.4.3L8.1 21.4l2.3 1.3 6-16.4c0-.1-.1-.3-.2-.3v.2z" fill="white"/></svg>',ls='<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="12" r="12" fill="#FF0420"/><path d="M8.5 16c-.5 0-.9-.1-1.3-.3-.4-.2-.7-.5-1-.8-.3-.4-.4-.8-.4-1.3V10c0-.5.1-1 .4-1.4.3-.4.6-.7 1-.9.4-.2.8-.3 1.3-.3.4 0 .8.1 1.2.2.3.2.6.4.8.7l-1 1c-.2-.2-.4-.3-.6-.4-.2-.1-.5-.2-.8-.2-.3 0-.6.1-.9.2-.3.2-.5.4-.6.7-.1.3-.2.6-.2 1v3.5c0 .3.1.6.2.9.1.3.3.5.6.6.3.2.6.2.9.2.3 0 .6-.1.8-.2.2-.1.4-.3.6-.5l1 1c-.2.3-.5.5-.8.7-.4.2-.9.3-1.4.3z" fill="white"/><path d="M15.5 16c-.5 0-.9-.1-1.3-.3-.4-.2-.7-.5-1-.8-.2-.4-.4-.8-.4-1.3V10c0-.5.1-1 .4-1.4.2-.4.5-.7.9-.9.4-.2.8-.3 1.3-.3.5 0 1 .1 1.4.3.4.2.7.5.9.9.2.4.3.9.3 1.4v.7h-2.9v-1.1c0-.3-.1-.6-.2-.9-.1-.3-.3-.5-.5-.6-.2-.1-.5-.2-.8-.2-.3 0-.6.1-.8.2-.3.2-.5.4-.6.7-.1.3-.2.6-.2 1v3.5c0 .3.1.6.2.8.1.3.3.5.6.6.2.2.5.2.8.2.3 0 .6-.1.8-.2.2-.1.4-.3.5-.6.1-.3.2-.6.2-1v-1.1h2.9v.7c0 .5-.1 1-.3 1.4-.2.4-.5.7-.9.9-.4.2-.9.3-1.4.3z" fill="white"/></svg>',cs='<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="12" r="12" fill="#E84142"/><path d="M8.6 16.8H6.3c-.5 0-.8-.1-1-.3-.2-.2-.3-.5-.3-.8 0-.2 0-.4.1-.6l5.8-10.7c.2-.4.5-.7.8-.8.3-.1.5-.1.7 0 .2.1.5.3.7.8l1.2 2.1.1.2c.3.5.5.9.5 1.3.1.4.1.8 0 1.1-.1.4-.3.8-.6 1.3l-3 5.4c-.2.5-.5.8-.8 1-.4.2-.7.2-1.2.2z" fill="white"/><path d="M14.5 16.8h3.3c.5 0 .7-.1 1-.3.2-.2.3-.5.3-.8 0-.2-.1-.4-.3-.7l-1.7-3-.2-.3c-.2-.4-.4-.7-.6-.8-.2-.1-.4-.1-.6 0-.2.1-.4.3-.6.8l-1.6 3c-.2.4-.4.7-.4.9 0 .2.1.5.3.7.1.1.4.3.9.3z" fill="white"/></svg>',ds='<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="12" r="12" fill="#1969FF"/><path d="M11.3 3.8c.4-.2 1-.2 1.4 0l4.1 2.2c.2.1.4.3.4.5h0v10.9c0 .2-.1.4-.4.6l-4.1 2.2c-.4.2-1 .2-1.4 0l-4.1-2.2c-.3-.1-.4-.4-.4-.6V6.5c0-.2.1-.4.4-.5l4.1-2.2zm5.3 8.7l-3.9 2c-.4.2-1 .2-1.4 0l-3.9-2v4.8l3.9 2c.2.1.5.2.7.2.2 0 .5-.1.7-.2l3.9-2v-4.8z" fill="white"/></svg>',us={"eip155:1":Tn,"eip155:137":ss,"eip155:56":as,"eip155:42161":is,"eip155:10":ls,"eip155:43114":cs,"eip155:250":ds,"eip155:11155111":Tn};function at(t){return us[t]}import{createContext as qa,useContext as ja,useMemo as Qa}from"react";import{Wallet as ms}from"lucide-react";import{jsx as Pe,jsxs as Bt}from"react/jsx-runtime";function ps({children:t}){return Pe("div",{className:"flex h-8 w-8 items-center justify-center rounded-full bg-primary text-primary-foreground",children:t})}function Et({className:t,showAddress:e=!0,showBalance:n=!1,address:o,balance:r,balanceSymbol:s,onConnect:a}){let l=B().Button;if(!o)return Bt(l,{"aria-label":"Connect Wallet",onClick:a,className:t,children:[Pe(ms,{size:18,className:"shrink-0"}),"Connect Wallet"]});let c=o.includes(":")?o.split(":").pop():o,u=c.slice(0,6)+"..."+c.slice(-4),d=r!=null?parseFloat(r).toLocaleString(void 0,{maximumFractionDigits:4})+(s?` ${s}`:""):null;return Bt(l,{className:t,children:[Pe(ps,{children:"W"}),Bt("div",{className:"flex flex-col items-start gap-0",children:[e&&Pe("span",{className:"font-mono text-xs",children:u}),n&&d&&Pe("span",{className:"text-xs text-muted-foreground",children:d}),n&&!d&&r===null&&Pe("span",{className:"text-xs text-muted-foreground",children:"Loading..."})]})]})}import{useRef as Do,useEffect as Mo,useState as Io,useCallback as la}from"react";import{Smartphone as ca,RefreshCw as Lo,CheckCircle2 as da,AlertCircle as zo,Loader2 as ua}from"lucide-react";import{useEffect as Pn}from"react";import{X as fs}from"lucide-react";import{jsx as de,jsxs as At}from"react/jsx-runtime";function Be({open:t,onClose:e,children:n,closable:o,className:r}){return Pn(()=>{if(!t)return;let s=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=s}},[t]),Pn(()=>{if(!t||!e)return;let s=a=>{a.key==="Escape"&&e()};return window.addEventListener("keydown",s),()=>window.removeEventListener("keydown",s)},[t,e]),t?At("div",{className:y("fixed inset-0 z-50 flex items-center justify-center p-4",r),style:{position:"fixed",inset:0,zIndex:50,display:"flex",alignItems:"center",justifyContent:"center",padding:"1rem"},children:[de("div",{className:"absolute inset-0 bg-black/80","aria-hidden":"true",onClick:e,style:{position:"absolute",inset:0,background:"rgb(0 0 0 / 0.8)"}}),At("div",{role:"dialog","aria-modal":"true",className:"relative z-10 w-full max-w-sm rounded-xl border bg-card text-card-foreground shadow-2xl max-h-[85vh] overflow-y-auto p-6",style:{position:"relative",zIndex:10,width:"100%",maxWidth:"24rem",maxHeight:"85vh",overflowY:"auto",borderRadius:"0.75rem",padding:"1.5rem",background:"hsl(var(--card, 0 0% 100%))",color:"hsl(var(--card-foreground, 222.2 84% 4.9%))",boxShadow:"0 25px 50px -12px rgb(0 0 0 / 0.4)"},children:[o&&e&&de("button",{onClick:e,type:"button","aria-label":"Close modal",className:"absolute right-4 top-4 z-20 rounded-md p-1 text-muted-foreground hover:text-foreground",style:{position:"absolute",right:"1rem",top:"1rem",zIndex:20,border:0,background:"transparent",cursor:"pointer",color:"inherit"},children:de("svg",{className:"h-4 w-4",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:de("path",{d:"M18 6 6 18M6 6l12 12","data-testid":"x-icon"})})}),n]})]}):null}function Bn({title:t,onClose:e,showCloseButton:n=!0}){return At("div",{className:"flex items-center justify-between mb-4",children:[de("h2",{className:"text-lg font-semibold m-0",children:t}),n&&e&&de("button",{onClick:e,type:"button",className:"rounded-md p-1 text-muted-foreground hover:text-foreground transition-all duration-200","aria-label":"Close",children:de(fs,{size:16})})]})}function En({children:t,className:e=""}){return de("div",{className:y("flex flex-col gap-4",e),children:t})}import{jsx as H,jsxs as se}from"react/jsx-runtime";async function ma(t,e){let n=await Promise.resolve().then(()=>Kr(Ao(),1)),r=(n.default??n).toCanvas??n.toCanvas;if(typeof r!="function")throw new Error("qrcode.toCanvas is unavailable");return new Promise((s,a)=>{r(t,e,{width:280,margin:2},i=>{i?a(i):s()})})}function Ye({uri:t,open:e,onClose:n,onDeepLink:o,onRetry:r,status:s="pending",showDeepLink:a,timeoutMs:i=300*1e3,title:l="Scan with WalletConnect",description:c="Open your wallet app and scan this QR code to connect.",className:u}){let d=Do(null),[p,g]=Io(null),[b,f]=Io(0),h=Oe(),N=B(),m=N.Button,x=a??h,T=Do(null);Mo(()=>{!e||!t||!d.current||(g(null),ma(d.current,t).catch(j=>{g(j instanceof Error?j.message:"Unable to render QR code")}))},[e,t]),Mo(()=>{if(!e||s!=="pending"){T.current&&(clearInterval(T.current),T.current=null),f(0);return}let j=Date.now();return T.current=setInterval(()=>f(Date.now()-j),1e3),()=>{T.current&&clearInterval(T.current)}},[e,s,i]);let S=b>=i&&s==="pending",O=S||s==="expired"||s==="error",D=Math.max(0,Math.ceil((i-b)/1e3)),ae=Math.floor(D/60),q=D%60,Z=Math.min(b/i,1),He=la(()=>{t&&o&&o(t)},[t,o]),ie=t&&!S&&s==="pending"?p?se("div",{className:"w-[280px] h-[280px] flex flex-col items-center justify-center bg-muted rounded-lg gap-2",children:[H(zo,{size:24,className:"text-muted-foreground"}),H("span",{className:"text-sm text-muted-foreground",children:"Failed to render QR code"})]}):H("canvas",{ref:d,width:280,height:280,role:"img","aria-label":"WalletConnect pairing QR code",className:"rounded-lg border border-border"}):se("div",{className:"flex flex-col items-center justify-center gap-3 bg-muted rounded-lg w-[280px] h-[280px]",children:[s==="scanned"?H(da,{size:48,className:"text-[hsl(var(--primary))]"}):H(zo,{size:48,className:"text-destructive"}),H("span",{className:"text-sm text-muted-foreground","data-testid":"status-label",children:s==="scanned"?"QR code scanned! Connecting...":S||s==="expired"?"Connection timed out.":"Something went wrong. Try again."})]}),re=N.Modal??Be;return H(re,{open:e,onClose:n,closable:!0,title:l,className:u,children:se("div",{className:"p-6",children:[se("div",{className:"text-center mb-5",children:[H("div",{className:"flex justify-center mb-3",children:s==="pending"&&!S&&H(ua,{size:20,className:"animate-spin text-primary","data-testid":"loader-icon-inline"})}),H("h3",{className:"text-lg font-semibold m-0 text-foreground",children:l}),c&&H("p",{className:"text-sm text-muted-foreground mt-1.5 mb-0",children:c})]}),H("div",{className:"flex justify-center mb-4",children:ie}),s==="pending"&&!S&&se("div",{className:"mb-3",children:[H("div",{className:"h-1 bg-muted rounded-full overflow-hidden",role:"progressbar","aria-valuenow":Math.round((1-Z)*100),"aria-valuemin":0,"aria-valuemax":100,children:H("div",{className:"h-full bg-primary rounded-full transition-all duration-1000",style:{width:`${(1-Z)*100}%`}})}),se("p",{"data-testid":"countdown",className:"text-xs text-muted-foreground text-center mt-1.5 mb-0",children:["Expires in ",ae,":",q.toString().padStart(2,"0")]})]}),se("div",{className:"flex flex-col gap-2",children:[x&&t&&s==="pending"&&!S&&se("button",{onClick:He,className:"inline-flex items-center justify-center gap-2 w-full rounded-lg border border-input bg-card px-4 py-2.5 text-sm font-medium text-foreground hover:bg-accent hover:text-accent-foreground transition-all duration-200 cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",children:[H(ca,{size:16})," Open in Wallet App"]}),O&&r&&(m?se(m,{onClick:r,variant:"default",size:"default",className:"w-full",children:[H(Lo,{size:16})," Generate New QR Code"]}):se("button",{onClick:r,className:"inline-flex items-center justify-center gap-2 w-full rounded-lg bg-primary text-primary-foreground px-4 py-2.5 text-sm font-medium hover:bg-primary/90 transition-all duration-200 cursor-pointer border-0 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",children:[H(Lo,{size:16})," Generate New QR Code"]})),m?H(m,{onClick:n,variant:"outline",size:"default",className:"w-full",children:"Cancel"}):H("button",{onClick:n,className:"inline-flex items-center justify-center w-full rounded-lg border border-input bg-transparent px-4 py-2.5 text-sm text-muted-foreground hover:bg-accent hover:text-accent-foreground transition-all duration-200 cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",children:"Cancel"})]})]})})}import{useState as tn}from"react";import{LogIn as pa,Loader2 as fa,CheckCircle2 as on,AlertCircle as ga,X as ha,Copy as ba,Check as ya}from"lucide-react";import{Fragment as Wo,jsx as k,jsxs as F}from"react/jsx-runtime";function rn({className:t,isSignedIn:e=!1,isSigningIn:n=!1,result:o=null,error:r=null,onSignIn:s,onClearError:a,children:i}){let[l,c]=tn(!1),[u,d]=tn(!1),[p,g]=tn(!1),b=B(),f=b.Button,h=b.Dialog,N=b.DialogContent,m=b.DialogHeader,x=b.DialogTitle,T=async()=>{if(o?.signature)try{await navigator.clipboard.writeText(o.signature),g(!1),d(!0),setTimeout(()=>d(!1),2e3)}catch{d(!1),g(!0)}};return!e&&!n&&!r?k(f,{onClick:s,className:t,"aria-label":"Sign In",children:F("span",{style:{display:"inline-flex",alignItems:"center",gap:"0.5rem"},children:[k(pa,{size:16}),i??"Sign In"]})}):n?k(f,{disabled:!0,className:t,"aria-label":"Signing In",children:F("span",{style:{display:"inline-flex",alignItems:"center",gap:"0.5rem"},children:[k(fa,{size:16,className:"animate-spin"}),"Signing In..."]})}):r&&!e?F("div",{style:{position:"relative",display:"inline-flex",flexDirection:"column"},children:[k(f,{onClick:s,className:t,"aria-label":"Retry Sign In",children:F("span",{style:{display:"inline-flex",alignItems:"center",gap:"0.5rem"},children:[k(ga,{size:16,style:{color:"var(--destructive, #ef4444)"}}),i??"Retry Sign In"]})}),k("div",{style:{fontSize:"0.75rem",color:"var(--destructive, #ef4444)",padding:"0.25rem 0.5rem",borderRadius:"0.375rem",background:"var(--destructive-foreground, #fef2f2)",marginTop:"2px",wordBreak:"break-word",maxWidth:"100%",lineHeight:1.4},children:r.message})]}):F("div",{style:{position:"relative",display:"inline-block"},children:[k(f,{onClick:()=>c(S=>!S),className:t,children:F("span",{style:{display:"inline-flex",alignItems:"center",gap:"0.5rem"},children:[k(on,{size:16,style:{color:"#22c55e"}}),k("span",{style:{fontSize:"0.875rem",fontWeight:500},children:"Signed In"})]})}),l&&(h&&N?k(h,{open:!0,onOpenChange:S=>{S||c(!1)},children:k(N,{children:m&&x?F(Wo,{children:[k(m,{children:k(x,{children:"Sign-In Details"})}),k(nn,{result:o,onClose:()=>c(!1),copiedSign:u,copyFailed:p,onCopy:T})]}):F(Wo,{children:[k("div",{style:{fontWeight:600,fontSize:"1.125rem",marginBottom:"0.75rem"},children:"Sign-In Details"}),k(nn,{result:o,onClose:()=>c(!1),copiedSign:u,copyFailed:p,onCopy:T})]})})}):l&&k("div",{style:{position:"absolute",top:"calc(100% + 8px)",right:0,zIndex:100,width:"340px",maxWidth:"90vw",background:"var(--card, #fff)",border:"1px solid var(--border, #e2e8f0)",borderRadius:"0.75rem",boxShadow:"0 10px 25px rgba(0,0,0,0.1)",padding:"1rem"},children:k(nn,{result:o,onClose:()=>c(!1),copiedSign:u,copyFailed:p,onCopy:T})}))]})}function nn({result:t,onClose:e,copiedSign:n,onCopy:o,copyFailed:r}){let a=B().Button;if(!t)return F("div",{style:{textAlign:"center",padding:"1rem 0"},children:[k(on,{size:32,style:{color:"#22c55e",margin:"0 auto 0.75rem"}}),k("p",{style:{fontSize:"0.875rem",color:"var(--muted-foreground, #64748b)"},children:"Authenticated successfully"}),k(a,{variant:"outline",size:"sm",onClick:e,children:"Close"})]});let{message:i,signature:l}=t,c=l.length>20?l.slice(0,14)+"..."+l.slice(-6):l;return F("div",{style:{display:"flex",flexDirection:"column",gap:"0.75rem"},children:[F("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[F("div",{style:{display:"flex",alignItems:"center",gap:"0.5rem"},children:[k(on,{size:18,color:"#22c55e"}),k("span",{style:{fontWeight:600,fontSize:"0.9375rem"},children:"Signed In"})]}),k(a,{variant:"ghost",size:"icon",onClick:e,children:k(ha,{size:16})})]}),F("div",{style:{display:"grid",gap:"0.375rem"},children:[F("div",{children:[k("span",{className:"text-xs uppercase tracking-wider text-muted-foreground",children:"Domain"}),k("p",{style:{fontSize:"0.8125rem",fontFamily:"monospace",marginTop:"0.125rem"},children:i.domain})]}),F("div",{children:[k("span",{className:"text-xs uppercase tracking-wider text-muted-foreground",children:"Address"}),k("p",{style:{fontSize:"0.8125rem",fontFamily:"monospace",marginTop:"0.125rem",wordBreak:"break-all"},children:i.address})]}),F("div",{children:[k("span",{className:"text-xs uppercase tracking-wider text-muted-foreground",children:"Chain"}),k("p",{style:{fontSize:"0.8125rem",fontFamily:"monospace",marginTop:"0.125rem"},children:i.chainId})]})]}),i.statement&&k("div",{style:{padding:"0.5rem 0.625rem",borderRadius:"0.375rem",background:"var(--muted, #f1f5f9)",fontSize:"0.8125rem",lineHeight:1.5},children:i.statement}),F("div",{children:[F("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"0.25rem"},children:[k("span",{className:"text-xs uppercase tracking-wider text-muted-foreground",children:"Signature"}),k(a,{variant:"ghost",size:"icon",onClick:o,title:r?"This browser refused the clipboard \u2014 select the signature and copy it":"Copy signature","aria-label":r?"Copy failed":"Copy signature",children:n?k(ya,{size:12,color:"#22c55e"}):k(ba,{size:12})})]}),k("p",{style:{fontSize:"0.75rem",fontFamily:"monospace",wordBreak:"break-all",lineHeight:1.4,color:"var(--muted-foreground, #64748b)",background:"var(--muted, #f1f5f9)",padding:"0.375rem 0.5rem",borderRadius:"0.375rem"},children:c})]}),k(a,{variant:"outline",className:"w-full",onClick:e,children:"Close"})]})}import{useState as ce,useCallback as Ne,useMemo as Vo}from"react";import{AlertTriangle as xa,Check as sn,Copy as va,Download as Ca,Eye as wa,EyeOff as Na,SkipForward as Ho,ArrowLeft as ka,ArrowRight as Ra,Shield as Sa,X as Ta}from"lucide-react";import{Fragment as ln,jsx as w,jsxs as A}from"react/jsx-runtime";function Pa(t){let e=Math.floor(4294967296/t)*t,n=new Uint32Array(1),o;do crypto.getRandomValues(n),o=n[0];while(o>=e);return o%t}function an(t){let e=[...t];for(let n=e.length-1;n>0;n--){let o=Pa(n+1);[e[n],e[o]]=[e[o],e[n]]}return e}function Uo(t,e=3){let n=t.trim().split(/\s+/);return an(n.map((r,s)=>s)).slice(0,Math.min(e,n.length)).map(r=>{let s=n[r],a=n.filter((c,u)=>u!==r),i=an(a).slice(0,3),l=an([s,...i]);return{index:r,correct:s,options:l}})}function Je({seedPhrase:t,onConfirm:e,onSkip:n,onExportPrivateKey:o,className:r,wordCount:s,inline:a=!1,open:i=!0,onOpenChange:l}){let c=B(),u=c.Button,d=c.Dialog,p=c.DialogContent,g=c.DialogHeader,b=c.DialogTitle,[f,h]=ce("reveal"),[N,m]=ce(!1),[x,T]=ce(!1),[S,O]=ce(!1),[D,ae]=ce(()=>Uo(t,3)),[q,Z]=ce({}),[He,ie]=ce([]),[_,re]=ce(!1),[j,Te]=ce(null),Ct=Vo(()=>t.trim().split(/\s+/),[t]),Sr=Vo(()=>{let L=new Map;return Ct.map(Q=>{let ee=L.get(Q)??0;return L.set(Q,ee+1),{word:Q,key:`${Q}-${ee}`}})},[Ct]),Hl=s??(Ct.length===24?24:12),Tr=Ne(()=>m(!0),[]),Pr=Ne(async()=>{try{await navigator.clipboard.writeText(t),O(!1),T(!0),setTimeout(()=>T(!1),2e3)}catch{T(!1),O(!0)}},[t]),Br=Ne(()=>{ae(Uo(t,3)),Z({}),ie([]),h("confirm")},[t]),Er=Ne((L,Q)=>{Z(ee=>({...ee,[L]:Q})),ie(ee=>ee.filter(wt=>wt!==L))},[]),Ar=Ne(()=>{let L=[];for(let Q of D)q[Q.index]!==Q.correct&&L.push(Q.index);if(L.length>0){ie(L);return}h("done"),e()},[D,q,e]),vn=Ne(()=>{n?.()},[n]),Dr=Ne(()=>{if(o){let L=o();Te(L),re(!0)}},[o]),Mr=D.every(L=>q[L.index]!==void 0),Ir=A("div",{className:"space-y-4",children:[w("div",{className:"rounded-lg border border-amber-200 bg-amber-50 dark:border-amber-800 dark:bg-amber-950/30 px-4 py-3",children:A("div",{className:"flex items-start gap-2",children:[w(xa,{size:16,className:"mt-0.5 shrink-0 text-amber-600 dark:text-amber-400"}),w("p",{className:"text-sm text-amber-800 dark:text-amber-200",children:"Write down these words in order and store them somewhere safe. Never share them with anyone. If you lose your seed phrase, your funds cannot be recovered."})]})}),N?A(ln,{children:[w("div",{className:"grid grid-cols-3 gap-2 sm:grid-cols-4",children:Sr.map(({word:L,key:Q},ee)=>A("div",{className:"flex items-center gap-1.5 rounded-md border bg-card px-2.5 py-1.5 text-sm",children:[w("span",{className:"text-xs text-muted-foreground w-5 shrink-0 text-right",children:ee+1}),w("span",{className:"font-mono font-medium",children:L})]},Q))}),A("div",{className:"flex flex-wrap gap-2",children:[A(u,{onClick:Pr,variant:"outline",size:"sm",children:[x?w(sn,{size:14}):w(va,{size:14}),x?"Copied":S?"Copy failed":"Copy"]}),o&&A(u,{onClick:Dr,variant:"outline",size:"sm",children:[w(Ca,{size:14}),"Export Private Key"]})]}),S&&w("p",{role:"alert",className:"rounded-md bg-destructive/10 px-3 py-2 text-xs text-destructive",children:"This browser would not let the page write to your clipboard. Nothing was copied \u2014 select the words above and copy them yourself, or write them down."}),_&&j&&A("div",{className:"rounded-lg border border-border bg-muted p-3 space-y-2",children:[A("div",{className:"flex items-center gap-2",children:[w(Na,{size:14,className:"text-muted-foreground"}),w("span",{className:"text-xs font-medium text-muted-foreground",children:"Private Key (keep secret!)"})]}),w("p",{className:"font-mono text-xs break-all select-all",children:j})]}),A("div",{className:"flex flex-col gap-2 sm:flex-row sm:justify-between",children:[A(u,{onClick:Br,variant:"default",children:["I've Saved It",w(Ra,{size:16})]}),n&&A(u,{onClick:vn,variant:"ghost",size:"sm",children:[w(Ho,{size:14}),"Skip Backup"]})]})]}):A("div",{className:"flex flex-col items-center gap-3 py-6",children:[w(Sa,{size:40,className:"text-muted-foreground"}),w("p",{className:"text-sm text-muted-foreground text-center",children:"Click the button below to reveal your seed phrase. Make sure no one is watching your screen."}),A(u,{onClick:Tr,variant:"default",children:[w(wa,{size:16}),"Reveal Seed Phrase"]})]})]}),Lr=A("div",{className:"space-y-4",children:[w("p",{className:"text-sm text-muted-foreground",children:"Verify your backup by selecting the correct word for each position."}),D.map(L=>{let Q=He.includes(L.index);return A("div",{className:"space-y-2",children:[A("p",{className:y("text-sm font-medium",Q?"text-destructive":"text-foreground"),children:["Word #",L.index+1,Q&&w("span",{className:"ml-2 text-xs text-destructive",children:"(incorrect)"})]}),w("div",{className:"grid grid-cols-2 gap-2",children:L.options.map(ee=>{let wt=q[L.index]===ee;return w("button",{type:"button",onClick:()=>Er(L.index,ee),className:y("rounded-md border px-3 py-2 text-sm font-mono transition-all duration-200 cursor-pointer text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",wt?"border-primary bg-primary/10 text-primary font-medium":Q?"border-destructive/50 bg-destructive/5":"border-border bg-card hover:border-primary/50"),children:ee},`${L.index}-${ee}`)})})]},L.index)}),A("div",{className:"flex flex-col gap-2 sm:flex-row sm:justify-between",children:[A(u,{onClick:Ar,variant:"default",disabled:!Mr,children:[w(sn,{size:16}),"Verify & Confirm"]}),A("div",{className:"flex gap-2",children:[A(u,{onClick:()=>h("reveal"),variant:"ghost",size:"sm",children:[w(ka,{size:14}),"Back"]}),n&&A(u,{onClick:vn,variant:"ghost",size:"sm",children:[w(Ho,{size:14}),"Skip"]})]})]})]}),zr={reveal:Ir,confirm:Lr,done:A("div",{className:"flex flex-col items-center gap-3 py-6 text-center",children:[w("div",{className:"flex h-12 w-12 items-center justify-center rounded-full bg-green-100 dark:bg-green-900/30",children:w(sn,{size:24,className:"text-green-600 dark:text-green-400"})}),w("p",{className:"font-medium text-foreground",children:"Backup Confirmed"}),w("p",{className:"text-sm text-muted-foreground",children:"Your seed phrase has been backed up successfully."})]})},Wr={reveal:"Backup Seed Phrase",confirm:"Verify Backup",done:"Backup Complete"},ot=zr[f],rt=Wr[f];return a?A("div",{className:y("space-y-4",r),children:[f!=="done"&&w("h3",{className:"text-lg font-semibold",children:rt}),ot]}):i?d&&p?w(d,{open:!0,onOpenChange:L=>{L||l?.(!1)},children:w(p,{children:g&&b?A(ln,{children:[w(g,{children:w(b,{children:rt})}),w("div",{className:"mt-2 max-h-[55vh] overflow-y-auto",children:ot})]}):A(ln,{children:[w("div",{className:"mb-3 text-lg font-semibold",children:rt}),w("div",{className:"max-h-[55vh] overflow-y-auto",children:ot})]})})}):A(Be,{open:!0,onClose:()=>l?.(!1),children:[A("div",{className:"flex items-center justify-between mb-4",children:[w("h2",{className:"text-lg font-semibold m-0",children:rt}),l&&w("button",{onClick:()=>l(!1),type:"button",className:"rounded-md p-1 text-muted-foreground hover:text-foreground transition-all duration-200 cursor-pointer border-none bg-transparent","aria-label":"Close",children:w(Ta,{size:16})})]}),ot]}):null}import Ba from"react";import{Fragment as Oo,jsx as $,jsxs as ge}from"react/jsx-runtime";function Ea({error:t,reset:e,dismiss:n,retryLabel:o="Try Again"}){let r=B(),s=r.Button,a=r.Dialog,i=r.DialogContent,l=r.DialogHeader,c=r.DialogTitle;if(a&&i)return $(a,{open:!0,onOpenChange:()=>{},children:$(i,{children:l&&c?ge(Oo,{children:[$(l,{children:$(c,{children:"Something went wrong"})}),ge("div",{style:{marginTop:"0.5rem"},children:[$("p",{style:{color:"var(--muted-foreground, #666)",fontSize:"0.875rem",lineHeight:"1.5",margin:0},children:t.message||"An unexpected error occurred while connecting your wallet."}),ge("div",{style:{display:"flex",gap:"0.5rem",marginTop:"0.5rem"},children:[n&&$(s,{variant:"outline",size:"default",onClick:n,children:"Dismiss"}),$(s,{variant:"default",size:"default",onClick:e,children:o})]})]})]}):ge(Oo,{children:[$("div",{style:{fontWeight:600,fontSize:"1.125rem",marginBottom:"0.75rem"},children:"Something went wrong"}),$("p",{style:{color:"var(--muted-foreground, #666)",fontSize:"0.875rem",lineHeight:"1.5",margin:0},children:t.message||"An unexpected error occurred while connecting your wallet."}),ge("div",{style:{display:"flex",gap:"0.5rem",marginTop:"0.5rem"},children:[n&&$(s,{variant:"outline",size:"default",onClick:n,children:"Dismiss"}),$(s,{variant:"default",size:"default",onClick:e,children:o})]})]})})});let u=!0,d=n??void 0;return ge(Be,{open:u,onClose:d,children:[$(Bn,{title:"Something went wrong",onClose:d,showCloseButton:!!n}),ge(En,{children:[$("p",{style:{color:"var(--muted-foreground, #666)",fontSize:"0.875rem",lineHeight:"1.5",margin:0},children:t.message||"An unexpected error occurred while connecting your wallet."}),ge("div",{style:{display:"flex",gap:"0.5rem",marginTop:"0.5rem"},children:[n&&$(s,{variant:"outline",size:"default",onClick:n,children:"Dismiss"}),$(s,{variant:"default",size:"default",onClick:e,children:o})]})]})]})}var Xe=class extends Ba.Component{constructor(e){super(e),this.state={hasError:!1,error:null,dismissed:!1}}static getDerivedStateFromError(e){return{hasError:!0,error:e,dismissed:!1}}componentDidCatch(e,n){this.props.onError?.(e,n)}handleReset=()=>{this.setState({hasError:!1,error:null,dismissed:!1}),this.props.onReset?.()};handleDismiss=()=>{this.setState(e=>({...e,dismissed:!0})),this.props.onDismiss?.()};render(){return this.state.dismissed?this.props.children:this.state.hasError&&this.state.error?this.props.fallback?this.props.fallback({error:this.state.error,reset:this.handleReset}):$(Ea,{error:this.state.error,reset:this.handleReset,dismiss:this.props.onDismiss?this.handleDismiss:void 0,retryLabel:this.props.retryLabel}):this.props.children}};import{createContext as Ua,useContext as Oa,useMemo as _a}from"react";import{Web3ConnectProvider as Fa}from"@naculus/connect-appkit-react";import{createContext as Da,useContext as Ma,useMemo as yt,useEffect as xt,useCallback as Ia,useState as vt}from"react";var Le={primary:{name:"--primary",fallback:"221.2 83.2% 53.3%"},"primary-foreground":{name:"--primary-foreground",fallback:"210 40% 98%"},background:{name:"--background",fallback:"0 0% 100%"},foreground:{name:"--foreground",fallback:"222.2 84% 4.9%"},card:{name:"--card",fallback:"0 0% 100%"},"card-foreground":{name:"--card-foreground",fallback:"222.2 84% 4.9%"},popover:{name:"--popover",fallback:"0 0% 100%"},"popover-foreground":{name:"--popover-foreground",fallback:"222.2 84% 4.9%"},secondary:{name:"--secondary",fallback:"210 40% 96.1%"},"secondary-foreground":{name:"--secondary-foreground",fallback:"222.2 47.4% 11.2%"},muted:{name:"--muted",fallback:"210 40% 96.1%"},"muted-foreground":{name:"--muted-foreground",fallback:"215.4 16.3% 46.9%"},accent:{name:"--accent",fallback:"210 40% 96.1%"},"accent-foreground":{name:"--accent-foreground",fallback:"222.2 47.4% 11.2%"},destructive:{name:"--destructive",fallback:"0 84.2% 60.2%"},border:{name:"--border",fallback:"214.3 31.8% 91.4%"},input:{name:"--input",fallback:"214.3 31.8% 91.4%"},ring:{name:"--ring",fallback:"221.2 83.2% 53.3%"},radius:{name:"--radius",fallback:"0.5rem"}},Aa=new Map;function cn(){Aa.clear()}import{jsx as Va,jsxs as Ha}from"react/jsx-runtime";var _o=Da({theme:{},isDark:!1,setTheme:()=>{},toggleDarkMode:()=>{}});function La(t){let e=[];for(let[n,o]of Object.entries(t)){let r=Le[n];r&&o&&e.push(" "+r.name+": "+o+";")}return e.length===0?"":`:root {
|
|
9
|
+
`+e.join(`
|
|
3
10
|
`)+`
|
|
4
|
-
}`}function Yn(e){let t=new Set;if(e!=="computed"||typeof document>"u")return t;for(let n of Object.keys(ce)){let o=ce[n],r=getComputedStyle(document.documentElement).getPropertyValue(o.name).trim();r&&r!==o.fallback&&t.add(n)}return t}function $e({children:e,theme:t={},defaultDark:n=!1,priority:o="fallback"}){let[r,a]=Te(t),[d,c]=Te(n);ke(()=>{Qe()},[r]);let[i,l]=Te(new Set);ke(()=>{l(Yn(o))},[o]);let p=Re(()=>{if(o==="fallback"||i.size===0)return r;let u={};for(let[g,w]of Object.entries(r))!i.has(g)&&w&&(u[g]=w);return u},[r,o,i]),m=Re(()=>Xn(p),[p]);ke(()=>{if(typeof document>"u")return;let u=document.documentElement;d?u.classList.add("dark"):u.classList.remove("dark"),Qe()},[d]);let f=Re(()=>"w3c-theme-"+Math.random().toString(36).slice(2,9),[]),x=Gn(()=>c(u=>!u),[]),N=Re(()=>({theme:r,isDark:d,setTheme:a,toggleDarkMode:x}),[r,d,x]);return eo(vt.Provider,{value:N,children:[m?Zn("style",{id:f,dangerouslySetInnerHTML:{__html:m}}):null,e]})}function bt(){return qn(vt)}function Jn(e){let{theme:t}=bt(),[n,o]=Te("");return ke(()=>{let r=ce[e];if(!r)return;let a=t[e];if(a){o(a);return}if(typeof document>"u"){o(r.fallback);return}let d=getComputedStyle(document.documentElement).getPropertyValue(r.name).trim();o(d||r.fallback)},[e,t]),n||ce[e]?.fallback||""}import{jsx as ve}from"react/jsx-runtime";var xt=to({mode:"walletconnect"});function ao(){return no(xt)}function be({config:e,children:t,autoConnect:n=!1,detectionMode:o="walletconnect",theme:r,defaultDark:a=!1,themePriority:d="computed"}){let c=oo(()=>({mode:o}),[o]),i=o==="walletconnect"||o==="auto";return ve(xt.Provider,{value:c,children:ve($e,{theme:r,defaultDark:a,priority:d,children:ve(_e,{components:{QRCodeModal:pe},children:ve(ro,{config:e,autoConnect:n,children:i?ve(Ae,{children:t}):t})})})})}import{jsx as oe,jsxs as kt}from"react/jsx-runtime";var wt=so(null);function Rt(){let e=io(wt);if(!e)throw new Error("useAppKit must be used within an <AppKit> component");return e}function Fe({projectId:e,metadata:t,enableEmbedded:n=!1,enablePasskeys:o=!1,children:r,className:a,autoConnect:d=!1,theme:c,defaultDark:i=!1,themePriority:l="computed",detectionMode:p="auto"}){let[m,f]=yt(!1),[x,N]=yt(!1),u=ht(()=>({projectId:e,metadata:t,enableEmbedded:n,enablePasskeys:o}),[e,t,n,o]);return oe(be,{config:u,autoConnect:d,detectionMode:p,theme:c,defaultDark:i,themePriority:l,children:oe(fo,{className:a,open:m,setOpen:f,backupOpen:x,setBackupOpen:N,children:r})})}function fo({children:e,className:t,open:n,setOpen:o,backupOpen:r,setBackupOpen:a}){let{isConnected:d,isConnecting:c}=co(),{primaryAccount:i}=Ct(),{currentChain:l,availableChains:p,switchChain:m}=uo(),f=mo(),{disconnect:x}=Nt(),{wallets:N,hasWallets:u}=ue(),{formatted:g}=po(),w=g??null,s=Se(async()=>{await x()},[x]),R=Se(()=>{f.confirmBackup(),a(!1)},[f]),A=Se(()=>{a(!1)},[]),H=Se(()=>f.wallet?.privateKey??null,[f.wallet]),K=ht(()=>({connect:()=>o(!0),disconnect:s,isConnected:d,isConnecting:c,address:i,balance:w,balanceSymbol:l?.token??"ETH",chainName:l?.name??null,availableChains:p.map(U=>({id:U.id,namespace:U.namespace,name:U.name,token:U.token})),switchChain:m,wallets:N,hasWallets:u,backupPending:f.backupPending,seedPhrase:f.seedPhrase,confirmBackup:R,skipBackup:A,open:n,setOpen:o}),[d,c,i,w,l,p,m,N,u,f.backupPending,f.seedPhrase,R,A,s,n,o]);return lo(()=>{f.seedPhrase&&f.backupPending&&a(!0)},[f.seedPhrase,f.backupPending,a]),kt(wt.Provider,{value:K,children:[e,f.seedPhrase&&r&&oe(fe,{seedPhrase:f.seedPhrase,onConfirm:R,onSkip:A,onExportPrivateKey:H,open:r,onOpenChange:a})]})}function je({className:e}){let t=Rt(),{primaryAccount:n}=Ct(),{disconnect:o}=Nt();return t.isConnected&&n?kt("div",{className:k("inline-flex items-center gap-2",e),children:[oe(de,{variant:"minimal"}),oe(te,{isConnected:t.isConnected,address:n,balance:t.balance,balanceSymbol:t.balanceSymbol,onDisconnect:o,className:e})]}):oe(te,{isConnected:t.isConnected,isConnecting:t.isConnecting,address:n,balance:t.balance,balanceSymbol:t.balanceSymbol,onDisconnect:o,className:e})}function qe({className:e,variant:t="dropdown"}){return oe(de,{className:e,variant:t})}import{jsx as ho}from"react/jsx-runtime";var xo={ConnectButton:te,AccountButton:We,ChainSelector:de,QRCodeModal:pe,SignInButton:Ve,SeedPhraseBackup:fe,ErrorBoundary:ge,AppKit:Fe,AppKitButton:je,AppKitChainSelector:qe,Web3ConnectUI:be},Tt=go({});function _e({children:e,components:t={}}){let n=bo(()=>({...xo,...t}),[t]);return ho(Tt.Provider,{value:n,children:e})}function T(){return vo(Tt)}function yo(e){return T()[e]}import{jsx as V,jsxs as re}from"react/jsx-runtime";function xe({chainId:e,className:t}){let n=we(e);return n?V("span",{className:k("inline-flex items-center justify-center shrink-0",t),dangerouslySetInnerHTML:{__html:n}}):null}function de({className:e,showLabel:t=!0,variant:n="dropdown"}){let{currentChain:o,availableChains:r,switchChain:a,isEvm:d}=Ro(),{isConnected:c}=ko(),[i,l]=Co(!1),m=T().Button,f=No(null);if(wo(()=>{function u(g){f.current&&!f.current.contains(g.target)&&l(!1)}return document.addEventListener("mousedown",u),()=>document.removeEventListener("mousedown",u)},[]),!c)return null;let x=o?.name??"Unknown Chain",N=r.length>1;return n==="minimal"?re("div",{className:k("inline-flex items-center gap-1.5 text-xs text-muted-foreground",e),children:[o&&V(xe,{chainId:`${o.namespace}:${o.id}`,className:"h-3.5 w-3.5"}),x]}):n==="buttons"?V("div",{className:k("flex flex-wrap gap-2",e),children:r.map(u=>{let g=u.id===o?.id&&u.namespace===o?.namespace,w=`${u.namespace}:${u.id}`;return re(m,{className:g?k("bg-accent","border-primary"):"",onClick:()=>{g||a(w).catch(s=>St.error("ui/ChainSelector","switchChain failed",s))},children:[V(xe,{chainId:w,className:"h-4 w-4"}),u.name,u.token&&V("span",{className:"text-xs opacity-60",children:u.token})]},w)})}):N?re("div",{ref:f,className:k("relative inline-block",e),children:[re(m,{onClick:()=>l(!i),children:[o&&V(xe,{chainId:`${o.namespace}:${o.id}`,className:"h-4 w-4"}),x,V("svg",{className:k("h-3 w-3 transition-transform",i&&"rotate-180"),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:V("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]}),i&&re("div",{className:"absolute left-0 top-full mt-1 z-50 min-w-[180px] rounded-lg border bg-card p-1 shadow-lg animate-in fade-in zoom-in-95 duration-200",children:[t&&V("div",{className:"px-2 py-1.5 text-xs font-medium text-muted-foreground uppercase tracking-wider",children:"Switch Network"}),r.map(u=>{let g=u.id===o?.id&&u.namespace===o?.namespace,w=`${u.namespace}:${u.id}`;return re(m,{onClick:()=>{g||a(w).catch(s=>St.error("ui/ChainSelector","switchChain failed",s)),l(!1)},className:k("flex w-full items-center gap-2 rounded-md px-2 py-2 text-sm transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",g?"bg-accent font-medium":"hover:bg-accent/50"),children:[V(xe,{chainId:w,className:"h-4 w-4"}),V("span",{className:"flex-1 text-left",children:u.name}),u.token&&V("span",{className:"text-xs text-muted-foreground",children:u.token}),g&&V("svg",{className:"h-4 w-4 text-primary",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:V("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 13l4 4L19 7"})})]},w)})]})]}):re("div",{className:k("inline-flex items-center gap-2 rounded-md border border-border px-3 py-2 text-sm opacity-60 cursor-default",e),children:[o&&V(xe,{chainId:`${o.namespace}:${o.id}`,className:"h-4 w-4"}),x]})}import{ArrowRight as To,CheckCircle2 as So,Clock as Bo,DollarSign as Po,Loader2 as At,XCircle as Do,AlertCircle as Ao}from"lucide-react";import{Fragment as Dt,jsx as v,jsxs as P}from"react/jsx-runtime";function Eo(e){if(e<1e3)return"<1s";if(e<6e4)return`~${Math.round(e/1e3)}s`;let t=Math.floor(e/6e4),n=Math.round(e%6e4/1e3);return n>0?`~${t}m ${n}s`:`~${t}m`}function Bt(e){return e.symbol||"UNKNOWN"}function zo(e){let t=e.toLowerCase();return t.includes("lifi")?"default":t.includes("axelar")?"secondary":"outline"}function Mo(e){return e.length>12?`${e.slice(0,6)}...${e.slice(-6)}`:e}function Wo({route:e,onSelect:t}){let n=T(),o=n.Button,r=n.Badge,a=e.provider??"Route";return P("div",{className:"flex items-center justify-between gap-4 rounded-lg border border-border p-4 transition-colors hover:bg-accent/30",children:[P("div",{className:"flex flex-col gap-1.5 min-w-0",children:[P("div",{className:"flex items-center gap-2",children:[r?v(r,{variant:zo(a),children:a}):v("span",{className:"inline-flex items-center rounded-md border px-2 py-0.5 text-xs font-medium",children:a}),e.steps.length>1&&P("span",{className:"text-xs text-muted-foreground",children:[e.steps.length," steps"]})]}),P("div",{className:"flex flex-wrap items-center gap-x-4 gap-y-1 text-sm",children:[P("span",{className:"inline-flex items-center gap-1 text-muted-foreground",children:[v(Po,{className:"h-3.5 w-3.5"}),"$",e.gasCosts.totalUsd]}),P("span",{className:"inline-flex items-center gap-1 text-muted-foreground",children:[v(Bo,{className:"h-3.5 w-3.5"}),Eo(e.steps.reduce((d,c)=>{let i=e.estimatedTime>0?15e3:0;return d+i},0))]}),P("span",{className:"inline-flex items-center gap-1 text-muted-foreground",children:[e.gasCosts.totalUsd," cost"]})]})]}),v(o,{variant:"outline",size:"sm",onClick:t,children:"Select"})]})}function Lo(){let t=T().Skeleton;return P("div",{className:"flex flex-col gap-3","data-testid":"route-selector-loading",children:[P("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[v(At,{className:"h-4 w-4 animate-spin"}),v("span",{children:"Fetching best routes..."})]}),[1,2,3].map(n=>P("div",{className:"flex items-center justify-between gap-4 rounded-lg border border-border p-4",children:[v("div",{className:"flex flex-col gap-2 flex-1",children:t?P(Dt,{children:[v(t,{className:"h-4 w-24"}),v(t,{className:"h-3 w-48"})]}):P(Dt,{children:[v("div",{className:"h-4 w-24 animate-pulse rounded bg-muted"}),v("div",{className:"h-3 w-48 animate-pulse rounded bg-muted"})]})}),t?v(t,{className:"h-8 w-20 rounded-md"}):v("div",{className:"h-8 w-20 animate-pulse rounded-md bg-muted"})]},n))]})}function Io(){return P("div",{className:"flex flex-col items-center justify-center gap-2 py-8 text-sm text-muted-foreground","data-testid":"route-selector-empty",children:[v(Ao,{className:"h-8 w-8 opacity-40"}),v("span",{children:"No routes found for this pair"}),v("span",{className:"text-xs",children:"Try a different token or amount"})]})}function Ho({error:e,onRetry:t}){let o=T().Button;return P("div",{className:"flex flex-col items-center justify-center gap-2 py-6","data-testid":"route-selector-error",children:[v(Do,{className:"h-8 w-8 text-destructive"}),v("p",{className:"text-sm text-destructive font-medium",children:"Failed to fetch routes"}),v("p",{className:"text-xs text-muted-foreground max-w-xs text-center",children:e}),t&&v(o,{variant:"outline",size:"sm",onClick:t,children:"Retry"})]})}function Vo(){let t=T().Progress;return P("div",{className:"flex flex-col items-center gap-3 py-6","data-testid":"route-selector-executing",children:[v(At,{className:"h-6 w-6 animate-spin text-primary"}),v("p",{className:"text-sm font-medium",children:"Executing route..."}),v("p",{className:"text-xs text-muted-foreground",children:"Please confirm the transaction in your wallet"}),t?v(t,{value:50,className:"w-48 h-1.5"}):v("div",{className:"h-1.5 w-48 rounded-full bg-muted",children:v("div",{className:"h-full w-1/2 rounded-full bg-primary animate-pulse"})})]})}function Oo({txHash:e}){return P("div",{className:"flex flex-col items-center gap-2 py-6","data-testid":"route-selector-success",children:[v(So,{className:"h-8 w-8 text-green-500"}),v("p",{className:"text-sm font-medium text-green-600 dark:text-green-400",children:"Route executed successfully!"}),P("p",{className:"text-xs text-muted-foreground font-mono",children:["TX: ",Mo(e)]})]})}function Pt({chainId:e,className:t}){let n=we(`eip155:${e}`);return n?v("span",{className:k("inline-flex items-center justify-center shrink-0",t),dangerouslySetInnerHTML:{__html:n}}):null}function Uo({inputToken:e,outputToken:t,amount:n,routes:o=[],loading:r=!1,executing:a=!1,onRouteSelected:d,onCancel:c,successTxHash:i,error:l,className:p}){let m=T(),f=m.Card,x=m.Button;if(i)return v("div",{className:k("rounded-lg border border-border",p),children:v(Oo,{txHash:i})});if(a)return v("div",{className:k("rounded-lg border border-border",p),children:v(Vo,{})});return f?P(f,{className:k("p-4",p),children:[u(),g(),w()]}):P("div",{className:k("rounded-lg border border-border p-4",p),children:[u(),g(),w()]});function u(){return!e&&!t?null:P("div",{className:"mb-4 flex flex-wrap items-center gap-2 text-sm",children:[e&&P("span",{className:"inline-flex items-center gap-1.5 font-medium",children:[v(Pt,{chainId:e.chainId,className:"h-4 w-4"}),n?`${n.toString()} `:"",Bt(e)]}),e&&t&&v(To,{className:"h-3.5 w-3.5 text-muted-foreground"}),t&&P("span",{className:"inline-flex items-center gap-1.5 font-medium",children:[v(Pt,{chainId:t.chainId,className:"h-4 w-4"}),Bt(t)]})]})}function g(){return r?v(Lo,{}):l?v(Ho,{error:l}):o.length===0?v(Io,{}):v("div",{className:"flex flex-col gap-2","data-testid":"route-selector-routes",children:o.map((s,R)=>v(Wo,{route:s,onSelect:()=>d?.(s)},`${s.fromChain}-${s.toChain}-${s.gasCosts.totalUsd}-${R}`))})}function w(){return!r&&o.length===0&&!l?null:v("div",{className:"mt-4 flex justify-end",children:v(x,{variant:"ghost",size:"sm",onClick:c,children:"Cancel"})})}}import Ko from"react";import{Shield as Qo,ShieldCheck as Et,LoaderCircle as $o,Settings as _o,ChevronRight as Fo,AlertCircle as jo,RotateCcw as qo,CheckCircle2 as Go,Fuel as zt,Zap as Xo,RefreshCw as Yo}from"lucide-react";import{Fragment as er,jsx as C,jsxs as D}from"react/jsx-runtime";function Jo(e){let t=Number(e)/1e18;return t<.001?`~${t.toFixed(6)} ETH`:`~${t.toFixed(3)} ETH`}function Zo({isDeployed:e=!1,isDeploying:t=!1,estimatedGas:n,error:o=null,onUpgrade:r,onShowSettings:a,onRetry:d}){let c=T(),i=c.Button,l=c.Card,p=c.Badge,m=a?D(i,{variant:"outline",className:"w-full",onClick:a,children:[C(_o,{size:15})," Advanced Settings ",C(Fo,{size:14,className:"text-muted-foreground"})]}):null;return e?D(l,{className:"w-full rounded-xl border border-border bg-card p-5 shadow-sm",children:[C("div",{className:"flex items-start justify-between",children:D("div",{className:"flex items-center gap-3",children:[C("div",{className:"flex h-10 w-10 items-center justify-center rounded-full bg-green-500/10",children:C(Et,{size:22,className:"text-green-500"})}),D("div",{children:[D("div",{className:"flex items-center gap-2",children:[C("span",{className:"text-base font-semibold text-foreground",children:"Smart Wallet"}),D(p,{variant:"secondary",className:"rounded-full bg-green-500/10 px-2 py-0 text-xs font-medium text-green-500",children:[C(Go,{size:12,className:"mr-0.5 inline"})," Deployed"]})]}),C("p",{className:"mt-0.5 text-sm text-muted-foreground",children:"Your wallet has been upgraded to a smart wallet"})]})]})}),C("div",{className:"mt-4 grid grid-cols-2 gap-3",children:[[zt,"Gas Sponsorship","Enabled"],[Yo,"Recovery","Enabled"]].map(([f,x,N],u)=>D("div",{className:"rounded-lg bg-muted/50 p-3",children:[D("div",{className:"flex items-center gap-1.5 text-xs text-muted-foreground",children:[Ko.createElement(f,{size:14}),C("span",{children:x})]}),C("div",{className:"mt-1 text-sm font-medium text-foreground",children:N})]},u))}),a&&C("div",{className:"mt-4",children:m})]}):t?C(l,{className:"w-full rounded-xl border border-border bg-card p-5 shadow-sm",children:D("div",{className:"flex flex-col items-center text-center",children:[C("div",{className:"mb-4 flex h-14 w-14 items-center justify-center rounded-full bg-primary/10",children:C($o,{size:28,className:"animate-spin text-primary"})}),C("h3",{className:"mb-1 text-base font-semibold text-foreground",children:"Deploying Smart Wallet..."}),C("p",{className:"mb-4 text-sm text-muted-foreground",children:"Please wait, contract deployment may take a few seconds"}),C("div",{className:"h-2 w-full max-w-[200px] overflow-hidden rounded-full bg-muted",children:C("div",{className:"h-full w-full animate-pulse rounded-full bg-primary",style:{animationDuration:"1.5s"}})})]})}):o?D(l,{className:"w-full rounded-xl border border-destructive/30 bg-destructive/5 p-5 shadow-sm",children:[D("div",{className:"flex items-start gap-3",children:[C("div",{className:"mt-0.5 flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-destructive/10",children:C(jo,{size:18,className:"text-destructive"})}),D("div",{className:"min-w-0 flex-1",children:[C("h4",{className:"text-sm font-semibold text-destructive",children:"Deployment Failed"}),C("p",{className:"mt-1 text-xs text-destructive/80 break-words",children:o}),d&&D(i,{variant:"outline",size:"sm",className:"mt-3 border-destructive/30 text-destructive hover:bg-destructive/10",onClick:d,children:[C(qo,{size:13})," Retry"]})]})]}),a&&C("div",{className:"mt-3",children:m})]}):D(l,{className:"w-full rounded-xl border border-border bg-card p-5 shadow-sm",children:[D("div",{className:"flex items-center gap-3",children:[C("div",{className:"flex h-10 w-10 items-center justify-center rounded-full bg-amber-500/10",children:C(Qo,{size:20,className:"text-amber-500"})}),D("div",{children:[D("div",{className:"flex items-center gap-2",children:[C("span",{className:"text-base font-semibold text-foreground",children:"Smart Wallet"}),C("span",{className:"rounded-full bg-muted px-2 py-0.5 text-[11px] font-medium text-muted-foreground",children:"Not Upgraded"})]}),C("p",{className:"mt-0.5 text-sm text-muted-foreground",children:"Upgrade to a smart wallet for more features"})]})]}),D("div",{className:"mt-4 space-y-2",children:[C(Ge,{icon:Xo,color:"text-green-500",text:"No ETH needed for transactions \u2014 pay gas with USDC/USDT"}),C(Ge,{icon:zt,color:"text-blue-500",text:"Optional dApp sponsorship, zero-cost transactions"}),C(Ge,{icon:Et,color:"text-purple-500",text:"Secure recovery mechanism, no fear of losing keys"})]}),r&&D(i,{className:"mt-4 w-full",onClick:r,children:["Upgrade Now",n!==void 0&&D("span",{className:"ml-1 text-xs opacity-80",children:["(Estimated gas fee: ",Jo(n),")"]})]}),a&&D(er,{children:[D("div",{className:"mt-4 mb-3 flex items-center gap-2",children:[C("div",{className:"h-px flex-1 bg-border"}),C("span",{className:"text-xs text-muted-foreground",children:"or"}),C("div",{className:"h-px flex-1 bg-border"})]}),m]})]})}function Ge({icon:e,color:t,text:n}){return D("div",{className:"flex items-center gap-2.5 text-sm text-foreground/80",children:[C(e,{size:14,className:`shrink-0 ${t}`}),C("span",{children:n})]})}import{useState as Xe,useCallback as Mt}from"react";import{ArrowLeft as Wt,Save as tr,Shield as Lt,Users as It,KeyRound as Ht,Fuel as nr,Wrench as or,Plus as rr,X as ar}from"lucide-react";import{jsx as b,jsxs as B}from"react/jsx-runtime";var sr=[{value:"simple",label:"Single Sign (default)",description:"Single key control, simple and secure",icon:b(Lt,{size:16})},{value:"multi-sig",label:"Multi-Sign (2-of-3)",description:"Requires multiple signers to authorize transactions",icon:b(It,{size:16})},{value:"social-recovery",label:"Social Recovery",description:"Set guardian accounts to help recover",icon:b(Ht,{size:16})}],ir=[{value:"self",label:"Pay Self (ETH)",description:"Pay gas fees with ETH"},{value:"sponsor",label:"Sponsored by dApp",description:"dApp covers your gas fees"},{value:"erc20",label:"Pay with USDC/USDT",description:"Use ERC-20 tokens for gas"},{value:"custom",label:"Custom Paymaster URL",description:"Use a custom paymaster service"}],lr=[{value:"pimlico",label:"Pimlico",description:"High-performance bundler service"},{value:"stackup",label:"Stackup",description:"Decentralized bundler network"},{value:"alchemy",label:"Alchemy",description:"Alchemy AA infrastructure"},{value:"custom",label:"Custom Bundler URL",description:"Use custom bundler endpoint"}];function cr(){return{accountType:"simple",paymasterType:"self",customPaymasterUrl:"",bundlerPreset:"pimlico",customBundlerUrl:"",guardians:[],threshold:2}}function dr({currentConfig:e,onSave:t,onBack:n}){let o=T(),r=o.Button,a=o.Input,d=o.Card,c=o.Separator,[i,l]=Xe({...cr(),...e}),[p,m]=Xe(""),[f,x]=Xe(!1),N=s=>k("flex cursor-pointer items-center gap-3 rounded-lg border px-4 py-3 transition-all duration-200",s?"border-primary bg-primary/5":"border-border hover:bg-accent"),u="w-full rounded-lg border border-border bg-background px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground outline-none focus:border-ring focus:ring-2 focus:ring-ring focus:ring-offset-2 transition-all duration-200",g=Mt(()=>{t?.(i),x(!0),setTimeout(()=>x(!1),2e3)},[i,t]),w=Mt(()=>{let s=p.trim();!s||i.guardians.includes(s)||(l(R=>({...R,guardians:[...R.guardians,s]})),m(""))},[p,i.guardians]);return B(d,{className:"w-full rounded-xl border border-border bg-card p-5 shadow-sm",children:[b("div",{className:"flex items-center justify-between mb-5",children:B("div",{className:"flex items-center gap-2",children:[n&&B(r,{variant:"ghost",size:"sm",onClick:n,children:[b(Wt,{size:15}),"Back"]}),b("h2",{className:"text-lg font-semibold text-foreground",children:"Smart Wallet Settings"})]})}),B("section",{className:"mb-6",children:[B("h3",{className:"mb-3 flex items-center gap-1.5 text-sm font-semibold text-foreground",children:[b(Lt,{size:15})," Verification Method"]}),b("div",{className:"space-y-2",children:sr.map(s=>B("label",{className:N(i.accountType===s.value),children:[b("input",{type:"radio",name:"accountType",value:s.value,checked:i.accountType===s.value,onChange:()=>l(R=>({...R,accountType:s.value})),className:"h-4 w-4 text-primary accent-primary"}),b("div",{className:"flex items-center gap-2 text-foreground",children:s.icon}),B("div",{children:[b("div",{className:"text-sm font-medium text-foreground",children:s.label}),b("div",{className:"text-xs text-muted-foreground",children:s.description})]})]},s.value))})]}),i.accountType==="social-recovery"&&B("section",{className:"mb-6 rounded-lg border border-border bg-muted/30 p-4",children:[B("h4",{className:"mb-2 flex items-center gap-1.5 text-sm font-semibold text-foreground",children:[b(Ht,{size:14})," Guardian Addresses"]}),b("p",{className:"mb-3 text-xs text-muted-foreground",children:"Set at least one guardian to help recover your wallet if you lose your key"}),i.guardians.length>0&&b("div",{className:"mb-3 space-y-1.5",children:i.guardians.map(s=>B("div",{className:"flex items-center justify-between rounded-md bg-card px-3 py-2 text-sm",children:[B("span",{className:"font-mono text-xs text-foreground",children:[s.slice(0,8),"...",s.slice(-6)]}),b(r,{variant:"ghost",size:"icon",onClick:()=>l(R=>({...R,guardians:R.guardians.filter(A=>A!==s)})),children:b(ar,{size:14})})]},s))}),B("div",{className:"flex gap-2",children:[b(a,{type:"text",placeholder:"Enter guardian address (0x...)",value:p,onChange:s=>m(s.target.value),onKeyDown:s=>{s.key==="Enter"&&(s.preventDefault(),w())},className:"flex-1"}),B(r,{size:"sm",onClick:w,disabled:!p.trim(),children:[b(rr,{size:14})," Add"]})]})]}),i.accountType==="multi-sig"&&B("section",{className:"mb-6 rounded-lg border border-border bg-muted/30 p-4",children:[B("h4",{className:"mb-2 flex items-center gap-1.5 text-sm font-semibold text-foreground",children:[b(It,{size:14})," Signing Threshold"]}),b("p",{className:"mb-3 text-xs text-muted-foreground",children:"Set how many signers are needed to authorize a transaction"}),b("div",{className:"flex items-center gap-3",children:[1,2,3].map(s=>B("label",{className:N(i.threshold===s),children:[b("input",{type:"radio",name:"threshold",value:s,checked:i.threshold===s,onChange:()=>l(R=>({...R,threshold:s})),className:"sr-only"}),s,"-of-3"]},s))})]}),b(c,{className:"my-4"}),B("section",{className:"mb-6",children:[B("h3",{className:"mb-3 flex items-center gap-1.5 text-sm font-semibold text-foreground",children:[b(nr,{size:15})," Gas Fees"]}),b("div",{className:"space-y-2",children:ir.map(s=>B("label",{className:N(i.paymasterType===s.value),children:[b("input",{type:"radio",name:"paymasterType",value:s.value,checked:i.paymasterType===s.value,onChange:()=>l(R=>({...R,paymasterType:s.value})),className:"h-4 w-4 text-primary accent-primary"}),B("div",{className:"flex-1",children:[b("div",{className:"text-sm font-medium text-foreground",children:s.label}),b("div",{className:"text-xs text-muted-foreground",children:s.description})]})]},s.value))}),i.paymasterType==="custom"&&b("div",{className:"mt-3",children:b("input",{type:"text",placeholder:"Custom Paymaster URL",value:i.customPaymasterUrl,onChange:s=>l(R=>({...R,customPaymasterUrl:s.target.value})),className:u})})]}),b(c,{className:"my-4"}),B("section",{className:"mb-6",children:[B("h3",{className:"mb-3 flex items-center gap-1.5 text-sm font-semibold text-foreground",children:[b(or,{size:15})," Bundler"]}),b("div",{className:"space-y-2",children:lr.map(s=>B("label",{className:N(i.bundlerPreset===s.value),children:[b("input",{type:"radio",name:"bundlerPreset",value:s.value,checked:i.bundlerPreset===s.value,onChange:()=>l(R=>({...R,bundlerPreset:s.value})),className:"h-4 w-4 text-primary accent-primary"}),B("div",{className:"flex-1",children:[b("div",{className:"text-sm font-medium text-foreground",children:s.label}),b("div",{className:"text-xs text-muted-foreground",children:s.description})]})]},s.value))}),i.bundlerPreset==="custom"&&b("div",{className:"mt-3",children:b("input",{type:"text",placeholder:"Custom Bundler URL",value:i.customBundlerUrl,onChange:s=>l(R=>({...R,customBundlerUrl:s.target.value})),className:u})})]}),B("div",{className:"flex items-center gap-3",children:[B(r,{className:"flex-1",onClick:g,children:[b(tr,{size:15}),f?"Saved \u2713":"Save Settings"]}),n&&B(r,{variant:"outline",onClick:n,children:[b(Wt,{size:15}),"\u2190 Back to Simple Mode"]})]})]})}import{AlertTriangle as ur,CheckCircle as mr,ShieldAlert as pr,X as fr}from"lucide-react";import{useValidateDestination as gr}from"@naculus/connect-appkit-react";import{jsx as W,jsxs as ee}from"react/jsx-runtime";var vr={safe:{icon:W(mr,{size:20}),label:"Safe",colorClass:"text-[hsl(var(--safe,142_76%_36%))]",bgClass:"bg-[hsl(var(--safe)/0.1)]",buttonVariant:"default"},warning:{icon:W(ur,{size:20}),label:"Warning",colorClass:"text-[hsl(var(--warning,38_92%_50%))]",bgClass:"bg-[hsl(var(--warning)/0.1)]",buttonVariant:"default"},blocked:{icon:W(pr,{size:20}),label:"Blocked",colorClass:"text-destructive",bgClass:"bg-destructive/10",buttonVariant:"destructive"}};function br({address:e,open:t,onClose:n,onProceed:o}){let r=T(),a=r.Button,d=r.Dialog,c=r.DialogContent,i=r.DialogHeader,l=r.DialogTitle,{validation:p}=gr({address:e}),{level:m,warning:f}=p,x=vr[m],N=m==="blocked",u=e.length>12?`${e.slice(0,6)}...${e.slice(-4)}`:e,g=s=>k("inline-flex items-center justify-center whitespace-nowrap rounded-lg","text-sm font-medium transition-all duration-200","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2","disabled:pointer-events-none disabled:opacity-50","h-10 px-4 py-2",s==="outline"&&"border border-input bg-transparent hover:bg-accent hover:text-accent-foreground",s==="destructive"&&"bg-destructive text-destructive-foreground hover:bg-destructive/90 shadow-sm",s==="default"&&"bg-primary text-primary-foreground hover:bg-primary/90 shadow-sm"),w=ee("div",{className:"flex flex-col gap-4",children:[ee("div",{className:k("flex items-center gap-3 rounded-lg p-4",x.bgClass),children:[W("span",{className:x.colorClass,children:x.icon}),ee("div",{className:"flex flex-col gap-0.5",children:[W("span",{className:k("text-sm font-semibold",x.colorClass),children:x.label}),W("span",{className:"text-xs text-muted-foreground break-all font-mono",children:u})]})]}),f&&W("p",{className:"text-sm text-muted-foreground m-0",children:f}),ee("div",{className:"flex gap-2 justify-end pt-2",children:[a?W(a,{onClick:n,variant:"outline",className:"w-full sm:w-auto",children:"Cancel"}):W("button",{type:"button",onClick:n,className:k(g("outline"),"w-full sm:w-auto"),children:"Cancel"}),o&&(a?W(a,{onClick:o,variant:N?"destructive":"default",disabled:N,className:"w-full sm:w-auto",children:"Proceed anyway"}):W("button",{type:"button",onClick:o,disabled:N,className:k(g(N?"destructive":"default"),"w-full sm:w-auto"),children:"Proceed anyway"}))]})]});return d&&c&&i&&l?W(d,{open:t,onOpenChange:s=>{s||n()},children:ee(c,{className:"sm:max-w-md",children:[W(i,{children:W(l,{children:"Address Warning"})}),w]})}):t?ee("div",{className:"fixed inset-0 z-50 flex items-center justify-center p-4",children:[W("div",{className:"absolute inset-0 bg-black/80","aria-hidden":"true",onClick:n}),ee("div",{role:"dialog","aria-modal":"true",className:"relative z-10 w-full max-w-sm rounded-xl border bg-card text-card-foreground shadow-2xl p-6",children:[ee("div",{className:"flex items-center justify-between mb-4",children:[W("h2",{className:"text-lg font-semibold m-0",children:"Address Warning"}),W("button",{onClick:n,type:"button",className:"rounded-md p-1 text-muted-foreground hover:text-foreground transition-colors","aria-label":"Close",children:W(fr,{size:16})})]}),w]})]}):null}import{Wallet as Vt,AlertCircle as xr}from"lucide-react";import{jsx as O,jsxs as ae}from"react/jsx-runtime";function yr({wallets:e,onSelect:t,loading:n=!1,error:o=null}){let a=T().Card,d=c=>a?O(a,{className:"p-4",children:c}):O("div",{className:"rounded-xl border bg-card text-card-foreground shadow-sm p-4",children:c});return n?d(ae("div",{className:"flex flex-col gap-3",children:[Array.from({length:3}).map((c,i)=>ae("div",{className:"flex items-center gap-3 p-3 rounded-lg animate-pulse",children:[O("div",{className:"h-10 w-10 rounded-full bg-muted"}),O("div",{className:"h-4 w-32 rounded bg-muted"})]},i)),O("p",{className:"text-xs text-muted-foreground text-center m-0",children:"Detecting wallets..."})]})):o?d(ae("div",{className:"flex flex-col items-center gap-3 py-4",children:[O(xr,{size:24,className:"text-destructive"}),O("p",{className:"text-sm text-destructive m-0 font-medium",children:o})]})):e.length===0?d(ae("div",{className:"flex flex-col items-center gap-3 py-6",children:[O(Vt,{size:32,className:"text-muted-foreground"}),ae("p",{className:"text-sm text-muted-foreground m-0 text-center",children:["No wallets detected.",O("br",{}),"Install a browser wallet extension to get started."]})]})):O("div",{className:"flex flex-col gap-2",children:e.map(c=>ae("button",{type:"button",onClick:()=>t(c),className:k("flex items-center gap-3 w-full p-3 rounded-lg","border border-input bg-card hover:bg-accent hover:text-accent-foreground","transition-all duration-200 cursor-pointer","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"),children:[c.icon?O("img",{src:c.icon,alt:c.name,className:"h-10 w-10 rounded-full object-cover shrink-0",onError:i=>{i.target.style.display="none"}}):O("div",{className:"h-10 w-10 rounded-full bg-muted flex items-center justify-center shrink-0",children:O(Vt,{size:18,className:"text-muted-foreground"})}),ae("div",{className:"flex flex-col items-start gap-0.5 text-left min-w-0",children:[O("span",{className:"text-sm font-medium truncate w-full",children:c.name}),O("span",{className:"text-xs text-muted-foreground truncate w-full",children:c.rdns})]})]},c.id))})}export{We as AccountButton,br as AddressWarningDialog,Fe as AppKit,je as AppKitButton,qe as AppKitChainSelector,de as ChainSelector,te as ConnectButton,ge as ErrorBoundary,pe as QRCodeModal,Uo as RouteSelector,fe as SeedPhraseBackup,Ve as SignInButton,dr as SmartWalletSettings,Zo as SmartWalletToggle,$e as ThemeProvider,Ae as WalletConnectProvider,yr as WalletPicker,_e as Web3ComponentProvider,be as Web3ConnectUI,k as cn,Rt as useAppKit,yo as useComponent,T as useComponentRegistry,ao as useDetectionMode,ue as useEIP6963,me as useIsMobile,bt as useTheme,Jn as useThemeVariable,en as useWalletConnect,Ee as useWalletConnectOptional};
|
|
11
|
+
}`}function za(t){let e=new Set;if(t!=="computed"||typeof document>"u")return e;for(let n of Object.keys(Le)){let o=Le[n],r=getComputedStyle(document.documentElement).getPropertyValue(o.name).trim();r&&r!==o.fallback&&e.add(n)}return e}function dn({children:t,theme:e={},defaultDark:n=!1,priority:o="fallback"}){let[r,s]=vt(e),[a,i]=vt(n);xt(()=>{cn()},[r]);let[l,c]=vt(new Set);xt(()=>{c(za(o))},[o]);let u=yt(()=>{if(o==="fallback"||l.size===0)return r;let f={};for(let[h,N]of Object.entries(r))!l.has(h)&&N&&(f[h]=N);return f},[r,o,l]),d=yt(()=>La(u),[u]);xt(()=>{if(typeof document>"u")return;let f=document.documentElement;a?f.classList.add("dark"):f.classList.remove("dark"),cn()},[a]);let p=yt(()=>"w3c-theme-"+Math.random().toString(36).slice(2,9),[]),g=Ia(()=>i(f=>!f),[]),b=yt(()=>({theme:r,isDark:a,setTheme:s,toggleDarkMode:g}),[r,a,g]);return Ha(_o.Provider,{value:b,children:[d?Va("style",{id:p,dangerouslySetInnerHTML:{__html:d}}):null,t]})}function Fo(){return Ma(_o)}function Wa(t){let{theme:e}=Fo(),[n,o]=vt("");return xt(()=>{let r=Le[t];if(!r)return;let s=e[t];if(s){o(s);return}if(typeof document>"u"){o(r.fallback);return}let a=getComputedStyle(document.documentElement).getPropertyValue(r.name).trim();o(a||r.fallback)},[t,e]),n||Le[t]?.fallback||""}import{jsx as Ze}from"react/jsx-runtime";var Ko=Ua({mode:"walletconnect"});function Ka(){return Oa(Ko)}function et({config:t,children:e,autoConnect:n=!1,detectionMode:o="walletconnect",theme:r,defaultDark:s=!1,themePriority:a="computed"}){let i=_a(()=>({mode:o}),[o]),l=o==="walletconnect"||o==="auto";return Ze(Ko.Provider,{value:i,children:Ze(dn,{theme:r,defaultDark:s,priority:a,children:Ze(un,{components:{QRCodeModal:Ye},children:Ze(Fa,{config:t,autoConnect:n,children:l?Ze(St,{children:e}):e})})})})}import{jsx as jo}from"react/jsx-runtime";function $a({className:t,variant:e,size:n,...o}){let r=["inline-flex items-center justify-center gap-2 rounded-lg border px-4 py-2","text-sm font-medium transition-colors","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring","disabled:pointer-events-none disabled:opacity-50",e==="outline"?"border-input bg-transparent hover:bg-accent":"border-primary bg-primary text-primary-foreground hover:bg-primary/90",n==="sm"?"h-9 px-3":n==="icon"?"h-10 w-10 p-0":"h-10",t].filter(Boolean).join(" ");return jo("button",{type:"button",className:r,...o})}var mn={Button:$a,ConnectButton:ye,AccountButton:Et,ChainSelector:ze,QRCodeModal:Ye,SignInButton:rn,SeedPhraseBackup:Je,ErrorBoundary:Xe,Web3ConnectUI:et},qo=qa({});function un({children:t,components:e={}}){let n=Qa(()=>({...mn,...e}),[e]);return jo(qo.Provider,{value:n,children:t})}function B(){return ja(qo)}function Ga(t){return B()[t]}import{jsx as G,jsxs as ke}from"react/jsx-runtime";function Qo(t){let e=t&&typeof t=="object"&&"details"in t?t.details:void 0,n=e instanceof Error?`${e.name}: ${e.message}`:e;Ja.error("ui/ChainSelector","switchChain failed",t,n)}function tt({chainId:t,className:e}){let n=at(t);return n?G("span",{className:y("inline-flex items-center justify-center shrink-0",e),dangerouslySetInnerHTML:{__html:n}}):null}function ze({className:t,showLabel:e=!0,variant:n="dropdown"}){let{currentChain:o,availableChains:r,switchChain:s,isEvm:a}=ti(),{isConnected:i}=ni(),[l,c]=Xa(!1),d=B().Button,p=Za(null);if(ei(()=>{function f(h){p.current&&!p.current.contains(h.target)&&c(!1)}return document.addEventListener("mousedown",f),()=>document.removeEventListener("mousedown",f)},[]),!i)return null;let g=o?.name??"Unknown Chain",b=r.length>1;return n==="minimal"?ke("div",{className:y("inline-flex items-center gap-1.5 text-xs text-muted-foreground",t),children:[o&&G(tt,{chainId:o.caip2,className:"h-3.5 w-3.5"}),g]}):n==="buttons"?G("div",{className:y("flex flex-wrap gap-2",t),children:r.map(f=>{let h=f.caip2,N=h===o?.caip2;return ke(d,{className:N?y("bg-accent","border-primary"):"",onClick:()=>{N||s(h).catch(Qo)},children:[G(tt,{chainId:h,className:"h-4 w-4"}),f.name,f.token&&G("span",{className:"text-xs opacity-60",children:f.token})]},h)})}):b?ke("div",{ref:p,className:y("relative inline-block",t),children:[ke(d,{onClick:()=>c(!l),children:[o&&G(tt,{chainId:o.caip2,className:"h-4 w-4"}),g,G("svg",{className:y("h-3 w-3 transition-transform",l&&"rotate-180"),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:G("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]}),l&&ke("div",{className:"absolute left-0 top-full mt-1 z-50 min-w-[180px] rounded-lg border bg-card p-1 shadow-lg animate-in fade-in zoom-in-95 duration-200",children:[e&&G("div",{className:"px-2 py-1.5 text-xs font-medium text-muted-foreground uppercase tracking-wider",children:"Switch Network"}),r.map(f=>{let h=f.caip2,N=h===o?.caip2;return ke(d,{onClick:()=>{N||s(h).catch(Qo),c(!1)},className:y("flex w-full items-center gap-2 rounded-md px-2 py-2 text-sm transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",N?"bg-accent font-medium":"hover:bg-accent/50"),children:[G(tt,{chainId:h,className:"h-4 w-4"}),G("span",{className:"flex-1 text-left",children:f.name}),f.token&&G("span",{className:"text-xs text-muted-foreground",children:f.token}),N&&G("svg",{className:"h-4 w-4 text-primary",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:G("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 13l4 4L19 7"})})]},h)})]})]}):ke("div",{className:y("inline-flex items-center gap-2 rounded-md border border-border px-3 py-2 text-sm opacity-60 cursor-default",t),children:[o&&G(tt,{chainId:o.caip2,className:"h-4 w-4"}),g]})}import{useEmbeddedWallet as oi}from"@naculus/connect-appkit-react";import{Check as $o,Copy as ri,Loader2 as si,Plus as ai}from"lucide-react";import{useCallback as pn,useState as fn}from"react";import{jsx as J,jsxs as We}from"react/jsx-runtime";var ii={eip155:{name:"Ethereum & EVM",detail:"One address across Ethereum, Polygon, Arbitrum and every EVM chain"},solana:{name:"Solana",detail:"A separate key on a different curve"}};function li(t){return t.length<=12?t:`${t.slice(0,6)}...${t.slice(-4)}`}function ci({account:t,isActive:e,onSelect:n}){let[o,r]=fn(!1),s=ii[t.namespace]??{name:t.namespace,detail:""},a=pn(i=>{i.stopPropagation();let l=navigator?.clipboard?.writeText;l&&l.call(navigator.clipboard,t.address).then(()=>{r(!0),setTimeout(()=>r(!1),1500)},()=>{})},[t.address]);return We("div",{role:"radio",tabIndex:0,"aria-checked":e,onClick:n,onKeyDown:i=>{i.target===i.currentTarget&&(i.key==="Enter"||i.key===" ")&&(i.preventDefault(),n())},className:y("flex w-full items-center gap-3 rounded-md border px-3 py-2.5 text-left text-sm transition-colors","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",e?"border-primary bg-accent":"border-border hover:bg-accent/50"),children:[We("span",{className:"flex min-w-0 flex-1 flex-col",children:[We("span",{className:"flex items-center gap-2 font-medium",children:[s.name,e&&J("span",{className:"rounded-sm bg-primary/10 px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide text-primary",children:"Signing"})]}),J("span",{className:"truncate font-mono text-xs text-muted-foreground",children:li(t.address)})]}),J("button",{type:"button","aria-label":`Copy ${s.name} address`,onClick:a,className:"shrink-0 rounded p-1 text-muted-foreground hover:bg-accent hover:text-foreground",children:o?J($o,{size:14}):J(ri,{size:14})}),e&&J($o,{size:16,className:"shrink-0 text-primary"})]})}function Go({className:t,hideBackfill:e=!1,onSelect:n,accounts:o,activeNamespace:r,canDerive:s,setActiveNamespace:a,backfillAccounts:i}){let[l,c]=fn(!1),[u,d]=fn(null),p=pn(f=>{if(f!==r)try{a(f),d(null),n?.(f)}catch(h){d(h instanceof Error?h.message:"Could not switch account")}},[r,a,n]),g=pn(async()=>{c(!0),d(null);try{await i()}catch(f){d(f instanceof Error?f.message:"Could not derive accounts")}finally{c(!1)}},[i]);if(o.length===0)return null;let b=!e&&s;return We("div",{className:y("flex flex-col gap-2",t),children:[We("div",{className:"flex items-baseline justify-between",children:[J("span",{className:"text-xs font-medium uppercase tracking-wider text-muted-foreground",children:"Accounts"}),J("span",{className:"text-[11px] text-muted-foreground",children:"Chooses the signing key, not the network"})]}),J("div",{role:"radiogroup","aria-label":"Wallet accounts",className:"flex flex-col gap-1.5",children:o.map(f=>J(ci,{account:f,isActive:f.namespace===r,onSelect:()=>p(f.namespace)},f.namespace))}),b&&We("button",{type:"button",onClick:g,disabled:l,className:y("flex items-center justify-center gap-2 rounded-md border border-dashed border-border px-3 py-2 text-xs text-muted-foreground","hover:bg-accent/50 disabled:opacity-60"),children:[l?J(si,{size:14,className:"animate-spin"}):J(ai,{size:14}),l?"Deriving\u2026":"Show accounts this phrase already owns"]}),u&&J("p",{role:"alert",className:"text-xs text-destructive",children:u})]})}function di(t){let{wallet:e,accounts:n,activeNamespace:o,setActiveNamespace:r,backfillAccounts:s}=oi();return e?J(Go,{...t,accounts:n,activeNamespace:o,canDerive:e.recoveryAvailable&&n.length<2,setActiveNamespace:r,backfillAccounts:s}):null}import{AlertTriangle as ui,Info as Jo,ShieldAlert as mi,ShieldCheck as pi}from"lucide-react";import{useEmbeddedWallet as fi}from"@naculus/connect-appkit-react";import{jsx as te,jsxs as oe}from"react/jsx-runtime";var gi={critical:mi,warning:ui,info:Jo},hi={critical:"text-destructive",warning:"text-amber-600 dark:text-amber-500",info:"text-muted-foreground"};function Yo(t){return t>=90?"text-emerald-600 dark:text-emerald-500":t>=70?"text-amber-600 dark:text-amber-500":"text-destructive"}function bi({finding:t}){let e=gi[t.severity]??Jo;return oe("li",{className:"flex gap-2.5 rounded-md border border-border px-3 py-2.5",children:[te(e,{size:16,className:y("mt-0.5 shrink-0",hi[t.severity])}),oe("div",{className:"flex min-w-0 flex-1 flex-col gap-1",children:[oe("div",{className:"flex items-baseline justify-between gap-2",children:[te("span",{className:"text-sm font-medium",children:t.title}),t.deduction>0&&oe("span",{className:"shrink-0 font-mono text-xs text-muted-foreground",children:["\u2212",t.deduction]})]}),te("p",{className:"text-xs leading-relaxed text-muted-foreground",children:t.detail}),t.remedy&&oe("p",{className:"text-xs leading-relaxed",children:[te("span",{className:"font-medium",children:"What helps: "}),te("span",{className:"text-muted-foreground",children:t.remedy})]})]})]})}function Xo({className:t,hideInformational:e=!1,report:n}){if(!n)return null;let{score:o,level:r,findings:s,encrypted:a,backend:i,unlock:l}=n,c=e?s.filter(d=>d.deduction>0):s,u=s.every(d=>d.deduction===0);return oe("div",{className:y("flex flex-col gap-3",t),children:[oe("div",{className:"flex items-center gap-3 rounded-lg border border-border px-4 py-3",children:[te(pi,{size:22,className:y("shrink-0",Yo(o))}),oe("div",{className:"flex min-w-0 flex-1 flex-col",children:[oe("div",{className:"flex items-baseline gap-2",children:[te("span",{className:y("text-2xl font-semibold tabular-nums",Yo(o)),children:o}),te("span",{className:"text-sm text-muted-foreground",children:"/ 100"}),oe("span",{className:"ml-auto text-xs text-muted-foreground",children:["Tier ",r]})]}),oe("span",{className:"text-xs text-muted-foreground",children:[i==="localStorage"?"localStorage":"IndexedDB",a?" \xB7 encrypted":" \xB7 not encrypted",l.sealedWith?.includes("prf")?" \xB7 passkey":""]})]})]}),u?te("p",{className:"text-xs text-muted-foreground",children:"Nothing is holding this score down."}):te("p",{className:"text-xs text-muted-foreground",children:"Scored against this SDK's own published rubric, not an external standard. Each item below names the points it costs."}),te("ul",{className:"flex flex-col gap-1.5",children:c.map(d=>te(bi,{finding:d},d.id))})]})}function yi(t){let{securityReport:e}=fi();return te(Xo,{...t,report:e})}import{useCallback as xi,useEffect as vi,useRef as Ci,useState as gn}from"react";import{Eye as wi,EyeOff as Ni,KeyRound as ki,ShieldAlert as Ri}from"lucide-react";import{usePassphraseGate as Si}from"@naculus/connect-appkit-react";import{jsx as U,jsxs as he}from"react/jsx-runtime";var hn=8,Ti=12;function Zo({className:t,request:e,submit:n,cancel:o}){let[r,s]=gn(""),[a,i]=gn(""),[l,c]=gn(!1),u=Ci(null),d=e?.intent==="create";vi(()=>{if(!e){s(""),i(""),c(!1);return}s(""),i(""),u.current?.focus()},[e]);let p=d&&r.length>0&&r.length<hn,g=d&&a.length>0&&a!==r,b=d?r.length>=hn&&a===r:r.length>0,f=xi(h=>{h.preventDefault(),b&&n(r)},[b,n,r]);return e?U("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4",role:"presentation",children:he("form",{role:"dialog","aria-modal":"true","aria-label":d?"Choose a passphrase":"Unlock your wallet",onSubmit:f,className:y("flex w-full max-w-sm flex-col gap-4 rounded-lg border border-border bg-card p-5 shadow-lg",t),children:[he("div",{className:"flex items-center gap-2",children:[U(ki,{size:18,className:"shrink-0 text-primary"}),U("h2",{className:"text-base font-semibold",children:d?"Choose a passphrase":"Unlock your wallet"})]}),e.previousError&&U("p",{role:"alert",className:"rounded-md bg-destructive/10 px-3 py-2 text-xs text-destructive",children:e.previousError}),U("p",{className:"text-xs leading-relaxed text-muted-foreground",children:d?"This encrypts your wallet on this device. Without it, anything that can run script on this page can read your keys.":"Your wallet is encrypted on this device. Enter the passphrase you chose to open it."}),he("label",{className:"flex flex-col gap-1.5",children:[U("span",{className:"text-xs font-medium",children:"Passphrase"}),he("span",{className:"relative flex items-center",children:[U("input",{ref:u,type:l?"text":"password",value:r,onChange:h=>s(h.target.value),autoComplete:d?"new-password":"current-password",autoFocus:!0,className:"w-full rounded-md border border-border bg-background px-3 py-2 pr-9 text-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"}),U("button",{type:"button","aria-label":l?"Hide passphrase":"Show passphrase",onClick:()=>c(h=>!h),className:"absolute right-2 text-muted-foreground hover:text-foreground",children:l?U(Ni,{size:15}):U(wi,{size:15})})]})]}),d&&he("label",{className:"flex flex-col gap-1.5",children:[U("span",{className:"text-xs font-medium",children:"Type it again"}),U("input",{type:l?"text":"password",value:a,onChange:h=>i(h.target.value),autoComplete:"new-password",className:"w-full rounded-md border border-border bg-background px-3 py-2 text-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"})]}),p&&he("p",{role:"alert",className:"text-xs text-destructive",children:["At least ",hn," characters."]}),g&&U("p",{role:"alert",className:"text-xs text-destructive",children:"These do not match."}),d&&!p&&r.length>0&&r.length<Ti&&U("p",{className:"text-xs text-muted-foreground",children:"Short. Several ordinary words are far harder to guess than a short one with symbols in it."}),d&&he("p",{className:"flex gap-2 rounded-md bg-amber-500/10 px-3 py-2 text-xs leading-relaxed text-amber-700 dark:text-amber-500",children:[U(Ri,{size:14,className:"mt-0.5 shrink-0"}),U("span",{children:"If you forget this, nothing can open this copy of the wallet \u2014 not us, not your browser. Your recovery phrase is the only thing that gets it back."})]}),he("div",{className:"flex justify-end gap-2 pt-1",children:[U("button",{type:"button",onClick:()=>o(),className:"rounded-md border border-border px-3 py-2 text-sm hover:bg-accent",children:"Cancel"}),U("button",{type:"submit",disabled:!b,className:"rounded-md bg-primary px-3 py-2 text-sm font-medium text-primary-foreground disabled:opacity-50",children:d?"Encrypt wallet":"Unlock"})]})]})}):null}function Pi(t){let{request:e,submit:n,cancel:o}=Si();return U(Zo,{...t,request:e,submit:n,cancel:o})}import{useCallback as nr,useState as bn}from"react";import{Fingerprint as er,Loader2 as Bi,ShieldAlert as tr,ShieldCheck as Ei,TriangleAlert as Ai}from"lucide-react";import{useEmbeddedWallet as Di,useWeb3 as Mi}from"@naculus/connect-appkit-react";import{Fragment as Li,jsx as X,jsxs as Ve}from"react/jsx-runtime";function or({className:t,passkeys:e,unlock:n,onRegistered:o}){let[r,s]=bn(!1),[a,i]=bn(null),[l,c]=bn(!1),u=!!e?.hasCredential?.()||l,d=nr(async()=>{if(e){s(!0),i(null);try{await e.createPasskey(),c(!0),await o?.()}catch(f){i(f instanceof Error?f.message:"Could not register a passkey")}finally{s(!1)}}},[e,o]);if(!e)return null;let p=n?.sealedWith?.includes("prf")??!1,g=null;if(u)switch(n?.prf){case"available":g=p?{tone:"good",icon:X(Ei,{size:16}),title:"Your passkey unlocks this wallet",detail:"Opening it needs your fingerprint or face, not a value a script on this page can supply."}:{tone:"warn",icon:X(Ai,{size:16}),title:"Registered, but not applied yet",detail:"This device can produce the key material. The next time the wallet is saved, the record is sealed under it."};break;case"unavailable":g={tone:"bad",icon:X(tr,{size:16}),title:"This passkey cannot unlock the wallet",detail:"The authenticator did not return the key material. Firefox does not implement the extension, and a passkey created before it was requested cannot have it added afterwards \u2014 a new one has to be registered on a browser that supports it."};break;default:g={tone:"neutral",icon:X(er,{size:16}),title:"A passkey is registered",detail:"Whether it can unlock this wallet is not known until the wallet is opened once. It will be used if it works."};break}let b={good:"text-emerald-600 dark:text-emerald-500",warn:"text-amber-600 dark:text-amber-500",bad:"text-destructive",neutral:"text-muted-foreground"};return Ve("div",{className:y("flex flex-col gap-3",t),children:[g?Ve("div",{className:"flex gap-2.5 rounded-md border border-border px-3 py-2.5",children:[X("span",{className:y("mt-0.5 shrink-0",b[g.tone]),children:g.icon}),Ve("div",{className:"flex min-w-0 flex-col gap-1",children:[X("span",{className:"text-sm font-medium",children:g.title}),X("p",{className:"text-xs leading-relaxed text-muted-foreground",children:g.detail})]})]}):Ve(Li,{children:[X("p",{className:"text-xs leading-relaxed text-muted-foreground",children:"A passkey raises what it takes to read your stored keys from \u201Cany script on this page\u201D to your fingerprint or face. The passphrase keeps working, so a broken or replaced authenticator does not cost you this copy."}),Ve("p",{className:"flex gap-2 rounded-md bg-amber-500/10 px-3 py-2 text-xs leading-relaxed text-amber-700 dark:text-amber-500",children:[X(tr,{size:14,className:"mt-0.5 shrink-0"}),X("span",{children:"This protects the copy on this device. It does not back up your wallet \u2014 the recovery phrase is still the only thing that survives losing this device."})]}),Ve("button",{type:"button",onClick:d,disabled:r,className:"flex items-center justify-center gap-2 rounded-md bg-primary px-3 py-2 text-sm font-medium text-primary-foreground disabled:opacity-60",children:[r?X(Bi,{size:15,className:"animate-spin"}):X(er,{size:15}),r?"Waiting for your device\u2026":"Protect with a passkey"]})]}),a&&X("p",{role:"alert",className:"text-xs text-destructive",children:a})]})}function Ii(t){let{client:e}=Mi(),{securityReport:n,hasWallet:o}=Di(),r=nr(async()=>{let s=e?.embeddedConnector;s&&o&&await s.save()},[e,o]);return X(or,{...t,passkeys:e?.passkeysConnector??null,unlock:n?.unlock,onRegistered:r})}import{useAccount as sr,useBalance as zi,useChain as Wi,useDisconnect as ar,useEmbeddedWallet as Vi,useWallet as Hi,useWeb3 as Ui}from"@naculus/connect-appkit-react";import{createContext as Oi,useCallback as nt,useContext as _i,useEffect as Fi,useMemo as ir,useState as rr}from"react";import{jsx as Re,jsxs as pr}from"react/jsx-runtime";var lr=Oi(null);function cr(){let t=_i(lr);if(!t)throw new Error("useAppKit must be used within an <AppKit> component");return t}function dr({projectId:t,metadata:e,enableEmbedded:n=!1,enablePasskeys:o=!1,chains:r,embeddedConfig:s,encryptionKey:a,siwx:i,children:l,className:c,autoConnect:u=!1,theme:d,defaultDark:p=!1,themePriority:g="computed",detectionMode:b="auto"}){let[f,h]=rr(!1),[N,m]=rr(!1),x=ir(()=>({projectId:t,metadata:e,enableEmbedded:n,enablePasskeys:o,chains:r,embeddedConfig:s,encryptionKey:a,siwx:i}),[t,e,n,o,r,s,a,i]);return Re(et,{config:x,autoConnect:u,detectionMode:b,theme:d,defaultDark:p,themePriority:g,children:Re(Ki,{className:c,open:f,setOpen:h,backupOpen:N,setBackupOpen:m,children:l})})}function Ki({children:t,className:e,open:n,setOpen:o,backupOpen:r,setBackupOpen:s}){let{isConnected:a,isConnecting:i}=Hi(),{primaryAccount:l}=sr(),{currentChain:c,availableChains:u,switchChain:d}=Wi(),p=Vi(),{disconnect:g}=ar(),{wallets:b,hasWallets:f}=Ue(),{formatted:h}=zi(),N=h??null,m=nt(async()=>{await g()},[g]),x=nt(()=>{p.confirmBackup(),s(!1)},[p,s]),T=nt(()=>{p.confirmBackup(),s(!1)},[p,s]),S=nt(()=>p.getPrivateKey(),[p]),O=ir(()=>({connect:()=>o(!0),disconnect:m,isConnected:a,isConnecting:i,address:l,balance:N,balanceSymbol:c?.token??null,chainName:c?.name??null,availableChains:u.map(D=>({caip2:D.caip2,name:D.name,token:D.token})),switchChain:d,wallets:b,hasWallets:f,backupPending:p.backupPending,seedPhrase:p.seedPhrase,confirmBackup:x,skipBackup:T,open:n,setOpen:o}),[a,i,l,N,c,u,d,b,f,p.backupPending,p.seedPhrase,x,T,m,n,o]);return Fi(()=>{p.seedPhrase&&p.backupPending&&s(!0)},[p.seedPhrase,p.backupPending,s]),pr(lr.Provider,{value:O,children:[t,p.seedPhrase&&r&&Re(Je,{seedPhrase:p.seedPhrase,onConfirm:x,onSkip:T,onExportPrivateKey:S,open:r,onOpenChange:s})]})}function ur({className:t}){let e=cr(),{connectInjected:n}=Ui(),{primaryAccount:o}=sr(),{disconnect:r}=ar(),s=nt(async(a,i,l)=>{a==="injected"&&(await n(l),i())},[n]);return e.isConnected&&o?pr("div",{className:y("inline-flex items-center gap-2",t),children:[Re(ze,{variant:"minimal"}),Re(ye,{isConnected:e.isConnected,address:o,balance:e.balance,balanceSymbol:e.balanceSymbol??void 0,onDisconnect:r,onConnect:s,className:t})]}):Re(ye,{isConnected:e.isConnected,isConnecting:e.isConnecting,address:o,balance:e.balance,balanceSymbol:e.balanceSymbol??void 0,onDisconnect:r,onConnect:s,className:t})}function mr({className:t,variant:e="dropdown"}){return Re(ze,{className:t,variant:e})}try{let t=mn;t&&Object.assign(t,{AppKit:dr,AppKitButton:ur,AppKitChainSelector:mr})}catch{}import{ArrowRight as qi,CheckCircle2 as ji,Clock as Qi,DollarSign as $i,Loader2 as br,XCircle as Gi,AlertCircle as Yi}from"lucide-react";import{Fragment as hr,jsx as v,jsxs as z}from"react/jsx-runtime";function Ji(t){if(t<1e3)return"<1s";if(t<6e4)return`~${Math.round(t/1e3)}s`;let e=Math.floor(t/6e4),n=Math.round(t%6e4/1e3);return n>0?`~${e}m ${n}s`:`~${e}m`}function fr(t){return t.symbol||"UNKNOWN"}function Xi(t){let e=t.toLowerCase();return e.includes("lifi")?"default":e.includes("axelar")?"secondary":"outline"}function Zi(t){return t.length>12?`${t.slice(0,6)}...${t.slice(-6)}`:t}function el({route:t,onSelect:e}){let n=B(),o=n.Button,r=n.Badge,s=t.provider??"Route";return z("div",{className:"flex items-center justify-between gap-4 rounded-lg border border-border p-4 transition-colors hover:bg-accent/30",children:[z("div",{className:"flex flex-col gap-1.5 min-w-0",children:[z("div",{className:"flex items-center gap-2",children:[r?v(r,{variant:Xi(s),children:s}):v("span",{className:"inline-flex items-center rounded-md border px-2 py-0.5 text-xs font-medium",children:s}),t.steps.length>1&&z("span",{className:"text-xs text-muted-foreground",children:[t.steps.length," steps"]})]}),z("div",{className:"flex flex-wrap items-center gap-x-4 gap-y-1 text-sm",children:[z("span",{className:"inline-flex items-center gap-1 text-muted-foreground",children:[v($i,{className:"h-3.5 w-3.5"}),"$",t.gasCosts.totalUsd]}),z("span",{className:"inline-flex items-center gap-1 text-muted-foreground",children:[v(Qi,{className:"h-3.5 w-3.5"}),Ji(t.steps.reduce((a,i)=>{let l=t.estimatedTime>0?15e3:0;return a+l},0))]}),z("span",{className:"inline-flex items-center gap-1 text-muted-foreground",children:[t.gasCosts.totalUsd," cost"]})]})]}),v(o,{variant:"outline",size:"sm",onClick:e,children:"Select"})]})}function tl(){let e=B().Skeleton;return z("div",{className:"flex flex-col gap-3","data-testid":"route-selector-loading",children:[z("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[v(br,{className:"h-4 w-4 animate-spin"}),v("span",{children:"Fetching best routes..."})]}),[1,2,3].map(n=>z("div",{className:"flex items-center justify-between gap-4 rounded-lg border border-border p-4",children:[v("div",{className:"flex flex-col gap-2 flex-1",children:e?z(hr,{children:[v(e,{className:"h-4 w-24"}),v(e,{className:"h-3 w-48"})]}):z(hr,{children:[v("div",{className:"h-4 w-24 animate-pulse rounded bg-muted"}),v("div",{className:"h-3 w-48 animate-pulse rounded bg-muted"})]})}),e?v(e,{className:"h-8 w-20 rounded-md"}):v("div",{className:"h-8 w-20 animate-pulse rounded-md bg-muted"})]},n))]})}function nl(){return z("div",{className:"flex flex-col items-center justify-center gap-2 py-8 text-sm text-muted-foreground","data-testid":"route-selector-empty",children:[v(Yi,{className:"h-8 w-8 opacity-40"}),v("span",{children:"No routes found for this pair"}),v("span",{className:"text-xs",children:"Try a different token or amount"})]})}function ol({error:t,onRetry:e}){let o=B().Button;return z("div",{className:"flex flex-col items-center justify-center gap-2 py-6","data-testid":"route-selector-error",children:[v(Gi,{className:"h-8 w-8 text-destructive"}),v("p",{className:"text-sm text-destructive font-medium",children:"Failed to fetch routes"}),v("p",{className:"text-xs text-muted-foreground max-w-xs text-center",children:t}),e&&v(o,{variant:"outline",size:"sm",onClick:e,children:"Retry"})]})}function rl(){let e=B().Progress;return z("div",{className:"flex flex-col items-center gap-3 py-6","data-testid":"route-selector-executing",children:[v(br,{className:"h-6 w-6 animate-spin text-primary"}),v("p",{className:"text-sm font-medium",children:"Executing route..."}),v("p",{className:"text-xs text-muted-foreground",children:"Please confirm the transaction in your wallet"}),e?v(e,{value:50,className:"w-48 h-1.5"}):v("div",{className:"h-1.5 w-48 rounded-full bg-muted",children:v("div",{className:"h-full w-1/2 rounded-full bg-primary animate-pulse"})})]})}function sl({txHash:t}){return z("div",{className:"flex flex-col items-center gap-2 py-6","data-testid":"route-selector-success",children:[v(ji,{className:"h-8 w-8 text-green-500"}),v("p",{className:"text-sm font-medium text-green-600 dark:text-green-400",children:"Route executed successfully!"}),z("p",{className:"text-xs text-muted-foreground font-mono",children:["TX: ",Zi(t)]})]})}function gr({chainId:t,className:e}){let n=at(`eip155:${t}`);return n?v("span",{className:y("inline-flex items-center justify-center shrink-0",e),dangerouslySetInnerHTML:{__html:n}}):null}function al({inputToken:t,outputToken:e,amount:n,routes:o=[],loading:r=!1,executing:s=!1,onRouteSelected:a,onCancel:i,successTxHash:l,error:c,className:u}){let d=B(),p=d.Card,g=d.Button;if(l)return v("div",{className:y("rounded-lg border border-border",u),children:v(sl,{txHash:l})});if(s)return v("div",{className:y("rounded-lg border border-border",u),children:v(rl,{})});return p?z(p,{className:y("p-4",u),children:[f(),h(),N()]}):z("div",{className:y("rounded-lg border border-border p-4",u),children:[f(),h(),N()]});function f(){return!t&&!e?null:z("div",{className:"mb-4 flex flex-wrap items-center gap-2 text-sm",children:[t&&z("span",{className:"inline-flex items-center gap-1.5 font-medium",children:[v(gr,{chainId:t.chainId,className:"h-4 w-4"}),n?`${n.toString()} `:"",fr(t)]}),t&&e&&v(qi,{className:"h-3.5 w-3.5 text-muted-foreground"}),e&&z("span",{className:"inline-flex items-center gap-1.5 font-medium",children:[v(gr,{chainId:e.chainId,className:"h-4 w-4"}),fr(e)]})]})}function h(){return r?v(tl,{}):c?v(ol,{error:c}):o.length===0?v(nl,{}):v("div",{className:"flex flex-col gap-2","data-testid":"route-selector-routes",children:o.map((m,x)=>v(el,{route:m,onSelect:()=>a?.(m)},`${m.fromChain}-${m.toChain}-${m.gasCosts.totalUsd}-${x}`))})}function N(){return!r&&o.length===0&&!c?null:v("div",{className:"mt-4 flex justify-end",children:v(g,{variant:"ghost",size:"sm",onClick:i,children:"Cancel"})})}}import il from"react";import{Shield as ll,ShieldCheck as yr,LoaderCircle as cl,Settings as dl,ChevronRight as ul,AlertCircle as ml,RotateCcw as pl,CheckCircle2 as fl,Fuel as xr,Zap as gl,RefreshCw as hl}from"lucide-react";import{Fragment as xl,jsx as R,jsxs as W}from"react/jsx-runtime";function bl(t){let e=Number(t)/1e18;return e<.001?`~${e.toFixed(6)} ETH`:`~${e.toFixed(3)} ETH`}function yl({isDeployed:t=!1,isDeploying:e=!1,estimatedGas:n,error:o=null,onUpgrade:r,onShowSettings:s,onRetry:a}){let i=B(),l=i.Button,c=i.Card,u=i.Badge,d=s?W(l,{variant:"outline",className:"w-full",onClick:s,children:[R(dl,{size:15})," Advanced Settings ",R(ul,{size:14,className:"text-muted-foreground"})]}):null;return t?W(c,{className:"w-full rounded-xl border border-border bg-card p-5 shadow-sm",children:[R("div",{className:"flex items-start justify-between",children:W("div",{className:"flex items-center gap-3",children:[R("div",{className:"flex h-10 w-10 items-center justify-center rounded-full bg-green-500/10",children:R(yr,{size:22,className:"text-green-500"})}),W("div",{children:[W("div",{className:"flex items-center gap-2",children:[R("span",{className:"text-base font-semibold text-foreground",children:"Smart Wallet"}),W(u,{variant:"secondary",className:"rounded-full bg-green-500/10 px-2 py-0 text-xs font-medium text-green-500",children:[R(fl,{size:12,className:"mr-0.5 inline"})," Deployed"]})]}),R("p",{className:"mt-0.5 text-sm text-muted-foreground",children:"Your wallet has been upgraded to a smart wallet"})]})]})}),R("div",{className:"mt-4 grid grid-cols-2 gap-3",children:[[xr,"Gas Sponsorship","Enabled"],[hl,"Recovery","Enabled"]].map(([p,g,b],f)=>W("div",{className:"rounded-lg bg-muted/50 p-3",children:[W("div",{className:"flex items-center gap-1.5 text-xs text-muted-foreground",children:[il.createElement(p,{size:14}),R("span",{children:g})]}),R("div",{className:"mt-1 text-sm font-medium text-foreground",children:b})]},f))}),s&&R("div",{className:"mt-4",children:d})]}):e?R(c,{className:"w-full rounded-xl border border-border bg-card p-5 shadow-sm",children:W("div",{className:"flex flex-col items-center text-center",children:[R("div",{className:"mb-4 flex h-14 w-14 items-center justify-center rounded-full bg-primary/10",children:R(cl,{size:28,className:"animate-spin text-primary"})}),R("h3",{className:"mb-1 text-base font-semibold text-foreground",children:"Deploying Smart Wallet..."}),R("p",{className:"mb-4 text-sm text-muted-foreground",children:"Please wait, contract deployment may take a few seconds"}),R("div",{className:"h-2 w-full max-w-[200px] overflow-hidden rounded-full bg-muted",children:R("div",{className:"h-full w-full animate-pulse rounded-full bg-primary",style:{animationDuration:"1.5s"}})})]})}):o?W(c,{className:"w-full rounded-xl border border-destructive/30 bg-destructive/5 p-5 shadow-sm",children:[W("div",{className:"flex items-start gap-3",children:[R("div",{className:"mt-0.5 flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-destructive/10",children:R(ml,{size:18,className:"text-destructive"})}),W("div",{className:"min-w-0 flex-1",children:[R("h4",{className:"text-sm font-semibold text-destructive",children:"Deployment Failed"}),R("p",{className:"mt-1 text-xs text-destructive/80 break-words",children:o}),a&&W(l,{variant:"outline",size:"sm",className:"mt-3 border-destructive/30 text-destructive hover:bg-destructive/10",onClick:a,children:[R(pl,{size:13})," Retry"]})]})]}),s&&R("div",{className:"mt-3",children:d})]}):W(c,{className:"w-full rounded-xl border border-border bg-card p-5 shadow-sm",children:[W("div",{className:"flex items-center gap-3",children:[R("div",{className:"flex h-10 w-10 items-center justify-center rounded-full bg-amber-500/10",children:R(ll,{size:20,className:"text-amber-500"})}),W("div",{children:[W("div",{className:"flex items-center gap-2",children:[R("span",{className:"text-base font-semibold text-foreground",children:"Smart Wallet"}),R("span",{className:"rounded-full bg-muted px-2 py-0.5 text-[11px] font-medium text-muted-foreground",children:"Not Upgraded"})]}),R("p",{className:"mt-0.5 text-sm text-muted-foreground",children:"Upgrade to a smart wallet for more features"})]})]}),W("div",{className:"mt-4 space-y-2",children:[R(yn,{icon:gl,color:"text-green-500",text:"No ETH needed for transactions \u2014 pay gas with USDC/USDT"}),R(yn,{icon:xr,color:"text-blue-500",text:"Optional dApp sponsorship, zero-cost transactions"}),R(yn,{icon:yr,color:"text-purple-500",text:"Secure recovery mechanism, no fear of losing keys"})]}),r&&W(l,{className:"mt-4 w-full",onClick:r,children:["Upgrade Now",n!==void 0&&W("span",{className:"ml-1 text-xs opacity-80",children:["(Estimated gas fee: ",bl(n),")"]})]}),s&&W(xl,{children:[W("div",{className:"mt-4 mb-3 flex items-center gap-2",children:[R("div",{className:"h-px flex-1 bg-border"}),R("span",{className:"text-xs text-muted-foreground",children:"or"}),R("div",{className:"h-px flex-1 bg-border"})]}),d]})]})}function yn({icon:t,color:e,text:n}){return W("div",{className:"flex items-center gap-2.5 text-sm text-foreground/80",children:[R(t,{size:14,className:`shrink-0 ${e}`}),R("span",{children:n})]})}import{useState as xn,useCallback as vr}from"react";import{ArrowLeft as Cr,Save as vl,Shield as wr,Users as Nr,KeyRound as kr,Fuel as Cl,Wrench as wl,Plus as Nl,X as kl}from"lucide-react";import{jsx as C,jsxs as M}from"react/jsx-runtime";var Rl=[{value:"simple",label:"Single Sign (default)",description:"Single key control, simple and secure",icon:C(wr,{size:16})},{value:"multi-sig",label:"Multi-Sign (2-of-3)",description:"Requires multiple signers to authorize transactions",icon:C(Nr,{size:16})},{value:"social-recovery",label:"Social Recovery",description:"Set guardian accounts to help recover",icon:C(kr,{size:16})}],Sl=[{value:"self",label:"Pay Self (ETH)",description:"Pay gas fees with ETH"},{value:"sponsor",label:"Sponsored by dApp",description:"dApp covers your gas fees"},{value:"erc20",label:"Pay with USDC/USDT",description:"Use ERC-20 tokens for gas"},{value:"custom",label:"Custom Paymaster URL",description:"Use a custom paymaster service"}],Tl=[{value:"pimlico",label:"Pimlico",description:"High-performance bundler service"},{value:"stackup",label:"Stackup",description:"Decentralized bundler network"},{value:"alchemy",label:"Alchemy",description:"Alchemy AA infrastructure"},{value:"custom",label:"Custom Bundler URL",description:"Use custom bundler endpoint"}];function Pl(){return{accountType:"simple",paymasterType:"self",customPaymasterUrl:"",bundlerPreset:"pimlico",customBundlerUrl:"",guardians:[],threshold:2}}function Bl({currentConfig:t,onSave:e,onBack:n}){let o=B(),r=o.Button,s=o.Input,a=o.Card,i=o.Separator,[l,c]=xn({...Pl(),...t}),[u,d]=xn(""),[p,g]=xn(!1),b=m=>y("flex cursor-pointer items-center gap-3 rounded-lg border px-4 py-3 transition-all duration-200",m?"border-primary bg-primary/5":"border-border hover:bg-accent"),f="w-full rounded-lg border border-border bg-background px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground outline-none focus:border-ring focus:ring-2 focus:ring-ring focus:ring-offset-2 transition-all duration-200",h=vr(()=>{e?.(l),g(!0),setTimeout(()=>g(!1),2e3)},[l,e]),N=vr(()=>{let m=u.trim();!m||l.guardians.includes(m)||(c(x=>({...x,guardians:[...x.guardians,m]})),d(""))},[u,l.guardians]);return M(a,{className:"w-full rounded-xl border border-border bg-card p-5 shadow-sm",children:[C("div",{className:"flex items-center justify-between mb-5",children:M("div",{className:"flex items-center gap-2",children:[n&&M(r,{variant:"ghost",size:"sm",onClick:n,children:[C(Cr,{size:15}),"Back"]}),C("h2",{className:"text-lg font-semibold text-foreground",children:"Smart Wallet Settings"})]})}),M("section",{className:"mb-6",children:[M("h3",{className:"mb-3 flex items-center gap-1.5 text-sm font-semibold text-foreground",children:[C(wr,{size:15})," Verification Method"]}),C("div",{className:"space-y-2",children:Rl.map(m=>M("label",{className:b(l.accountType===m.value),children:[C("input",{type:"radio",name:"accountType",value:m.value,checked:l.accountType===m.value,onChange:()=>c(x=>({...x,accountType:m.value})),className:"h-4 w-4 text-primary accent-primary"}),C("div",{className:"flex items-center gap-2 text-foreground",children:m.icon}),M("div",{children:[C("div",{className:"text-sm font-medium text-foreground",children:m.label}),C("div",{className:"text-xs text-muted-foreground",children:m.description})]})]},m.value))})]}),l.accountType==="social-recovery"&&M("section",{className:"mb-6 rounded-lg border border-border bg-muted/30 p-4",children:[M("h4",{className:"mb-2 flex items-center gap-1.5 text-sm font-semibold text-foreground",children:[C(kr,{size:14})," Guardian Addresses"]}),C("p",{className:"mb-3 text-xs text-muted-foreground",children:"Set at least one guardian to help recover your wallet if you lose your key"}),l.guardians.length>0&&C("div",{className:"mb-3 space-y-1.5",children:l.guardians.map(m=>M("div",{className:"flex items-center justify-between rounded-md bg-card px-3 py-2 text-sm",children:[M("span",{className:"font-mono text-xs text-foreground",children:[m.slice(0,8),"...",m.slice(-6)]}),C(r,{variant:"ghost",size:"icon",onClick:()=>c(x=>({...x,guardians:x.guardians.filter(T=>T!==m)})),children:C(kl,{size:14})})]},m))}),M("div",{className:"flex gap-2",children:[C(s,{type:"text",placeholder:"Enter guardian address (0x...)",value:u,onChange:m=>d(m.target.value),onKeyDown:m=>{m.key==="Enter"&&(m.preventDefault(),N())},className:"flex-1"}),M(r,{size:"sm",onClick:N,disabled:!u.trim(),children:[C(Nl,{size:14})," Add"]})]})]}),l.accountType==="multi-sig"&&M("section",{className:"mb-6 rounded-lg border border-border bg-muted/30 p-4",children:[M("h4",{className:"mb-2 flex items-center gap-1.5 text-sm font-semibold text-foreground",children:[C(Nr,{size:14})," Signing Threshold"]}),C("p",{className:"mb-3 text-xs text-muted-foreground",children:"Set how many signers are needed to authorize a transaction"}),C("div",{className:"flex items-center gap-3",children:[1,2,3].map(m=>M("label",{className:b(l.threshold===m),children:[C("input",{type:"radio",name:"threshold",value:m,checked:l.threshold===m,onChange:()=>c(x=>({...x,threshold:m})),className:"sr-only"}),m,"-of-3"]},m))})]}),C(i,{className:"my-4"}),M("section",{className:"mb-6",children:[M("h3",{className:"mb-3 flex items-center gap-1.5 text-sm font-semibold text-foreground",children:[C(Cl,{size:15})," Gas Fees"]}),C("div",{className:"space-y-2",children:Sl.map(m=>M("label",{className:b(l.paymasterType===m.value),children:[C("input",{type:"radio",name:"paymasterType",value:m.value,checked:l.paymasterType===m.value,onChange:()=>c(x=>({...x,paymasterType:m.value})),className:"h-4 w-4 text-primary accent-primary"}),M("div",{className:"flex-1",children:[C("div",{className:"text-sm font-medium text-foreground",children:m.label}),C("div",{className:"text-xs text-muted-foreground",children:m.description})]})]},m.value))}),l.paymasterType==="custom"&&C("div",{className:"mt-3",children:C("input",{type:"text",placeholder:"Custom Paymaster URL",value:l.customPaymasterUrl,onChange:m=>c(x=>({...x,customPaymasterUrl:m.target.value})),className:f})})]}),C(i,{className:"my-4"}),M("section",{className:"mb-6",children:[M("h3",{className:"mb-3 flex items-center gap-1.5 text-sm font-semibold text-foreground",children:[C(wl,{size:15})," Bundler"]}),C("div",{className:"space-y-2",children:Tl.map(m=>M("label",{className:b(l.bundlerPreset===m.value),children:[C("input",{type:"radio",name:"bundlerPreset",value:m.value,checked:l.bundlerPreset===m.value,onChange:()=>c(x=>({...x,bundlerPreset:m.value})),className:"h-4 w-4 text-primary accent-primary"}),M("div",{className:"flex-1",children:[C("div",{className:"text-sm font-medium text-foreground",children:m.label}),C("div",{className:"text-xs text-muted-foreground",children:m.description})]})]},m.value))}),l.bundlerPreset==="custom"&&C("div",{className:"mt-3",children:C("input",{type:"text",placeholder:"Custom Bundler URL",value:l.customBundlerUrl,onChange:m=>c(x=>({...x,customBundlerUrl:m.target.value})),className:f})})]}),M("div",{className:"flex items-center gap-3",children:[M(r,{className:"flex-1",onClick:h,children:[C(vl,{size:15}),p?"Saved \u2713":"Save Settings"]}),n&&M(r,{variant:"outline",onClick:n,children:[C(Cr,{size:15}),"\u2190 Back to Simple Mode"]})]})]})}import{AlertTriangle as El,CheckCircle as Al,ShieldAlert as Dl,X as Ml}from"lucide-react";import{useValidateDestination as Il}from"@naculus/connect-appkit-react";import{jsx as K,jsxs as be}from"react/jsx-runtime";var Ll={ok:{icon:K(Al,{size:20}),label:"No problem found",colorClass:"text-muted-foreground",bgClass:"bg-muted",buttonVariant:"default"},warning:{icon:K(El,{size:20}),label:"Warning",colorClass:"text-[hsl(var(--warning,38_92%_50%))]",bgClass:"bg-[hsl(var(--warning)/0.1)]",buttonVariant:"default"},blocked:{icon:K(Dl,{size:20}),label:"Blocked",colorClass:"text-destructive",bgClass:"bg-destructive/10",buttonVariant:"destructive"}};function zl({address:t,open:e,onClose:n,onProceed:o}){let r=B(),s=r.Button,a=r.Dialog,i=r.DialogContent,l=r.DialogHeader,c=r.DialogTitle,{validation:u}=Il({address:t}),{level:d,warning:p}=u,g=Ll[d],b=d==="blocked",f=t.length>12?`${t.slice(0,6)}...${t.slice(-4)}`:t,h=m=>y("inline-flex items-center justify-center whitespace-nowrap rounded-lg","text-sm font-medium transition-all duration-200","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2","disabled:pointer-events-none disabled:opacity-50","h-10 px-4 py-2",m==="outline"&&"border border-input bg-transparent hover:bg-accent hover:text-accent-foreground",m==="destructive"&&"bg-destructive text-destructive-foreground hover:bg-destructive/90 shadow-sm",m==="default"&&"bg-primary text-primary-foreground hover:bg-primary/90 shadow-sm"),N=be("div",{className:"flex flex-col gap-4",children:[be("div",{className:y("flex items-center gap-3 rounded-lg p-4",g.bgClass),children:[K("span",{className:g.colorClass,children:g.icon}),be("div",{className:"flex flex-col gap-0.5",children:[K("span",{className:y("text-sm font-semibold",g.colorClass),children:g.label}),K("span",{className:"text-xs text-muted-foreground break-all font-mono",children:f})]})]}),p&&K("p",{className:"text-sm text-muted-foreground m-0",children:p}),be("div",{className:"flex gap-2 justify-end pt-2",children:[s?K(s,{onClick:n,variant:"outline",className:"w-full sm:w-auto",children:"Cancel"}):K("button",{type:"button",onClick:n,className:y(h("outline"),"w-full sm:w-auto"),children:"Cancel"}),o&&(s?K(s,{onClick:o,variant:b?"destructive":"default",disabled:b,className:"w-full sm:w-auto",children:"Proceed anyway"}):K("button",{type:"button",onClick:o,disabled:b,className:y(h(b?"destructive":"default"),"w-full sm:w-auto"),children:"Proceed anyway"}))]})]});return a&&i&&l&&c?K(a,{open:e,onOpenChange:m=>{m||n()},children:be(i,{className:"sm:max-w-md",children:[K(l,{children:K(c,{children:"Address Warning"})}),N]})}):e?be("div",{className:"fixed inset-0 z-50 flex items-center justify-center p-4",children:[K("div",{className:"absolute inset-0 bg-black/80","aria-hidden":"true",onClick:n}),be("div",{role:"dialog","aria-modal":"true",className:"relative z-10 w-full max-w-sm rounded-xl border bg-card text-card-foreground shadow-2xl p-6",children:[be("div",{className:"flex items-center justify-between mb-4",children:[K("h2",{className:"text-lg font-semibold m-0",children:"Address Warning"}),K("button",{onClick:n,type:"button",className:"rounded-md p-1 text-muted-foreground hover:text-foreground transition-colors","aria-label":"Close",children:K(Ml,{size:16})})]}),N]})]}):null}import{Wallet as Rr,AlertCircle as Wl}from"lucide-react";import{jsx as Y,jsxs as Se}from"react/jsx-runtime";function Vl({wallets:t,onSelect:e,loading:n=!1,error:o=null}){let s=B().Card,a=i=>s?Y(s,{className:"p-4",children:i}):Y("div",{className:"rounded-xl border bg-card text-card-foreground shadow-sm p-4",children:i});return n?a(Se("div",{className:"flex flex-col gap-3",children:[Array.from({length:3}).map((i,l)=>Se("div",{className:"flex items-center gap-3 p-3 rounded-lg animate-pulse",children:[Y("div",{className:"h-10 w-10 rounded-full bg-muted"}),Y("div",{className:"h-4 w-32 rounded bg-muted"})]},l)),Y("p",{className:"text-xs text-muted-foreground text-center m-0",children:"Detecting wallets..."})]})):o?a(Se("div",{className:"flex flex-col items-center gap-3 py-4",children:[Y(Wl,{size:24,className:"text-destructive"}),Y("p",{className:"text-sm text-destructive m-0 font-medium",children:o})]})):t.length===0?a(Se("div",{className:"flex flex-col items-center gap-3 py-6",children:[Y(Rr,{size:32,className:"text-muted-foreground"}),Se("p",{className:"text-sm text-muted-foreground m-0 text-center",children:["No wallets detected.",Y("br",{}),"Install a browser wallet extension to get started."]})]})):Y("div",{className:"flex flex-col gap-2",children:t.map(i=>Se("button",{type:"button",onClick:()=>e(i),className:y("flex items-center gap-3 w-full p-3 rounded-lg","border border-input bg-card hover:bg-accent hover:text-accent-foreground","transition-all duration-200 cursor-pointer","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"),children:[i.icon?Y("img",{src:i.icon,alt:i.name,className:"h-10 w-10 rounded-full object-cover shrink-0",onError:l=>{l.target.style.display="none"}}):Y("div",{className:"h-10 w-10 rounded-full bg-muted flex items-center justify-center shrink-0",children:Y(Rr,{size:18,className:"text-muted-foreground"})}),Se("div",{className:"flex flex-col items-start gap-0.5 text-left min-w-0",children:[Y("span",{className:"text-sm font-medium truncate w-full",children:i.name}),Y("span",{className:"text-xs text-muted-foreground truncate w-full",children:i.rdns})]})]},i.id))})}export{Et as AccountButton,di as AccountSelector,Go as AccountSelectorView,zl as AddressWarningDialog,dr as AppKit,ur as AppKitButton,mr as AppKitChainSelector,ze as ChainSelector,ye as ConnectButton,Xe as ErrorBoundary,Ii as PasskeySetup,or as PasskeySetupView,Pi as PassphraseDialog,Zo as PassphraseDialogView,Ye as QRCodeModal,al as RouteSelector,Je as SeedPhraseBackup,rn as SignInButton,Bl as SmartWalletSettings,yl as SmartWalletToggle,dn as ThemeProvider,St as WalletConnectProvider,Vl as WalletPicker,yi as WalletSecurityPanel,Xo as WalletSecurityPanelView,un as Web3ComponentProvider,et as Web3ConnectUI,y as cn,cr as useAppKit,Ga as useComponent,B as useComponentRegistry,Ka as useDetectionMode,Ue as useEIP6963,Oe as useIsMobile,Fo as useTheme,Wa as useThemeVariable,$r as useWalletConnect,Tt as useWalletConnectOptional};
|
|
5
12
|
//# sourceMappingURL=index.js.map
|