@tuwaio/nova-connect 0.4.4 → 0.4.6

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.d.cts CHANGED
@@ -2,9 +2,9 @@ import { TuwaErrorState, OrbitAdapter, ConnectorType, ChainIdentifierArray } fro
2
2
  export { WalletNameAndAvatarData, useGetWalletNameAndAvatar, useWalletChainsList } from './hooks/index.cjs';
3
3
  import { N as NovaConnectProviderProps, C as ConnectContentType, a as ConnectedContentType, B as ButtonTxStatus, b as NovaConnectProviderType, I as InitialChains } from './useWalletNativeBalance-DX5MO1-z.cjs';
4
4
  export { A as AllChainConfigs, L as LabelCategory, c as LegalConfig, d as NativeBalanceResult, e as NovaConnectLabelsContext, f as NovaConnectProviderContext, g as NovaConnectProviderError, W as WalletBalance, h as createLabelsSubset, i as getLabelWithFallback, j as hasLabel, k as isDefaultLabels, u as useHasNovaConnectContext, l as useLabelsByCategory, m as useNovaConnect, n as useNovaConnectLabel, o as useNovaConnectLabels, p as useNovaConnectLabelsSubset, q as useNovaConnectOptional, r as useWalletNativeBalance } from './useWalletNativeBalance-DX5MO1-z.cjs';
5
- import * as react_jsx_runtime from 'react/jsx-runtime';
6
- import { ToastCloseButtonProps } from '@tuwaio/nova-core';
5
+ import * as React from 'react';
7
6
  import { ComponentPropsWithoutRef, ComponentType, ReactNode } from 'react';
7
+ import { ToastCloseButtonProps } from '@tuwaio/nova-core';
8
8
  import { ToastPosition, ToastContainer, toast } from 'react-toastify';
9
9
  import { ToastErrorCustomization, ConnectModalCustomization, ConnectedModalCustomization } from './components/index.cjs';
10
10
  import { N as NovaConnectLabels } from './types-DxUn8qmU.cjs';
