@tuwaio/nova-connect 0.2.7 → 0.2.9

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.
Files changed (35) hide show
  1. package/README.md +3 -3
  2. package/dist/chunk-MGBN4EIT.cjs +1 -0
  3. package/dist/chunk-NQ5AECZQ.js +1 -0
  4. package/dist/chunk-U2HKJB6D.cjs +2 -0
  5. package/dist/{chunk-YDPI5PAY.cjs → chunk-V3D3HT6N.cjs} +1 -1
  6. package/dist/{chunk-YO3PXLI4.js → chunk-XA3DA6RA.js} +1 -1
  7. package/dist/chunk-YXB45D7C.js +2 -0
  8. package/dist/components/index.cjs +1 -1
  9. package/dist/components/index.d.cts +7 -205
  10. package/dist/components/index.d.ts +7 -205
  11. package/dist/components/index.js +1 -1
  12. package/dist/hooks/index.cjs +1 -1
  13. package/dist/hooks/index.d.cts +3 -3
  14. package/dist/hooks/index.d.ts +3 -3
  15. package/dist/hooks/index.js +1 -1
  16. package/dist/i18n/index.cjs +1 -1
  17. package/dist/i18n/index.d.cts +1 -1
  18. package/dist/i18n/index.d.ts +1 -1
  19. package/dist/i18n/index.js +1 -1
  20. package/dist/{ToastError-BF4F8oo-.d.cts → index-B9pJ-IAo.d.cts} +1273 -318
  21. package/dist/{ToastError-Bw3Amqzv.d.ts → index-BkbAcDWt.d.ts} +1273 -318
  22. package/dist/index.cjs +1 -1
  23. package/dist/index.css +135 -37
  24. package/dist/index.d.cts +8 -6
  25. package/dist/index.d.ts +8 -6
  26. package/dist/index.js +1 -1
  27. package/dist/{types-eao2UQcC.d.cts → types-DxUn8qmU.d.cts} +4 -0
  28. package/dist/{types-eao2UQcC.d.ts → types-DxUn8qmU.d.ts} +4 -0
  29. package/dist/{useWalletNativeBalance-B4hY45fG.d.ts → useWalletNativeBalance-DR8XONYI.d.ts} +10 -2
  30. package/dist/{useWalletNativeBalance-BvBbDXMS.d.cts → useWalletNativeBalance-rZ2GQ88f.d.cts} +10 -2
  31. package/package.json +23 -18
  32. package/dist/chunk-D2JEJG2A.cjs +0 -5
  33. package/dist/chunk-LXZIVQLW.js +0 -5
  34. package/dist/chunk-T6H7HGCM.js +0 -1
  35. package/dist/chunk-WTDBHPAK.cjs +0 -1
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- 'use strict';var chunkD2JEJG2A_cjs=require('./chunk-D2JEJG2A.cjs'),chunkYDPI5PAY_cjs=require('./chunk-YDPI5PAY.cjs'),chunkK44IHM6B_cjs=require('./chunk-K44IHM6B.cjs'),chunkWTDBHPAK_cjs=require('./chunk-WTDBHPAK.cjs'),chunk2SFIZVDC_cjs=require('./chunk-2SFIZVDC.cjs'),orbitCore=require('@tuwaio/orbit-core'),novaCore=require('@tuwaio/nova-core'),react=require('react'),reactToastify=require('react-toastify'),jsxRuntime=require('react/jsx-runtime'),outline=require('@heroicons/react/24/outline'),framerMotion=require('framer-motion');var ue=({title:o,rawError:e,onCopyComplete:n,errorType:a,isConnected:t,...f})=>jsxRuntime.jsx(chunkD2JEJG2A_cjs.D,{title:o,rawError:e,onCopyComplete:n,customization:f.customization}),Ce=o=>{let e=chunkYDPI5PAY_cjs.h();return jsxRuntime.jsx(reactToastify.ToastContainer,{...o,role:"alert","aria-live":"assertive","aria-label":e.somethingWentWrong})},fe=(o,e)=>{o(e.title,e.rawError,e.errorKey);},ve=o=>{o();},ge=(o,e)=>{o&&process.env.NODE_ENV==="development"&&console.log("Error copied to clipboard:",e.substring(0,100));},be=o=>o,ye=o=>o;function Mo({containerId:o="nova-connect-errors",position:e="top-center",autoClose:n=7e3,draggable:a=false,customization:t}){let f=chunkYDPI5PAY_cjs.h(),u=chunk2SFIZVDC_cjs.h(l=>l.switchNetworkError),x=chunk2SFIZVDC_cjs.h(l=>l.activeConnection),B=chunk2SFIZVDC_cjs.h(l=>l.connectionError),{ToastError:E=ue,Container:g=Ce}=t?.components??{},{showError:d=fe,dismissError:O=ve,onCopyComplete:H=ge}=t?.handlers??{},{errorTitle:T=be,errorHash:N=ye}=t??{},P=react.useRef(new Set),R=react.useRef(null),s=react.useMemo(()=>{let l=!!B,y=!!u,M=!!x?.isConnected;return {hasWalletError:l,hasSwitchError:y,isConnected:M,hasAnyError:l||y,primaryError:B||u||null,errorType:l?"wallet":y?"switch":null}},[B,u,x?.isConnected]),z=react.useMemo(()=>{switch(s.errorType){case "wallet":return f.connectionError;case "switch":return f.errorWhenChainSwitching;default:return f.somethingWentWrong}},[s.errorType,f]),m=react.useMemo(()=>T(z,{errorType:s.errorType}),[T,z,s.errorType]),W=react.useMemo(()=>s.primaryError?`${s.errorType}-${s.primaryError.substring(0,50)}`:null,[s.primaryError,s.errorType]),C=react.useMemo(()=>N(W,{primaryError:s.primaryError,errorType:s.errorType}),[N,W,s.primaryError,s.errorType]),D=react.useCallback(()=>{O(()=>{R.current&&(reactToastify.toast.dismiss(R.current),R.current=null),reactToastify.toast.dismiss({containerId:o});});},[o,O]),F=react.useCallback((l,y)=>{H(l,y,s.errorType);},[H,s.errorType]),r=react.useCallback((l,y,M)=>{if(D(),!P.current.has(M))try{let V={containerId:o,toastId:M,onClose:()=>{P.current.delete(M),R.current=null;}},_=t?.toastOptions?.error?.({title:l,rawError:y,errorType:s.errorType,isConnected:s.isConnected}),q={...V,..._};reactToastify.toast.error(jsxRuntime.jsx(E,{title:l,rawError:y,errorType:s.errorType,isConnected:s.isConnected,onCopyComplete:J=>F(J,y),customization:t?.toastErrorCustomization}),q),P.current.add(M),R.current=M;}catch(V){console.error("Failed to show error toast:",V);}},[D,o,t?.toastOptions?.error,t?.toastErrorCustomization,E,s.errorType,s.isConnected,F]),v=react.useCallback((l,y,M)=>{d(r,{title:l,rawError:y,errorKey:M,errorType:s.errorType});},[r,d,s.errorType]);react.useEffect(()=>{let{hasAnyError:l,isConnected:y,primaryError:M}=s;if(y&&!l){D(),P.current.clear();return}if(l&&M&&C){if(y&&s.errorType!=="switch")return;v(m,M,C);}},[s,m,C,v,D]),react.useEffect(()=>()=>{D(),P.current.clear();},[D]);let b=react.useMemo(()=>t?.classNames?.container?t.classNames.container({hasErrors:s.hasAnyError,errorType:s.errorType}):"novacon:p-0 novacon:bg-transparent",[t,s.hasAnyError,s.errorType]),p=react.useMemo(()=>({containerId:o,position:e,closeOnClick:false,icon:false,closeButton:novaCore.ToastCloseButton,autoClose:n,hideProgressBar:false,newestOnTop:false,pauseOnFocusLoss:false,draggable:a,pauseOnHover:true,theme:"light",transition:reactToastify.Bounce}),[o,e,n,a]),h=react.useMemo(()=>({...p,...t?.containerProps,className:b}),[p,t?.containerProps,b]);return jsxRuntime.jsx(g,{...h})}Mo.displayName="ErrorsProvider";function Eo({labels:o,children:e}){let n=react.useMemo(()=>o,[o]);if(process.env.NODE_ENV==="development"){(!o||typeof o!="object")&&console.warn("NovaConnectLabelsProvider: labels prop should be an object");let t=["connectWallet","disconnect","connecting","connected","error","success"].filter(f=>!(f in o));t.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${t.join(", ")}`);}return jsxRuntime.jsx(chunkYDPI5PAY_cjs.g.Provider,{value:n,children:e})}Eo.displayName="NovaConnectLabelsProvider";function ze(o,e){if(!o||!Array.isArray(o)||!e)return;let n=o.find(a=>a&&typeof a=="object"&&"name"in a&&typeof a.name=="string"?orbitCore.formatConnectorName(a.name)===e:false);if(n&&typeof n=="object"&&"name"in n&&typeof n.name=="string")return n.name}var Jo=react.forwardRef(({className:o,children:e,modalData:n,...a},t)=>jsxRuntime.jsx("div",{ref:t,className:novaCore.cn("novacon:relative novacon:flex novacon:w-full novacon:flex-col",o),...a,children:e}));Jo.displayName="DefaultModalContainer";var Qo=react.forwardRef(({className:o,children:e,modalData:n,...a},t)=>jsxRuntime.jsx("div",{ref:t,className:o,...a,children:jsxRuntime.jsx(novaCore.DialogHeader,{children:e})}));Qo.displayName="DefaultModalHeader";var Xo=react.forwardRef(({className:o,onClick:e,modalData:n,...a},t)=>jsxRuntime.jsx("button",{ref:t,className:novaCore.cn("novacon:cursor-pointer novacon:text-[var(--tuwa-text-secondary)] novacon:transition novacon:duration-300 novacon:ease-in-out novacon:active:scale-75 novacon:hover:scale-110",o),type:"button",onClick:e,...a,children:jsxRuntime.jsx(outline.InformationCircleIcon,{width:20,height:20,className:"novacon:mr-1","aria-hidden":"true"})}));Xo.displayName="DefaultInfoButton";var Yo=react.forwardRef(({className:o,children:e,modalData:n,...a},t)=>jsxRuntime.jsx(novaCore.DialogTitle,{ref:t,className:novaCore.cn("novacon:flex novacon:items-center",o),...a,children:e}));Yo.displayName="DefaultTitle";var Zo=react.forwardRef(({className:o,onClick:e,modalData:n,...a},t)=>jsxRuntime.jsx(novaCore.DialogClose,{asChild:true,children:jsxRuntime.jsx("button",{ref:t,type:"button",onClick:e,className:novaCore.cn("novacon:cursor-pointer novacon:rounded-full novacon:p-1 novacon:text-[var(--tuwa-text-tertiary)] novacon:transition-colors novacon:hover:bg-[var(--tuwa-bg-muted)] novacon:hover:text-[var(--tuwa-text-primary)]",o),...a,children:jsxRuntime.jsx(novaCore.CloseIcon,{"aria-hidden":"true"})})}));Zo.displayName="DefaultCloseButton";var oe=react.forwardRef(({className:o,children:e,modalData:n,...a},t)=>jsxRuntime.jsx("main",{ref:t,className:novaCore.cn("novacon:flex novacon:flex-col novacon:gap-4 novacon:p-4",o),id:"connect-modal-content",role:"main",...a,children:e}));oe.displayName="DefaultMainContent";var ee=react.forwardRef(({className:o,children:e,modalData:n,...a},t)=>jsxRuntime.jsx("footer",{ref:t,className:novaCore.cn("novacon:flex novacon:w-full novacon:items-center novacon:justify-between novacon:border-t novacon:border-[var(--tuwa-border-primary)] novacon:p-4",o),role:"contentinfo",...a,children:e}));ee.displayName="DefaultFooter";var te=react.forwardRef(({className:o,onClick:e,children:n,modalData:a,...t},f)=>jsxRuntime.jsx("button",{ref:f,type:"button",onClick:e,className:novaCore.cn(novaCore.standardButtonClasses,o),...t,children:n}));te.displayName="DefaultBackButton";var ne=react.forwardRef(({className:o,onClick:e,children:n,disabled:a,loading:t,buttonConfig:f,modalData:u,...x},B)=>jsxRuntime.jsx("button",{ref:B,type:"button",onClick:e,disabled:a||t,className:novaCore.cn(novaCore.standardButtonClasses,o),...x,children:t?"Loading...":n}));ne.displayName="DefaultActionButton";var re=react.forwardRef(({className:o,children:e,modalData:n,...a},t)=>jsxRuntime.jsx("span",{ref:t,className:novaCore.cn("novacon:sr-only",o),...a,children:e}));re.displayName="DefaultActionDescription";var ae=react.forwardRef(({children:o,className:e,...n},a)=>{let{modalData:t,...f}=n;return jsxRuntime.jsx("div",{ref:a,className:e,...f,children:o})});ae.displayName="DefaultEmptyState";var No=react.memo(({appChains:o,solanaRPCUrls:e,withImpersonated:n,customization:a={}})=>{let{isConnectModalOpen:t,setIsConnectModalOpen:f,setConnectModalContentType:u,setActiveConnector:x,setImpersonatedAddress:B,setIsConnected:E,connectModalContentType:g,selectedAdapter:d,setSelectedAdapter:O,isConnected:H,activeConnector:T,impersonatedAddress:N}=chunkYDPI5PAY_cjs.d(),P=chunk2SFIZVDC_cjs.h(c=>c.connectionError),R=chunk2SFIZVDC_cjs.h(c=>c.getConnectors),s=chunk2SFIZVDC_cjs.h(c=>c.connect),z=chunk2SFIZVDC_cjs.h(c=>c.activeConnection),m=chunkYDPI5PAY_cjs.h(),W=react.useContext(chunk2SFIZVDC_cjs.f),C=react.useMemo(()=>{if(t)return R()},[t,R]),D=react.useMemo(()=>chunkYDPI5PAY_cjs.t({connectors:C,selectedAdapter:d}),[C,d]),F=react.useMemo(()=>P?typeof P=="string"?new Error(P):P:null,[P]),r=react.useMemo(()=>({contentType:g,selectedAdapter:d,activeConnector:T,impersonatedAddress:N,isConnected:H,isOpen:t,error:F,connectors:C,filteredConnectors:D,labels:m}),[g,d,T,N,H,t,F,C,D,m]);react.useEffect(()=>{t&&(u("connectors"),O(void 0),x(void 0),B(""),E(false));},[t]);let{components:v={},classNames:b={},handlers:p={},config:h={},childComponents:l={}}=a,y=v.ModalContainer||Jo,M=v.ModalHeader||Qo,V=v.InfoButton||Xo,_=v.Title||Yo,q=v.CloseButton||Zo,J=v.MainContent||oe,Q=v.Footer||ee,so=v.BackButton||te,X=v.ActionButton||ne,io=v.ActionDescription||re,G=v.EmptyState||ae,vo=v.Dialog||novaCore.Dialog,lo=v.DialogContent||novaCore.DialogContent,to=v.MotionDiv||framerMotion.motion.div,no=react.useCallback(()=>{switch(g){case "about":return m.aboutWallets;case "getWallet":return m.getWallet;case "connecting":return d&&T&&C&&ze(C[d],T)||m.connectingEllipsis;case "impersonate":return m.connectImpersonatedWallet;default:return m.connectWallet}},[g,d,T,C,m]),Y=react.useCallback(()=>"connectors",[g]),Z=react.useCallback(c=>{p?.onOpenChange?p.onOpenChange(c,r):f(c);},[p?.onOpenChange,r,f]),go=react.useCallback(()=>{let c=()=>u(Y());p?.onBack?p.onBack(r,c):c();},[p?.onBack,r,u,Y]),bo=react.useCallback(()=>{p?.onInfoClick?p.onInfoClick(r):u("about");},[p?.onInfoClick,r,u]),j=react.useCallback(async(c,yo)=>{await s({connectorType:c,chainId:chunkYDPI5PAY_cjs.p({appChains:o,selectedAdapter:yo,solanaRPCUrls:e})});try{await orbitCore.waitFor(()=>W?.getState().activeConnection?.isConnected),E(!0);let To=setTimeout(()=>f(!1),400),ce=setTimeout(()=>E(!1),500);await orbitCore.delay(null,500),clearTimeout(To),clearTimeout(ce);}catch(To){console.error(To);}},[s,o,d,e]),$=react.useCallback(async(c,yo)=>{O(c),u("connecting"),await j(yo,c);},[j]),wo=react.useCallback(c=>{x(orbitCore.formatConnectorName(c.name)),c.adapters.length===1?(O(c.adapters[0]),u(orbitCore.formatConnectorName(c.name)==="impersonatedwallet"?"impersonate":"connecting")):d?u(orbitCore.formatConnectorName(c.name)==="impersonatedwallet"?"impersonate":"connecting"):orbitCore.formatConnectorName(c.name)==="impersonatedwallet"?u("impersonate"):u("network");},[d]),ie=react.useCallback(()=>{switch(g){case "network":return jsxRuntime.jsx(chunkD2JEJG2A_cjs.B,{activeConnector:T,connectors:D,onClick:$,customization:l.networkSelections});case "connectors":return C?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(chunkD2JEJG2A_cjs.C,{networks:Object.keys(C),selectedAdapter:d,onSelect:c=>O(c),customization:l.networkTabs}),jsxRuntime.jsx(chunkD2JEJG2A_cjs.y,{isOnlyOneNetwork:Object.keys(C).length===1,connectors:D,selectedAdapter:d,onClick:wo,setContentType:u,appChains:o,solanaRPCUrls:e,setIsConnected:E,setIsOpen:f,withImpersonated:n,customization:l.connectorsSelections})]}):jsxRuntime.jsx(G,{className:b.emptyConnectors?.({modalData:r}),modalData:r,children:"No connectors available"});case "about":return jsxRuntime.jsx(chunkD2JEJG2A_cjs.s,{customization:l.aboutWallets});case "getWallet":return jsxRuntime.jsx(chunkD2JEJG2A_cjs.z,{customization:l.getWallet});case "connecting":return jsxRuntime.jsx(chunkD2JEJG2A_cjs.v,{selectedAdapter:d,connectors:D,activeConnector:T,isConnected:H,customization:l.connecting});case "impersonate":return jsxRuntime.jsx(chunkD2JEJG2A_cjs.A,{selectedAdapter:d,impersonatedAddress:N,setImpersonatedAddress:B,customization:l.impersonateForm})}},[g,T,D,$,l,C,d,wo,H,N]),K=react.useCallback(()=>{switch(g){case "connectors":return {title:m.iDontHaveWallet,onClick:()=>{p.onActionClick?.connectors?p.onActionClick.connectors(r):u("getWallet");}};case "getWallet":return {title:m.choseWallet,onClick:()=>{p.onActionClick?.getWallet?p.onActionClick.getWallet(r):window.open(orbitCore.getNetworkData(d??Object.keys(C)[0])?.links?.choseWallet,"_blank","noopener,noreferrer");}};case "about":return {title:m.learnMore,onClick:()=>{p.onActionClick?.about?p.onActionClick.about(r):window.open(orbitCore.getNetworkData(d??Object.keys(C)[0])?.links?.about,"_blank","noopener,noreferrer");}};case "impersonate":return {title:m.connect,onClick:async()=>{if(p.onActionClick?.impersonate)await p.onActionClick.impersonate(r);else {let c=N.trim();if(P||!c||!orbitCore.isAddress(c)||z?.isConnected)return;orbitCore.impersonatedHelpers.setImpersonated(c),u("connecting"),await j(orbitCore.getConnectorTypeFromName(d??orbitCore.OrbitAdapter.EVM,T??""),d??orbitCore.OrbitAdapter.EVM);}}};case "connecting":return P&&d&&T?{title:m.tryAgain,onClick:async()=>{p.onActionClick?.connecting?await p.onActionClick.connecting(r):await j(orbitCore.getConnectorTypeFromName(d,T),d);}}:void 0}},[g,m,p,r,d,C,N,P,j,T])(),le=react.useCallback(()=>{switch(g){case "getWallet":return "Opens external wallet selection page";case "about":return "Opens external documentation";case "impersonate":return "Connects with impersonated wallet address";case "connecting":return "Retries wallet connection";default:return ""}},[g]);return jsxRuntime.jsx(vo,{open:t,onOpenChange:Z,children:jsxRuntime.jsx(lo,{className:novaCore.cn("novacon:w-full novacon:sm:max-w-md"),children:jsxRuntime.jsx(to,{layout:true,transition:{layout:{duration:h.animation?.disabled?0:h.animation?.layoutDuration??1e-4}},children:jsxRuntime.jsxs(y,{className:b.modalContainer?.({modalData:r}),modalData:r,children:[jsxRuntime.jsxs(M,{className:b.header?.({modalData:r}),modalData:r,children:[jsxRuntime.jsxs(_,{className:b.title?.({modalData:r}),modalData:r,children:[g==="connectors"&&jsxRuntime.jsx(V,{className:b.infoButton?.({modalData:r}),onClick:bo,"aria-label":h.ariaLabels?.infoButton?.(r)||`${m.learnMore} ${m.aboutWallets}`,modalData:r}),no()]}),jsxRuntime.jsx(q,{className:b.closeButton?.({modalData:r}),onClick:()=>Z(false),"aria-label":h.ariaLabels?.closeButton?.(r)||m.closeModal,modalData:r})]}),jsxRuntime.jsx(J,{className:b.mainContent?.({modalData:r}),modalData:r,children:ie()}),jsxRuntime.jsxs(Q,{className:b.footer?.({modalData:r}),modalData:r,children:[jsxRuntime.jsx("div",{className:"novacon:flex novacon:items-center novacon:gap-4",children:g!=="connectors"&&jsxRuntime.jsx(so,{className:b.backButton?.({modalData:r}),onClick:go,"aria-label":h.ariaLabels?.backButton?.(r)||`${m.back} to previous step`,modalData:r,children:m.back})}),K&&jsxRuntime.jsxs("div",{className:"novacon:flex novacon:items-center novacon:gap-3",children:[jsxRuntime.jsx(X,{className:b.actionButton?.({modalData:r,buttonConfig:K}),onClick:K.onClick,disabled:K.disabled,loading:K.loading,"aria-describedby":"bottom-action-description",modalData:r,buttonConfig:K,children:K.title}),jsxRuntime.jsx(io,{id:"bottom-action-description",className:b.actionDescription?.({modalData:r}),modalData:r,children:le()})]})]})]})})})})});No.displayName="ConnectModal";var Fe=({labels:o,children:e})=>jsxRuntime.jsx(Eo,{labels:o,children:e}),Ve=({customization:o})=>jsxRuntime.jsx(Mo,{customization:o}),Ue=(o,e)=>novaCore.deepMerge(o,e||{}),Ge=o=>o,je=o=>o,$e=(o,e,n)=>o;function Ke({labels:o,children:e,appChains:n,solanaRPCUrls:a,transactionPool:t,pulsarAdapter:f,withImpersonated:u,withBalance:x,withChain:B,customization:E}){let g=chunk2SFIZVDC_cjs.h($=>$.activeConnection),d=chunk2SFIZVDC_cjs.h($=>$.connectionError),{LabelsProvider:O=Fe,ErrorsProvider:H=Ve}=E?.components??{},{merge:T=Ue,transform:N=Ge}=E?.labels??{},{transform:P=je}=E?.contextValue??{},{providerTree:R=$e}=E?.rendering??{},s=react.useMemo(()=>T(chunkWTDBHPAK_cjs.a,o||{}),[o,T]),[z,m]=react.useState(false),[W,C]=react.useState(false),[D,F]=react.useState(false),[r,v]=react.useState(false),[b,p]=react.useState("idle"),[h,l]=react.useState("connectors"),[y,M]=react.useState(void 0),[V,_]=react.useState(void 0),[q,J]=react.useState(""),[Q,so]=react.useState(false),[X,io]=react.useState("main"),G=react.useMemo(()=>({isConnected:Q,activeConnection:g,connectionError:d,modalStates:{isConnectModalOpen:z,isConnectedModalOpen:W,isChainsListOpen:D,isChainsListOpenMobile:r},contentTypes:{connectModal:h,connectedModal:X},statuses:{connectedButton:b}}),[Q,g,d,z,W,D,r,h,X,b]),vo=react.useMemo(()=>N(s,G),[s,N,G]),lo=react.useMemo(()=>P({appChains:n,solanaRPCUrls:a,withImpersonated:u,withBalance:x,withChain:B,isConnectModalOpen:z,setIsConnectModalOpen:m,isConnectedModalOpen:W,setIsConnectedModalOpen:C,isChainsListOpen:D,setIsChainsListOpen:F,isChainsListOpenMobile:r,setIsChainsListOpenMobile:v,connectedButtonStatus:b,setConnectedButtonStatus:p,connectedModalContentType:X,setConnectedModalContentType:io,connectModalContentType:h,setConnectModalContentType:l,selectedAdapter:y,setSelectedAdapter:M,activeConnector:V,setActiveConnector:_,impersonatedAddress:q,setImpersonatedAddress:J,isConnected:Q,setIsConnected:so},G),[n,a,u,x,B,z,m,W,C,D,F,r,v,b,p,X,io,h,l,y,M,V,_,q,J,Q,so,P,G]),to=jsxRuntime.jsx(H,{customization:E?.errors}),no=jsxRuntime.jsx(O,{labels:vo,children:e}),Y=n||a?jsxRuntime.jsx(No,{withImpersonated:u,solanaRPCUrls:a,appChains:n,customization:E?.modals?.connectModal}):null,Z=n||a?jsxRuntime.jsx(chunkD2JEJG2A_cjs.r,{solanaRPCUrls:a,appChains:n,transactionPool:t,pulsarAdapter:f,customization:E?.modals?.connectedModal}):null,go=jsxRuntime.jsxs(chunkYDPI5PAY_cjs.c.Provider,{value:lo,children:[to,no,Y,Z]}),bo=jsxRuntime.jsxs(chunkYDPI5PAY_cjs.c.Provider,{value:lo,children:[to,no,Y,Z]}),j=R(bo,{ErrorsProvider:to,LabelsProvider:no,MainContent:go,ConnectModal:Y||jsxRuntime.jsx(jsxRuntime.Fragment,{}),ConnectedModal:Z||jsxRuntime.jsx(jsxRuntime.Fragment,{})},G);return jsxRuntime.jsx(jsxRuntime.Fragment,{children:j})}Ke.displayName="NovaConnectProvider";async function _n(){let{getAllAdaptersStatus:o}=await import('./getChainsListByConnectorType-QCNOPM6I.cjs');return {hasEvmUtils:await Co(),hasSolanaUtils:await fo(),adaptersStatus:o()}}async function Co(){try{return await import('viem'),await import('@tuwaio/orbit-evm'),!0}catch{return false}}async function fo(){try{return await import('gill'),await import('@tuwaio/orbit-solana'),!0}catch{return false}}async function qn(){try{if(!await Co())return {available:!1,error:"EVM packages (viem, @tuwaio/orbit-evm) not available"};let e=await import('./evm/index.cjs'),n=await e.getEvmExports();return n.available?{...e,...n}:{available:!1,error:n.error||"Failed to load EVM exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"EVM utilities not available"}}}async function Jn(){try{if(!await fo())return {available:!1,error:"Solana packages (gill, @tuwaio/orbit-solana) not available"};let e=await import('./solana/index.cjs'),n=await e.getSolanaExports();return n.available?{...e,...n}:{available:!1,error:n.error||"Failed to load Solana exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"Solana utilities not available"}}}async function Qn(){let o={evm:false,solana:false,errors:[]};try{let e=await Co(),n=await fo();if(e||n){let{preloadChainAdapters:a}=await import('./getChainsListByConnectorType-QCNOPM6I.cjs'),t=[];e&&t.push(orbitCore.OrbitAdapter.EVM),n&&t.push(orbitCore.OrbitAdapter.SOLANA),await a(t),o.evm=e,o.solana=n;}else o.errors.push("No blockchain packages available for initialization");}catch(e){let n=e instanceof Error?e.message:"Unknown initialization error";o.errors.push(n);}return o}async function Xn(o){return o===orbitCore.OrbitAdapter.Starknet||o!==orbitCore.OrbitAdapter.EVM&&o!==orbitCore.OrbitAdapter.SOLANA?false:o===orbitCore.OrbitAdapter.EVM?Co():fo()}Object.defineProperty(exports,"NovaConnectLabelsContext",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.g}});Object.defineProperty(exports,"NovaConnectProviderContext",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.c}});Object.defineProperty(exports,"NovaConnectProviderError",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.b}});Object.defineProperty(exports,"createLabelsSubset",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.o}});Object.defineProperty(exports,"getAvailableChainIds",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.q}});Object.defineProperty(exports,"getAvailableSolanaClusters",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.v}});Object.defineProperty(exports,"getConnectChainId",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.p}});Object.defineProperty(exports,"getFilteredConnectors",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.t}});Object.defineProperty(exports,"getGroupedConnectors",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.r}});Object.defineProperty(exports,"getLabelWithFallback",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.n}});Object.defineProperty(exports,"hasAvailableConnectors",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.s}});Object.defineProperty(exports,"hasConnectorsForAdapter",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.u}});Object.defineProperty(exports,"hasLabel",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.k}});Object.defineProperty(exports,"isDefaultLabels",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.m}});Object.defineProperty(exports,"isValidSolanaCluster",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.w}});Object.defineProperty(exports,"useGetWalletNameAndAvatar",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.a}});Object.defineProperty(exports,"useHasNovaConnectContext",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.e}});Object.defineProperty(exports,"useLabelsByCategory",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.l}});Object.defineProperty(exports,"useNovaConnect",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.d}});Object.defineProperty(exports,"useNovaConnectLabel",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.i}});Object.defineProperty(exports,"useNovaConnectLabels",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.h}});Object.defineProperty(exports,"useNovaConnectLabelsSubset",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.j}});Object.defineProperty(exports,"useNovaConnectOptional",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.f}});Object.defineProperty(exports,"useWalletChainsList",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.x}});Object.defineProperty(exports,"useWalletNativeBalance",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.y}});Object.defineProperty(exports,"getAdapterStatus",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.k}});Object.defineProperty(exports,"getAllAdaptersStatus",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.l}});Object.defineProperty(exports,"getAvailableSolanaClustersAsync",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.g}});Object.defineProperty(exports,"getChainsListByConnectorType",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.b}});Object.defineProperty(exports,"getChainsListByConnectorTypeAsync",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.a}});Object.defineProperty(exports,"getChainsListByConnectorTypeSync",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.b}});Object.defineProperty(exports,"getWalletChains",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.i}});Object.defineProperty(exports,"isEvmChainList",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.e}});Object.defineProperty(exports,"isEvmChainListAsync",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.c}});Object.defineProperty(exports,"isEvmChainListSync",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.e}});Object.defineProperty(exports,"isSolanaChainList",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.f}});Object.defineProperty(exports,"isSolanaChainListAsync",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.d}});Object.defineProperty(exports,"isSolanaChainListSync",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.f}});Object.defineProperty(exports,"isValidSolanaClusterAsync",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.h}});Object.defineProperty(exports,"preloadChainAdapters",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.j}});exports.ErrorsProvider=Mo;exports.NovaConnectLabelsProvider=Eo;exports.NovaConnectProvider=Ke;exports.getBlockchainUtilities=_n;exports.getEvmUtils=qn;exports.getSolanaUtils=Jn;exports.initializeBlockchainSupport=Qn;exports.isAdapterSupported=Xn;
1
+ 'use strict';var chunkU2HKJB6D_cjs=require('./chunk-U2HKJB6D.cjs'),chunkV3D3HT6N_cjs=require('./chunk-V3D3HT6N.cjs'),chunkK44IHM6B_cjs=require('./chunk-K44IHM6B.cjs'),chunkMGBN4EIT_cjs=require('./chunk-MGBN4EIT.cjs'),chunk2SFIZVDC_cjs=require('./chunk-2SFIZVDC.cjs'),orbitCore=require('@tuwaio/orbit-core'),novaCore=require('@tuwaio/nova-core'),react=require('react'),reactToastify=require('react-toastify'),jsxRuntime=require('react/jsx-runtime'),outline=require('@heroicons/react/24/outline'),framerMotion=require('framer-motion');var Ct=({title:o,rawError:t,onCopyComplete:n,errorType:a,isConnected:e,...b})=>jsxRuntime.jsx(chunkU2HKJB6D_cjs.F,{title:o,rawError:t,onCopyComplete:n,customization:b.customization}),ft=o=>{let t=chunkV3D3HT6N_cjs.h();return jsxRuntime.jsx(reactToastify.ToastContainer,{...o,role:"alert","aria-live":"assertive","aria-label":t.somethingWentWrong})},vt=(o,t)=>{o(t.title,t.rawError,t.errorKey);},gt=o=>{o();},bt=(o,t)=>{o&&process.env.NODE_ENV==="development"&&console.log("Error copied to clipboard:",t.substring(0,100));},yt=o=>o,Tt=o=>o;function Eo({containerId:o="nova-connect-errors",position:t="top-center",autoClose:n=7e3,draggable:a=false,customization:e}){let b=chunkV3D3HT6N_cjs.h(),f=chunk2SFIZVDC_cjs.h(p=>p.switchNetworkError),x=chunk2SFIZVDC_cjs.h(p=>p.activeConnection),w=chunk2SFIZVDC_cjs.h(p=>p.connectionError),{ToastError:S=Ct,Container:u=ft}=e?.components??{},{showError:c=vt,dismissError:O=gt,onCopyComplete:W=bt}=e?.handlers??{},{errorTitle:y=yt,errorHash:N=Tt}=e??{},T=react.useRef(new Set),B=react.useRef(null),s=react.useMemo(()=>{let p=!!w,g=!!f,P=!!x?.isConnected;return {hasWalletError:p,hasSwitchError:g,isConnected:P,hasAnyError:p||g,primaryError:w||f||null,errorType:p?"wallet":g?"switch":null}},[w,f,x?.isConnected]),U=react.useMemo(()=>{switch(s.errorType){case "wallet":return b.connectionError;case "switch":return b.errorWhenChainSwitching;default:return b.somethingWentWrong}},[s.errorType,b]),d=react.useMemo(()=>y(U,{errorType:s.errorType}),[y,U,s.errorType]),G=react.useMemo(()=>s.primaryError?`${s.errorType}-${s.primaryError.substring(0,50)}`:null,[s.primaryError,s.errorType]),C=react.useMemo(()=>N(G,{primaryError:s.primaryError,errorType:s.errorType}),[N,G,s.primaryError,s.errorType]),M=react.useCallback(()=>{O(()=>{B.current&&(reactToastify.toast.dismiss(B.current),B.current=null),reactToastify.toast.dismiss({containerId:o});});},[o,O]),H=react.useCallback((p,g)=>{W(p,g,s.errorType);},[W,s.errorType]),r=react.useCallback((p,g,P)=>{if(M(),!T.current.has(P))try{let V={containerId:o,toastId:P,onClose:()=>{T.current.delete(P),B.current=null;}},q=e?.toastOptions?.error?.({title:p,rawError:g,errorType:s.errorType,isConnected:s.isConnected}),J={...V,...q};reactToastify.toast.error(jsxRuntime.jsx(S,{title:p,rawError:g,errorType:s.errorType,isConnected:s.isConnected,onCopyComplete:Q=>H(Q,g),customization:e?.toastErrorCustomization}),J),T.current.add(P),B.current=P;}catch(V){console.error("Failed to show error toast:",V);}},[M,o,e?.toastOptions?.error,e?.toastErrorCustomization,S,s.errorType,s.isConnected,H]),v=react.useCallback((p,g,P)=>{c(r,{title:p,rawError:g,errorKey:P,errorType:s.errorType});},[r,c,s.errorType]);react.useEffect(()=>{let{hasAnyError:p,isConnected:g,primaryError:P}=s;if(g&&!p){M(),T.current.clear();return}if(p&&P&&C){if(g&&s.errorType!=="switch")return;v(d,P,C);}},[s,d,C,v,M]),react.useEffect(()=>()=>{M(),T.current.clear();},[M]);let D=react.useMemo(()=>e?.classNames?.container?e.classNames.container({hasErrors:s.hasAnyError,errorType:s.errorType}):"novacon:p-0 novacon:bg-transparent",[e,s.hasAnyError,s.errorType]),m=react.useMemo(()=>{let p=e?.toastCloseButton;return p?({closeToast:g})=>jsxRuntime.jsx(novaCore.ToastCloseButton,{closeToast:g,...p}):novaCore.ToastCloseButton},[e?.toastCloseButton]),k=react.useMemo(()=>({containerId:o,position:t,closeOnClick:false,icon:false,closeButton:m,autoClose:n,hideProgressBar:false,newestOnTop:false,pauseOnFocusLoss:false,draggable:a,pauseOnHover:true,theme:"light",transition:reactToastify.Bounce}),[o,t,n,a,m]),E=react.useMemo(()=>({...k,...e?.containerProps,className:D}),[k,e?.containerProps,D]);return jsxRuntime.jsx(u,{...E})}Eo.displayName="ErrorsProvider";function No({labels:o,children:t}){let n=react.useMemo(()=>o,[o]);if(process.env.NODE_ENV==="development"){(!o||typeof o!="object")&&console.warn("NovaConnectLabelsProvider: labels prop should be an object");let e=["connectWallet","disconnect","connecting","connected","error","success"].filter(b=>!(b in o));e.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${e.join(", ")}`);}return jsxRuntime.jsx(chunkV3D3HT6N_cjs.g.Provider,{value:n,children:t})}No.displayName="NovaConnectLabelsProvider";function Wt(o,t){if(!o||!Array.isArray(o)||!t)return;let n=o.find(a=>a&&typeof a=="object"&&"name"in a&&typeof a.name=="string"?orbitCore.formatConnectorName(a.name)===t:false);if(n&&typeof n=="object"&&"name"in n&&typeof n.name=="string")return n.name}var Xo=react.forwardRef(({className:o,children:t,modalData:n,...a},e)=>jsxRuntime.jsx("div",{ref:e,className:novaCore.cn("novacon:relative novacon:flex novacon:w-full novacon:flex-col",o),...a,children:t}));Xo.displayName="DefaultModalContainer";var Yo=react.forwardRef(({className:o,children:t,modalData:n,...a},e)=>jsxRuntime.jsx("div",{ref:e,...a,children:jsxRuntime.jsx(novaCore.DialogHeader,{className:o,children:t})}));Yo.displayName="DefaultModalHeader";var Zo=react.forwardRef(({className:o,onClick:t,modalData:n,...a},e)=>jsxRuntime.jsx("button",{ref:e,className:novaCore.cn("novacon:cursor-pointer novacon:text-[var(--tuwa-text-secondary)] novacon:transition novacon:duration-300 novacon:ease-in-out novacon:active:scale-75 novacon:hover:scale-110 novacon:mr-1",o),type:"button",onClick:t,...a,children:jsxRuntime.jsx(outline.InformationCircleIcon,{width:20,height:20,"aria-hidden":"true"})}));Zo.displayName="DefaultInfoButton";var ot=react.forwardRef(({className:o,children:t,modalData:n,...a},e)=>jsxRuntime.jsx(novaCore.DialogTitle,{ref:e,className:novaCore.cn("novacon:flex novacon:items-center",o),...a,children:t}));ot.displayName="DefaultTitle";var tt=react.forwardRef(({className:o,onClick:t,modalData:n,...a},e)=>jsxRuntime.jsx(novaCore.DialogClose,{asChild:true,children:jsxRuntime.jsx("button",{ref:e,type:"button",onClick:t,className:novaCore.cn("novacon:cursor-pointer novacon:rounded-full novacon:p-1 novacon:text-[var(--tuwa-text-tertiary)] novacon:transition-colors novacon:hover:bg-[var(--tuwa-bg-muted)] novacon:hover:text-[var(--tuwa-text-primary)]",o),...a,children:jsxRuntime.jsx(novaCore.CloseIcon,{"aria-hidden":"true"})})}));tt.displayName="DefaultCloseButton";var et=react.forwardRef(({className:o,children:t,modalData:n,...a},e)=>jsxRuntime.jsx("main",{ref:e,className:novaCore.cn("novacon:flex novacon:flex-col novacon:gap-4 novacon:p-4",o),id:"connect-modal-content",role:"main",...a,children:t}));et.displayName="DefaultMainContent";var nt=react.forwardRef(({className:o,children:t,modalData:n,...a},e)=>jsxRuntime.jsx("footer",{ref:e,className:novaCore.cn("novacon:flex novacon:w-full novacon:items-center novacon:justify-between novacon:border-t novacon:border-[var(--tuwa-border-primary)] novacon:p-4",o),role:"contentinfo",...a,children:t}));nt.displayName="DefaultFooter";var rt=react.forwardRef(({className:o,onClick:t,children:n,modalData:a,...e},b)=>jsxRuntime.jsx("button",{ref:b,type:"button",onClick:t,className:novaCore.cn(novaCore.standardButtonClasses,o),...e,children:n}));rt.displayName="DefaultBackButton";var at=react.forwardRef(({className:o,onClick:t,children:n,disabled:a,loading:e,buttonConfig:b,modalData:f,...x},w)=>jsxRuntime.jsx("button",{ref:w,type:"button",onClick:t,disabled:a||e,className:novaCore.cn(novaCore.standardButtonClasses,o),...x,children:e?"Loading...":n}));at.displayName="DefaultActionButton";var st=react.forwardRef(({className:o,children:t,modalData:n,...a},e)=>jsxRuntime.jsx("span",{ref:e,className:novaCore.cn("novacon:sr-only",o),...a,children:t}));st.displayName="DefaultActionDescription";var it=react.forwardRef(({children:o,className:t,...n},a)=>{let{modalData:e,...b}=n;return jsxRuntime.jsx("div",{ref:a,className:t,...b,children:o})});it.displayName="DefaultEmptyState";var ho=react.memo(({appChains:o,solanaRPCUrls:t,withImpersonated:n,customization:a={}})=>{let{isConnectModalOpen:e,setIsConnectModalOpen:b,setConnectModalContentType:f,setActiveConnector:x,setImpersonatedAddress:w,setIsConnected:S,connectModalContentType:u,selectedAdapter:c,setSelectedAdapter:O,isConnected:W,activeConnector:y,impersonatedAddress:N}=chunkV3D3HT6N_cjs.d(),T=chunk2SFIZVDC_cjs.h(l=>l.connectionError),B=chunk2SFIZVDC_cjs.h(l=>l.getConnectors),s=chunk2SFIZVDC_cjs.h(l=>l.connect),U=chunk2SFIZVDC_cjs.h(l=>l.activeConnection),d=chunkV3D3HT6N_cjs.h(),G=react.useContext(chunk2SFIZVDC_cjs.f),C=react.useMemo(()=>{if(e)return B()},[e,B]),M=react.useMemo(()=>chunkV3D3HT6N_cjs.t({connectors:C,selectedAdapter:c}),[C,c]),H=react.useMemo(()=>T?typeof T=="string"?new Error(T):T:null,[T]),r=react.useMemo(()=>({contentType:u,selectedAdapter:c,activeConnector:y,impersonatedAddress:N,isConnected:W,isOpen:e,error:H,connectors:C,filteredConnectors:M,labels:d}),[u,c,y,N,W,e,H,C,M,d]);react.useEffect(()=>{e&&(f("connectors"),O(void 0),x(void 0),w(""),S(false));},[e]);let{components:v={},classNames:D={},handlers:m={},config:k={},childComponents:E={}}=a,p=v.ModalContainer||Xo,g=v.ModalHeader||Yo,P=v.InfoButton||Zo,V=v.Title||ot,q=v.CloseButton||tt,J=v.MainContent||et,Q=v.Footer||nt,X=v.BackButton||rt,lo=v.ActionButton||at,Y=v.ActionDescription||st,co=v.EmptyState||it,j=v.Dialog||novaCore.Dialog,bo=v.DialogContent||novaCore.DialogContent,mo=v.MotionDiv||framerMotion.motion.div,no=react.useCallback(()=>{switch(u){case "about":return d.aboutWallets;case "getWallet":return d.getWallet;case "connecting":return c&&y&&C&&Wt(C[c],y)||d.connectingEllipsis;case "impersonate":return d.connectImpersonatedWallet;default:return d.connectWallet}},[u,c,y,C,d]),Z=react.useCallback(()=>"connectors",[u]),oo=react.useCallback(l=>{m?.onOpenChange?m.onOpenChange(l,r):b(l);},[m?.onOpenChange,r,b]),ro=react.useCallback(()=>{let l=()=>f(Z());m?.onBack?m.onBack(r,l):l();},[m?.onBack,r,f,Z]),yo=react.useCallback(()=>{m?.onInfoClick?m.onInfoClick(r):f("about");},[m?.onInfoClick,r,f]),$=react.useCallback(async(l,To)=>{await s({connectorType:l,chainId:chunkV3D3HT6N_cjs.p({appChains:o,selectedAdapter:To,solanaRPCUrls:t})});try{await orbitCore.waitFor(()=>G?.getState().activeConnection?.isConnected),S(!0);let Do=setTimeout(()=>b(!1),400),mt=setTimeout(()=>S(!1),500);await orbitCore.delay(null,500),clearTimeout(Do),clearTimeout(mt);}catch(Do){console.error(Do);}},[s,o,c,t]),po=react.useCallback(async(l,To)=>{O(l),f("connecting"),await $(To,l);},[$]),K=react.useCallback(l=>{x(orbitCore.formatConnectorName(l.name)),l.adapters.length===1?(O(l.adapters[0]),f(orbitCore.formatConnectorName(l.name)==="impersonatedwallet"?"impersonate":"connecting")):c?f(orbitCore.formatConnectorName(l.name)==="impersonatedwallet"?"impersonate":"connecting"):orbitCore.formatConnectorName(l.name)==="impersonatedwallet"?f("impersonate"):f("network");},[c]),ct=react.useCallback(()=>{switch(u){case "network":return jsxRuntime.jsx(chunkU2HKJB6D_cjs.D,{activeConnector:y,connectors:M,onClick:po,customization:E.networkSelections});case "connectors":return C?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(chunkU2HKJB6D_cjs.E,{networks:Object.keys(C),selectedAdapter:c,onSelect:l=>O(l),customization:E.networkTabs}),jsxRuntime.jsx(chunkU2HKJB6D_cjs.z,{isOnlyOneNetwork:Object.keys(C).length===1,connectors:M,selectedAdapter:c,onClick:K,setContentType:f,appChains:o,solanaRPCUrls:t,setIsConnected:S,setIsOpen:b,withImpersonated:n,customization:E.connectorsSelections}),jsxRuntime.jsx(chunkU2HKJB6D_cjs.C,{customization:E.legalDisclaimer})]}):jsxRuntime.jsx(co,{className:D.emptyConnectors?.({modalData:r}),modalData:r,children:"No connectors available"});case "about":return jsxRuntime.jsx(chunkU2HKJB6D_cjs.t,{customization:E.aboutWallets});case "getWallet":return jsxRuntime.jsx(chunkU2HKJB6D_cjs.A,{customization:E.getWallet});case "connecting":return jsxRuntime.jsx(chunkU2HKJB6D_cjs.w,{selectedAdapter:c,connectors:M,activeConnector:y,isConnected:W,customization:E.connecting});case "impersonate":return jsxRuntime.jsx(chunkU2HKJB6D_cjs.B,{selectedAdapter:c,impersonatedAddress:N,setImpersonatedAddress:w,customization:E.impersonateForm})}},[u,y,M,po,E,C,c,K,W,N]),_=react.useCallback(()=>{switch(u){case "connectors":return {title:d.iDontHaveWallet,onClick:()=>{m.onActionClick?.connectors?m.onActionClick.connectors(r):f("getWallet");}};case "getWallet":return {title:d.choseWallet,onClick:()=>{m.onActionClick?.getWallet?m.onActionClick.getWallet(r):window.open(orbitCore.getNetworkData(c??Object.keys(C)[0])?.links?.choseWallet,"_blank","noopener,noreferrer");}};case "about":return {title:d.learnMore,onClick:()=>{m.onActionClick?.about?m.onActionClick.about(r):window.open(orbitCore.getNetworkData(c??Object.keys(C)[0])?.links?.about,"_blank","noopener,noreferrer");}};case "impersonate":return {title:d.connect,onClick:async()=>{if(m.onActionClick?.impersonate)await m.onActionClick.impersonate(r);else {let l=N.trim();if(T||!l||!orbitCore.isAddress(l)||U?.isConnected)return;orbitCore.impersonatedHelpers.setImpersonated(l),f("connecting"),await $(orbitCore.getConnectorTypeFromName(c??orbitCore.OrbitAdapter.EVM,y??""),c??orbitCore.OrbitAdapter.EVM);}}};case "connecting":return T&&c&&y?{title:d.tryAgain,onClick:async()=>{m.onActionClick?.connecting?await m.onActionClick.connecting(r):await $(orbitCore.getConnectorTypeFromName(c,y),c);}}:void 0}},[u,d,m,r,c,C,N,T,$,y])(),dt=react.useCallback(()=>{switch(u){case "getWallet":return "Opens external wallet selection page";case "about":return "Opens external documentation";case "impersonate":return "Connects with impersonated wallet address";case "connecting":return "Retries wallet connection";default:return ""}},[u]);return jsxRuntime.jsx(j,{open:e,onOpenChange:oo,children:jsxRuntime.jsx(bo,{className:novaCore.cn("novacon:w-full novacon:sm:max-w-md"),children:jsxRuntime.jsx(mo,{layout:true,transition:{layout:{duration:k.animation?.disabled?0:k.animation?.layoutDuration??1e-4}},children:jsxRuntime.jsxs(p,{className:D.modalContainer?.({modalData:r}),modalData:r,children:[jsxRuntime.jsxs(g,{className:D.header?.({modalData:r}),modalData:r,children:[jsxRuntime.jsxs(V,{className:D.title?.({modalData:r}),modalData:r,children:[u==="connectors"&&jsxRuntime.jsx(P,{className:D.infoButton?.({modalData:r}),onClick:yo,"aria-label":k.ariaLabels?.infoButton?.(r)||`${d.learnMore} ${d.aboutWallets}`,modalData:r}),no()]}),jsxRuntime.jsx(q,{className:D.closeButton?.({modalData:r}),onClick:()=>oo(false),"aria-label":k.ariaLabels?.closeButton?.(r)||d.closeModal,modalData:r})]}),jsxRuntime.jsx(J,{className:D.mainContent?.({modalData:r}),modalData:r,children:ct()}),jsxRuntime.jsxs(Q,{className:D.footer?.({modalData:r}),modalData:r,children:[jsxRuntime.jsx("div",{className:"novacon:flex novacon:items-center novacon:gap-4",children:u!=="connectors"&&jsxRuntime.jsx(X,{className:D.backButton?.({modalData:r}),onClick:ro,"aria-label":k.ariaLabels?.backButton?.(r)||`${d.back} to previous step`,modalData:r,children:d.back})}),_&&jsxRuntime.jsxs("div",{className:"novacon:flex novacon:items-center novacon:gap-3",children:[jsxRuntime.jsx(lo,{className:D.actionButton?.({modalData:r,buttonConfig:_}),onClick:_.onClick,disabled:_.disabled,loading:_.loading,"aria-describedby":"bottom-action-description",modalData:r,buttonConfig:_,children:_.title}),jsxRuntime.jsx(Y,{id:"bottom-action-description",className:D.actionDescription?.({modalData:r}),modalData:r,children:dt()})]})]})]})})})})});ho.displayName="ConnectModal";var Vt=({labels:o,children:t})=>jsxRuntime.jsx(No,{labels:o,children:t}),Ut=({customization:o})=>jsxRuntime.jsx(Eo,{customization:o}),Gt=(o,t)=>novaCore.deepMerge(o,t||{}),jt=o=>o,$t=o=>o,Kt=(o,t,n)=>o;function _t({labels:o,children:t,appChains:n,solanaRPCUrls:a,transactionPool:e,pulsarAdapter:b,withImpersonated:f,withBalance:x,withChain:w,legal:S,customization:u}){let c=chunk2SFIZVDC_cjs.h(K=>K.activeConnection),O=chunk2SFIZVDC_cjs.h(K=>K.connectionError),{LabelsProvider:W=Vt,ErrorsProvider:y=Ut}=u?.components??{},{merge:N=Gt,transform:T=jt}=u?.labels??{},{transform:B=$t}=u?.contextValue??{},{providerTree:s=Kt}=u?.rendering??{},U=react.useMemo(()=>N(chunkMGBN4EIT_cjs.a,o||{}),[o,N]),[d,G]=react.useState(false),[C,M]=react.useState(false),[H,r]=react.useState(false),[v,D]=react.useState(false),[m,k]=react.useState("idle"),[E,p]=react.useState("connectors"),[g,P]=react.useState(void 0),[V,q]=react.useState(void 0),[J,Q]=react.useState(""),[X,lo]=react.useState(false),[Y,co]=react.useState("main"),j=react.useMemo(()=>({isConnected:X,activeConnection:c,connectionError:O,modalStates:{isConnectModalOpen:d,isConnectedModalOpen:C,isChainsListOpen:H,isChainsListOpenMobile:v},contentTypes:{connectModal:E,connectedModal:Y},statuses:{connectedButton:m}}),[X,c,O,d,C,H,v,E,Y,m]),bo=react.useMemo(()=>T(U,j),[U,T,j]),mo=react.useMemo(()=>B({appChains:n,solanaRPCUrls:a,withImpersonated:f,withBalance:x,withChain:w,isConnectModalOpen:d,setIsConnectModalOpen:G,isConnectedModalOpen:C,setIsConnectedModalOpen:M,isChainsListOpen:H,setIsChainsListOpen:r,isChainsListOpenMobile:v,setIsChainsListOpenMobile:D,connectedButtonStatus:m,setConnectedButtonStatus:k,connectedModalContentType:Y,setConnectedModalContentType:co,connectModalContentType:E,setConnectModalContentType:p,selectedAdapter:g,setSelectedAdapter:P,activeConnector:V,setActiveConnector:q,impersonatedAddress:J,setImpersonatedAddress:Q,isConnected:X,setIsConnected:lo,legal:S},j),[n,a,f,x,w,d,G,C,M,H,r,v,D,m,k,Y,co,E,p,g,P,V,q,J,Q,X,lo,S,B,j]),no=jsxRuntime.jsx(y,{customization:u?.errors}),Z=jsxRuntime.jsx(W,{labels:bo,children:t}),oo=n||a?jsxRuntime.jsx(ho,{withImpersonated:f,solanaRPCUrls:a,appChains:n,customization:u?.modals?.connectModal}):null,ro=n||a?jsxRuntime.jsx(chunkU2HKJB6D_cjs.s,{solanaRPCUrls:a,appChains:n,transactionPool:e,pulsarAdapter:b,customization:u?.modals?.connectedModal}):null,yo=jsxRuntime.jsxs(chunkV3D3HT6N_cjs.c.Provider,{value:mo,children:[no,Z,oo,ro]}),$=jsxRuntime.jsxs(chunkV3D3HT6N_cjs.c.Provider,{value:mo,children:[no,Z,oo,ro]}),po=s($,{ErrorsProvider:no,LabelsProvider:Z,MainContent:yo,ConnectModal:oo||jsxRuntime.jsx(jsxRuntime.Fragment,{}),ConnectedModal:ro||jsxRuntime.jsx(jsxRuntime.Fragment,{})},j);return jsxRuntime.jsx(jsxRuntime.Fragment,{children:po})}_t.displayName="NovaConnectProvider";async function Xn(){let{getAllAdaptersStatus:o}=await import('./getChainsListByConnectorType-QCNOPM6I.cjs');return {hasEvmUtils:await vo(),hasSolanaUtils:await go(),adaptersStatus:o()}}async function vo(){try{return await import('viem'),await import('@tuwaio/orbit-evm'),!0}catch{return false}}async function go(){try{return await import('gill'),await import('@tuwaio/orbit-solana'),!0}catch{return false}}async function Yn(){try{if(!await vo())return {available:!1,error:"EVM packages (viem, @tuwaio/orbit-evm) not available"};let t=await import('./evm/index.cjs'),n=await t.getEvmExports();return n.available?{...t,...n}:{available:!1,error:n.error||"Failed to load EVM exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"EVM utilities not available"}}}async function Zn(){try{if(!await go())return {available:!1,error:"Solana packages (gill, @tuwaio/orbit-solana) not available"};let t=await import('./solana/index.cjs'),n=await t.getSolanaExports();return n.available?{...t,...n}:{available:!1,error:n.error||"Failed to load Solana exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"Solana utilities not available"}}}async function or(){let o={evm:false,solana:false,errors:[]};try{let t=await vo(),n=await go();if(t||n){let{preloadChainAdapters:a}=await import('./getChainsListByConnectorType-QCNOPM6I.cjs'),e=[];t&&e.push(orbitCore.OrbitAdapter.EVM),n&&e.push(orbitCore.OrbitAdapter.SOLANA),await a(e),o.evm=t,o.solana=n;}else o.errors.push("No blockchain packages available for initialization");}catch(t){let n=t instanceof Error?t.message:"Unknown initialization error";o.errors.push(n);}return o}async function tr(o){return o===orbitCore.OrbitAdapter.Starknet||o!==orbitCore.OrbitAdapter.EVM&&o!==orbitCore.OrbitAdapter.SOLANA?false:o===orbitCore.OrbitAdapter.EVM?vo():go()}Object.defineProperty(exports,"NovaConnectLabelsContext",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.g}});Object.defineProperty(exports,"NovaConnectProviderContext",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.c}});Object.defineProperty(exports,"NovaConnectProviderError",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.b}});Object.defineProperty(exports,"createLabelsSubset",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.o}});Object.defineProperty(exports,"getAvailableChainIds",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.q}});Object.defineProperty(exports,"getAvailableSolanaClusters",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.v}});Object.defineProperty(exports,"getConnectChainId",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.p}});Object.defineProperty(exports,"getFilteredConnectors",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.t}});Object.defineProperty(exports,"getGroupedConnectors",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.r}});Object.defineProperty(exports,"getLabelWithFallback",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.n}});Object.defineProperty(exports,"hasAvailableConnectors",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.s}});Object.defineProperty(exports,"hasConnectorsForAdapter",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.u}});Object.defineProperty(exports,"hasLabel",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.k}});Object.defineProperty(exports,"isDefaultLabels",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.m}});Object.defineProperty(exports,"isValidSolanaCluster",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.w}});Object.defineProperty(exports,"useGetWalletNameAndAvatar",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.a}});Object.defineProperty(exports,"useHasNovaConnectContext",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.e}});Object.defineProperty(exports,"useLabelsByCategory",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.l}});Object.defineProperty(exports,"useNovaConnect",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.d}});Object.defineProperty(exports,"useNovaConnectLabel",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.i}});Object.defineProperty(exports,"useNovaConnectLabels",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.h}});Object.defineProperty(exports,"useNovaConnectLabelsSubset",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.j}});Object.defineProperty(exports,"useNovaConnectOptional",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.f}});Object.defineProperty(exports,"useWalletChainsList",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.x}});Object.defineProperty(exports,"useWalletNativeBalance",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.y}});Object.defineProperty(exports,"getAdapterStatus",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.k}});Object.defineProperty(exports,"getAllAdaptersStatus",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.l}});Object.defineProperty(exports,"getAvailableSolanaClustersAsync",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.g}});Object.defineProperty(exports,"getChainsListByConnectorType",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.b}});Object.defineProperty(exports,"getChainsListByConnectorTypeAsync",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.a}});Object.defineProperty(exports,"getChainsListByConnectorTypeSync",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.b}});Object.defineProperty(exports,"getWalletChains",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.i}});Object.defineProperty(exports,"isEvmChainList",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.e}});Object.defineProperty(exports,"isEvmChainListAsync",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.c}});Object.defineProperty(exports,"isEvmChainListSync",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.e}});Object.defineProperty(exports,"isSolanaChainList",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.f}});Object.defineProperty(exports,"isSolanaChainListAsync",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.d}});Object.defineProperty(exports,"isSolanaChainListSync",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.f}});Object.defineProperty(exports,"isValidSolanaClusterAsync",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.h}});Object.defineProperty(exports,"preloadChainAdapters",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.j}});exports.ErrorsProvider=Eo;exports.NovaConnectLabelsProvider=No;exports.NovaConnectProvider=_t;exports.getBlockchainUtilities=Xn;exports.getEvmUtils=Yn;exports.getSolanaUtils=Zn;exports.initializeBlockchainSupport=or;exports.isAdapterSupported=tr;
package/dist/index.css CHANGED
@@ -65,6 +65,9 @@
65
65
  .novacon\:inset-0 {
66
66
  inset: calc(var(--novacon-spacing) * 0);
67
67
  }
