@tuwaio/nova-connect 0.4.5 → 0.4.7

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.5",
3
+ "version": "0.4.7",
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",
@@ -51,7 +51,8 @@
51
51
  "access": "public"
52
52
  },
53
53
  "files": [
54
- "dist"
54
+ "dist",
55
+ "socket.json"
55
56
  ],
56
57
  "keywords": [
57
58
  "web3",
@@ -198,44 +199,44 @@
198
199
  },
199
200
  "devDependencies": {
200
201
  "@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.13",
205
- "@tuwaio/orbit-solana": "^0.2.6",
206
- "@tuwaio/satellite-react": "^0.3.5",
207
- "@tuwaio/satellite-core": "^0.3.3",
208
- "@tuwaio/satellite-evm": "^0.3.4",
209
- "@tuwaio/satellite-solana": "^0.3.6",
210
- "@tuwaio/pulsar-core": "^0.6.4",
211
- "@wallet-standard/react": "^1.0.2",
212
- "@wagmi/core": "^3.5.0",
213
- "@web3icons/react": "^4.1.17",
214
- "@web3icons/common": "^0.11.46",
202
+ "@radix-ui/react-dialog": "^1.1.22",
203
+ "@radix-ui/react-select": "^2.3.6",
204
+ "@tuwaio/orbit-core": "^0.2.15",
205
+ "@tuwaio/orbit-evm": "^0.2.20",
206
+ "@tuwaio/orbit-solana": "^0.2.13",
207
+ "@tuwaio/satellite-react": "^0.3.10",
208
+ "@tuwaio/satellite-core": "^0.3.8",
209
+ "@tuwaio/satellite-evm": "^0.3.9",
210
+ "@tuwaio/satellite-solana": "^0.3.11",
211
+ "@tuwaio/pulsar-core": "^0.6.8",
212
+ "@wallet-standard/react": "^1.0.3",
213
+ "@wagmi/core": "^3.6.4",
214
+ "@web3icons/react": "^4.1.19",
215
+ "@web3icons/common": "^0.11.48",
215
216
  "gill": "^0.14.0",
216
217
  "clsx": "^2.1.1",
217
218
  "dayjs": "^1.11.21",
218
- "immer": "^11.1.8",
219
+ "immer": "^11.1.15",
219
220
  "ethereum-blockies-base64": "^1.0.2",
220
- "framer-motion": "^12.40.0",
221
- "react": "^19.2.6",
221
+ "framer-motion": "^12.42.2",
222
+ "react": "^19.2.8",
222
223
  "react-toastify": "^11.1.0",
223
224
  "tailwind-merge": "^3.6.0",
224
- "viem": "^2.51.3",
225
- "zustand": "^5.0.13",
226
- "@tailwindcss/postcss": "^4.3.0",
227
- "@tailwindcss/vite": "^4.3.0",
228
- "@types/react": "^19.2.15",
229
- "autoprefixer": "^10.5.0",
230
- "postcss": "^8.5.15",
225
+ "viem": "^2.55.8",
226
+ "zustand": "^5.0.14",
227
+ "@tailwindcss/postcss": "^4.3.3",
228
+ "@tailwindcss/vite": "^4.3.3",
229
+ "@types/react": "^19.2.17",
230
+ "autoprefixer": "^10.5.4",
231
+ "postcss": "^8.5.23",
231
232
  "postcss-cli": "^11.0.1",
232
- "tailwindcss": "^4.3.0",
233
+ "tailwindcss": "^4.3.3",
233
234
  "@emotion/is-prop-valid": "^1.4.0",
234
235
  "tw-animate-css": "^1.4.0",
235
236
  "typescript": "^6.0.3",
236
237
  "tsup": "^8.5.1",
237
- "@tuwaio/nova-core": "^0.4.4",
238
- "@tuwaio/nova-transactions": "^0.4.5"
238
+ "@tuwaio/nova-core": "^0.4.6",
239
+ "@tuwaio/nova-transactions": "^0.4.7"
239
240
  },
240
241
  "scripts": {
241
242
  "start": "tsup src/index.ts --watch",
package/socket.json ADDED
@@ -0,0 +1,17 @@
1
+ {
2
+ "$schema": "https://socket.dev/config/schema.json",
3
+ "version": 1,
4
+ "issueRules": {
5
+ "networkAccess": "ignore",
6
+ "envVars": "ignore",
7
+ "filesystemAccess": "ignore",
8
+ "shellAccess": "ignore",
9
+ "minifiedFile": "ignore",
10
+ "obfuscatedFile": "ignore",
11
+ "urlStrings": "ignore",
12
+ "unpopularPackage": "ignore",
13
+ "unstableOwnership": "ignore",
14
+ "newAuthor": "ignore",
15
+ "gptAnomaly": "ignore"
16
+ }
17
+ }