@@ -97,7 +97,7 @@ interface ErrorsProviderProps {
97
97
  * A highly customizable error toast provider with extensive styling options and component replacement capabilities.
98
98
  * Provides comprehensive customization for appearance, behavior, and error handling logic while maintaining accessibility.
99
99
  */
100
- declare function ErrorsProvider({ containerId, position, autoClose, draggable, customization, }: ErrorsProviderProps): react_jsx_runtime.JSX.Element;
100
+ declare function ErrorsProvider({ containerId, position, autoClose, draggable, customization, }: ErrorsProviderProps): React.JSX.Element;
101
101
  declare namespace ErrorsProvider {
102
102
  var displayName: string;
103
103
  }
@@ -132,7 +132,7 @@ interface NovaConnectLabelsProviderProps {
132
132
  * }
133
133
  * ```
134
134
  */
135
- declare function NovaConnectLabelsProvider({ labels, children }: NovaConnectLabelsProviderProps): react_jsx_runtime.JSX.Element;
135
+ declare function NovaConnectLabelsProvider({ labels, children }: NovaConnectLabelsProviderProps): React.JSX.Element;
136
136
  declare namespace NovaConnectLabelsProvider {
137
137
  var displayName: string;
138
138
  }
@@ -288,7 +288,7 @@ interface NovaConnectProviderPropsWithCustomization extends NovaConnectProviderP
288
288
  *
289
289
  * @param props - Provider configuration and customization options
290
290
  */
291
- declare function NovaConnectProvider({ labels, children, appChains, solanaRPCUrls, transactionPool, pulsarAdapter, withImpersonated, withBalance, withChain, popularConnectors, customConnectorGroups, legal, customization, pagination, }: NovaConnectProviderPropsWithCustomization): react_jsx_runtime.JSX.Element;
291
+ declare function NovaConnectProvider({ labels, children, appChains, solanaRPCUrls, transactionPool, pulsarAdapter, withImpersonated, withBalance, withChain, popularConnectors, customConnectorGroups, legal, customization, pagination, }: NovaConnectProviderPropsWithCustomization): React.JSX.Element;
292
292
  declare namespace NovaConnectProvider {
293
293
  var displayName: string;
294
294
  }
package/dist/index.d.ts CHANGED
@@ -2,9 +2,9 @@ import { TuwaErrorState, OrbitAdapter, ConnectorType, ChainIdentifierArray } fro
2
2
  export { WalletNameAndAvatarData, useGetWalletNameAndAvatar, useWalletChainsList } from './hooks/index.js';
3
3
  import { N as NovaConnectProviderProps, C as ConnectContentType, a as ConnectedContentType, B as ButtonTxStatus, b as NovaConnectProviderType, I as InitialChains } from './useWalletNativeBalance-B6w7HC-n.js';
4
4
  export { A as AllChainConfigs, L as LabelCategory, c as LegalConfig, d as NativeBalanceResult, e as NovaConnectLabelsContext, f as NovaConnectProviderContext, g as NovaConnectProviderError, W as WalletBalance, h as createLabelsSubset, i as getLabelWithFallback, j as hasLabel, k as isDefaultLabels, u as useHasNovaConnectContext, l as useLabelsByCategory, m as useNovaConnect, n as useNovaConnectLabel, o as useNovaConnectLabels, p as useNovaConnectLabelsSubset, q as useNovaConnectOptional, r as useWalletNativeBalance } from './useWalletNativeBalance-B6w7HC-n.js';
5
- import * as react_jsx_runtime from 'react/jsx-runtime';
6
- import { ToastCloseButtonProps } from '@tuwaio/nova-core';
5
+ import * as React from 'react';
7
6
  import { ComponentPropsWithoutRef, ComponentType, ReactNode } from 'react';
7
+ import { ToastCloseButtonProps } from '@tuwaio/nova-core';
8
8
  import { ToastPosition, ToastContainer, toast } from 'react-toastify';
9
9
  import { ToastErrorCustomization, ConnectModalCustomization, ConnectedModalCustomization } from './components/index.js';
10
10
  import { N as NovaConnectLabels } from './types-DxUn8qmU.js';
@@ -97,7 +97,7 @@ interface ErrorsProviderProps {
97
97
  * A highly customizable error toast provider with extensive styling options and component replacement capabilities.
98
98
  * Provides comprehensive customization for appearance, behavior, and error handling logic while maintaining accessibility.
99
99
  */
100
- declare function ErrorsProvider({ containerId, position, autoClose, draggable, customization, }: ErrorsProviderProps): react_jsx_runtime.JSX.Element;
100
+ declare function ErrorsProvider({ containerId, position, autoClose, draggable, customization, }: ErrorsProviderProps): React.JSX.Element;
101
101
  declare namespace ErrorsProvider {
102
102
  var displayName: string;
103
103
  }
@@ -132,7 +132,7 @@ interface NovaConnectLabelsProviderProps {
132
132
  * }
133
133
  * ```
134
134
  */
135
- declare function NovaConnectLabelsProvider({ labels, children }: NovaConnectLabelsProviderProps): react_jsx_runtime.JSX.Element;
135
+ declare function NovaConnectLabelsProvider({ labels, children }: NovaConnectLabelsProviderProps): React.JSX.Element;
136
136
  declare namespace NovaConnectLabelsProvider {
137
137
  var displayName: string;
138
138
  }
@@ -288,7 +288,7 @@ interface NovaConnectProviderPropsWithCustomization extends NovaConnectProviderP
288
288
  *
289
289
  * @param props - Provider configuration and customization options
290
290
  */
291
- declare function NovaConnectProvider({ labels, children, appChains, solanaRPCUrls, transactionPool, pulsarAdapter, withImpersonated, withBalance, withChain, popularConnectors, customConnectorGroups, legal, customization, pagination, }: NovaConnectProviderPropsWithCustomization): react_jsx_runtime.JSX.Element;
291
+ declare function NovaConnectProvider({ labels, children, appChains, solanaRPCUrls, transactionPool, pulsarAdapter, withImpersonated, withBalance, withChain, popularConnectors, customConnectorGroups, legal, customization, pagination, }: NovaConnectProviderPropsWithCustomization): React.JSX.Element;
292
292
  declare namespace NovaConnectProvider {
293
293
  var displayName: string;
294
294
  }
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import {G,t,H}from'./chunk-BRC3ASPJ.js';import {h,g,c}from'./chunk-JCUPHUQU.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-JCUPHUQU.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 {d}from'./chunk-EYP534IS.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 Ro=({title:o,rawError:e,onCopyComplete:r,errorType:s,isConnected:t,...p})=>jsx(H,{title:o,rawError:e,onCopyComplete:r,customization:p.customization}),Bo=o=>{let e=h();return jsx(ToastContainer,{...o,role:"alert","aria-live":"assertive","aria-label":e.somethingWentWrong})},Ao=(o,e)=>{o(e.title,e.rawError,e.errorKey);},zo=o=>{o();},ko=(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));}},Ho=o=>o,Vo=o=>o;function so({containerId:o="nova-connect-errors",position:e="top-center",autoClose:r=7e3,draggable:s=false,customization:t}){let p=h(),A=d(a=>a.switchNetworkError),_=d(a=>a.activeConnection),z=d(a=>a.connectionError),{ToastError:k=Ro,Container:j=Bo}=t?.components??{},{showError:H=Ao,dismissError:c=zo,onCopyComplete:V=ko}=t?.handlers??{},{errorTitle:U=Ho,errorHash:W=Vo}=t??{},m=useRef(new Set),v=useRef(null),b=!!z,y=!!A,g=!!_?.isConnected,h$1=b||y,f=z||A||null,E=b?"wallet":y?"switch":null,n={hasWalletError:b,hasSwitchError:y,isConnected:g,hasAnyError:h$1,primaryError:f,errorType:E},P=p.somethingWentWrong;switch(n.errorType){case "wallet":P=p.connectionError;break;case "switch":P=p.errorWhenChainSwitching;break}let I=U(P,{errorType:n.errorType}),L=n.primaryError?`${n.errorType}-${n.primaryError.message.substring(0,50)}`:null,M=W(L,{primaryError:n.primaryError,errorType:n.errorType}),d$1=useCallback(()=>{c(()=>{v.current&&(toast.dismiss(v.current),v.current=null),toast.dismiss({containerId:o});});},[o,c]),D=useCallback((a,i)=>{V(a,i,n.errorType);},[V,n.errorType]),w=useCallback((a,i,u)=>{if(d$1(),!m.current.has(u))try{let x={containerId:o,toastId:u,onClose:()=>{m.current.delete(u),v.current=null;}},O=t?.toastOptions?.error?.({title:a,rawError:i,errorType:n.errorType,isConnected:n.isConnected}),X={...x,...O};toast.error(jsx(k,{title:a,rawError:i,errorType:n.errorType,isConnected:n.isConnected,onCopyComplete:R=>D(R,i),customization:t?.toastErrorCustomization}),X),m.current.add(u),v.current=u;}catch(x){console.error("Failed to show error toast:",x);}},[d$1,o,t?.toastOptions?.error,t?.toastErrorCustomization,k,n.errorType,n.isConnected,D]),K=useCallback((a,i,u)=>{H(w,{title:a,rawError:i,errorKey:u,errorType:n.errorType});},[w,H,n.errorType]);useEffect(()=>{if(g&&!h$1){d$1(),m.current.clear();return}if(h$1&&f&&M){if(g&&E!=="switch")return;K(I,f,M);}},[h$1,g,f,E,I,M,K,d$1]),useEffect(()=>()=>{d$1(),m.current.clear();},[d$1]);let S=t?.classNames?.container?t.classNames.container({hasErrors:n.hasAnyError,errorType:n.errorType}):"novacon:p-0 novacon:bg-transparent",J=useMemo(()=>{let a=t?.toastCloseButton;return a?({closeToast:i})=>jsx(ToastCloseButton,{closeToast:i,...a}):ToastCloseButton},[t?.toastCloseButton]),Q={...{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},...t?.containerProps,className:S};return jsx(j,{...Q})}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 t=["connectWallet","disconnect","connecting","connected","error","success"].filter(p=>!(p in o));t.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${t.join(", ")}`);}return jsx(g.Provider,{value:r,children:e})}io.displayName="NovaConnectLabelsProvider";var Do=({labels:o,children:e})=>jsx(io,{labels:o,children:e}),Ko=({customization:o})=>jsx(so,{customization:o}),Fo=(o,e)=>deepMerge(o,e||{}),Go=o=>o,qo=o=>o,$o=(o,e,r)=>o;function _o({labels:o,children:e,appChains:r,solanaRPCUrls:s,transactionPool:t$1,pulsarAdapter:p,withImpersonated:A,withBalance:_,withChain:z,popularConnectors:k,customConnectorGroups:j,legal:H,customization:c$1,pagination:V}){let U=d(ro=>ro.activeConnection),W=d(ro=>ro.connectionError),{LabelsProvider:m=Do,ErrorsProvider:v=Ko}=c$1?.components??{},{merge:b=Fo,transform:y=Go}=c$1?.labels??{},{transform:g=qo}=c$1?.contextValue??{},{providerTree:h=$o}=c$1?.rendering??{},f=useMemo(()=>b(a,o||{}),[o,b]),[E,n]=useState(false),[P,I]=useState(false),[L,M]=useState(false),[d$1,D]=useState(false),[w,K]=useState("idle"),[S,J]=useState("connectors"),[po,Q]=useState(void 0),[a$1,i]=useState(void 0),[u,x]=useState(""),[O,X]=useState(false),[R,go]=useState("main"),ho={appChains:r,solanaRPCUrls:s,withImpersonated:A,popularConnectors:k,customConnectorGroups:j,withBalance:_,withChain:z,isConnectModalOpen:E,setIsConnectModalOpen:n,isConnectedModalOpen:P,setIsConnectedModalOpen:I,isChainsListOpen:L,setIsChainsListOpen:M,isChainsListOpenMobile:d$1,setIsChainsListOpenMobile:D,connectedButtonStatus:w,setConnectedButtonStatus:K,connectedModalContentType:R,setConnectedModalContentType:go,connectModalContentType:S,setConnectModalContentType:J,selectedAdapter:po,setSelectedAdapter:Q,activeConnector:a$1,setActiveConnector:i,impersonatedAddress:u,setImpersonatedAddress:x,isConnected:O,setIsConnected:X,legal:H},F=useMemo(()=>({isConnected:O,activeConnection:U,connectionError:W,modalStates:{isConnectModalOpen:E,isConnectedModalOpen:P,isChainsListOpen:L,isChainsListOpenMobile:d$1},contentTypes:{connectModal:S,connectedModal:R},statuses:{connectedButton:w}}),[O,U,W,E,P,L,d$1,S,R,w]),wo=useMemo(()=>y(f,F),[f,y,F]),uo=g(ho,F),Y=jsx(v,{customization:c$1?.errors}),Z=jsx(m,{labels:wo,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:t$1,pulsarAdapter:p,customization:c$1?.modals?.connectedModal,pagination:V}):null,No=jsxs(c.Provider,{value:uo,children:[Y,Z,oo,eo]}),Lo=jsxs(c.Provider,{value:uo,children:[Y,Z,oo,eo]}),Mo=h(Lo,{ErrorsProvider:Y,LabelsProvider:Z,MainContent:No,ConnectModal:oo||jsx(Fragment,{}),ConnectedModal:eo||jsx(Fragment,{})},F);return jsx(Fragment,{children:Mo})}_o.displayName="NovaConnectProvider";async function Tr(){let{getAllAdaptersStatus:o}=await import('./getChainsListByConnectorType-YZZUYC6D.js');return {hasEvmUtils:await q(),hasSolanaUtils:await $(),adaptersStatus:o()}}async function q(){try{return await import('viem'),await import('@tuwaio/orbit-evm'),!0}catch{return false}}async function $(){try{return await import('gill'),await import('@tuwaio/orbit-solana'),!0}catch{return false}}async function br(){try{if(!await q())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 yr(){try{if(!await $())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 gr(){let o={evm:false,solana:false,errors:[]};try{let e=await q(),r=await $();if(e||r){let{preloadChainAdapters:s}=await import('./getChainsListByConnectorType-YZZUYC6D.js'),t=[];e&&t.push(OrbitAdapter.EVM),r&&t.push(OrbitAdapter.SOLANA),await s(t),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 hr(o){return o===OrbitAdapter.Starknet||o!==OrbitAdapter.EVM&&o!==OrbitAdapter.SOLANA?false:o===OrbitAdapter.EVM?q():$()}export{so as ErrorsProvider,io as NovaConnectLabelsProvider,_o as NovaConnectProvider,Tr as getBlockchainUtilities,br as getEvmUtils,yr as getSolanaUtils,gr as initializeBlockchainSupport,hr as isAdapterSupported};
1
+ import {G,t,H}from'./chunk-F56UBR3G.js';import {h,g,c}from'./chunk-Q7VMS3GO.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-Q7VMS3GO.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 {d}from'./chunk-EYP534IS.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 Ro=({title:o,rawError:e,onCopyComplete:r,errorType:s,isConnected:t,...u})=>jsx(H,{title:o,rawError:e,onCopyComplete:r,customization:u.customization}),Bo=o=>{let e=h();return jsx(ToastContainer,{...o,role:"alert","aria-live":"assertive","aria-label":e.somethingWentWrong})},Ao=(o,e)=>{o(e.title,e.rawError,e.errorKey);},zo=o=>{o();},ko=(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));}},Ho=o=>o,Vo=o=>o;function so({containerId:o="nova-connect-errors",position:e="top-center",autoClose:r=7e3,draggable:s=false,customization:t}){let u=h(),A=d(n=>n.switchNetworkError),_=d(n=>n.activeConnection),z=d(n=>n.connectionError),{ToastError:k=Ro,Container:j=Bo}=t?.components??{},{showError:H=Ao,dismissError:d$1=zo,onCopyComplete:V=ko}=t?.handlers??{},{errorTitle:U=Ho,errorHash:W=Vo}=t??{},v=useRef(new Set),f=useRef(null),T=!!z,y=!!A,g=!!_?.isConnected,h$1=T||y,E=z||A||null,i=T?"wallet":y?"switch":null,a={hasWalletError:T,hasSwitchError:y,isConnected:g,hasAnyError:h$1,primaryError:E,errorType:i},P=u.somethingWentWrong;switch(a.errorType){case "wallet":P=u.connectionError;break;case "switch":P=u.errorWhenChainSwitching;break}let I=U(P,{errorType:a.errorType}),L=a.primaryError?`${a.errorType}-${a.primaryError.message.substring(0,50)}`:null,M=W(L,{primaryError:a.primaryError,errorType:a.errorType}),p=useCallback(()=>{d$1(()=>{f.current&&(toast.dismiss(f.current),f.current=null),toast.dismiss({containerId:o});});},[o,d$1]),D=useCallback((n,l)=>{V(n,l,i);},[V,i]),w=useCallback((n,l,C)=>{if(p(),!v.current.has(C))try{let x={containerId:o,toastId:C,onClose:()=>{v.current.delete(C),f.current=null;}},O=t?.toastOptions?.error?.({title:n,rawError:l,errorType:a.errorType,isConnected:a.isConnected}),X={...x,...O};toast.error(jsx(k,{title:n,rawError:l,errorType:a.errorType,isConnected:a.isConnected,onCopyComplete:R=>D(R,l),customization:t?.toastErrorCustomization}),X),v.current.add(C),f.current=C;}catch(x){console.error("Failed to show error toast:",x);}},[p,o,t?.toastOptions?.error,t?.toastErrorCustomization,k,a.errorType,a.isConnected,D]),K=useCallback((n,l,C)=>{H(w,{title:n,rawError:l,errorKey:C,errorType:i});},[w,H,i]);useEffect(()=>{if(g&&!h$1){p(),v.current.clear();return}if(h$1&&E&&M){if(g&&i!=="switch")return;K(I,E,M);}},[h$1,g,E,i,I,M,K,p]),useEffect(()=>()=>{p(),v.current.clear();},[p]);let S=t?.classNames?.container?t.classNames.container({hasErrors:a.hasAnyError,errorType:a.errorType}):"novacon:p-0 novacon:bg-transparent",J=useMemo(()=>{let n=t?.toastCloseButton;return n?({closeToast:l})=>jsx(ToastCloseButton,{closeToast:l,...n}):ToastCloseButton},[t?.toastCloseButton]),Q={...{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},...t?.containerProps,className:S};return jsx(j,{...Q})}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 t=["connectWallet","disconnect","connecting","connected","error","success"].filter(u=>!(u in o));t.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${t.join(", ")}`);}return jsx(g.Provider,{value:r,children:e})}io.displayName="NovaConnectLabelsProvider";var Do=({labels:o,children:e})=>jsx(io,{labels:o,children:e}),Ko=({customization:o})=>jsx(so,{customization:o}),Fo=(o,e)=>deepMerge(o,e||{}),Go=o=>o,qo=o=>o,$o=(o,e,r)=>o;function _o({labels:o,children:e,appChains:r,solanaRPCUrls:s,transactionPool:t$1,pulsarAdapter:u,withImpersonated:A,withBalance:_,withChain:z,popularConnectors:k,customConnectorGroups:j,legal:H,customization:d$1,pagination:V}){let U=d(ro=>ro.activeConnection),W=d(ro=>ro.connectionError),{LabelsProvider:v=Do,ErrorsProvider:f=Ko}=d$1?.components??{},{merge:T=Fo,transform:y=Go}=d$1?.labels??{},{transform:g=qo}=d$1?.contextValue??{},{providerTree:h=$o}=d$1?.rendering??{},E=useMemo(()=>T(a,o||{}),[o,T]),[i,a$1]=useState(false),[P,I]=useState(false),[L,M]=useState(false),[p,D]=useState(false),[w,K]=useState("idle"),[S,J]=useState("connectors"),[po,Q]=useState(void 0),[n,l]=useState(void 0),[C,x]=useState(""),[O,X]=useState(false),[R,go]=useState("main"),ho={appChains:r,solanaRPCUrls:s,withImpersonated:A,popularConnectors:k,customConnectorGroups:j,withBalance:_,withChain:z,isConnectModalOpen:i,setIsConnectModalOpen:a$1,isConnectedModalOpen:P,setIsConnectedModalOpen:I,isChainsListOpen:L,setIsChainsListOpen:M,isChainsListOpenMobile:p,setIsChainsListOpenMobile:D,connectedButtonStatus:w,setConnectedButtonStatus:K,connectedModalContentType:R,setConnectedModalContentType:go,connectModalContentType:S,setConnectModalContentType:J,selectedAdapter:po,setSelectedAdapter:Q,activeConnector:n,setActiveConnector:l,impersonatedAddress:C,setImpersonatedAddress:x,isConnected:O,setIsConnected:X,legal:H},F=useMemo(()=>({isConnected:O,activeConnection:U,connectionError:W,modalStates:{isConnectModalOpen:i,isConnectedModalOpen:P,isChainsListOpen:L,isChainsListOpenMobile:p},contentTypes:{connectModal:S,connectedModal:R},statuses:{connectedButton:w}}),[O,U,W,i,P,L,p,S,R,w]),wo=useMemo(()=>y(E,F),[E,y,F]),uo=g(ho,F),Y=jsx(f,{customization:d$1?.errors}),Z=jsx(v,{labels:wo,children:e}),oo=r||s?jsx(G,{solanaRPCUrls:s,appChains:r,customization:d$1?.modals?.connectModal}):null,eo=r||s?jsx(t,{solanaRPCUrls:s,appChains:r,transactionPool:t$1,pulsarAdapter:u,customization:d$1?.modals?.connectedModal,pagination:V}):null,No=jsxs(c.Provider,{value:uo,children:[Y,Z,oo,eo]}),Lo=jsxs(c.Provider,{value:uo,children:[Y,Z,oo,eo]}),Mo=h(Lo,{ErrorsProvider:Y,LabelsProvider:Z,MainContent:No,ConnectModal:oo||jsx(Fragment,{}),ConnectedModal:eo||jsx(Fragment,{})},F);return jsx(Fragment,{children:Mo})}_o.displayName="NovaConnectProvider";async function br(){let{getAllAdaptersStatus:o}=await import('./getChainsListByConnectorType-YZZUYC6D.js');return {hasEvmUtils:await q(),hasSolanaUtils:await $(),adaptersStatus:o()}}async function q(){try{return await import('viem'),await import('@tuwaio/orbit-evm'),!0}catch{return false}}async function $(){try{return await import('gill'),await import('@tuwaio/orbit-solana'),!0}catch{return false}}async function Tr(){try{if(!await q())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 yr(){try{if(!await $())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 gr(){let o={evm:false,solana:false,errors:[]};try{let e=await q(),r=await $();if(e||r){let{preloadChainAdapters:s}=await import('./getChainsListByConnectorType-YZZUYC6D.js'),t=[];e&&t.push(OrbitAdapter.EVM),r&&t.push(OrbitAdapter.SOLANA),await s(t),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 hr(o){return o===OrbitAdapter.Starknet||o!==OrbitAdapter.EVM&&o!==OrbitAdapter.SOLANA?false:o===OrbitAdapter.EVM?q():$()}export{so as ErrorsProvider,io as NovaConnectLabelsProvider,_o as NovaConnectProvider,br as getBlockchainUtilities,Tr as getEvmUtils,yr as getSolanaUtils,gr as initializeBlockchainSupport,hr as isAdapterSupported};
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@tuwaio/nova-connect",
3
- "version": "0.4.4",
3
+ "version": "0.4.6",
4
4
  "private": false,
5
5
  "author": "Oleksandr Tkach",
6
6
  "license": "Apache-2.0",
7
- "description": "React components, hooks and providers for wallet connection and blockchain interactions across multiple chains and wallet types. Build on @tuwaio/satellite-react",
7
+ "description": "Layer 7 (L7) of the TUWA Ecosystem. React components, hooks, and providers for wallet connection and blockchain interactions across multiple chains and wallet types. Built on @tuwaio/satellite-react.",
8
8
  "type": "module",
9
9
  "main": "./dist/index.cjs",
10
10
  "module": "./dist/index.js",
@@ -198,44 +198,44 @@
198
198
  },
199
199
  "devDependencies": {
200
200
  "@heroicons/react": "^2.2.0",
201
- "@radix-ui/react-dialog": "^1.1.15",
202
- "@radix-ui/react-select": "^2.2.6",
203
- "@tuwaio/orbit-core": "^0.2.8",
204
- "@tuwaio/orbit-evm": "^0.2.12",
205
- "@tuwaio/orbit-solana": "^0.2.6",
206
- "@tuwaio/satellite-react": "^0.3.4",
207
- "@tuwaio/satellite-core": "^0.3.3",
208
- "@tuwaio/satellite-evm": "^0.3.3",
209
- "@tuwaio/satellite-solana": "^0.3.5",
210
- "@tuwaio/pulsar-core": "^0.6.3",
211
- "@wallet-standard/react": "^1.0.2",
212
- "@wagmi/core": "^3.4.11",
213
- "@web3icons/react": "^4.1.17",
214
- "@web3icons/common": "^0.11.46",
201
+ "@radix-ui/react-dialog": "^1.1.20",
202
+ "@radix-ui/react-select": "^2.3.4",
203
+ "@tuwaio/orbit-core": "^0.2.13",
204
+ "@tuwaio/orbit-evm": "^0.2.18",
205
+ "@tuwaio/orbit-solana": "^0.2.11",
206
+ "@tuwaio/satellite-react": "^0.3.9",
207
+ "@tuwaio/satellite-core": "^0.3.7",
208
+ "@tuwaio/satellite-evm": "^0.3.8",
209
+ "@tuwaio/satellite-solana": "^0.3.10",
210
+ "@tuwaio/pulsar-core": "^0.6.7",
211
+ "@wallet-standard/react": "^1.0.3",
212
+ "@wagmi/core": "^3.6.3",
213
+ "@web3icons/react": "^4.1.19",
214
+ "@web3icons/common": "^0.11.48",
215
215
  "gill": "^0.14.0",
216
216
  "clsx": "^2.1.1",
217
- "dayjs": "^1.11.20",
218
- "immer": "^11.1.8",
217
+ "dayjs": "^1.11.21",
218
+ "immer": "^11.1.15",
219
219
  "ethereum-blockies-base64": "^1.0.2",
220
- "framer-motion": "^12.38.0",
221
- "react": "^19.2.6",
220
+ "framer-motion": "^12.42.2",
221
+ "react": "^19.2.7",
222
222
  "react-toastify": "^11.1.0",
223
223
  "tailwind-merge": "^3.6.0",
224
- "viem": "^2.48.11",
225
- "zustand": "^5.0.13",
226
- "@tailwindcss/postcss": "^4.3.0",
227
- "@tailwindcss/vite": "^4.3.0",
228
- "@types/react": "^19.2.14",
229
- "autoprefixer": "^10.5.0",
230
- "postcss": "^8.5.14",
224
+ "viem": "^2.55.4",
225
+ "zustand": "^5.0.14",
226
+ "@tailwindcss/postcss": "^4.3.3",
227
+ "@tailwindcss/vite": "^4.3.3",
228
+ "@types/react": "^19.2.17",
229
+ "autoprefixer": "^10.5.4",
230
+ "postcss": "^8.5.20",
231
231
  "postcss-cli": "^11.0.1",
232
- "tailwindcss": "^4.3.0",
232
+ "tailwindcss": "^4.3.3",
233
233
  "@emotion/is-prop-valid": "^1.4.0",
234
234
  "tw-animate-css": "^1.4.0",
235
235
  "typescript": "^6.0.3",
236
236
  "tsup": "^8.5.1",
237
- "@tuwaio/nova-transactions": "^0.4.4",
238
- "@tuwaio/nova-core": "^0.4.3"
237
+ "@tuwaio/nova-core": "^0.4.5",
238
+ "@tuwaio/nova-transactions": "^0.4.6"
239
239
  },
240
240
  "scripts": {
241
241
  "start": "tsup src/index.ts --watch",