68
+ .novacon\:inset-\[-4px\] {
69
+ inset: -4px;
70
+ }
68
71
  .novacon\:inset-\[1px\] {
69
72
  inset: 1px;
70
73
  }
@@ -116,9 +119,6 @@
116
119
  .novacon\:right-\[-10px\] {
117
120
  right: -10px;
118
121
  }
119
- .novacon\:right-\[-30px\] {
120
- right: -30px;
121
- }
122
122
  .novacon\:right-\[-40px\] {
123
123
  right: -40px;
124
124
  }
@@ -284,12 +284,12 @@
284
284
  .novacon\:h-20 {
285
285
  height: calc(var(--novacon-spacing) * 20);
286
286
  }
287
- .novacon\:h-28 {
288
- height: calc(var(--novacon-spacing) * 28);
289
- }
290
287
  .novacon\:h-32 {
291
288
  height: calc(var(--novacon-spacing) * 32);
292
289
  }
290
+ .novacon\:h-36 {
291
+ height: calc(var(--novacon-spacing) * 36);
292
+ }
293
293
  .novacon\:h-48 {
294
294
  height: calc(var(--novacon-spacing) * 48);
295
295
  }
@@ -299,6 +299,9 @@
299
299
  .novacon\:h-\[2px\] {
300
300
  height: 2px;
301
301
  }
