@tuwaio/nova-connect 0.3.0 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- 'use strict';var chunkPSJ67NHK_cjs=require('./chunk-PSJ67NHK.cjs'),chunkPXKZLOYO_cjs=require('./chunk-PXKZLOYO.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');var Oo=({title:o,rawError:e,onCopyComplete:r,errorType:s,isConnected:n,...d})=>jsxRuntime.jsx(chunkPSJ67NHK_cjs.H,{title:o,rawError:e,onCopyComplete:r,customization:d.customization}),Ro=o=>{let e=chunkPXKZLOYO_cjs.h();return jsxRuntime.jsx(reactToastify.ToastContainer,{...o,role:"alert","aria-live":"assertive","aria-label":e.somethingWentWrong})},Bo=(o,e)=>{o(e.title,e.rawError,e.errorKey);},Ao=o=>{o();},zo=(o,e)=>{if(o&&process.env.NODE_ENV==="development"){let r=typeof e=="string"?e:e.message;console.log("Error copied to clipboard:",r.substring(0,100));}},ko=o=>o,Ho=o=>o;function so({containerId:o="nova-connect-errors",position:e="top-center",autoClose:r=7e3,draggable:s=false,customization:n}){let d=chunkPXKZLOYO_cjs.h(),A=chunk2SFIZVDC_cjs.h(a=>a.switchNetworkError),F=chunk2SFIZVDC_cjs.h(a=>a.activeConnection),z=chunk2SFIZVDC_cjs.h(a=>a.connectionError),{ToastError:k=Oo,Container:G=Ro}=n?.components??{},{showError:H=Bo,dismissError:c=Ao,onCopyComplete:M=zo}=n?.handlers??{},{errorTitle:V=ko,errorHash:q=Ho}=n??{},f=react.useRef(new Set),C=react.useRef(null),y=!!z,S=!!A,g=!!F?.isConnected,E=y||S,m=z||A||null,x=y?"wallet":S?"switch":null,t={hasWalletError:y,hasSwitchError:S,isConnected:g,hasAnyError:E,primaryError:m,errorType:x},O=d.somethingWentWrong;switch(t.errorType){case "wallet":O=d.connectionError;break;case "switch":O=d.errorWhenChainSwitching;break}let h=V(O,{errorType:t.errorType}),$=t.primaryError?`${t.errorType}-${t.primaryError.message.substring(0,50)}`:null,P=q($,{primaryError:t.primaryError,errorType:t.errorType}),v=react.useCallback(()=>{c(()=>{C.current&&(reactToastify.toast.dismiss(C.current),C.current=null),reactToastify.toast.dismiss({containerId:o});});},[o,c]),w=react.useCallback((a,i)=>{M(a,i,t.errorType);},[M,t.errorType]),U=react.useCallback((a,i,p)=>{if(v(),!f.current.has(p))try{let T={containerId:o,toastId:p,onClose:()=>{f.current.delete(p),C.current=null;}},Q=n?.toastOptions?.error?.({title:a,rawError:i,errorType:t.errorType,isConnected:t.isConnected}),R={...T,...Q};reactToastify.toast.error(jsxRuntime.jsx(k,{title:a,rawError:i,errorType:t.errorType,isConnected:t.isConnected,onCopyComplete:X=>w(X,i),customization:n?.toastErrorCustomization}),R),f.current.add(p),C.current=p;}catch(T){console.error("Failed to show error toast:",T);}},[v,o,n?.toastOptions?.error,n?.toastErrorCustomization,k,t.errorType,t.isConnected,w]),N=react.useCallback((a,i,p)=>{H(U,{title:a,rawError:i,errorKey:p,errorType:t.errorType});},[U,H,t.errorType]);react.useEffect(()=>{if(g&&!E){v(),f.current.clear();return}if(E&&m&&P){if(g&&x!=="switch")return;N(h,m,P);}},[E,g,m,x,h,P,N,v]),react.useEffect(()=>()=>{v(),f.current.clear();},[v]);let _=n?.classNames?.container?n.classNames.container({hasErrors:t.hasAnyError,errorType:t.errorType}):"novacon:p-0 novacon:bg-transparent",j=react.useMemo(()=>{let a=n?.toastCloseButton;return a?({closeToast:i})=>jsxRuntime.jsx(novaCore.ToastCloseButton,{closeToast:i,...a}):novaCore.ToastCloseButton},[n?.toastCloseButton]),J={...{containerId:o,position:e,closeOnClick:false,icon:false,closeButton:j,autoClose:r,hideProgressBar:false,newestOnTop:false,pauseOnFocusLoss:false,draggable:s,pauseOnHover:true,theme:"light",transition:reactToastify.Bounce},...n?.containerProps,className:_};return jsxRuntime.jsx(G,{...J})}so.displayName="ErrorsProvider";function io({labels:o,children:e}){let r=react.useMemo(()=>o,[o]);if(process.env.NODE_ENV==="development"){(!o||typeof o!="object")&&console.warn("NovaConnectLabelsProvider: labels prop should be an object");let n=["connectWallet","disconnect","connecting","connected","error","success"].filter(d=>!(d in o));n.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${n.join(", ")}`);}return jsxRuntime.jsx(chunkPXKZLOYO_cjs.g.Provider,{value:r,children:e})}io.displayName="NovaConnectLabelsProvider";var Io=({labels:o,children:e})=>jsxRuntime.jsx(io,{labels:o,children:e}),Do=({customization:o})=>jsxRuntime.jsx(so,{customization:o}),Ko=(o,e)=>novaCore.deepMerge(o,e||{}),Fo=o=>o,Go=o=>o,qo=(o,e,r)=>o;function $o({labels:o,children:e,appChains:r,solanaRPCUrls:s,transactionPool:n,pulsarAdapter:d,withImpersonated:A,withBalance:F,withChain:z,popularConnectors:k,customConnectorGroups:G,legal:H,customization:c}){let M=chunk2SFIZVDC_cjs.h(ro=>ro.activeConnection),V=chunk2SFIZVDC_cjs.h(ro=>ro.connectionError),{LabelsProvider:q=Io,ErrorsProvider:f=Do}=c?.components??{},{merge:C=Ko,transform:y=Fo}=c?.labels??{},{transform:S=Go}=c?.contextValue??{},{providerTree:g=qo}=c?.rendering??{},E=react.useMemo(()=>C(chunkMGBN4EIT_cjs.a,o||{}),[o,C]),[m,x]=react.useState(false),[t,O]=react.useState(false),[h,$]=react.useState(false),[P,v]=react.useState(false),[w,U]=react.useState("idle"),[N,_]=react.useState("connectors"),[j,po]=react.useState(void 0),[J,a]=react.useState(void 0),[i,p]=react.useState(""),[T,Q]=react.useState(false),[R,X]=react.useState("main"),go={appChains:r,solanaRPCUrls:s,withImpersonated:A,popularConnectors:k,customConnectorGroups:G,withBalance:F,withChain:z,isConnectModalOpen:m,setIsConnectModalOpen:x,isConnectedModalOpen:t,setIsConnectedModalOpen:O,isChainsListOpen:h,setIsChainsListOpen:$,isChainsListOpenMobile:P,setIsChainsListOpenMobile:v,connectedButtonStatus:w,setConnectedButtonStatus:U,connectedModalContentType:R,setConnectedModalContentType:X,connectModalContentType:N,setConnectModalContentType:_,selectedAdapter:j,setSelectedAdapter:po,activeConnector:J,setActiveConnector:a,impersonatedAddress:i,setImpersonatedAddress:p,isConnected:T,setIsConnected:Q,legal:H},W=react.useMemo(()=>({isConnected:T,activeConnection:M,connectionError:V,modalStates:{isConnectModalOpen:m,isConnectedModalOpen:t,isChainsListOpen:h,isChainsListOpenMobile:P},contentTypes:{connectModal:N,connectedModal:R},statuses:{connectedButton:w}}),[T,M,V,m,t,h,P,N,R,w]),ho=react.useMemo(()=>y(E,W),[E,y,W]),uo=S(go,W),Y=jsxRuntime.jsx(f,{customization:c?.errors}),Z=jsxRuntime.jsx(q,{labels:ho,children:e}),oo=r||s?jsxRuntime.jsx(chunkPSJ67NHK_cjs.G,{solanaRPCUrls:s,appChains:r,customization:c?.modals?.connectModal}):null,eo=r||s?jsxRuntime.jsx(chunkPSJ67NHK_cjs.t,{solanaRPCUrls:s,appChains:r,transactionPool:n,pulsarAdapter:d,customization:c?.modals?.connectedModal}):null,wo=jsxRuntime.jsxs(chunkPXKZLOYO_cjs.c.Provider,{value:uo,children:[Y,Z,oo,eo]}),No=jsxRuntime.jsxs(chunkPXKZLOYO_cjs.c.Provider,{value:uo,children:[Y,Z,oo,eo]}),Lo=g(No,{ErrorsProvider:Y,LabelsProvider:Z,MainContent:wo,ConnectModal:oo||jsxRuntime.jsx(jsxRuntime.Fragment,{}),ConnectedModal:eo||jsxRuntime.jsx(jsxRuntime.Fragment,{})},W);return jsxRuntime.jsx(jsxRuntime.Fragment,{children:Lo})}$o.displayName="NovaConnectProvider";async function Pr(){let{getAllAdaptersStatus:o}=await import('./getChainsListByConnectorType-QCNOPM6I.cjs');return {hasEvmUtils:await D(),hasSolanaUtils:await K(),adaptersStatus:o()}}async function D(){try{return await import('viem'),await import('@tuwaio/orbit-evm'),!0}catch{return false}}async function K(){try{return await import('gill'),await import('@tuwaio/orbit-solana'),!0}catch{return false}}async function Tr(){try{if(!await D())return {available:!1,error:"EVM packages (viem, @tuwaio/orbit-evm) not available"};let e=await import('./evm/index.cjs'),r=await e.getEvmExports();return r.available?{...e,...r}:{available:!1,error:r.error||"Failed to load EVM exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"EVM utilities not available"}}}async function br(){try{if(!await K())return {available:!1,error:"Solana packages (gill, @tuwaio/orbit-solana) not available"};let e=await import('./solana/index.cjs'),r=await e.getSolanaExports();return r.available?{...e,...r}:{available:!1,error:r.error||"Failed to load Solana exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"Solana utilities not available"}}}async function yr(){let o={evm:false,solana:false,errors:[]};try{let e=await D(),r=await K();if(e||r){let{preloadChainAdapters:s}=await import('./getChainsListByConnectorType-QCNOPM6I.cjs'),n=[];e&&n.push(orbitCore.OrbitAdapter.EVM),r&&n.push(orbitCore.OrbitAdapter.SOLANA),await s(n),o.evm=e,o.solana=r;}else o.errors.push("No blockchain packages available for initialization");}catch(e){let r=e instanceof Error?e.message:"Unknown initialization error";o.errors.push(r);}return o}async function gr(o){return o===orbitCore.OrbitAdapter.Starknet||o!==orbitCore.OrbitAdapter.EVM&&o!==orbitCore.OrbitAdapter.SOLANA?false:o===orbitCore.OrbitAdapter.EVM?D():K()}Object.defineProperty(exports,"NovaConnectLabelsContext",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.g}});Object.defineProperty(exports,"NovaConnectProviderContext",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.c}});Object.defineProperty(exports,"NovaConnectProviderError",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.b}});Object.defineProperty(exports,"createLabelsSubset",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.o}});Object.defineProperty(exports,"getAvailableChainIds",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.q}});Object.defineProperty(exports,"getAvailableSolanaClusters",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.v}});Object.defineProperty(exports,"getConnectChainId",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.p}});Object.defineProperty(exports,"getFilteredConnectors",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.t}});Object.defineProperty(exports,"getGroupedConnectors",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.r}});Object.defineProperty(exports,"getLabelWithFallback",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.n}});Object.defineProperty(exports,"hasAvailableConnectors",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.s}});Object.defineProperty(exports,"hasConnectorsForAdapter",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.u}});Object.defineProperty(exports,"hasLabel",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.k}});Object.defineProperty(exports,"isDefaultLabels",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.m}});Object.defineProperty(exports,"isValidSolanaCluster",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.w}});Object.defineProperty(exports,"useGetWalletNameAndAvatar",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.a}});Object.defineProperty(exports,"useHasNovaConnectContext",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.e}});Object.defineProperty(exports,"useLabelsByCategory",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.l}});Object.defineProperty(exports,"useNovaConnect",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.d}});Object.defineProperty(exports,"useNovaConnectLabel",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.i}});Object.defineProperty(exports,"useNovaConnectLabels",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.h}});Object.defineProperty(exports,"useNovaConnectLabelsSubset",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.j}});Object.defineProperty(exports,"useNovaConnectOptional",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.f}});Object.defineProperty(exports,"useWalletChainsList",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.x}});Object.defineProperty(exports,"useWalletNativeBalance",{enumerable:true,get:function(){return chunkPXKZLOYO_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=so;exports.NovaConnectLabelsProvider=io;exports.NovaConnectProvider=$o;exports.getBlockchainUtilities=Pr;exports.getEvmUtils=Tr;exports.getSolanaUtils=br;exports.initializeBlockchainSupport=yr;exports.isAdapterSupported=gr;
1
+ 'use strict';var chunk7CLA2EHI_cjs=require('./chunk-7CLA2EHI.cjs'),chunkPXKZLOYO_cjs=require('./chunk-PXKZLOYO.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');var Oo=({title:o,rawError:e,onCopyComplete:r,errorType:s,isConnected:n,...d})=>jsxRuntime.jsx(chunk7CLA2EHI_cjs.H,{title:o,rawError:e,onCopyComplete:r,customization:d.customization}),Ro=o=>{let e=chunkPXKZLOYO_cjs.h();return jsxRuntime.jsx(reactToastify.ToastContainer,{...o,role:"alert","aria-live":"assertive","aria-label":e.somethingWentWrong})},Bo=(o,e)=>{o(e.title,e.rawError,e.errorKey);},Ao=o=>{o();},zo=(o,e)=>{if(o&&process.env.NODE_ENV==="development"){let r=typeof e=="string"?e:e.message;console.log("Error copied to clipboard:",r.substring(0,100));}},ko=o=>o,Ho=o=>o;function so({containerId:o="nova-connect-errors",position:e="top-center",autoClose:r=7e3,draggable:s=false,customization:n}){let d=chunkPXKZLOYO_cjs.h(),A=chunk2SFIZVDC_cjs.h(a=>a.switchNetworkError),F=chunk2SFIZVDC_cjs.h(a=>a.activeConnection),z=chunk2SFIZVDC_cjs.h(a=>a.connectionError),{ToastError:k=Oo,Container:G=Ro}=n?.components??{},{showError:H=Bo,dismissError:c=Ao,onCopyComplete:M=zo}=n?.handlers??{},{errorTitle:V=ko,errorHash:q=Ho}=n??{},f=react.useRef(new Set),C=react.useRef(null),y=!!z,S=!!A,g=!!F?.isConnected,E=y||S,m=z||A||null,x=y?"wallet":S?"switch":null,t={hasWalletError:y,hasSwitchError:S,isConnected:g,hasAnyError:E,primaryError:m,errorType:x},O=d.somethingWentWrong;switch(t.errorType){case "wallet":O=d.connectionError;break;case "switch":O=d.errorWhenChainSwitching;break}let h=V(O,{errorType:t.errorType}),$=t.primaryError?`${t.errorType}-${t.primaryError.message.substring(0,50)}`:null,P=q($,{primaryError:t.primaryError,errorType:t.errorType}),v=react.useCallback(()=>{c(()=>{C.current&&(reactToastify.toast.dismiss(C.current),C.current=null),reactToastify.toast.dismiss({containerId:o});});},[o,c]),w=react.useCallback((a,i)=>{M(a,i,t.errorType);},[M,t.errorType]),U=react.useCallback((a,i,p)=>{if(v(),!f.current.has(p))try{let T={containerId:o,toastId:p,onClose:()=>{f.current.delete(p),C.current=null;}},Q=n?.toastOptions?.error?.({title:a,rawError:i,errorType:t.errorType,isConnected:t.isConnected}),R={...T,...Q};reactToastify.toast.error(jsxRuntime.jsx(k,{title:a,rawError:i,errorType:t.errorType,isConnected:t.isConnected,onCopyComplete:X=>w(X,i),customization:n?.toastErrorCustomization}),R),f.current.add(p),C.current=p;}catch(T){console.error("Failed to show error toast:",T);}},[v,o,n?.toastOptions?.error,n?.toastErrorCustomization,k,t.errorType,t.isConnected,w]),N=react.useCallback((a,i,p)=>{H(U,{title:a,rawError:i,errorKey:p,errorType:t.errorType});},[U,H,t.errorType]);react.useEffect(()=>{if(g&&!E){v(),f.current.clear();return}if(E&&m&&P){if(g&&x!=="switch")return;N(h,m,P);}},[E,g,m,x,h,P,N,v]),react.useEffect(()=>()=>{v(),f.current.clear();},[v]);let _=n?.classNames?.container?n.classNames.container({hasErrors:t.hasAnyError,errorType:t.errorType}):"novacon:p-0 novacon:bg-transparent",j=react.useMemo(()=>{let a=n?.toastCloseButton;return a?({closeToast:i})=>jsxRuntime.jsx(novaCore.ToastCloseButton,{closeToast:i,...a}):novaCore.ToastCloseButton},[n?.toastCloseButton]),J={...{containerId:o,position:e,closeOnClick:false,icon:false,closeButton:j,autoClose:r,hideProgressBar:false,newestOnTop:false,pauseOnFocusLoss:false,draggable:s,pauseOnHover:true,theme:"light",transition:reactToastify.Bounce},...n?.containerProps,className:_};return jsxRuntime.jsx(G,{...J})}so.displayName="ErrorsProvider";function io({labels:o,children:e}){let r=react.useMemo(()=>o,[o]);if(process.env.NODE_ENV==="development"){(!o||typeof o!="object")&&console.warn("NovaConnectLabelsProvider: labels prop should be an object");let n=["connectWallet","disconnect","connecting","connected","error","success"].filter(d=>!(d in o));n.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${n.join(", ")}`);}return jsxRuntime.jsx(chunkPXKZLOYO_cjs.g.Provider,{value:r,children:e})}io.displayName="NovaConnectLabelsProvider";var Io=({labels:o,children:e})=>jsxRuntime.jsx(io,{labels:o,children:e}),Do=({customization:o})=>jsxRuntime.jsx(so,{customization:o}),Ko=(o,e)=>novaCore.deepMerge(o,e||{}),Fo=o=>o,Go=o=>o,qo=(o,e,r)=>o;function $o({labels:o,children:e,appChains:r,solanaRPCUrls:s,transactionPool:n,pulsarAdapter:d,withImpersonated:A,withBalance:F,withChain:z,popularConnectors:k,customConnectorGroups:G,legal:H,customization:c}){let M=chunk2SFIZVDC_cjs.h(ro=>ro.activeConnection),V=chunk2SFIZVDC_cjs.h(ro=>ro.connectionError),{LabelsProvider:q=Io,ErrorsProvider:f=Do}=c?.components??{},{merge:C=Ko,transform:y=Fo}=c?.labels??{},{transform:S=Go}=c?.contextValue??{},{providerTree:g=qo}=c?.rendering??{},E=react.useMemo(()=>C(chunkMGBN4EIT_cjs.a,o||{}),[o,C]),[m,x]=react.useState(false),[t,O]=react.useState(false),[h,$]=react.useState(false),[P,v]=react.useState(false),[w,U]=react.useState("idle"),[N,_]=react.useState("connectors"),[j,po]=react.useState(void 0),[J,a]=react.useState(void 0),[i,p]=react.useState(""),[T,Q]=react.useState(false),[R,X]=react.useState("main"),go={appChains:r,solanaRPCUrls:s,withImpersonated:A,popularConnectors:k,customConnectorGroups:G,withBalance:F,withChain:z,isConnectModalOpen:m,setIsConnectModalOpen:x,isConnectedModalOpen:t,setIsConnectedModalOpen:O,isChainsListOpen:h,setIsChainsListOpen:$,isChainsListOpenMobile:P,setIsChainsListOpenMobile:v,connectedButtonStatus:w,setConnectedButtonStatus:U,connectedModalContentType:R,setConnectedModalContentType:X,connectModalContentType:N,setConnectModalContentType:_,selectedAdapter:j,setSelectedAdapter:po,activeConnector:J,setActiveConnector:a,impersonatedAddress:i,setImpersonatedAddress:p,isConnected:T,setIsConnected:Q,legal:H},W=react.useMemo(()=>({isConnected:T,activeConnection:M,connectionError:V,modalStates:{isConnectModalOpen:m,isConnectedModalOpen:t,isChainsListOpen:h,isChainsListOpenMobile:P},contentTypes:{connectModal:N,connectedModal:R},statuses:{connectedButton:w}}),[T,M,V,m,t,h,P,N,R,w]),ho=react.useMemo(()=>y(E,W),[E,y,W]),uo=S(go,W),Y=jsxRuntime.jsx(f,{customization:c?.errors}),Z=jsxRuntime.jsx(q,{labels:ho,children:e}),oo=r||s?jsxRuntime.jsx(chunk7CLA2EHI_cjs.G,{solanaRPCUrls:s,appChains:r,customization:c?.modals?.connectModal}):null,eo=r||s?jsxRuntime.jsx(chunk7CLA2EHI_cjs.t,{solanaRPCUrls:s,appChains:r,transactionPool:n,pulsarAdapter:d,customization:c?.modals?.connectedModal}):null,wo=jsxRuntime.jsxs(chunkPXKZLOYO_cjs.c.Provider,{value:uo,children:[Y,Z,oo,eo]}),No=jsxRuntime.jsxs(chunkPXKZLOYO_cjs.c.Provider,{value:uo,children:[Y,Z,oo,eo]}),Lo=g(No,{ErrorsProvider:Y,LabelsProvider:Z,MainContent:wo,ConnectModal:oo||jsxRuntime.jsx(jsxRuntime.Fragment,{}),ConnectedModal:eo||jsxRuntime.jsx(jsxRuntime.Fragment,{})},W);return jsxRuntime.jsx(jsxRuntime.Fragment,{children:Lo})}$o.displayName="NovaConnectProvider";async function Pr(){let{getAllAdaptersStatus:o}=await import('./getChainsListByConnectorType-QCNOPM6I.cjs');return {hasEvmUtils:await D(),hasSolanaUtils:await K(),adaptersStatus:o()}}async function D(){try{return await import('viem'),await import('@tuwaio/orbit-evm'),!0}catch{return false}}async function K(){try{return await import('gill'),await import('@tuwaio/orbit-solana'),!0}catch{return false}}async function Tr(){try{if(!await D())return {available:!1,error:"EVM packages (viem, @tuwaio/orbit-evm) not available"};let e=await import('./evm/index.cjs'),r=await e.getEvmExports();return r.available?{...e,...r}:{available:!1,error:r.error||"Failed to load EVM exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"EVM utilities not available"}}}async function br(){try{if(!await K())return {available:!1,error:"Solana packages (gill, @tuwaio/orbit-solana) not available"};let e=await import('./solana/index.cjs'),r=await e.getSolanaExports();return r.available?{...e,...r}:{available:!1,error:r.error||"Failed to load Solana exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"Solana utilities not available"}}}async function yr(){let o={evm:false,solana:false,errors:[]};try{let e=await D(),r=await K();if(e||r){let{preloadChainAdapters:s}=await import('./getChainsListByConnectorType-QCNOPM6I.cjs'),n=[];e&&n.push(orbitCore.OrbitAdapter.EVM),r&&n.push(orbitCore.OrbitAdapter.SOLANA),await s(n),o.evm=e,o.solana=r;}else o.errors.push("No blockchain packages available for initialization");}catch(e){let r=e instanceof Error?e.message:"Unknown initialization error";o.errors.push(r);}return o}async function gr(o){return o===orbitCore.OrbitAdapter.Starknet||o!==orbitCore.OrbitAdapter.EVM&&o!==orbitCore.OrbitAdapter.SOLANA?false:o===orbitCore.OrbitAdapter.EVM?D():K()}Object.defineProperty(exports,"NovaConnectLabelsContext",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.g}});Object.defineProperty(exports,"NovaConnectProviderContext",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.c}});Object.defineProperty(exports,"NovaConnectProviderError",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.b}});Object.defineProperty(exports,"createLabelsSubset",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.o}});Object.defineProperty(exports,"getAvailableChainIds",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.q}});Object.defineProperty(exports,"getAvailableSolanaClusters",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.v}});Object.defineProperty(exports,"getConnectChainId",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.p}});Object.defineProperty(exports,"getFilteredConnectors",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.t}});Object.defineProperty(exports,"getGroupedConnectors",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.r}});Object.defineProperty(exports,"getLabelWithFallback",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.n}});Object.defineProperty(exports,"hasAvailableConnectors",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.s}});Object.defineProperty(exports,"hasConnectorsForAdapter",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.u}});Object.defineProperty(exports,"hasLabel",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.k}});Object.defineProperty(exports,"isDefaultLabels",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.m}});Object.defineProperty(exports,"isValidSolanaCluster",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.w}});Object.defineProperty(exports,"useGetWalletNameAndAvatar",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.a}});Object.defineProperty(exports,"useHasNovaConnectContext",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.e}});Object.defineProperty(exports,"useLabelsByCategory",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.l}});Object.defineProperty(exports,"useNovaConnect",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.d}});Object.defineProperty(exports,"useNovaConnectLabel",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.i}});Object.defineProperty(exports,"useNovaConnectLabels",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.h}});Object.defineProperty(exports,"useNovaConnectLabelsSubset",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.j}});Object.defineProperty(exports,"useNovaConnectOptional",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.f}});Object.defineProperty(exports,"useWalletChainsList",{enumerable:true,get:function(){return chunkPXKZLOYO_cjs.x}});Object.defineProperty(exports,"useWalletNativeBalance",{enumerable:true,get:function(){return chunkPXKZLOYO_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=so;exports.NovaConnectLabelsProvider=io;exports.NovaConnectProvider=$o;exports.getBlockchainUtilities=Pr;exports.getEvmUtils=Tr;exports.getSolanaUtils=br;exports.initializeBlockchainSupport=yr;exports.isAdapterSupported=gr;
package/dist/index.css CHANGED
@@ -1,4 +1,4 @@
1
- /*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */
1
+ /*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */
2
2
  @layer properties;
3
3
  @layer theme, base, components, utilities;
4
4
  @layer theme {
@@ -78,7 +78,7 @@
78
78
  top: calc(var(--novacon-spacing) * 0.5);
79
79
  }
80
80
  .novacon\:top-1\/2 {
81
- top: calc(1/2 * 100%);
81
+ top: calc(1 / 2 * 100%);
82
82
  }
83
83
  .novacon\:top-2 {
84
84
  top: calc(var(--novacon-spacing) * 2);
@@ -144,7 +144,7 @@
144
144
  bottom: 15%;
145
145
  }
146
146
  .novacon\:left-1\/2 {
147
- left: calc(1/2 * 100%);
147
+ left: calc(1 / 2 * 100%);
148
148
  }
149
149
  .novacon\:left-2 {
150
150
  left: calc(var(--novacon-spacing) * 2);
@@ -420,7 +420,7 @@
420
420
  flex-shrink: 0;
421
421
  }
422
422
  .novacon\:-translate-x-1\/2 {
423
- --tw-translate-x: calc(calc(1/2 * 100%) * -1);
423
+ --tw-translate-x: calc(calc(1 / 2 * 100%) * -1);
424
424
  translate: var(--tw-translate-x) var(--tw-translate-y);
425
425
  }
426
426
  .novacon\:translate-x-\[-10px\] {
@@ -428,7 +428,7 @@
428
428
  translate: var(--tw-translate-x) var(--tw-translate-y);
429
429
  }
430
430
  .novacon\:-translate-y-1\/2 {
431
- --tw-translate-y: calc(calc(1/2 * 100%) * -1);
431
+ --tw-translate-y: calc(calc(1 / 2 * 100%) * -1);
432
432
  translate: var(--tw-translate-x) var(--tw-translate-y);
433
433
  }
434
434
  .novacon\:transform {
@@ -1170,24 +1170,24 @@
1170
1170
  }
1171
1171
  }
1172
1172
  }
1173
- .novacon\:hover\:bg-\[var\(--tuwa-bg-tertiary\)\] {
1173
+ .novacon\:hover\:bg-\[var\(--tuwa-button-gradient-from-hover\)\] {
1174
1174
  &:hover {
1175
1175
  @media (hover: hover) {
1176
- background-color: var(--tuwa-bg-tertiary);
1176
+ background-color: var(--tuwa-button-gradient-from-hover);
1177
1177
  }
1178
1178
  }
1179
1179
  }
1180
- .novacon\:hover\:bg-\[var\(--tuwa-button-gradient-from-hover\)\] {
1180
+ .novacon\:hover\:bg-\[var\(--tuwa-error-text\)\] {
1181
1181
  &:hover {
1182
1182
  @media (hover: hover) {
1183
- background-color: var(--tuwa-button-gradient-from-hover);
1183
+ background-color: var(--tuwa-error-text);
1184
1184
  }
1185
1185
  }
1186
1186
  }
1187
- .novacon\:hover\:bg-\[var\(--tuwa-error-text\)\] {
1187
+ .novacon\:hover\:bg-\[var\(--tuwa-standart-button-hover\)\] {
1188
1188
  &:hover {
1189
1189
  @media (hover: hover) {
1190
- background-color: var(--tuwa-error-text);
1190
+ background-color: var(--tuwa-standart-button-hover);
1191
1191
  }
1192
1192
  }
1193
1193
  }
@@ -1360,9 +1360,9 @@
1360
1360
  scale: 0.98;
1361
1361
  }
1362
1362
  }
1363
- .novacon\:active\:bg-\[var\(--tuwa-bg-quaternary\)\] {
1363
+ .novacon\:active\:bg-\[var\(--tuwa-bg-muted\)\] {
1364
1364
  &:active {
1365
- background-color: var(--tuwa-bg-quaternary);
1365
+ background-color: var(--tuwa-bg-muted);
1366
1366
  }
1367
1367
  }
1368
1368
  .novacon\:active\:bg-\[var\(--tuwa-error-text\)\] {
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import {G,t,H}from'./chunk-TMKU7PMN.js';import {h,g,c}from'./chunk-ZD4FCYAW.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-ZD4FCYAW.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 as h$1}from'./chunk-S3RQJGCL.js';import {OrbitAdapter}from'@tuwaio/orbit-core';import {ToastCloseButton,deepMerge}from'@tuwaio/nova-core';import {useRef,useCallback,useEffect,useMemo,useState}from'react';import {toast,Bounce,ToastContainer}from'react-toastify';import {jsx,jsxs,Fragment}from'react/jsx-runtime';var Oo=({title:o,rawError:e,onCopyComplete:r,errorType:s,isConnected:n,...d})=>jsx(H,{title:o,rawError:e,onCopyComplete:r,customization:d.customization}),Ro=o=>{let e=h();return jsx(ToastContainer,{...o,role:"alert","aria-live":"assertive","aria-label":e.somethingWentWrong})},Bo=(o,e)=>{o(e.title,e.rawError,e.errorKey);},Ao=o=>{o();},zo=(o,e)=>{if(o&&process.env.NODE_ENV==="development"){let r=typeof e=="string"?e:e.message;console.log("Error copied to clipboard:",r.substring(0,100));}},ko=o=>o,Ho=o=>o;function so({containerId:o="nova-connect-errors",position:e="top-center",autoClose:r=7e3,draggable:s=false,customization:n}){let d=h(),A=h$1(a=>a.switchNetworkError),F=h$1(a=>a.activeConnection),z=h$1(a=>a.connectionError),{ToastError:k=Oo,Container:G=Ro}=n?.components??{},{showError:H=Bo,dismissError:c=Ao,onCopyComplete:M=zo}=n?.handlers??{},{errorTitle:V=ko,errorHash:q=Ho}=n??{},f=useRef(new Set),C=useRef(null),y=!!z,S=!!A,g=!!F?.isConnected,E=y||S,m=z||A||null,x=y?"wallet":S?"switch":null,t={hasWalletError:y,hasSwitchError:S,isConnected:g,hasAnyError:E,primaryError:m,errorType:x},O=d.somethingWentWrong;switch(t.errorType){case "wallet":O=d.connectionError;break;case "switch":O=d.errorWhenChainSwitching;break}let h$2=V(O,{errorType:t.errorType}),$=t.primaryError?`${t.errorType}-${t.primaryError.message.substring(0,50)}`:null,P=q($,{primaryError:t.primaryError,errorType:t.errorType}),v=useCallback(()=>{c(()=>{C.current&&(toast.dismiss(C.current),C.current=null),toast.dismiss({containerId:o});});},[o,c]),w=useCallback((a,i)=>{M(a,i,t.errorType);},[M,t.errorType]),U=useCallback((a,i,p)=>{if(v(),!f.current.has(p))try{let T={containerId:o,toastId:p,onClose:()=>{f.current.delete(p),C.current=null;}},Q=n?.toastOptions?.error?.({title:a,rawError:i,errorType:t.errorType,isConnected:t.isConnected}),R={...T,...Q};toast.error(jsx(k,{title:a,rawError:i,errorType:t.errorType,isConnected:t.isConnected,onCopyComplete:X=>w(X,i),customization:n?.toastErrorCustomization}),R),f.current.add(p),C.current=p;}catch(T){console.error("Failed to show error toast:",T);}},[v,o,n?.toastOptions?.error,n?.toastErrorCustomization,k,t.errorType,t.isConnected,w]),N=useCallback((a,i,p)=>{H(U,{title:a,rawError:i,errorKey:p,errorType:t.errorType});},[U,H,t.errorType]);useEffect(()=>{if(g&&!E){v(),f.current.clear();return}if(E&&m&&P){if(g&&x!=="switch")return;N(h$2,m,P);}},[E,g,m,x,h$2,P,N,v]),useEffect(()=>()=>{v(),f.current.clear();},[v]);let _=n?.classNames?.container?n.classNames.container({hasErrors:t.hasAnyError,errorType:t.errorType}):"novacon:p-0 novacon:bg-transparent",j=useMemo(()=>{let a=n?.toastCloseButton;return a?({closeToast:i})=>jsx(ToastCloseButton,{closeToast:i,...a}):ToastCloseButton},[n?.toastCloseButton]),J={...{containerId:o,position:e,closeOnClick:false,icon:false,closeButton:j,autoClose:r,hideProgressBar:false,newestOnTop:false,pauseOnFocusLoss:false,draggable:s,pauseOnHover:true,theme:"light",transition:Bounce},...n?.containerProps,className:_};return jsx(G,{...J})}so.displayName="ErrorsProvider";function io({labels:o,children:e}){let r=useMemo(()=>o,[o]);if(process.env.NODE_ENV==="development"){(!o||typeof o!="object")&&console.warn("NovaConnectLabelsProvider: labels prop should be an object");let n=["connectWallet","disconnect","connecting","connected","error","success"].filter(d=>!(d in o));n.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${n.join(", ")}`);}return jsx(g.Provider,{value:r,children:e})}io.displayName="NovaConnectLabelsProvider";var Io=({labels:o,children:e})=>jsx(io,{labels:o,children:e}),Do=({customization:o})=>jsx(so,{customization:o}),Ko=(o,e)=>deepMerge(o,e||{}),Fo=o=>o,Go=o=>o,qo=(o,e,r)=>o;function $o({labels:o,children:e,appChains:r,solanaRPCUrls:s,transactionPool:n,pulsarAdapter:d,withImpersonated:A,withBalance:F,withChain:z,popularConnectors:k,customConnectorGroups:G$1,legal:H,customization:c$1}){let M=h$1(ro=>ro.activeConnection),V=h$1(ro=>ro.connectionError),{LabelsProvider:q=Io,ErrorsProvider:f=Do}=c$1?.components??{},{merge:C=Ko,transform:y=Fo}=c$1?.labels??{},{transform:S=Go}=c$1?.contextValue??{},{providerTree:g=qo}=c$1?.rendering??{},E=useMemo(()=>C(a,o||{}),[o,C]),[m,x]=useState(false),[t$1,O]=useState(false),[h,$]=useState(false),[P,v]=useState(false),[w,U]=useState("idle"),[N,_]=useState("connectors"),[j,po]=useState(void 0),[J,a$1]=useState(void 0),[i,p]=useState(""),[T,Q]=useState(false),[R,X]=useState("main"),go={appChains:r,solanaRPCUrls:s,withImpersonated:A,popularConnectors:k,customConnectorGroups:G$1,withBalance:F,withChain:z,isConnectModalOpen:m,setIsConnectModalOpen:x,isConnectedModalOpen:t$1,setIsConnectedModalOpen:O,isChainsListOpen:h,setIsChainsListOpen:$,isChainsListOpenMobile:P,setIsChainsListOpenMobile:v,connectedButtonStatus:w,setConnectedButtonStatus:U,connectedModalContentType:R,setConnectedModalContentType:X,connectModalContentType:N,setConnectModalContentType:_,selectedAdapter:j,setSelectedAdapter:po,activeConnector:J,setActiveConnector:a$1,impersonatedAddress:i,setImpersonatedAddress:p,isConnected:T,setIsConnected:Q,legal:H},W=useMemo(()=>({isConnected:T,activeConnection:M,connectionError:V,modalStates:{isConnectModalOpen:m,isConnectedModalOpen:t$1,isChainsListOpen:h,isChainsListOpenMobile:P},contentTypes:{connectModal:N,connectedModal:R},statuses:{connectedButton:w}}),[T,M,V,m,t$1,h,P,N,R,w]),ho=useMemo(()=>y(E,W),[E,y,W]),uo=S(go,W),Y=jsx(f,{customization:c$1?.errors}),Z=jsx(q,{labels:ho,children:e}),oo=r||s?jsx(G,{solanaRPCUrls:s,appChains:r,customization:c$1?.modals?.connectModal}):null,eo=r||s?jsx(t,{solanaRPCUrls:s,appChains:r,transactionPool:n,pulsarAdapter:d,customization:c$1?.modals?.connectedModal}):null,wo=jsxs(c.Provider,{value:uo,children:[Y,Z,oo,eo]}),No=jsxs(c.Provider,{value:uo,children:[Y,Z,oo,eo]}),Lo=g(No,{ErrorsProvider:Y,LabelsProvider:Z,MainContent:wo,ConnectModal:oo||jsx(Fragment,{}),ConnectedModal:eo||jsx(Fragment,{})},W);return jsx(Fragment,{children:Lo})}$o.displayName="NovaConnectProvider";async function Pr(){let{getAllAdaptersStatus:o}=await import('./getChainsListByConnectorType-YZZUYC6D.js');return {hasEvmUtils:await D(),hasSolanaUtils:await K(),adaptersStatus:o()}}async function D(){try{return await import('viem'),await import('@tuwaio/orbit-evm'),!0}catch{return false}}async function K(){try{return await import('gill'),await import('@tuwaio/orbit-solana'),!0}catch{return false}}async function Tr(){try{if(!await D())return {available:!1,error:"EVM packages (viem, @tuwaio/orbit-evm) not available"};let e=await import('./evm/index.js'),r=await e.getEvmExports();return r.available?{...e,...r}:{available:!1,error:r.error||"Failed to load EVM exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"EVM utilities not available"}}}async function br(){try{if(!await K())return {available:!1,error:"Solana packages (gill, @tuwaio/orbit-solana) not available"};let e=await import('./solana/index.js'),r=await e.getSolanaExports();return r.available?{...e,...r}:{available:!1,error:r.error||"Failed to load Solana exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"Solana utilities not available"}}}async function yr(){let o={evm:false,solana:false,errors:[]};try{let e=await D(),r=await K();if(e||r){let{preloadChainAdapters:s}=await import('./getChainsListByConnectorType-YZZUYC6D.js'),n=[];e&&n.push(OrbitAdapter.EVM),r&&n.push(OrbitAdapter.SOLANA),await s(n),o.evm=e,o.solana=r;}else o.errors.push("No blockchain packages available for initialization");}catch(e){let r=e instanceof Error?e.message:"Unknown initialization error";o.errors.push(r);}return o}async function gr(o){return o===OrbitAdapter.Starknet||o!==OrbitAdapter.EVM&&o!==OrbitAdapter.SOLANA?false:o===OrbitAdapter.EVM?D():K()}export{so as ErrorsProvider,io as NovaConnectLabelsProvider,$o as NovaConnectProvider,Pr as getBlockchainUtilities,Tr as getEvmUtils,br as getSolanaUtils,yr as initializeBlockchainSupport,gr as isAdapterSupported};
1
+ import {G,t,H}from'./chunk-6EWZWAEF.js';import {h,g,c}from'./chunk-ZD4FCYAW.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-ZD4FCYAW.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 as h$1}from'./chunk-S3RQJGCL.js';import {OrbitAdapter}from'@tuwaio/orbit-core';import {ToastCloseButton,deepMerge}from'@tuwaio/nova-core';import {useRef,useCallback,useEffect,useMemo,useState}from'react';import {toast,Bounce,ToastContainer}from'react-toastify';import {jsx,jsxs,Fragment}from'react/jsx-runtime';var Oo=({title:o,rawError:e,onCopyComplete:r,errorType:s,isConnected:n,...d})=>jsx(H,{title:o,rawError:e,onCopyComplete:r,customization:d.customization}),Ro=o=>{let e=h();return jsx(ToastContainer,{...o,role:"alert","aria-live":"assertive","aria-label":e.somethingWentWrong})},Bo=(o,e)=>{o(e.title,e.rawError,e.errorKey);},Ao=o=>{o();},zo=(o,e)=>{if(o&&process.env.NODE_ENV==="development"){let r=typeof e=="string"?e:e.message;console.log("Error copied to clipboard:",r.substring(0,100));}},ko=o=>o,Ho=o=>o;function so({containerId:o="nova-connect-errors",position:e="top-center",autoClose:r=7e3,draggable:s=false,customization:n}){let d=h(),A=h$1(a=>a.switchNetworkError),F=h$1(a=>a.activeConnection),z=h$1(a=>a.connectionError),{ToastError:k=Oo,Container:G=Ro}=n?.components??{},{showError:H=Bo,dismissError:c=Ao,onCopyComplete:M=zo}=n?.handlers??{},{errorTitle:V=ko,errorHash:q=Ho}=n??{},f=useRef(new Set),C=useRef(null),y=!!z,S=!!A,g=!!F?.isConnected,E=y||S,m=z||A||null,x=y?"wallet":S?"switch":null,t={hasWalletError:y,hasSwitchError:S,isConnected:g,hasAnyError:E,primaryError:m,errorType:x},O=d.somethingWentWrong;switch(t.errorType){case "wallet":O=d.connectionError;break;case "switch":O=d.errorWhenChainSwitching;break}let h$2=V(O,{errorType:t.errorType}),$=t.primaryError?`${t.errorType}-${t.primaryError.message.substring(0,50)}`:null,P=q($,{primaryError:t.primaryError,errorType:t.errorType}),v=useCallback(()=>{c(()=>{C.current&&(toast.dismiss(C.current),C.current=null),toast.dismiss({containerId:o});});},[o,c]),w=useCallback((a,i)=>{M(a,i,t.errorType);},[M,t.errorType]),U=useCallback((a,i,p)=>{if(v(),!f.current.has(p))try{let T={containerId:o,toastId:p,onClose:()=>{f.current.delete(p),C.current=null;}},Q=n?.toastOptions?.error?.({title:a,rawError:i,errorType:t.errorType,isConnected:t.isConnected}),R={...T,...Q};toast.error(jsx(k,{title:a,rawError:i,errorType:t.errorType,isConnected:t.isConnected,onCopyComplete:X=>w(X,i),customization:n?.toastErrorCustomization}),R),f.current.add(p),C.current=p;}catch(T){console.error("Failed to show error toast:",T);}},[v,o,n?.toastOptions?.error,n?.toastErrorCustomization,k,t.errorType,t.isConnected,w]),N=useCallback((a,i,p)=>{H(U,{title:a,rawError:i,errorKey:p,errorType:t.errorType});},[U,H,t.errorType]);useEffect(()=>{if(g&&!E){v(),f.current.clear();return}if(E&&m&&P){if(g&&x!=="switch")return;N(h$2,m,P);}},[E,g,m,x,h$2,P,N,v]),useEffect(()=>()=>{v(),f.current.clear();},[v]);let _=n?.classNames?.container?n.classNames.container({hasErrors:t.hasAnyError,errorType:t.errorType}):"novacon:p-0 novacon:bg-transparent",j=useMemo(()=>{let a=n?.toastCloseButton;return a?({closeToast:i})=>jsx(ToastCloseButton,{closeToast:i,...a}):ToastCloseButton},[n?.toastCloseButton]),J={...{containerId:o,position:e,closeOnClick:false,icon:false,closeButton:j,autoClose:r,hideProgressBar:false,newestOnTop:false,pauseOnFocusLoss:false,draggable:s,pauseOnHover:true,theme:"light",transition:Bounce},...n?.containerProps,className:_};return jsx(G,{...J})}so.displayName="ErrorsProvider";function io({labels:o,children:e}){let r=useMemo(()=>o,[o]);if(process.env.NODE_ENV==="development"){(!o||typeof o!="object")&&console.warn("NovaConnectLabelsProvider: labels prop should be an object");let n=["connectWallet","disconnect","connecting","connected","error","success"].filter(d=>!(d in o));n.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${n.join(", ")}`);}return jsx(g.Provider,{value:r,children:e})}io.displayName="NovaConnectLabelsProvider";var Io=({labels:o,children:e})=>jsx(io,{labels:o,children:e}),Do=({customization:o})=>jsx(so,{customization:o}),Ko=(o,e)=>deepMerge(o,e||{}),Fo=o=>o,Go=o=>o,qo=(o,e,r)=>o;function $o({labels:o,children:e,appChains:r,solanaRPCUrls:s,transactionPool:n,pulsarAdapter:d,withImpersonated:A,withBalance:F,withChain:z,popularConnectors:k,customConnectorGroups:G$1,legal:H,customization:c$1}){let M=h$1(ro=>ro.activeConnection),V=h$1(ro=>ro.connectionError),{LabelsProvider:q=Io,ErrorsProvider:f=Do}=c$1?.components??{},{merge:C=Ko,transform:y=Fo}=c$1?.labels??{},{transform:S=Go}=c$1?.contextValue??{},{providerTree:g=qo}=c$1?.rendering??{},E=useMemo(()=>C(a,o||{}),[o,C]),[m,x]=useState(false),[t$1,O]=useState(false),[h,$]=useState(false),[P,v]=useState(false),[w,U]=useState("idle"),[N,_]=useState("connectors"),[j,po]=useState(void 0),[J,a$1]=useState(void 0),[i,p]=useState(""),[T,Q]=useState(false),[R,X]=useState("main"),go={appChains:r,solanaRPCUrls:s,withImpersonated:A,popularConnectors:k,customConnectorGroups:G$1,withBalance:F,withChain:z,isConnectModalOpen:m,setIsConnectModalOpen:x,isConnectedModalOpen:t$1,setIsConnectedModalOpen:O,isChainsListOpen:h,setIsChainsListOpen:$,isChainsListOpenMobile:P,setIsChainsListOpenMobile:v,connectedButtonStatus:w,setConnectedButtonStatus:U,connectedModalContentType:R,setConnectedModalContentType:X,connectModalContentType:N,setConnectModalContentType:_,selectedAdapter:j,setSelectedAdapter:po,activeConnector:J,setActiveConnector:a$1,impersonatedAddress:i,setImpersonatedAddress:p,isConnected:T,setIsConnected:Q,legal:H},W=useMemo(()=>({isConnected:T,activeConnection:M,connectionError:V,modalStates:{isConnectModalOpen:m,isConnectedModalOpen:t$1,isChainsListOpen:h,isChainsListOpenMobile:P},contentTypes:{connectModal:N,connectedModal:R},statuses:{connectedButton:w}}),[T,M,V,m,t$1,h,P,N,R,w]),ho=useMemo(()=>y(E,W),[E,y,W]),uo=S(go,W),Y=jsx(f,{customization:c$1?.errors}),Z=jsx(q,{labels:ho,children:e}),oo=r||s?jsx(G,{solanaRPCUrls:s,appChains:r,customization:c$1?.modals?.connectModal}):null,eo=r||s?jsx(t,{solanaRPCUrls:s,appChains:r,transactionPool:n,pulsarAdapter:d,customization:c$1?.modals?.connectedModal}):null,wo=jsxs(c.Provider,{value:uo,children:[Y,Z,oo,eo]}),No=jsxs(c.Provider,{value:uo,children:[Y,Z,oo,eo]}),Lo=g(No,{ErrorsProvider:Y,LabelsProvider:Z,MainContent:wo,ConnectModal:oo||jsx(Fragment,{}),ConnectedModal:eo||jsx(Fragment,{})},W);return jsx(Fragment,{children:Lo})}$o.displayName="NovaConnectProvider";async function Pr(){let{getAllAdaptersStatus:o}=await import('./getChainsListByConnectorType-YZZUYC6D.js');return {hasEvmUtils:await D(),hasSolanaUtils:await K(),adaptersStatus:o()}}async function D(){try{return await import('viem'),await import('@tuwaio/orbit-evm'),!0}catch{return false}}async function K(){try{return await import('gill'),await import('@tuwaio/orbit-solana'),!0}catch{return false}}async function Tr(){try{if(!await D())return {available:!1,error:"EVM packages (viem, @tuwaio/orbit-evm) not available"};let e=await import('./evm/index.js'),r=await e.getEvmExports();return r.available?{...e,...r}:{available:!1,error:r.error||"Failed to load EVM exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"EVM utilities not available"}}}async function br(){try{if(!await K())return {available:!1,error:"Solana packages (gill, @tuwaio/orbit-solana) not available"};let e=await import('./solana/index.js'),r=await e.getSolanaExports();return r.available?{...e,...r}:{available:!1,error:r.error||"Failed to load Solana exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"Solana utilities not available"}}}async function yr(){let o={evm:false,solana:false,errors:[]};try{let e=await D(),r=await K();if(e||r){let{preloadChainAdapters:s}=await import('./getChainsListByConnectorType-YZZUYC6D.js'),n=[];e&&n.push(OrbitAdapter.EVM),r&&n.push(OrbitAdapter.SOLANA),await s(n),o.evm=e,o.solana=r;}else o.errors.push("No blockchain packages available for initialization");}catch(e){let r=e instanceof Error?e.message:"Unknown initialization error";o.errors.push(r);}return o}async function gr(o){return o===OrbitAdapter.Starknet||o!==OrbitAdapter.EVM&&o!==OrbitAdapter.SOLANA?false:o===OrbitAdapter.EVM?D():K()}export{so as ErrorsProvider,io as NovaConnectLabelsProvider,$o as NovaConnectProvider,Pr as getBlockchainUtilities,Tr as getEvmUtils,br as getSolanaUtils,yr as initializeBlockchainSupport,gr as isAdapterSupported};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tuwaio/nova-connect",
3
- "version": "0.3.0",
3
+ "version": "0.3.2",
4
4
  "private": false,
5
5
  "author": "Oleksandr Tkach",
6
6
  "license": "Apache-2.0",
@@ -201,41 +201,41 @@
201
201
  "@radix-ui/react-dialog": "^1.1.15",
202
202
  "@radix-ui/react-select": "^2.2.6",
203
203
  "@tuwaio/orbit-core": "^0.2.7",
204
- "@tuwaio/orbit-evm": "^0.2.9",
204
+ "@tuwaio/orbit-evm": "^0.2.10",
205
205
  "@tuwaio/orbit-solana": "^0.2.3",
206
- "@tuwaio/satellite-react": "^0.3.0",
207
- "@tuwaio/satellite-core": "^0.3.0",
208
- "@tuwaio/satellite-evm": "^0.3.0",
209
- "@tuwaio/satellite-solana": "^0.3.0",
210
- "@tuwaio/pulsar-core": "^0.5.0",
206
+ "@tuwaio/satellite-react": "^0.3.1",
207
+ "@tuwaio/satellite-core": "^0.3.1",
208
+ "@tuwaio/satellite-evm": "^0.3.1",
209
+ "@tuwaio/satellite-solana": "^0.3.1",
210
+ "@tuwaio/pulsar-core": "^0.5.1",
211
211
  "@wallet-standard/react": "^1.0.1",
212
- "@wagmi/core": "^3.3.2",
213
- "@web3icons/react": "^4.1.16",
214
- "@web3icons/common": "^0.11.45",
212
+ "@wagmi/core": "^3.4.0",
213
+ "@web3icons/react": "^4.1.17",
214
+ "@web3icons/common": "^0.11.46",
215
215
  "gill": "^0.14.0",
216
216
  "clsx": "^2.1.1",
217
217
  "dayjs": "^1.11.19",
218
- "immer": "^11.1.3",
218
+ "immer": "^11.1.4",
219
219
  "ethereum-blockies-base64": "^1.0.2",
220
- "framer-motion": "^12.29.2",
220
+ "framer-motion": "^12.34.5",
221
221
  "react": "^19.2.4",
222
222
  "react-toastify": "^11.0.5",
223
- "tailwind-merge": "^3.4.0",
224
- "viem": "^2.45.1",
223
+ "tailwind-merge": "^3.5.0",
224
+ "viem": "^2.46.3",
225
225
  "zustand": "^5.0.11",
226
- "@tailwindcss/postcss": "^4.1.18",
227
- "@tailwindcss/vite": "^4.1.18",
228
- "@types/react": "^19.2.10",
229
- "autoprefixer": "^10.4.24",
230
- "postcss": "^8.5.6",
226
+ "@tailwindcss/postcss": "^4.2.1",
227
+ "@tailwindcss/vite": "^4.2.1",
228
+ "@types/react": "^19.2.14",
229
+ "autoprefixer": "^10.4.27",
230
+ "postcss": "^8.5.8",
231
231
  "postcss-cli": "^11.0.1",
232
- "tailwindcss": "^4.1.18",
232
+ "tailwindcss": "^4.2.1",
233
233
  "@emotion/is-prop-valid": "^1.4.0",
234
234
  "tw-animate-css": "^1.4.0",
235
235
  "typescript": "^5.9.3",
236
236
  "tsup": "^8.5.1",
237
- "@tuwaio/nova-transactions": "^0.3.0",
238
- "@tuwaio/nova-core": "^0.3.0"
237
+ "@tuwaio/nova-core": "^0.3.3",
238
+ "@tuwaio/nova-transactions": "^0.3.1"
239
239
  },
240
240
  "scripts": {
241
241
  "start": "tsup src/index.ts --watch",