302
+ .novacon\:h-\[42px\] {
303
+ height: 42px;
304
+ }
302
305
  .novacon\:h-\[125px\] {
303
306
  height: 125px;
304
307
  }
@@ -371,12 +374,12 @@
371
374
  .novacon\:w-24 {
372
375
  width: calc(var(--novacon-spacing) * 24);
373
376
  }
374
- .novacon\:w-28 {
375
- width: calc(var(--novacon-spacing) * 28);
376
- }
377
377
  .novacon\:w-32 {
378
378
  width: calc(var(--novacon-spacing) * 32);
379
379
  }
380
+ .novacon\:w-36 {
381
+ width: calc(var(--novacon-spacing) * 36);
382
+ }
380
383
  .novacon\:w-48 {
381
384
  width: calc(var(--novacon-spacing) * 48);
382
385
  }
@@ -386,6 +389,9 @@
386
389
  .novacon\:w-\[1px\] {
387
390
  width: 1px;
388
391
  }
392
+ .novacon\:w-\[42px\] {
393
+ width: 42px;
394
+ }
389
395
  .novacon\:w-\[125px\] {
390
396
  width: 125px;
391
397
  }
@@ -761,6 +767,9 @@
761
767
  .novacon\:py-\[24px\] {
762
768
  padding-block: 24px;
763
769
  }
770
+ .novacon\:pt-3 {
771
+ padding-top: calc(var(--novacon-spacing) * 3);
772
+ }
764
773
  .novacon\:pt-4 {
765
774
  padding-top: calc(var(--novacon-spacing) * 4);
766
775
  }
@@ -880,6 +889,9 @@
880
889
  .novacon\:uppercase {
881
890
  text-transform: uppercase;
882
891
  }
892
+ .novacon\:underline {
893
+ text-decoration-line: underline;
894
+ }
883
895
  .novacon\:opacity-0 {
884
896
  opacity: 0%;
885
897
  }
@@ -1498,11 +1510,21 @@
1498
1510
  height: calc(var(--novacon-spacing) * 32);
1499
1511
  }
1500
1512
  }
1513
+ .novacon\:sm\:h-\[32px\] {
1514
+ @media (width >= 40rem) {
1515
+ height: 32px;
1516
+ }
1517
+ }
1501
1518
  .novacon\:sm\:w-32 {
1502
1519
  @media (width >= 40rem) {
1503
1520
  width: calc(var(--novacon-spacing) * 32);
1504
1521
  }
1505
1522
  }
1523
+ .novacon\:sm\:w-\[32px\] {
1524
+ @media (width >= 40rem) {
1525
+ width: 32px;
1526
+ }
1527
+ }
1506
1528
  .novacon\:sm\:max-w-md {
1507
1529
  @media (width >= 40rem) {
1508
1530
  max-width: var(--novacon-container-md);
@@ -1602,16 +1624,6 @@
1602
1624
  padding-inline: calc(var(--novacon-spacing) * 4);
1603
1625
  }
1604
1626
  }
1605
- .novacon\:\[\&_img\]\:h-4 {
1606
- & img {
1607
- height: calc(var(--novacon-spacing) * 4);
1608
- }
1609
- }
1610
- .novacon\:\[\&_img\]\:h-6 {
1611
- & img {
1612
- height: calc(var(--novacon-spacing) * 6);
1613
- }
1614
- }
1615
1627
  .novacon\:\[\&_img\]\:h-6\! {
1616
1628
  & img {
1617
1629
  height: calc(var(--novacon-spacing) * 6) !important;
@@ -1627,16 +1639,6 @@
1627
1639
  height: auto !important;
1628
1640
  }
1629
1641
  }
1630
- .novacon\:\[\&_img\]\:w-4 {
1631
- & img {
1632
- width: calc(var(--novacon-spacing) * 4);
1633
- }
1634
- }
1635
- .novacon\:\[\&_img\]\:w-6 {
1636
- & img {
1637
- width: calc(var(--novacon-spacing) * 6);
1638
- }
1639
- }
1640
1642
  .novacon\:\[\&_img\]\:w-6\! {
1641
1643
  & img {
1642
1644
  width: calc(var(--novacon-spacing) * 6) !important;
@@ -1708,19 +1710,115 @@
1708
1710
  }
1709
1711
  }
1710
1712
  }
1711
- .novacon\:\[\&\>img\]\:h-full {
1712
- &>img {
1713
- height: 100%;
1713
+ .novacon\:\[\&_svg\]\:h-4 {
1714
+ & svg {
1715
+ height: calc(var(--novacon-spacing) * 4);
1714
1716
  }
1715
1717
  }
1716
- .novacon\:\[\&\>img\]\:h-full\! {
1717
- &>img {
1718
- height: 100% !important;
1718
+ .novacon\:\[\&_svg\]\:h-6 {
1719
+ & svg {
1720
+ height: calc(var(--novacon-spacing) * 6);
1721
+ }
1722
+ }
1723
+ .novacon\:\[\&_svg\]\:h-6\! {
1724
+ & svg {
1725
+ height: calc(var(--novacon-spacing) * 6) !important;
1726
+ }
1727
+ }
1728
+ .novacon\:\[\&_svg\]\:h-\[42px\]\! {
1729
+ & svg {
1730
+ height: 42px !important;
1731
+ }
1732
+ }
1733
+ .novacon\:\[\&_svg\]\:h-\[auto\]\! {
1734
+ & svg {
1735
+ height: auto !important;
1736
+ }
1737
+ }
1738
+ .novacon\:\[\&_svg\]\:w-4 {
1739
+ & svg {
1740
+ width: calc(var(--novacon-spacing) * 4);
1741
+ }
1742
+ }
1743
+ .novacon\:\[\&_svg\]\:w-6 {
1744
+ & svg {
1745
+ width: calc(var(--novacon-spacing) * 6);
1719
1746
  }
1720
1747
  }
1721
- .novacon\:\[\&\>img\]\:w-full {
1748
+ .novacon\:\[\&_svg\]\:w-6\! {
1749
+ & svg {
1750
+ width: calc(var(--novacon-spacing) * 6) !important;
1751
+ }
1752
+ }
1753
+ .novacon\:\[\&_svg\]\:w-\[42px\]\! {
1754
+ & svg {
1755
+ width: 42px !important;
1756
+ }
1757
+ }
1758
+ .novacon\:\[\&_svg\]\:w-\[60px\]\! {
1759
+ & svg {
1760
+ width: 60px !important;
1761
+ }
1762
+ }
1763
+ .novacon\:\[\&_svg\]\:transition-transform {
1764
+ & svg {
1765
+ transition-property: transform, translate, scale, rotate;
1766
+ transition-timing-function: var(--tw-ease, var(--novacon-default-transition-timing-function));
1767
+ transition-duration: var(--tw-duration, var(--novacon-default-transition-duration));
1768
+ }
1769
+ }
1770
+ .novacon\:\[\&_svg\]\:duration-200 {
1771
+ & svg {
1772
+ --tw-duration: 200ms;
1773
+ transition-duration: 200ms;
1774
+ }
1775
+ }
1776
+ .novacon\:hover\:\[\&_svg\]\:scale-95 {
1777
+ &:hover {
1778
+ @media (hover: hover) {
1779
+ & svg {
1780
+ --tw-scale-x: 95%;
1781
+ --tw-scale-y: 95%;
1782
+ --tw-scale-z: 95%;
1783
+ scale: var(--tw-scale-x) var(--tw-scale-y);
1784
+ }
1785
+ }
1786
+ }
1787
+ }
1788
+ .novacon\:active\:\[\&_svg\]\:scale-85 {
1789
+ &:active {
1790
+ & svg {
1791
+ --tw-scale-x: 85%;
1792
+ --tw-scale-y: 85%;
1793
+ --tw-scale-z: 85%;
1794
+ scale: var(--tw-scale-x) var(--tw-scale-y);
1795
+ }
1796
+ }
1797
+ }
1798
+ .novacon\:sm\:\[\&_svg\]\:h-\[32px\]\! {
1799
+ @media (width >= 40rem) {
1800
+ & svg {
1801
+ height: 32px !important;
1802
+ }
1803
+ }
1804
+ }
1805
+ .novacon\:sm\:\[\&_svg\]\:w-\[32px\]\! {
1806
+ @media (width >= 40rem) {
1807
+ & svg {
1808
+ width: 32px !important;
1809
+ }
1810
+ }
1811
+ }
1812
+ .novacon\:md\:\[\&_svg\]\:w-\[80px\]\! {
1813
+ @media (width >= 48rem) {
1814
+ & svg {
1815
+ width: 80px !important;
1816
+ }
1817
+ }
1818
+ }
1819
+ .novacon\:\[\&\>img\]\:h-full\! {
1722
1820
  &>img {
1723
- width: 100%;
1821
+ height: 100% !important;
1724
1822
  }
1725
1823
  }
1726
1824
  .novacon\:\[\&\>img\]\:w-full\! {
package/dist/index.d.cts CHANGED
@@ -1,16 +1,16 @@
1
1
  import { OrbitAdapter, ConnectorType, ChainIdentifierArray } from '@tuwaio/orbit-core';
2
2
  export { WalletNameAndAvatarData, useGetWalletNameAndAvatar, useWalletChainsList } from './hooks/index.cjs';
3
- import { C as ConnectContentType, a as ConnectedContentType, B as ButtonTxStatus, N as NovaConnectProviderType, b as NovaConnectProviderProps, I as InitialChains } from './useWalletNativeBalance-BvBbDXMS.cjs';
4
- export { A as AllChainConfigs, L as LabelCategory, p as NativeBalanceResult, g as NovaConnectLabelsContext, d as NovaConnectProviderContext, c as NovaConnectProviderError, W as WalletBalance, o as createLabelsSubset, n as getLabelWithFallback, k as hasLabel, m as isDefaultLabels, e as useHasNovaConnectContext, l as useLabelsByCategory, u as useNovaConnect, i as useNovaConnectLabel, h as useNovaConnectLabels, j as useNovaConnectLabelsSubset, f as useNovaConnectOptional, q as useWalletNativeBalance } from './useWalletNativeBalance-BvBbDXMS.cjs';
3
+ import { C as ConnectContentType, a as ConnectedContentType, B as ButtonTxStatus, N as NovaConnectProviderType, b as NovaConnectProviderProps, I as InitialChains } from './useWalletNativeBalance-rZ2GQ88f.cjs';
4
+ export { A as AllChainConfigs, l as LabelCategory, L as LegalConfig, q as NativeBalanceResult, g as NovaConnectLabelsContext, d as NovaConnectProviderContext, c as NovaConnectProviderError, W as WalletBalance, p as createLabelsSubset, o as getLabelWithFallback, k as hasLabel, n as isDefaultLabels, e as useHasNovaConnectContext, m as useLabelsByCategory, u as useNovaConnect, i as useNovaConnectLabel, h as useNovaConnectLabels, j as useNovaConnectLabelsSubset, f as useNovaConnectOptional, r as useWalletNativeBalance } from './useWalletNativeBalance-rZ2GQ88f.cjs';
5
5
  import * as react_jsx_runtime from 'react/jsx-runtime';
6
+ import { ToastCloseButtonProps } from '@tuwaio/nova-core';
6
7
  import { ComponentPropsWithoutRef, ComponentType, ReactNode } from 'react';
7
8
  import { ToastContainer, toast, ToastPosition } from 'react-toastify';
8
- import { at as ToastErrorCustomization, aJ as ConnectModalCustomization, u as ConnectedModalCustomization } from './ToastError-BF4F8oo-.cjs';
9
- import { N as NovaConnectLabels } from './types-eao2UQcC.cjs';
9
+ import { T as ToastErrorCustomization, C as ConnectModalCustomization, a as ConnectedModalCustomization } from './index-B9pJ-IAo.cjs';
10
+ import { N as NovaConnectLabels } from './types-DxUn8qmU.cjs';
10
11
  import { BaseConnector } from '@tuwaio/satellite-core';
11
12
  import { Connector } from '@tuwaio/satellite-react';
12
13
  import '@tuwaio/pulsar-core';
13
- import '@tuwaio/nova-core';
14
14
  import 'framer-motion';
15
15
  import '@radix-ui/react-select';
16
16
 
@@ -37,6 +37,8 @@ type ErrorsProviderCustomization = {
37
37
  };
38
38
  /** Default ToastError customization (only used with default ToastError component) */
39
39
  toastErrorCustomization?: ToastErrorCustomization;
40
+ /** Customization for toast close button */
41
+ toastCloseButton?: Omit<ToastCloseButtonProps, 'closeToast'>;
40
42
  /** Custom class name generators */
41
43
  classNames?: {
42
44
  /** Function to generate container classes */
@@ -286,7 +288,7 @@ interface NovaConnectProviderPropsWithCustomization extends NovaConnectProviderP
286
288
  *
287
289
  * @param props - Provider configuration and customization options
288
290
  */
289
- declare function NovaConnectProvider({ labels, children, appChains, solanaRPCUrls, transactionPool, pulsarAdapter, withImpersonated, withBalance, withChain, customization, }: NovaConnectProviderPropsWithCustomization): react_jsx_runtime.JSX.Element;
291
+ declare function NovaConnectProvider({ labels, children, appChains, solanaRPCUrls, transactionPool, pulsarAdapter, withImpersonated, withBalance, withChain, legal, customization, }: NovaConnectProviderPropsWithCustomization): react_jsx_runtime.JSX.Element;
290
292
  declare namespace NovaConnectProvider {
291
293
  var displayName: string;
292
294
  }
package/dist/index.d.ts CHANGED
@@ -1,16 +1,16 @@
1
1
  import { OrbitAdapter, ConnectorType, ChainIdentifierArray } from '@tuwaio/orbit-core';
2
2
  export { WalletNameAndAvatarData, useGetWalletNameAndAvatar, useWalletChainsList } from './hooks/index.js';
3
- import { C as ConnectContentType, a as ConnectedContentType, B as ButtonTxStatus, N as NovaConnectProviderType, b as NovaConnectProviderProps, I as InitialChains } from './useWalletNativeBalance-B4hY45fG.js';
4
- export { A as AllChainConfigs, L as LabelCategory, p as NativeBalanceResult, g as NovaConnectLabelsContext, d as NovaConnectProviderContext, c as NovaConnectProviderError, W as WalletBalance, o as createLabelsSubset, n as getLabelWithFallback, k as hasLabel, m as isDefaultLabels, e as useHasNovaConnectContext, l as useLabelsByCategory, u as useNovaConnect, i as useNovaConnectLabel, h as useNovaConnectLabels, j as useNovaConnectLabelsSubset, f as useNovaConnectOptional, q as useWalletNativeBalance } from './useWalletNativeBalance-B4hY45fG.js';
3
+ import { C as ConnectContentType, a as ConnectedContentType, B as ButtonTxStatus, N as NovaConnectProviderType, b as NovaConnectProviderProps, I as InitialChains } from './useWalletNativeBalance-DR8XONYI.js';
4
+ export { A as AllChainConfigs, l as LabelCategory, L as LegalConfig, q as NativeBalanceResult, g as NovaConnectLabelsContext, d as NovaConnectProviderContext, c as NovaConnectProviderError, W as WalletBalance, p as createLabelsSubset, o as getLabelWithFallback, k as hasLabel, n as isDefaultLabels, e as useHasNovaConnectContext, m as useLabelsByCategory, u as useNovaConnect, i as useNovaConnectLabel, h as useNovaConnectLabels, j as useNovaConnectLabelsSubset, f as useNovaConnectOptional, r as useWalletNativeBalance } from './useWalletNativeBalance-DR8XONYI.js';
5
5
  import * as react_jsx_runtime from 'react/jsx-runtime';
6
+ import { ToastCloseButtonProps } from '@tuwaio/nova-core';
6
7
  import { ComponentPropsWithoutRef, ComponentType, ReactNode } from 'react';
7
8
  import { ToastContainer, toast, ToastPosition } from 'react-toastify';
8
- import { at as ToastErrorCustomization, aJ as ConnectModalCustomization, u as ConnectedModalCustomization } from './ToastError-Bw3Amqzv.js';
9
- import { N as NovaConnectLabels } from './types-eao2UQcC.js';
9
+ import { T as ToastErrorCustomization, C as ConnectModalCustomization, a as ConnectedModalCustomization } from './index-BkbAcDWt.js';
10
+ import { N as NovaConnectLabels } from './types-DxUn8qmU.js';
10
11
  import { BaseConnector } from '@tuwaio/satellite-core';
11
12
  import { Connector } from '@tuwaio/satellite-react';
12
13
  import '@tuwaio/pulsar-core';
13
- import '@tuwaio/nova-core';
14
14
  import 'framer-motion';
15
15
  import '@radix-ui/react-select';
16
16
 
@@ -37,6 +37,8 @@ type ErrorsProviderCustomization = {
37
37
  };
38
38
  /** Default ToastError customization (only used with default ToastError component) */
39
39
  toastErrorCustomization?: ToastErrorCustomization;
40
+ /** Customization for toast close button */
41
+ toastCloseButton?: Omit<ToastCloseButtonProps, 'closeToast'>;
40
42
  /** Custom class name generators */
41
43
  classNames?: {
42
44
  /** Function to generate container classes */
@@ -286,7 +288,7 @@ interface NovaConnectProviderPropsWithCustomization extends NovaConnectProviderP
286
288
  *
287
289
  * @param props - Provider configuration and customization options
288
290
  */
289
- declare function NovaConnectProvider({ labels, children, appChains, solanaRPCUrls, transactionPool, pulsarAdapter, withImpersonated, withBalance, withChain, customization, }: NovaConnectProviderPropsWithCustomization): react_jsx_runtime.JSX.Element;
291
+ declare function NovaConnectProvider({ labels, children, appChains, solanaRPCUrls, transactionPool, pulsarAdapter, withImpersonated, withBalance, withChain, legal, customization, }: NovaConnectProviderPropsWithCustomization): react_jsx_runtime.JSX.Element;
290
292
  declare namespace NovaConnectProvider {
291
293
  var displayName: string;
292
294
  }
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import {A,v,z,s,C,y,B,r,D}from'./chunk-LXZIVQLW.js';import {d,h as h$1,t,p,g,c}from'./chunk-YO3PXLI4.js';export{g as NovaConnectLabelsContext,c as NovaConnectProviderContext,b as NovaConnectProviderError,o as createLabelsSubset,q as getAvailableChainIds,v as getAvailableSolanaClusters,p as getConnectChainId,t as getFilteredConnectors,r as getGroupedConnectors,n as getLabelWithFallback,s as hasAvailableConnectors,u as hasConnectorsForAdapter,k as hasLabel,m as isDefaultLabels,w as isValidSolanaCluster,a as useGetWalletNameAndAvatar,e as useHasNovaConnectContext,l as useLabelsByCategory,d as useNovaConnect,i as useNovaConnectLabel,h as useNovaConnectLabels,j as useNovaConnectLabelsSubset,f as useNovaConnectOptional,x as useWalletChainsList,y as useWalletNativeBalance}from'./chunk-YO3PXLI4.js';export{k as getAdapterStatus,l as getAllAdaptersStatus,g as getAvailableSolanaClustersAsync,b as getChainsListByConnectorType,a as getChainsListByConnectorTypeAsync,b as getChainsListByConnectorTypeSync,i as getWalletChains,e as isEvmChainList,c as isEvmChainListAsync,e as isEvmChainListSync,f as isSolanaChainList,d as isSolanaChainListAsync,f as isSolanaChainListSync,h as isValidSolanaClusterAsync,j as preloadChainAdapters}from'./chunk-S3IRVZMG.js';import {a}from'./chunk-T6H7HGCM.js';import {h,f}from'./chunk-S3RQJGCL.js';import {waitFor,delay,formatConnectorName,getConnectorTypeFromName,isAddress,impersonatedHelpers,OrbitAdapter,getNetworkData}from'@tuwaio/orbit-core';import {cn,DialogHeader,DialogTitle,DialogClose,CloseIcon,standardButtonClasses,Dialog,DialogContent,ToastCloseButton,deepMerge}from'@tuwaio/nova-core';import {forwardRef,memo,useContext,useMemo,useEffect,useCallback,useRef,useState}from'react';import {toast,Bounce,ToastContainer}from'react-toastify';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {InformationCircleIcon}from'@heroicons/react/24/outline';import {motion}from'framer-motion';var ue=({title:o,rawError:e,onCopyComplete:n,errorType:a,isConnected:t,...f})=>jsx(D,{title:o,rawError:e,onCopyComplete:n,customization:f.customization}),Ce=o=>{let e=h$1();return jsx(ToastContainer,{...o,role:"alert","aria-live":"assertive","aria-label":e.somethingWentWrong})},fe=(o,e)=>{o(e.title,e.rawError,e.errorKey);},ve=o=>{o();},ge=(o,e)=>{o&&process.env.NODE_ENV==="development"&&console.log("Error copied to clipboard:",e.substring(0,100));},be=o=>o,ye=o=>o;function Mo({containerId:o="nova-connect-errors",position:e="top-center",autoClose:n=7e3,draggable:a=false,customization:t}){let f=h$1(),u=h(l=>l.switchNetworkError),x=h(l=>l.activeConnection),B=h(l=>l.connectionError),{ToastError:E=ue,Container:g=Ce}=t?.components??{},{showError:d=fe,dismissError:O=ve,onCopyComplete:H=ge}=t?.handlers??{},{errorTitle:T=be,errorHash:N=ye}=t??{},P=useRef(new Set),R=useRef(null),s=useMemo(()=>{let l=!!B,y=!!u,M=!!x?.isConnected;return {hasWalletError:l,hasSwitchError:y,isConnected:M,hasAnyError:l||y,primaryError:B||u||null,errorType:l?"wallet":y?"switch":null}},[B,u,x?.isConnected]),z=useMemo(()=>{switch(s.errorType){case "wallet":return f.connectionError;case "switch":return f.errorWhenChainSwitching;default:return f.somethingWentWrong}},[s.errorType,f]),m=useMemo(()=>T(z,{errorType:s.errorType}),[T,z,s.errorType]),W=useMemo(()=>s.primaryError?`${s.errorType}-${s.primaryError.substring(0,50)}`:null,[s.primaryError,s.errorType]),C=useMemo(()=>N(W,{primaryError:s.primaryError,errorType:s.errorType}),[N,W,s.primaryError,s.errorType]),D=useCallback(()=>{O(()=>{R.current&&(toast.dismiss(R.current),R.current=null),toast.dismiss({containerId:o});});},[o,O]),F=useCallback((l,y)=>{H(l,y,s.errorType);},[H,s.errorType]),r=useCallback((l,y,M)=>{if(D(),!P.current.has(M))try{let V={containerId:o,toastId:M,onClose:()=>{P.current.delete(M),R.current=null;}},_=t?.toastOptions?.error?.({title:l,rawError:y,errorType:s.errorType,isConnected:s.isConnected}),q={...V,..._};toast.error(jsx(E,{title:l,rawError:y,errorType:s.errorType,isConnected:s.isConnected,onCopyComplete:J=>F(J,y),customization:t?.toastErrorCustomization}),q),P.current.add(M),R.current=M;}catch(V){console.error("Failed to show error toast:",V);}},[D,o,t?.toastOptions?.error,t?.toastErrorCustomization,E,s.errorType,s.isConnected,F]),v=useCallback((l,y,M)=>{d(r,{title:l,rawError:y,errorKey:M,errorType:s.errorType});},[r,d,s.errorType]);useEffect(()=>{let{hasAnyError:l,isConnected:y,primaryError:M}=s;if(y&&!l){D(),P.current.clear();return}if(l&&M&&C){if(y&&s.errorType!=="switch")return;v(m,M,C);}},[s,m,C,v,D]),useEffect(()=>()=>{D(),P.current.clear();},[D]);let b=useMemo(()=>t?.classNames?.container?t.classNames.container({hasErrors:s.hasAnyError,errorType:s.errorType}):"novacon:p-0 novacon:bg-transparent",[t,s.hasAnyError,s.errorType]),p=useMemo(()=>({containerId:o,position:e,closeOnClick:false,icon:false,closeButton:ToastCloseButton,autoClose:n,hideProgressBar:false,newestOnTop:false,pauseOnFocusLoss:false,draggable:a,pauseOnHover:true,theme:"light",transition:Bounce}),[o,e,n,a]),h$2=useMemo(()=>({...p,...t?.containerProps,className:b}),[p,t?.containerProps,b]);return jsx(g,{...h$2})}Mo.displayName="ErrorsProvider";function Eo({labels:o,children:e}){let n=useMemo(()=>o,[o]);if(process.env.NODE_ENV==="development"){(!o||typeof o!="object")&&console.warn("NovaConnectLabelsProvider: labels prop should be an object");let t=["connectWallet","disconnect","connecting","connected","error","success"].filter(f=>!(f in o));t.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${t.join(", ")}`);}return jsx(g.Provider,{value:n,children:e})}Eo.displayName="NovaConnectLabelsProvider";function ze(o,e){if(!o||!Array.isArray(o)||!e)return;let n=o.find(a=>a&&typeof a=="object"&&"name"in a&&typeof a.name=="string"?formatConnectorName(a.name)===e:false);if(n&&typeof n=="object"&&"name"in n&&typeof n.name=="string")return n.name}var Jo=forwardRef(({className:o,children:e,modalData:n,...a},t)=>jsx("div",{ref:t,className:cn("novacon:relative novacon:flex novacon:w-full novacon:flex-col",o),...a,children:e}));Jo.displayName="DefaultModalContainer";var Qo=forwardRef(({className:o,children:e,modalData:n,...a},t)=>jsx("div",{ref:t,className:o,...a,children:jsx(DialogHeader,{children:e})}));Qo.displayName="DefaultModalHeader";var Xo=forwardRef(({className:o,onClick:e,modalData:n,...a},t)=>jsx("button",{ref:t,className:cn("novacon:cursor-pointer novacon:text-[var(--tuwa-text-secondary)] novacon:transition novacon:duration-300 novacon:ease-in-out novacon:active:scale-75 novacon:hover:scale-110",o),type:"button",onClick:e,...a,children:jsx(InformationCircleIcon,{width:20,height:20,className:"novacon:mr-1","aria-hidden":"true"})}));Xo.displayName="DefaultInfoButton";var Yo=forwardRef(({className:o,children:e,modalData:n,...a},t)=>jsx(DialogTitle,{ref:t,className:cn("novacon:flex novacon:items-center",o),...a,children:e}));Yo.displayName="DefaultTitle";var Zo=forwardRef(({className:o,onClick:e,modalData:n,...a},t)=>jsx(DialogClose,{asChild:true,children:jsx("button",{ref:t,type:"button",onClick:e,className:cn("novacon:cursor-pointer novacon:rounded-full novacon:p-1 novacon:text-[var(--tuwa-text-tertiary)] novacon:transition-colors novacon:hover:bg-[var(--tuwa-bg-muted)] novacon:hover:text-[var(--tuwa-text-primary)]",o),...a,children:jsx(CloseIcon,{"aria-hidden":"true"})})}));Zo.displayName="DefaultCloseButton";var oe=forwardRef(({className:o,children:e,modalData:n,...a},t)=>jsx("main",{ref:t,className:cn("novacon:flex novacon:flex-col novacon:gap-4 novacon:p-4",o),id:"connect-modal-content",role:"main",...a,children:e}));oe.displayName="DefaultMainContent";var ee=forwardRef(({className:o,children:e,modalData:n,...a},t)=>jsx("footer",{ref:t,className:cn("novacon:flex novacon:w-full novacon:items-center novacon:justify-between novacon:border-t novacon:border-[var(--tuwa-border-primary)] novacon:p-4",o),role:"contentinfo",...a,children:e}));ee.displayName="DefaultFooter";var te=forwardRef(({className:o,onClick:e,children:n,modalData:a,...t},f)=>jsx("button",{ref:f,type:"button",onClick:e,className:cn(standardButtonClasses,o),...t,children:n}));te.displayName="DefaultBackButton";var ne=forwardRef(({className:o,onClick:e,children:n,disabled:a,loading:t,buttonConfig:f,modalData:u,...x},B)=>jsx("button",{ref:B,type:"button",onClick:e,disabled:a||t,className:cn(standardButtonClasses,o),...x,children:t?"Loading...":n}));ne.displayName="DefaultActionButton";var re=forwardRef(({className:o,children:e,modalData:n,...a},t)=>jsx("span",{ref:t,className:cn("novacon:sr-only",o),...a,children:e}));re.displayName="DefaultActionDescription";var ae=forwardRef(({children:o,className:e,...n},a)=>{let{modalData:t,...f}=n;return jsx("div",{ref:a,className:e,...f,children:o})});ae.displayName="DefaultEmptyState";var No=memo(({appChains:o,solanaRPCUrls:e,withImpersonated:n,customization:a={}})=>{let{isConnectModalOpen:t$1,setIsConnectModalOpen:f$1,setConnectModalContentType:u,setActiveConnector:x,setImpersonatedAddress:B$1,setIsConnected:E,connectModalContentType:g,selectedAdapter:d$1,setSelectedAdapter:O,isConnected:H,activeConnector:T,impersonatedAddress:N}=d(),P=h(c=>c.connectionError),R=h(c=>c.getConnectors),s$1=h(c=>c.connect),z$1=h(c=>c.activeConnection),m=h$1(),W=useContext(f),C$1=useMemo(()=>{if(t$1)return R()},[t$1,R]),D=useMemo(()=>t({connectors:C$1,selectedAdapter:d$1}),[C$1,d$1]),F=useMemo(()=>P?typeof P=="string"?new Error(P):P:null,[P]),r=useMemo(()=>({contentType:g,selectedAdapter:d$1,activeConnector:T,impersonatedAddress:N,isConnected:H,isOpen:t$1,error:F,connectors:C$1,filteredConnectors:D,labels:m}),[g,d$1,T,N,H,t$1,F,C$1,D,m]);useEffect(()=>{t$1&&(u("connectors"),O(void 0),x(void 0),B$1(""),E(false));},[t$1]);let{components:v$1={},classNames:b={},handlers:p$1={},config:h$2={},childComponents:l={}}=a,y$1=v$1.ModalContainer||Jo,M=v$1.ModalHeader||Qo,V=v$1.InfoButton||Xo,_=v$1.Title||Yo,q=v$1.CloseButton||Zo,J=v$1.MainContent||oe,Q=v$1.Footer||ee,so=v$1.BackButton||te,X=v$1.ActionButton||ne,io=v$1.ActionDescription||re,G=v$1.EmptyState||ae,vo=v$1.Dialog||Dialog,lo=v$1.DialogContent||DialogContent,to=v$1.MotionDiv||motion.div,no=useCallback(()=>{switch(g){case "about":return m.aboutWallets;case "getWallet":return m.getWallet;case "connecting":return d$1&&T&&C$1&&ze(C$1[d$1],T)||m.connectingEllipsis;case "impersonate":return m.connectImpersonatedWallet;default:return m.connectWallet}},[g,d$1,T,C$1,m]),Y=useCallback(()=>"connectors",[g]),Z=useCallback(c=>{p$1?.onOpenChange?p$1.onOpenChange(c,r):f$1(c);},[p$1?.onOpenChange,r,f$1]),go=useCallback(()=>{let c=()=>u(Y());p$1?.onBack?p$1.onBack(r,c):c();},[p$1?.onBack,r,u,Y]),bo=useCallback(()=>{p$1?.onInfoClick?p$1.onInfoClick(r):u("about");},[p$1?.onInfoClick,r,u]),j=useCallback(async(c,yo)=>{await s$1({connectorType:c,chainId:p({appChains:o,selectedAdapter:yo,solanaRPCUrls:e})});try{await waitFor(()=>W?.getState().activeConnection?.isConnected),E(!0);let To=setTimeout(()=>f$1(!1),400),ce=setTimeout(()=>E(!1),500);await delay(null,500),clearTimeout(To),clearTimeout(ce);}catch(To){console.error(To);}},[s$1,o,d$1,e]),$=useCallback(async(c,yo)=>{O(c),u("connecting"),await j(yo,c);},[j]),wo=useCallback(c=>{x(formatConnectorName(c.name)),c.adapters.length===1?(O(c.adapters[0]),u(formatConnectorName(c.name)==="impersonatedwallet"?"impersonate":"connecting")):d$1?u(formatConnectorName(c.name)==="impersonatedwallet"?"impersonate":"connecting"):formatConnectorName(c.name)==="impersonatedwallet"?u("impersonate"):u("network");},[d$1]),ie=useCallback(()=>{switch(g){case "network":return jsx(B,{activeConnector:T,connectors:D,onClick:$,customization:l.networkSelections});case "connectors":return C$1?jsxs(Fragment,{children:[jsx(C,{networks:Object.keys(C$1),selectedAdapter:d$1,onSelect:c=>O(c),customization:l.networkTabs}),jsx(y,{isOnlyOneNetwork:Object.keys(C$1).length===1,connectors:D,selectedAdapter:d$1,onClick:wo,setContentType:u,appChains:o,solanaRPCUrls:e,setIsConnected:E,setIsOpen:f$1,withImpersonated:n,customization:l.connectorsSelections})]}):jsx(G,{className:b.emptyConnectors?.({modalData:r}),modalData:r,children:"No connectors available"});case "about":return jsx(s,{customization:l.aboutWallets});case "getWallet":return jsx(z,{customization:l.getWallet});case "connecting":return jsx(v,{selectedAdapter:d$1,connectors:D,activeConnector:T,isConnected:H,customization:l.connecting});case "impersonate":return jsx(A,{selectedAdapter:d$1,impersonatedAddress:N,setImpersonatedAddress:B$1,customization:l.impersonateForm})}},[g,T,D,$,l,C$1,d$1,wo,H,N]),K=useCallback(()=>{switch(g){case "connectors":return {title:m.iDontHaveWallet,onClick:()=>{p$1.onActionClick?.connectors?p$1.onActionClick.connectors(r):u("getWallet");}};case "getWallet":return {title:m.choseWallet,onClick:()=>{p$1.onActionClick?.getWallet?p$1.onActionClick.getWallet(r):window.open(getNetworkData(d$1??Object.keys(C$1)[0])?.links?.choseWallet,"_blank","noopener,noreferrer");}};case "about":return {title:m.learnMore,onClick:()=>{p$1.onActionClick?.about?p$1.onActionClick.about(r):window.open(getNetworkData(d$1??Object.keys(C$1)[0])?.links?.about,"_blank","noopener,noreferrer");}};case "impersonate":return {title:m.connect,onClick:async()=>{if(p$1.onActionClick?.impersonate)await p$1.onActionClick.impersonate(r);else {let c=N.trim();if(P||!c||!isAddress(c)||z$1?.isConnected)return;impersonatedHelpers.setImpersonated(c),u("connecting"),await j(getConnectorTypeFromName(d$1??OrbitAdapter.EVM,T??""),d$1??OrbitAdapter.EVM);}}};case "connecting":return P&&d$1&&T?{title:m.tryAgain,onClick:async()=>{p$1.onActionClick?.connecting?await p$1.onActionClick.connecting(r):await j(getConnectorTypeFromName(d$1,T),d$1);}}:void 0}},[g,m,p$1,r,d$1,C$1,N,P,j,T])(),le=useCallback(()=>{switch(g){case "getWallet":return "Opens external wallet selection page";case "about":return "Opens external documentation";case "impersonate":return "Connects with impersonated wallet address";case "connecting":return "Retries wallet connection";default:return ""}},[g]);return jsx(vo,{open:t$1,onOpenChange:Z,children:jsx(lo,{className:cn("novacon:w-full novacon:sm:max-w-md"),children:jsx(to,{layout:true,transition:{layout:{duration:h$2.animation?.disabled?0:h$2.animation?.layoutDuration??1e-4}},children:jsxs(y$1,{className:b.modalContainer?.({modalData:r}),modalData:r,children:[jsxs(M,{className:b.header?.({modalData:r}),modalData:r,children:[jsxs(_,{className:b.title?.({modalData:r}),modalData:r,children:[g==="connectors"&&jsx(V,{className:b.infoButton?.({modalData:r}),onClick:bo,"aria-label":h$2.ariaLabels?.infoButton?.(r)||`${m.learnMore} ${m.aboutWallets}`,modalData:r}),no()]}),jsx(q,{className:b.closeButton?.({modalData:r}),onClick:()=>Z(false),"aria-label":h$2.ariaLabels?.closeButton?.(r)||m.closeModal,modalData:r})]}),jsx(J,{className:b.mainContent?.({modalData:r}),modalData:r,children:ie()}),jsxs(Q,{className:b.footer?.({modalData:r}),modalData:r,children:[jsx("div",{className:"novacon:flex novacon:items-center novacon:gap-4",children:g!=="connectors"&&jsx(so,{className:b.backButton?.({modalData:r}),onClick:go,"aria-label":h$2.ariaLabels?.backButton?.(r)||`${m.back} to previous step`,modalData:r,children:m.back})}),K&&jsxs("div",{className:"novacon:flex novacon:items-center novacon:gap-3",children:[jsx(X,{className:b.actionButton?.({modalData:r,buttonConfig:K}),onClick:K.onClick,disabled:K.disabled,loading:K.loading,"aria-describedby":"bottom-action-description",modalData:r,buttonConfig:K,children:K.title}),jsx(io,{id:"bottom-action-description",className:b.actionDescription?.({modalData:r}),modalData:r,children:le()})]})]})]})})})})});No.displayName="ConnectModal";var Fe=({labels:o,children:e})=>jsx(Eo,{labels:o,children:e}),Ve=({customization:o})=>jsx(Mo,{customization:o}),Ue=(o,e)=>deepMerge(o,e||{}),Ge=o=>o,je=o=>o,$e=(o,e,n)=>o;function Ke({labels:o,children:e,appChains:n,solanaRPCUrls:a$1,transactionPool:t,pulsarAdapter:f,withImpersonated:u,withBalance:x,withChain:B,customization:E}){let g=h($=>$.activeConnection),d=h($=>$.connectionError),{LabelsProvider:O=Fe,ErrorsProvider:H=Ve}=E?.components??{},{merge:T=Ue,transform:N=Ge}=E?.labels??{},{transform:P=je}=E?.contextValue??{},{providerTree:R=$e}=E?.rendering??{},s=useMemo(()=>T(a,o||{}),[o,T]),[z,m]=useState(false),[W,C]=useState(false),[D,F]=useState(false),[r$1,v]=useState(false),[b,p]=useState("idle"),[h$1,l]=useState("connectors"),[y,M]=useState(void 0),[V,_]=useState(void 0),[q,J]=useState(""),[Q,so]=useState(false),[X,io]=useState("main"),G=useMemo(()=>({isConnected:Q,activeConnection:g,connectionError:d,modalStates:{isConnectModalOpen:z,isConnectedModalOpen:W,isChainsListOpen:D,isChainsListOpenMobile:r$1},contentTypes:{connectModal:h$1,connectedModal:X},statuses:{connectedButton:b}}),[Q,g,d,z,W,D,r$1,h$1,X,b]),vo=useMemo(()=>N(s,G),[s,N,G]),lo=useMemo(()=>P({appChains:n,solanaRPCUrls:a$1,withImpersonated:u,withBalance:x,withChain:B,isConnectModalOpen:z,setIsConnectModalOpen:m,isConnectedModalOpen:W,setIsConnectedModalOpen:C,isChainsListOpen:D,setIsChainsListOpen:F,isChainsListOpenMobile:r$1,setIsChainsListOpenMobile:v,connectedButtonStatus:b,setConnectedButtonStatus:p,connectedModalContentType:X,setConnectedModalContentType:io,connectModalContentType:h$1,setConnectModalContentType:l,selectedAdapter:y,setSelectedAdapter:M,activeConnector:V,setActiveConnector:_,impersonatedAddress:q,setImpersonatedAddress:J,isConnected:Q,setIsConnected:so},G),[n,a$1,u,x,B,z,m,W,C,D,F,r$1,v,b,p,X,io,h$1,l,y,M,V,_,q,J,Q,so,P,G]),to=jsx(H,{customization:E?.errors}),no=jsx(O,{labels:vo,children:e}),Y=n||a$1?jsx(No,{withImpersonated:u,solanaRPCUrls:a$1,appChains:n,customization:E?.modals?.connectModal}):null,Z=n||a$1?jsx(r,{solanaRPCUrls:a$1,appChains:n,transactionPool:t,pulsarAdapter:f,customization:E?.modals?.connectedModal}):null,go=jsxs(c.Provider,{value:lo,children:[to,no,Y,Z]}),bo=jsxs(c.Provider,{value:lo,children:[to,no,Y,Z]}),j=R(bo,{ErrorsProvider:to,LabelsProvider:no,MainContent:go,ConnectModal:Y||jsx(Fragment,{}),ConnectedModal:Z||jsx(Fragment,{})},G);return jsx(Fragment,{children:j})}Ke.displayName="NovaConnectProvider";async function _n(){let{getAllAdaptersStatus:o}=await import('./getChainsListByConnectorType-YZZUYC6D.js');return {hasEvmUtils:await Co(),hasSolanaUtils:await fo(),adaptersStatus:o()}}async function Co(){try{return await import('viem'),await import('@tuwaio/orbit-evm'),!0}catch{return false}}async function fo(){try{return await import('gill'),await import('@tuwaio/orbit-solana'),!0}catch{return false}}async function qn(){try{if(!await Co())return {available:!1,error:"EVM packages (viem, @tuwaio/orbit-evm) not available"};let e=await import('./evm/index.js'),n=await e.getEvmExports();return n.available?{...e,...n}:{available:!1,error:n.error||"Failed to load EVM exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"EVM utilities not available"}}}async function Jn(){try{if(!await fo())return {available:!1,error:"Solana packages (gill, @tuwaio/orbit-solana) not available"};let e=await import('./solana/index.js'),n=await e.getSolanaExports();return n.available?{...e,...n}:{available:!1,error:n.error||"Failed to load Solana exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"Solana utilities not available"}}}async function Qn(){let o={evm:false,solana:false,errors:[]};try{let e=await Co(),n=await fo();if(e||n){let{preloadChainAdapters:a}=await import('./getChainsListByConnectorType-YZZUYC6D.js'),t=[];e&&t.push(OrbitAdapter.EVM),n&&t.push(OrbitAdapter.SOLANA),await a(t),o.evm=e,o.solana=n;}else o.errors.push("No blockchain packages available for initialization");}catch(e){let n=e instanceof Error?e.message:"Unknown initialization error";o.errors.push(n);}return o}async function Xn(o){return o===OrbitAdapter.Starknet||o!==OrbitAdapter.EVM&&o!==OrbitAdapter.SOLANA?false:o===OrbitAdapter.EVM?Co():fo()}export{Mo as ErrorsProvider,Eo as NovaConnectLabelsProvider,Ke as NovaConnectProvider,_n as getBlockchainUtilities,qn as getEvmUtils,Jn as getSolanaUtils,Qn as initializeBlockchainSupport,Xn as isAdapterSupported};
1
+ import {B,w,A,t as t$1,E,z,C,D,s,F}from'./chunk-YXB45D7C.js';import {d,h as h$1,t,p,g,c}from'./chunk-XA3DA6RA.js';export{g as NovaConnectLabelsContext,c as NovaConnectProviderContext,b as NovaConnectProviderError,o as createLabelsSubset,q as getAvailableChainIds,v as getAvailableSolanaClusters,p as getConnectChainId,t as getFilteredConnectors,r as getGroupedConnectors,n as getLabelWithFallback,s as hasAvailableConnectors,u as hasConnectorsForAdapter,k as hasLabel,m as isDefaultLabels,w as isValidSolanaCluster,a as useGetWalletNameAndAvatar,e as useHasNovaConnectContext,l as useLabelsByCategory,d as useNovaConnect,i as useNovaConnectLabel,h as useNovaConnectLabels,j as useNovaConnectLabelsSubset,f as useNovaConnectOptional,x as useWalletChainsList,y as useWalletNativeBalance}from'./chunk-XA3DA6RA.js';export{k as getAdapterStatus,l as getAllAdaptersStatus,g as getAvailableSolanaClustersAsync,b as getChainsListByConnectorType,a as getChainsListByConnectorTypeAsync,b as getChainsListByConnectorTypeSync,i as getWalletChains,e as isEvmChainList,c as isEvmChainListAsync,e as isEvmChainListSync,f as isSolanaChainList,d as isSolanaChainListAsync,f as isSolanaChainListSync,h as isValidSolanaClusterAsync,j as preloadChainAdapters}from'./chunk-S3IRVZMG.js';import {a}from'./chunk-NQ5AECZQ.js';import {h,f}from'./chunk-S3RQJGCL.js';import {waitFor,delay,formatConnectorName,getConnectorTypeFromName,isAddress,impersonatedHelpers,OrbitAdapter,getNetworkData}from'@tuwaio/orbit-core';import {cn,DialogHeader,DialogTitle,DialogClose,CloseIcon,standardButtonClasses,Dialog,DialogContent,ToastCloseButton,deepMerge}from'@tuwaio/nova-core';import {forwardRef,memo,useContext,useMemo,useEffect,useCallback,useRef,useState}from'react';import {toast,Bounce,ToastContainer}from'react-toastify';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {InformationCircleIcon}from'@heroicons/react/24/outline';import {motion}from'framer-motion';var Ct=({title:o,rawError:t,onCopyComplete:n,errorType:a,isConnected:e,...b})=>jsx(F,{title:o,rawError:t,onCopyComplete:n,customization:b.customization}),ft=o=>{let t=h$1();return jsx(ToastContainer,{...o,role:"alert","aria-live":"assertive","aria-label":t.somethingWentWrong})},vt=(o,t)=>{o(t.title,t.rawError,t.errorKey);},gt=o=>{o();},bt=(o,t)=>{o&&process.env.NODE_ENV==="development"&&console.log("Error copied to clipboard:",t.substring(0,100));},yt=o=>o,Tt=o=>o;function Eo({containerId:o="nova-connect-errors",position:t="top-center",autoClose:n=7e3,draggable:a=false,customization:e}){let b=h$1(),f=h(p=>p.switchNetworkError),x=h(p=>p.activeConnection),w=h(p=>p.connectionError),{ToastError:S=Ct,Container:u=ft}=e?.components??{},{showError:c=vt,dismissError:O=gt,onCopyComplete:W=bt}=e?.handlers??{},{errorTitle:y=yt,errorHash:N=Tt}=e??{},T=useRef(new Set),B=useRef(null),s=useMemo(()=>{let p=!!w,g=!!f,P=!!x?.isConnected;return {hasWalletError:p,hasSwitchError:g,isConnected:P,hasAnyError:p||g,primaryError:w||f||null,errorType:p?"wallet":g?"switch":null}},[w,f,x?.isConnected]),U=useMemo(()=>{switch(s.errorType){case "wallet":return b.connectionError;case "switch":return b.errorWhenChainSwitching;default:return b.somethingWentWrong}},[s.errorType,b]),d=useMemo(()=>y(U,{errorType:s.errorType}),[y,U,s.errorType]),G=useMemo(()=>s.primaryError?`${s.errorType}-${s.primaryError.substring(0,50)}`:null,[s.primaryError,s.errorType]),C=useMemo(()=>N(G,{primaryError:s.primaryError,errorType:s.errorType}),[N,G,s.primaryError,s.errorType]),M=useCallback(()=>{O(()=>{B.current&&(toast.dismiss(B.current),B.current=null),toast.dismiss({containerId:o});});},[o,O]),H=useCallback((p,g)=>{W(p,g,s.errorType);},[W,s.errorType]),r=useCallback((p,g,P)=>{if(M(),!T.current.has(P))try{let V={containerId:o,toastId:P,onClose:()=>{T.current.delete(P),B.current=null;}},q=e?.toastOptions?.error?.({title:p,rawError:g,errorType:s.errorType,isConnected:s.isConnected}),J={...V,...q};toast.error(jsx(S,{title:p,rawError:g,errorType:s.errorType,isConnected:s.isConnected,onCopyComplete:Q=>H(Q,g),customization:e?.toastErrorCustomization}),J),T.current.add(P),B.current=P;}catch(V){console.error("Failed to show error toast:",V);}},[M,o,e?.toastOptions?.error,e?.toastErrorCustomization,S,s.errorType,s.isConnected,H]),v=useCallback((p,g,P)=>{c(r,{title:p,rawError:g,errorKey:P,errorType:s.errorType});},[r,c,s.errorType]);useEffect(()=>{let{hasAnyError:p,isConnected:g,primaryError:P}=s;if(g&&!p){M(),T.current.clear();return}if(p&&P&&C){if(g&&s.errorType!=="switch")return;v(d,P,C);}},[s,d,C,v,M]),useEffect(()=>()=>{M(),T.current.clear();},[M]);let D=useMemo(()=>e?.classNames?.container?e.classNames.container({hasErrors:s.hasAnyError,errorType:s.errorType}):"novacon:p-0 novacon:bg-transparent",[e,s.hasAnyError,s.errorType]),m=useMemo(()=>{let p=e?.toastCloseButton;return p?({closeToast:g})=>jsx(ToastCloseButton,{closeToast:g,...p}):ToastCloseButton},[e?.toastCloseButton]),k=useMemo(()=>({containerId:o,position:t,closeOnClick:false,icon:false,closeButton:m,autoClose:n,hideProgressBar:false,newestOnTop:false,pauseOnFocusLoss:false,draggable:a,pauseOnHover:true,theme:"light",transition:Bounce}),[o,t,n,a,m]),E=useMemo(()=>({...k,...e?.containerProps,className:D}),[k,e?.containerProps,D]);return jsx(u,{...E})}Eo.displayName="ErrorsProvider";function No({labels:o,children:t}){let n=useMemo(()=>o,[o]);if(process.env.NODE_ENV==="development"){(!o||typeof o!="object")&&console.warn("NovaConnectLabelsProvider: labels prop should be an object");let e=["connectWallet","disconnect","connecting","connected","error","success"].filter(b=>!(b in o));e.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${e.join(", ")}`);}return jsx(g.Provider,{value:n,children:t})}No.displayName="NovaConnectLabelsProvider";function Wt(o,t){if(!o||!Array.isArray(o)||!t)return;let n=o.find(a=>a&&typeof a=="object"&&"name"in a&&typeof a.name=="string"?formatConnectorName(a.name)===t:false);if(n&&typeof n=="object"&&"name"in n&&typeof n.name=="string")return n.name}var Xo=forwardRef(({className:o,children:t,modalData:n,...a},e)=>jsx("div",{ref:e,className:cn("novacon:relative novacon:flex novacon:w-full novacon:flex-col",o),...a,children:t}));Xo.displayName="DefaultModalContainer";var Yo=forwardRef(({className:o,children:t,modalData:n,...a},e)=>jsx("div",{ref:e,...a,children:jsx(DialogHeader,{className:o,children:t})}));Yo.displayName="DefaultModalHeader";var Zo=forwardRef(({className:o,onClick:t,modalData:n,...a},e)=>jsx("button",{ref:e,className:cn("novacon:cursor-pointer novacon:text-[var(--tuwa-text-secondary)] novacon:transition novacon:duration-300 novacon:ease-in-out novacon:active:scale-75 novacon:hover:scale-110 novacon:mr-1",o),type:"button",onClick:t,...a,children:jsx(InformationCircleIcon,{width:20,height:20,"aria-hidden":"true"})}));Zo.displayName="DefaultInfoButton";var ot=forwardRef(({className:o,children:t,modalData:n,...a},e)=>jsx(DialogTitle,{ref:e,className:cn("novacon:flex novacon:items-center",o),...a,children:t}));ot.displayName="DefaultTitle";var tt=forwardRef(({className:o,onClick:t,modalData:n,...a},e)=>jsx(DialogClose,{asChild:true,children:jsx("button",{ref:e,type:"button",onClick:t,className:cn("novacon:cursor-pointer novacon:rounded-full novacon:p-1 novacon:text-[var(--tuwa-text-tertiary)] novacon:transition-colors novacon:hover:bg-[var(--tuwa-bg-muted)] novacon:hover:text-[var(--tuwa-text-primary)]",o),...a,children:jsx(CloseIcon,{"aria-hidden":"true"})})}));tt.displayName="DefaultCloseButton";var et=forwardRef(({className:o,children:t,modalData:n,...a},e)=>jsx("main",{ref:e,className:cn("novacon:flex novacon:flex-col novacon:gap-4 novacon:p-4",o),id:"connect-modal-content",role:"main",...a,children:t}));et.displayName="DefaultMainContent";var nt=forwardRef(({className:o,children:t,modalData:n,...a},e)=>jsx("footer",{ref:e,className:cn("novacon:flex novacon:w-full novacon:items-center novacon:justify-between novacon:border-t novacon:border-[var(--tuwa-border-primary)] novacon:p-4",o),role:"contentinfo",...a,children:t}));nt.displayName="DefaultFooter";var rt=forwardRef(({className:o,onClick:t,children:n,modalData:a,...e},b)=>jsx("button",{ref:b,type:"button",onClick:t,className:cn(standardButtonClasses,o),...e,children:n}));rt.displayName="DefaultBackButton";var at=forwardRef(({className:o,onClick:t,children:n,disabled:a,loading:e,buttonConfig:b,modalData:f,...x},w)=>jsx("button",{ref:w,type:"button",onClick:t,disabled:a||e,className:cn(standardButtonClasses,o),...x,children:e?"Loading...":n}));at.displayName="DefaultActionButton";var st=forwardRef(({className:o,children:t,modalData:n,...a},e)=>jsx("span",{ref:e,className:cn("novacon:sr-only",o),...a,children:t}));st.displayName="DefaultActionDescription";var it=forwardRef(({children:o,className:t,...n},a)=>{let{modalData:e,...b}=n;return jsx("div",{ref:a,className:t,...b,children:o})});it.displayName="DefaultEmptyState";var ho=memo(({appChains:o,solanaRPCUrls:t$2,withImpersonated:n,customization:a={}})=>{let{isConnectModalOpen:e,setIsConnectModalOpen:b,setConnectModalContentType:f$1,setActiveConnector:x,setImpersonatedAddress:w$1,setIsConnected:S,connectModalContentType:u,selectedAdapter:c,setSelectedAdapter:O,isConnected:W,activeConnector:y,impersonatedAddress:N}=d(),T=h(l=>l.connectionError),B$1=h(l=>l.getConnectors),s=h(l=>l.connect),U=h(l=>l.activeConnection),d$1=h$1(),G=useContext(f),C$1=useMemo(()=>{if(e)return B$1()},[e,B$1]),M=useMemo(()=>t({connectors:C$1,selectedAdapter:c}),[C$1,c]),H=useMemo(()=>T?typeof T=="string"?new Error(T):T:null,[T]),r=useMemo(()=>({contentType:u,selectedAdapter:c,activeConnector:y,impersonatedAddress:N,isConnected:W,isOpen:e,error:H,connectors:C$1,filteredConnectors:M,labels:d$1}),[u,c,y,N,W,e,H,C$1,M,d$1]);useEffect(()=>{e&&(f$1("connectors"),O(void 0),x(void 0),w$1(""),S(false));},[e]);let{components:v={},classNames:D$1={},handlers:m={},config:k={},childComponents:E$1={}}=a,p$1=v.ModalContainer||Xo,g=v.ModalHeader||Yo,P=v.InfoButton||Zo,V=v.Title||ot,q=v.CloseButton||tt,J=v.MainContent||et,Q=v.Footer||nt,X=v.BackButton||rt,lo=v.ActionButton||at,Y=v.ActionDescription||st,co=v.EmptyState||it,j=v.Dialog||Dialog,bo=v.DialogContent||DialogContent,mo=v.MotionDiv||motion.div,no=useCallback(()=>{switch(u){case "about":return d$1.aboutWallets;case "getWallet":return d$1.getWallet;case "connecting":return c&&y&&C$1&&Wt(C$1[c],y)||d$1.connectingEllipsis;case "impersonate":return d$1.connectImpersonatedWallet;default:return d$1.connectWallet}},[u,c,y,C$1,d$1]),Z=useCallback(()=>"connectors",[u]),oo=useCallback(l=>{m?.onOpenChange?m.onOpenChange(l,r):b(l);},[m?.onOpenChange,r,b]),ro=useCallback(()=>{let l=()=>f$1(Z());m?.onBack?m.onBack(r,l):l();},[m?.onBack,r,f$1,Z]),yo=useCallback(()=>{m?.onInfoClick?m.onInfoClick(r):f$1("about");},[m?.onInfoClick,r,f$1]),$=useCallback(async(l,To)=>{await s({connectorType:l,chainId:p({appChains:o,selectedAdapter:To,solanaRPCUrls:t$2})});try{await waitFor(()=>G?.getState().activeConnection?.isConnected),S(!0);let Do=setTimeout(()=>b(!1),400),mt=setTimeout(()=>S(!1),500);await delay(null,500),clearTimeout(Do),clearTimeout(mt);}catch(Do){console.error(Do);}},[s,o,c,t$2]),po=useCallback(async(l,To)=>{O(l),f$1("connecting"),await $(To,l);},[$]),K=useCallback(l=>{x(formatConnectorName(l.name)),l.adapters.length===1?(O(l.adapters[0]),f$1(formatConnectorName(l.name)==="impersonatedwallet"?"impersonate":"connecting")):c?f$1(formatConnectorName(l.name)==="impersonatedwallet"?"impersonate":"connecting"):formatConnectorName(l.name)==="impersonatedwallet"?f$1("impersonate"):f$1("network");},[c]),ct=useCallback(()=>{switch(u){case "network":return jsx(D,{activeConnector:y,connectors:M,onClick:po,customization:E$1.networkSelections});case "connectors":return C$1?jsxs(Fragment,{children:[jsx(E,{networks:Object.keys(C$1),selectedAdapter:c,onSelect:l=>O(l),customization:E$1.networkTabs}),jsx(z,{isOnlyOneNetwork:Object.keys(C$1).length===1,connectors:M,selectedAdapter:c,onClick:K,setContentType:f$1,appChains:o,solanaRPCUrls:t$2,setIsConnected:S,setIsOpen:b,withImpersonated:n,customization:E$1.connectorsSelections}),jsx(C,{customization:E$1.legalDisclaimer})]}):jsx(co,{className:D$1.emptyConnectors?.({modalData:r}),modalData:r,children:"No connectors available"});case "about":return jsx(t$1,{customization:E$1.aboutWallets});case "getWallet":return jsx(A,{customization:E$1.getWallet});case "connecting":return jsx(w,{selectedAdapter:c,connectors:M,activeConnector:y,isConnected:W,customization:E$1.connecting});case "impersonate":return jsx(B,{selectedAdapter:c,impersonatedAddress:N,setImpersonatedAddress:w$1,customization:E$1.impersonateForm})}},[u,y,M,po,E$1,C$1,c,K,W,N]),_=useCallback(()=>{switch(u){case "connectors":return {title:d$1.iDontHaveWallet,onClick:()=>{m.onActionClick?.connectors?m.onActionClick.connectors(r):f$1("getWallet");}};case "getWallet":return {title:d$1.choseWallet,onClick:()=>{m.onActionClick?.getWallet?m.onActionClick.getWallet(r):window.open(getNetworkData(c??Object.keys(C$1)[0])?.links?.choseWallet,"_blank","noopener,noreferrer");}};case "about":return {title:d$1.learnMore,onClick:()=>{m.onActionClick?.about?m.onActionClick.about(r):window.open(getNetworkData(c??Object.keys(C$1)[0])?.links?.about,"_blank","noopener,noreferrer");}};case "impersonate":return {title:d$1.connect,onClick:async()=>{if(m.onActionClick?.impersonate)await m.onActionClick.impersonate(r);else {let l=N.trim();if(T||!l||!isAddress(l)||U?.isConnected)return;impersonatedHelpers.setImpersonated(l),f$1("connecting"),await $(getConnectorTypeFromName(c??OrbitAdapter.EVM,y??""),c??OrbitAdapter.EVM);}}};case "connecting":return T&&c&&y?{title:d$1.tryAgain,onClick:async()=>{m.onActionClick?.connecting?await m.onActionClick.connecting(r):await $(getConnectorTypeFromName(c,y),c);}}:void 0}},[u,d$1,m,r,c,C$1,N,T,$,y])(),dt=useCallback(()=>{switch(u){case "getWallet":return "Opens external wallet selection page";case "about":return "Opens external documentation";case "impersonate":return "Connects with impersonated wallet address";case "connecting":return "Retries wallet connection";default:return ""}},[u]);return jsx(j,{open:e,onOpenChange:oo,children:jsx(bo,{className:cn("novacon:w-full novacon:sm:max-w-md"),children:jsx(mo,{layout:true,transition:{layout:{duration:k.animation?.disabled?0:k.animation?.layoutDuration??1e-4}},children:jsxs(p$1,{className:D$1.modalContainer?.({modalData:r}),modalData:r,children:[jsxs(g,{className:D$1.header?.({modalData:r}),modalData:r,children:[jsxs(V,{className:D$1.title?.({modalData:r}),modalData:r,children:[u==="connectors"&&jsx(P,{className:D$1.infoButton?.({modalData:r}),onClick:yo,"aria-label":k.ariaLabels?.infoButton?.(r)||`${d$1.learnMore} ${d$1.aboutWallets}`,modalData:r}),no()]}),jsx(q,{className:D$1.closeButton?.({modalData:r}),onClick:()=>oo(false),"aria-label":k.ariaLabels?.closeButton?.(r)||d$1.closeModal,modalData:r})]}),jsx(J,{className:D$1.mainContent?.({modalData:r}),modalData:r,children:ct()}),jsxs(Q,{className:D$1.footer?.({modalData:r}),modalData:r,children:[jsx("div",{className:"novacon:flex novacon:items-center novacon:gap-4",children:u!=="connectors"&&jsx(X,{className:D$1.backButton?.({modalData:r}),onClick:ro,"aria-label":k.ariaLabels?.backButton?.(r)||`${d$1.back} to previous step`,modalData:r,children:d$1.back})}),_&&jsxs("div",{className:"novacon:flex novacon:items-center novacon:gap-3",children:[jsx(lo,{className:D$1.actionButton?.({modalData:r,buttonConfig:_}),onClick:_.onClick,disabled:_.disabled,loading:_.loading,"aria-describedby":"bottom-action-description",modalData:r,buttonConfig:_,children:_.title}),jsx(Y,{id:"bottom-action-description",className:D$1.actionDescription?.({modalData:r}),modalData:r,children:dt()})]})]})]})})})})});ho.displayName="ConnectModal";var Vt=({labels:o,children:t})=>jsx(No,{labels:o,children:t}),Ut=({customization:o})=>jsx(Eo,{customization:o}),Gt=(o,t)=>deepMerge(o,t||{}),jt=o=>o,$t=o=>o,Kt=(o,t,n)=>o;function _t({labels:o,children:t,appChains:n,solanaRPCUrls:a$1,transactionPool:e,pulsarAdapter:b,withImpersonated:f,withBalance:x,withChain:w,legal:S,customization:u}){let c$1=h(K=>K.activeConnection),O=h(K=>K.connectionError),{LabelsProvider:W=Vt,ErrorsProvider:y=Ut}=u?.components??{},{merge:N=Gt,transform:T=jt}=u?.labels??{},{transform:B=$t}=u?.contextValue??{},{providerTree:s$1=Kt}=u?.rendering??{},U=useMemo(()=>N(a,o||{}),[o,N]),[d,G]=useState(false),[C,M]=useState(false),[H,r]=useState(false),[v,D]=useState(false),[m,k]=useState("idle"),[E,p]=useState("connectors"),[g,P]=useState(void 0),[V,q]=useState(void 0),[J,Q]=useState(""),[X,lo]=useState(false),[Y,co]=useState("main"),j=useMemo(()=>({isConnected:X,activeConnection:c$1,connectionError:O,modalStates:{isConnectModalOpen:d,isConnectedModalOpen:C,isChainsListOpen:H,isChainsListOpenMobile:v},contentTypes:{connectModal:E,connectedModal:Y},statuses:{connectedButton:m}}),[X,c$1,O,d,C,H,v,E,Y,m]),bo=useMemo(()=>T(U,j),[U,T,j]),mo=useMemo(()=>B({appChains:n,solanaRPCUrls:a$1,withImpersonated:f,withBalance:x,withChain:w,isConnectModalOpen:d,setIsConnectModalOpen:G,isConnectedModalOpen:C,setIsConnectedModalOpen:M,isChainsListOpen:H,setIsChainsListOpen:r,isChainsListOpenMobile:v,setIsChainsListOpenMobile:D,connectedButtonStatus:m,setConnectedButtonStatus:k,connectedModalContentType:Y,setConnectedModalContentType:co,connectModalContentType:E,setConnectModalContentType:p,selectedAdapter:g,setSelectedAdapter:P,activeConnector:V,setActiveConnector:q,impersonatedAddress:J,setImpersonatedAddress:Q,isConnected:X,setIsConnected:lo,legal:S},j),[n,a$1,f,x,w,d,G,C,M,H,r,v,D,m,k,Y,co,E,p,g,P,V,q,J,Q,X,lo,S,B,j]),no=jsx(y,{customization:u?.errors}),Z=jsx(W,{labels:bo,children:t}),oo=n||a$1?jsx(ho,{withImpersonated:f,solanaRPCUrls:a$1,appChains:n,customization:u?.modals?.connectModal}):null,ro=n||a$1?jsx(s,{solanaRPCUrls:a$1,appChains:n,transactionPool:e,pulsarAdapter:b,customization:u?.modals?.connectedModal}):null,yo=jsxs(c.Provider,{value:mo,children:[no,Z,oo,ro]}),$=jsxs(c.Provider,{value:mo,children:[no,Z,oo,ro]}),po=s$1($,{ErrorsProvider:no,LabelsProvider:Z,MainContent:yo,ConnectModal:oo||jsx(Fragment,{}),ConnectedModal:ro||jsx(Fragment,{})},j);return jsx(Fragment,{children:po})}_t.displayName="NovaConnectProvider";async function Xn(){let{getAllAdaptersStatus:o}=await import('./getChainsListByConnectorType-YZZUYC6D.js');return {hasEvmUtils:await vo(),hasSolanaUtils:await go(),adaptersStatus:o()}}async function vo(){try{return await import('viem'),await import('@tuwaio/orbit-evm'),!0}catch{return false}}async function go(){try{return await import('gill'),await import('@tuwaio/orbit-solana'),!0}catch{return false}}async function Yn(){try{if(!await vo())return {available:!1,error:"EVM packages (viem, @tuwaio/orbit-evm) not available"};let t=await import('./evm/index.js'),n=await t.getEvmExports();return n.available?{...t,...n}:{available:!1,error:n.error||"Failed to load EVM exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"EVM utilities not available"}}}async function Zn(){try{if(!await go())return {available:!1,error:"Solana packages (gill, @tuwaio/orbit-solana) not available"};let t=await import('./solana/index.js'),n=await t.getSolanaExports();return n.available?{...t,...n}:{available:!1,error:n.error||"Failed to load Solana exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"Solana utilities not available"}}}async function or(){let o={evm:false,solana:false,errors:[]};try{let t=await vo(),n=await go();if(t||n){let{preloadChainAdapters:a}=await import('./getChainsListByConnectorType-YZZUYC6D.js'),e=[];t&&e.push(OrbitAdapter.EVM),n&&e.push(OrbitAdapter.SOLANA),await a(e),o.evm=t,o.solana=n;}else o.errors.push("No blockchain packages available for initialization");}catch(t){let n=t instanceof Error?t.message:"Unknown initialization error";o.errors.push(n);}return o}async function tr(o){return o===OrbitAdapter.Starknet||o!==OrbitAdapter.EVM&&o!==OrbitAdapter.SOLANA?false:o===OrbitAdapter.EVM?vo():go()}export{Eo as ErrorsProvider,No as NovaConnectLabelsProvider,_t as NovaConnectProvider,Xn as getBlockchainUtilities,Yn as getEvmUtils,Zn as getSolanaUtils,or as initializeBlockchainSupport,tr as isAdapterSupported};
@@ -99,6 +99,10 @@ type NovaConnectLabels = {
99
99
  impersonateAddressEmpty: string;
100
100
  impersonateAddressNotCorrect: string;
101
101
  impersonateAddressConnected: string;
102
+ legalIntro: string;
103
+ legalTerms: string;
104
+ legalPrivacy: string;
105
+ legalAnd: string;
102
106
  };
103
107
 
104
108
  export type { NovaConnectLabels as N };
@@ -99,6 +99,10 @@ type NovaConnectLabels = {
99
99
  impersonateAddressEmpty: string;
100
100
  impersonateAddressNotCorrect: string;
101
101
  impersonateAddressConnected: string;
102
+ legalIntro: string;
103
+ legalTerms: string;
104
+ legalPrivacy: string;
105
+ legalAnd: string;
102
106
  };
103
107
 
104
108
  export type { NovaConnectLabels as N };