@tuwaio/nova-connect 0.9.2 → 0.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- export{a as defaultLabels,b as ukrainianLabels}from'../chunk-6EDQ7JRZ.js';
1
+ export{a as defaultLabels,b as ukrainianLabels}from'../chunk-JTMEDBC3.js';
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- 'use strict';var chunkJJPQMZYP_cjs=require('./chunk-JJPQMZYP.cjs'),chunk4JDZ2H7N_cjs=require('./chunk-4JDZ2H7N.cjs'),chunkR5V3K52O_cjs=require('./chunk-R5V3K52O.cjs'),chunkEGATOYHY_cjs=require('./chunk-EGATOYHY.cjs');require('./chunk-YJRNNNR6.cjs');var novaCore=require('@tuwaio/nova-core'),react=require('react'),reactToastify=require('react-toastify'),jsxRuntime=require('react/jsx-runtime'),utils=require('@tuwaio/nova-core/utils'),siwxReact=require('@tuwaio/siwx-react');var Be=({title:e,rawError:r,onCopyComplete:i,errorType:u,isConnected:n,...m})=>jsxRuntime.jsx(chunkJJPQMZYP_cjs.H,{title:e,rawError:r,onCopyComplete:i,customization:m.customization}),We=e=>{let r=chunk4JDZ2H7N_cjs.h();return jsxRuntime.jsx(reactToastify.ToastContainer,{...e,role:"alert","aria-live":"assertive","aria-label":r.somethingWentWrong})},ze=(e,r)=>{e(r.title,r.rawError,r.errorKey);},He=e=>{e();},Ie=(e,r)=>{if(e&&process.env.NODE_ENV==="development"){let i=typeof r=="string"?r:r.message;console.log("Error copied to clipboard:",i.substring(0,100));}},Ae=e=>e,Fe=e=>e;function Z({containerId:e="nova-connect-errors",position:r="top-center",autoClose:i=7e3,draggable:u=false,customization:n}){let m=chunk4JDZ2H7N_cjs.h(),B=chunkEGATOYHY_cjs.d(a=>a.switchNetworkError),A=chunkEGATOYHY_cjs.d(a=>a.activeConnection),W=chunkEGATOYHY_cjs.d(a=>a.connectionError),{ToastError:z=Be,Container:F=We}=n?.components??{},{showError:H=ze,dismissError:L=He,onCopyComplete:p=Ie}=n?.handlers??{},{errorTitle:V=Ae,errorHash:o=Fe}=n??{},y=react.useRef(new Set),v=react.useRef(null),M=!!W,f=!!B,c=!!A?.isConnected,w=M||f,b=W||B||null,l=M?"wallet":f?"switch":null,s={hasWalletError:M,hasSwitchError:f,isConnected:c,hasAnyError:w,primaryError:b,errorType:l},O=m.somethingWentWrong;switch(s.errorType){case "wallet":O=m.connectionError;break;case "switch":O=m.errorWhenChainSwitching;break}let S=V(O,{errorType:s.errorType}),t=s.primaryError?`${s.errorType}-${s.primaryError.message.substring(0,50)}`:null,d=o(t,{primaryError:s.primaryError,errorType:s.errorType}),C=react.useCallback(()=>{L(()=>{v.current&&(reactToastify.toast.dismiss(v.current),v.current=null),reactToastify.toast.dismiss({containerId:e});});},[e,L]),x=react.useCallback((a,P)=>{p(a,P,l);},[p,l]),R=react.useCallback((a,P,h)=>{if(C(),!y.current.has(h))try{let k={containerId:e,toastId:h,onClose:()=>{y.current.delete(h),v.current=null;}},U=n?.toastOptions?.error?.({title:a,rawError:P,errorType:s.errorType,isConnected:s.isConnected}),K={...k,...U};reactToastify.toast.error(jsxRuntime.jsx(z,{title:a,rawError:P,errorType:s.errorType,isConnected:s.isConnected,onCopyComplete:_=>x(_,P),customization:n?.toastErrorCustomization}),K),y.current.add(h),v.current=h;}catch(k){console.error("Failed to show error toast:",k);}},[C,e,n?.toastOptions?.error,n?.toastErrorCustomization,z,s.errorType,s.isConnected,x]),N=react.useCallback((a,P,h)=>{H(R,{title:a,rawError:P,errorKey:h,errorType:l});},[R,H,l]);react.useEffect(()=>{if(c&&!w){C(),y.current.clear();return}if(w&&b&&d){if(c&&l!=="switch")return;N(S,b,d);}},[w,c,b,l,S,d,N,C]),react.useEffect(()=>()=>{C(),y.current.clear();},[C]);let I=n?.classNames?.container?n.classNames.container({hasErrors:s.hasAnyError,errorType:s.errorType}):"novacon:p-0 novacon:bg-transparent",D=react.useMemo(()=>{let a=n?.toastCloseButton;return a?({closeToast:P})=>jsxRuntime.jsx(novaCore.ToastCloseButton,{closeToast:P,...a}):novaCore.ToastCloseButton},[n?.toastCloseButton]),$={...{containerId:e,position:r,closeOnClick:false,icon:false,closeButton:D,autoClose:i,hideProgressBar:false,newestOnTop:false,pauseOnFocusLoss:false,draggable:u,pauseOnHover:true,theme:"light",transition:reactToastify.Bounce},...n?.containerProps,className:I};return jsxRuntime.jsx(F,{...$})}Z.displayName="ErrorsProvider";function ee({labels:e,children:r}){let i=react.useMemo(()=>e,[e]);if(process.env.NODE_ENV==="development"){(!e||typeof e!="object")&&console.warn("NovaConnectLabelsProvider: labels prop should be an object");let n=["connectWallet","disconnect","connecting","connected","error","success"].filter(m=>!(m in e));n.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${n.join(", ")}`);}return jsxRuntime.jsx(chunk4JDZ2H7N_cjs.g.Provider,{value:i,children:r})}ee.displayName="NovaConnectLabelsProvider";function be(e){let{enabled:r=true,getNonce:i,verifier:u,destroyer:n,domain:m,uri:B,statement:A,expirationTime:W,expirationSeconds:z,notBefore:F,requestId:H,resources:L,onSuccess:p,onError:V}=e,o=chunkEGATOYHY_cjs.d(t=>t.activeConnection),y=chunkEGATOYHY_cjs.d(t=>t.disconnect),v=chunkEGATOYHY_cjs.d(t=>t.isAutoConnectFinished),{signIn:M}=siwxReact.useSiwx(),f=siwxReact.useSiwxSessionStore(t=>t.session),c=siwxReact.useSiwxSessionStore(t=>t.status),w=siwxReact.useSiwxSessionStore(t=>t.reset),b=react.useRef(null),l=react.useRef(false),s=react.useEffectEvent(()=>{w(),n&&n().catch(t=>{console.warn("[NovaSiwxWatcher] Failed to execute session destroyer:",t);});});react.useEffect(()=>{if(!o?.isConnected||!o?.address){if(b.current=null,v===false)return;(c==="authenticated"||f)&&s();}},[o?.isConnected,o?.address,v,c,f]);let O=react.useEffectEvent((t,d)=>o?.connectorType===t&&o.address===d),S=react.useEffectEvent(()=>{if(!(!o?.isConnected||!o.address||!o.signMessage))try{let t={address:String(o.address),chainId:o.chainId,signMessage:o.signMessage,isConnected:o.isConnected},d=siwxReact.getSatelliteSiwxFields(t,{domain:m,uri:B,statement:A,expirationTime:W,expirationSeconds:z,notBefore:F,requestId:H,resources:L});if(c==="authenticated"&&siwxReact.isSessionMatchingConnection(f,t)||b.current===d.address)return;if(b.current=d.address,!u){console.warn("[NovaSiwxWatcher] Verifier not provided, skipping SIWX auto-authentication.");return}let{connectorType:C,address:x}=o,R=N=>{let I=N instanceof Error?N.message:String(N);console.warn("[NovaSiwxWatcher] SIWX authentication rejected or failed:",I),C&&O(C,x)&&y(C),w(),V?.(I);};l.current=!0,M({signer:o.signMessage,verifier:u,getNonce:i,fields:d,onSuccess:p,onError:R}).catch(R).finally(()=>{l.current=!1;});}catch(t){console.warn("[NovaSiwxWatcher] Failed to build SIWX fields:",t);}});return react.useEffect(()=>{!r||!o?.isConnected||!o?.address||!o?.chainId||o.signMessage&&(l.current||c==="building"||c==="signing"||c==="verifying"||S());},[o?.isConnected,o?.address,o?.chainId,o?.signMessage,o?.connectorType,r,c,f?.address]),null}var Xe=({labels:e,children:r})=>jsxRuntime.jsx(ee,{labels:e,children:r}),$e=({customization:e})=>jsxRuntime.jsx(Z,{customization:e}),Ue=(e,r)=>utils.deepMerge(e,r||{}),_e=e=>e,je=e=>e,Je=(e,r,i)=>e;function Qe({labels:e,children:r,appChains:i,solanaRPCUrls:u,transactionPool:n,pulsarAdapter:m,withImpersonated:B,withBalance:A,withChain:W,popularConnectors:z,customConnectorGroups:F,legal:H,siwx:L,customization:p,pagination:V}){let o=chunkEGATOYHY_cjs.d(J=>J.activeConnection),y=chunkEGATOYHY_cjs.d(J=>J.connectionError),{LabelsProvider:v=Xe,ErrorsProvider:M=$e}=p?.components??{},{merge:f=Ue,transform:c=_e}=p?.labels??{},{transform:w=je}=p?.contextValue??{},{providerTree:b=Je}=p?.rendering??{},l=react.useMemo(()=>f(chunkR5V3K52O_cjs.a,e||{}),[e,f]),[s,O]=react.useState(false),[S,t]=react.useState(false),[d,C]=react.useState(false),[x,R]=react.useState(false),[N,I]=react.useState("idle"),[D,se]=react.useState("connectors"),[$,a]=react.useState(void 0),[P,h]=react.useState(void 0),[k,U]=react.useState(""),[K,_]=react.useState(false),[j,Ne]=react.useState("main"),we={appChains:i,solanaRPCUrls:u,withImpersonated:B,popularConnectors:z,customConnectorGroups:F,withBalance:A,withChain:W,isConnectModalOpen:s,setIsConnectModalOpen:O,isConnectedModalOpen:S,setIsConnectedModalOpen:t,isChainsListOpen:d,setIsChainsListOpen:C,isChainsListOpenMobile:x,setIsChainsListOpenMobile:R,connectedButtonStatus:N,setConnectedButtonStatus:I,connectedModalContentType:j,setConnectedModalContentType:Ne,connectModalContentType:D,setConnectModalContentType:se,selectedAdapter:$,setSelectedAdapter:a,activeConnector:P,setActiveConnector:h,impersonatedAddress:k,setImpersonatedAddress:U,isConnected:K,setIsConnected:_,legal:H},G=react.useMemo(()=>({isConnected:K,activeConnection:o,connectionError:y,modalStates:{isConnectModalOpen:s,isConnectedModalOpen:S,isChainsListOpen:d,isChainsListOpenMobile:x},contentTypes:{connectModal:D,connectedModal:j},statuses:{connectedButton:N}}),[K,o,y,s,S,d,x,D,j,N]),ae=react.useMemo(()=>c(l,G),[l,c,G]),he=w(we,G),ie=jsxRuntime.jsx(M,{customization:p?.errors}),Se=jsxRuntime.jsx(v,{labels:ae,children:r}),ce=i||u?jsxRuntime.jsx(chunkJJPQMZYP_cjs.G,{solanaRPCUrls:u,appChains:i,customization:p?.modals?.connectModal}):null,le=i||u?jsxRuntime.jsx(chunkJJPQMZYP_cjs.t,{solanaRPCUrls:u,appChains:i,transactionPool:n,pulsarAdapter:m,customization:p?.modals?.connectedModal,pagination:V}):null,xe=L?jsxRuntime.jsx(be,{...L}):null,de=jsxRuntime.jsx(chunk4JDZ2H7N_cjs.c.Provider,{value:he,children:jsxRuntime.jsxs(v,{labels:ae,children:[xe,ie,r,ce,le]})}),Le=b(de,{ErrorsProvider:ie,LabelsProvider:Se,MainContent:de,ConnectModal:ce||jsxRuntime.jsx(jsxRuntime.Fragment,{}),ConnectedModal:le||jsxRuntime.jsx(jsxRuntime.Fragment,{})},G);return jsxRuntime.jsx(jsxRuntime.Fragment,{children:Le})}Qe.displayName="NovaConnectProvider";Object.defineProperty(exports,"NovaConnectLabelsContext",{enumerable:true,get:function(){return chunk4JDZ2H7N_cjs.g}});Object.defineProperty(exports,"NovaConnectProviderContext",{enumerable:true,get:function(){return chunk4JDZ2H7N_cjs.c}});Object.defineProperty(exports,"NovaConnectProviderError",{enumerable:true,get:function(){return chunk4JDZ2H7N_cjs.b}});Object.defineProperty(exports,"createLabelsSubset",{enumerable:true,get:function(){return chunk4JDZ2H7N_cjs.o}});Object.defineProperty(exports,"getAvailableChainIds",{enumerable:true,get:function(){return chunk4JDZ2H7N_cjs.v}});Object.defineProperty(exports,"getChainsListByConnectorType",{enumerable:true,get:function(){return chunk4JDZ2H7N_cjs.q}});Object.defineProperty(exports,"getConnectChainId",{enumerable:true,get:function(){return chunk4JDZ2H7N_cjs.u}});Object.defineProperty(exports,"getFilteredConnectors",{enumerable:true,get:function(){return chunk4JDZ2H7N_cjs.y}});Object.defineProperty(exports,"getGroupedConnectors",{enumerable:true,get:function(){return chunk4JDZ2H7N_cjs.w}});Object.defineProperty(exports,"getLabelWithFallback",{enumerable:true,get:function(){return chunk4JDZ2H7N_cjs.n}});Object.defineProperty(exports,"getWalletChains",{enumerable:true,get:function(){return chunk4JDZ2H7N_cjs.t}});Object.defineProperty(exports,"hasAvailableConnectors",{enumerable:true,get:function(){return chunk4JDZ2H7N_cjs.x}});Object.defineProperty(exports,"hasConnectorsForAdapter",{enumerable:true,get:function(){return chunk4JDZ2H7N_cjs.z}});Object.defineProperty(exports,"hasLabel",{enumerable:true,get:function(){return chunk4JDZ2H7N_cjs.k}});Object.defineProperty(exports,"isDefaultLabels",{enumerable:true,get:function(){return chunk4JDZ2H7N_cjs.m}});Object.defineProperty(exports,"isEvmChainList",{enumerable:true,get:function(){return chunk4JDZ2H7N_cjs.r}});Object.defineProperty(exports,"isSolanaChainList",{enumerable:true,get:function(){return chunk4JDZ2H7N_cjs.s}});Object.defineProperty(exports,"useGetWalletNameAndAvatar",{enumerable:true,get:function(){return chunk4JDZ2H7N_cjs.a}});Object.defineProperty(exports,"useHasNovaConnectContext",{enumerable:true,get:function(){return chunk4JDZ2H7N_cjs.e}});Object.defineProperty(exports,"useLabelsByCategory",{enumerable:true,get:function(){return chunk4JDZ2H7N_cjs.l}});Object.defineProperty(exports,"useNovaConnect",{enumerable:true,get:function(){return chunk4JDZ2H7N_cjs.d}});Object.defineProperty(exports,"useNovaConnectLabel",{enumerable:true,get:function(){return chunk4JDZ2H7N_cjs.i}});Object.defineProperty(exports,"useNovaConnectLabels",{enumerable:true,get:function(){return chunk4JDZ2H7N_cjs.h}});Object.defineProperty(exports,"useNovaConnectLabelsSubset",{enumerable:true,get:function(){return chunk4JDZ2H7N_cjs.j}});Object.defineProperty(exports,"useNovaConnectOptional",{enumerable:true,get:function(){return chunk4JDZ2H7N_cjs.f}});Object.defineProperty(exports,"useNovaSiwx",{enumerable:true,get:function(){return chunk4JDZ2H7N_cjs.p}});Object.defineProperty(exports,"useWalletChainsList",{enumerable:true,get:function(){return chunk4JDZ2H7N_cjs.A}});Object.defineProperty(exports,"useWalletNativeBalance",{enumerable:true,get:function(){return chunk4JDZ2H7N_cjs.B}});exports.ErrorsProvider=Z;exports.NovaConnectLabelsProvider=ee;exports.NovaConnectProvider=Qe;exports.NovaSiwxWatcher=be;
1
+ 'use strict';var chunkQI2ITZYO_cjs=require('./chunk-QI2ITZYO.cjs'),chunkPZRZVHFC_cjs=require('./chunk-PZRZVHFC.cjs'),chunkNCRQC2ND_cjs=require('./chunk-NCRQC2ND.cjs'),chunkEGATOYHY_cjs=require('./chunk-EGATOYHY.cjs');require('./chunk-YJRNNNR6.cjs');var novaCore=require('@tuwaio/nova-core'),react=require('react'),reactToastify=require('react-toastify'),jsxRuntime=require('react/jsx-runtime'),utils=require('@tuwaio/nova-core/utils'),siwxReact=require('@tuwaio/siwx-react');var Be=({title:e,rawError:r,onCopyComplete:i,errorType:u,isConnected:n,...m})=>jsxRuntime.jsx(chunkQI2ITZYO_cjs.I,{title:e,rawError:r,onCopyComplete:i,customization:m.customization}),We=e=>{let r=chunkPZRZVHFC_cjs.h();return jsxRuntime.jsx(reactToastify.ToastContainer,{...e,role:"alert","aria-live":"assertive","aria-label":r.somethingWentWrong})},ze=(e,r)=>{e(r.title,r.rawError,r.errorKey);},He=e=>{e();},Ie=(e,r)=>{if(e&&process.env.NODE_ENV==="development"){let i=typeof r=="string"?r:r.message;console.log("Error copied to clipboard:",i.substring(0,100));}},Ae=e=>e,Fe=e=>e;function Z({containerId:e="nova-connect-errors",position:r="top-center",autoClose:i=7e3,draggable:u=false,customization:n}){let m=chunkPZRZVHFC_cjs.h(),B=chunkEGATOYHY_cjs.d(a=>a.switchNetworkError),A=chunkEGATOYHY_cjs.d(a=>a.activeConnection),W=chunkEGATOYHY_cjs.d(a=>a.connectionError),{ToastError:z=Be,Container:F=We}=n?.components??{},{showError:H=ze,dismissError:L=He,onCopyComplete:p=Ie}=n?.handlers??{},{errorTitle:V=Ae,errorHash:o=Fe}=n??{},y=react.useRef(new Set),v=react.useRef(null),M=!!W,f=!!B,c=!!A?.isConnected,w=M||f,b=W||B||null,l=M?"wallet":f?"switch":null,s={hasWalletError:M,hasSwitchError:f,isConnected:c,hasAnyError:w,primaryError:b,errorType:l},O=m.somethingWentWrong;switch(s.errorType){case "wallet":O=m.connectionError;break;case "switch":O=m.errorWhenChainSwitching;break}let S=V(O,{errorType:s.errorType}),t=s.primaryError?`${s.errorType}-${s.primaryError.message.substring(0,50)}`:null,d=o(t,{primaryError:s.primaryError,errorType:s.errorType}),C=react.useCallback(()=>{L(()=>{v.current&&(reactToastify.toast.dismiss(v.current),v.current=null),reactToastify.toast.dismiss({containerId:e});});},[e,L]),x=react.useCallback((a,P)=>{p(a,P,l);},[p,l]),R=react.useCallback((a,P,h)=>{if(C(),!y.current.has(h))try{let k={containerId:e,toastId:h,onClose:()=>{y.current.delete(h),v.current=null;}},U=n?.toastOptions?.error?.({title:a,rawError:P,errorType:s.errorType,isConnected:s.isConnected}),K={...k,...U};reactToastify.toast.error(jsxRuntime.jsx(z,{title:a,rawError:P,errorType:s.errorType,isConnected:s.isConnected,onCopyComplete:_=>x(_,P),customization:n?.toastErrorCustomization}),K),y.current.add(h),v.current=h;}catch(k){console.error("Failed to show error toast:",k);}},[C,e,n?.toastOptions?.error,n?.toastErrorCustomization,z,s.errorType,s.isConnected,x]),N=react.useCallback((a,P,h)=>{H(R,{title:a,rawError:P,errorKey:h,errorType:l});},[R,H,l]);react.useEffect(()=>{if(c&&!w){C(),y.current.clear();return}if(w&&b&&d){if(c&&l!=="switch")return;N(S,b,d);}},[w,c,b,l,S,d,N,C]),react.useEffect(()=>()=>{C(),y.current.clear();},[C]);let I=n?.classNames?.container?n.classNames.container({hasErrors:s.hasAnyError,errorType:s.errorType}):"novacon:p-0 novacon:bg-transparent",D=react.useMemo(()=>{let a=n?.toastCloseButton;return a?({closeToast:P})=>jsxRuntime.jsx(novaCore.ToastCloseButton,{closeToast:P,...a}):novaCore.ToastCloseButton},[n?.toastCloseButton]),$={...{containerId:e,position:r,closeOnClick:false,icon:false,closeButton:D,autoClose:i,hideProgressBar:false,newestOnTop:false,pauseOnFocusLoss:false,draggable:u,pauseOnHover:true,theme:"light",transition:reactToastify.Bounce},...n?.containerProps,className:I};return jsxRuntime.jsx(F,{...$})}Z.displayName="ErrorsProvider";function ee({labels:e,children:r}){let i=react.useMemo(()=>e,[e]);if(process.env.NODE_ENV==="development"){(!e||typeof e!="object")&&console.warn("NovaConnectLabelsProvider: labels prop should be an object");let n=["connectWallet","disconnect","connecting","connected","error","success"].filter(m=>!(m in e));n.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${n.join(", ")}`);}return jsxRuntime.jsx(chunkPZRZVHFC_cjs.g.Provider,{value:i,children:r})}ee.displayName="NovaConnectLabelsProvider";function be(e){let{enabled:r=true,getNonce:i,verifier:u,destroyer:n,domain:m,uri:B,statement:A,expirationTime:W,expirationSeconds:z,notBefore:F,requestId:H,resources:L,onSuccess:p,onError:V}=e,o=chunkEGATOYHY_cjs.d(t=>t.activeConnection),y=chunkEGATOYHY_cjs.d(t=>t.disconnect),v=chunkEGATOYHY_cjs.d(t=>t.isAutoConnectFinished),{signIn:M}=siwxReact.useSiwx(),f=siwxReact.useSiwxSessionStore(t=>t.session),c=siwxReact.useSiwxSessionStore(t=>t.status),w=siwxReact.useSiwxSessionStore(t=>t.reset),b=react.useRef(null),l=react.useRef(false),s=react.useEffectEvent(()=>{w(),n&&n().catch(t=>{console.warn("[NovaSiwxWatcher] Failed to execute session destroyer:",t);});});react.useEffect(()=>{if(!o?.isConnected||!o?.address){if(b.current=null,v===false)return;(c==="authenticated"||f)&&s();}},[o?.isConnected,o?.address,v,c,f]);let O=react.useEffectEvent((t,d)=>o?.connectorType===t&&o.address===d),S=react.useEffectEvent(()=>{if(!(!o?.isConnected||!o.address||!o.signMessage))try{let t={address:String(o.address),chainId:o.chainId,signMessage:o.signMessage,isConnected:o.isConnected},d=siwxReact.getSatelliteSiwxFields(t,{domain:m,uri:B,statement:A,expirationTime:W,expirationSeconds:z,notBefore:F,requestId:H,resources:L});if(c==="authenticated"&&siwxReact.isSessionMatchingConnection(f,t)||b.current===d.address)return;if(b.current=d.address,!u){console.warn("[NovaSiwxWatcher] Verifier not provided, skipping SIWX auto-authentication.");return}let{connectorType:C,address:x}=o,R=N=>{let I=N instanceof Error?N.message:String(N);console.warn("[NovaSiwxWatcher] SIWX authentication rejected or failed:",I),C&&O(C,x)&&y(C),w(),V?.(I);};l.current=!0,M({signer:o.signMessage,verifier:u,getNonce:i,fields:d,onSuccess:p,onError:R}).catch(R).finally(()=>{l.current=!1;});}catch(t){console.warn("[NovaSiwxWatcher] Failed to build SIWX fields:",t);}});return react.useEffect(()=>{!r||!o?.isConnected||!o?.address||!o?.chainId||o.signMessage&&(l.current||c==="building"||c==="signing"||c==="verifying"||S());},[o?.isConnected,o?.address,o?.chainId,o?.signMessage,o?.connectorType,r,c,f?.address]),null}var Xe=({labels:e,children:r})=>jsxRuntime.jsx(ee,{labels:e,children:r}),$e=({customization:e})=>jsxRuntime.jsx(Z,{customization:e}),Ue=(e,r)=>utils.deepMerge(e,r||{}),_e=e=>e,je=e=>e,Je=(e,r,i)=>e;function Qe({labels:e,children:r,appChains:i,solanaRPCUrls:u,transactionPool:n,pulsarAdapter:m,withImpersonated:B,withBalance:A,withChain:W,popularConnectors:z,customConnectorGroups:F,legal:H,siwx:L,customization:p,pagination:V}){let o=chunkEGATOYHY_cjs.d(J=>J.activeConnection),y=chunkEGATOYHY_cjs.d(J=>J.connectionError),{LabelsProvider:v=Xe,ErrorsProvider:M=$e}=p?.components??{},{merge:f=Ue,transform:c=_e}=p?.labels??{},{transform:w=je}=p?.contextValue??{},{providerTree:b=Je}=p?.rendering??{},l=react.useMemo(()=>f(chunkNCRQC2ND_cjs.a,e||{}),[e,f]),[s,O]=react.useState(false),[S,t]=react.useState(false),[d,C]=react.useState(false),[x,R]=react.useState(false),[N,I]=react.useState("idle"),[D,se]=react.useState("connectors"),[$,a]=react.useState(void 0),[P,h]=react.useState(void 0),[k,U]=react.useState(""),[K,_]=react.useState(false),[j,Ne]=react.useState("main"),we={appChains:i,solanaRPCUrls:u,withImpersonated:B,popularConnectors:z,customConnectorGroups:F,withBalance:A,withChain:W,isConnectModalOpen:s,setIsConnectModalOpen:O,isConnectedModalOpen:S,setIsConnectedModalOpen:t,isChainsListOpen:d,setIsChainsListOpen:C,isChainsListOpenMobile:x,setIsChainsListOpenMobile:R,connectedButtonStatus:N,setConnectedButtonStatus:I,connectedModalContentType:j,setConnectedModalContentType:Ne,connectModalContentType:D,setConnectModalContentType:se,selectedAdapter:$,setSelectedAdapter:a,activeConnector:P,setActiveConnector:h,impersonatedAddress:k,setImpersonatedAddress:U,isConnected:K,setIsConnected:_,legal:H},G=react.useMemo(()=>({isConnected:K,activeConnection:o,connectionError:y,modalStates:{isConnectModalOpen:s,isConnectedModalOpen:S,isChainsListOpen:d,isChainsListOpenMobile:x},contentTypes:{connectModal:D,connectedModal:j},statuses:{connectedButton:N}}),[K,o,y,s,S,d,x,D,j,N]),ae=react.useMemo(()=>c(l,G),[l,c,G]),he=w(we,G),ie=jsxRuntime.jsx(M,{customization:p?.errors}),Se=jsxRuntime.jsx(v,{labels:ae,children:r}),ce=i||u?jsxRuntime.jsx(chunkQI2ITZYO_cjs.H,{solanaRPCUrls:u,appChains:i,customization:p?.modals?.connectModal}):null,le=i||u?jsxRuntime.jsx(chunkQI2ITZYO_cjs.t,{solanaRPCUrls:u,appChains:i,transactionPool:n,pulsarAdapter:m,customization:p?.modals?.connectedModal,pagination:V}):null,xe=L?jsxRuntime.jsx(be,{...L}):null,de=jsxRuntime.jsx(chunkPZRZVHFC_cjs.c.Provider,{value:he,children:jsxRuntime.jsxs(v,{labels:ae,children:[xe,ie,r,ce,le]})}),Le=b(de,{ErrorsProvider:ie,LabelsProvider:Se,MainContent:de,ConnectModal:ce||jsxRuntime.jsx(jsxRuntime.Fragment,{}),ConnectedModal:le||jsxRuntime.jsx(jsxRuntime.Fragment,{})},G);return jsxRuntime.jsx(jsxRuntime.Fragment,{children:Le})}Qe.displayName="NovaConnectProvider";Object.defineProperty(exports,"NovaConnectLabelsContext",{enumerable:true,get:function(){return chunkPZRZVHFC_cjs.g}});Object.defineProperty(exports,"NovaConnectProviderContext",{enumerable:true,get:function(){return chunkPZRZVHFC_cjs.c}});Object.defineProperty(exports,"NovaConnectProviderError",{enumerable:true,get:function(){return chunkPZRZVHFC_cjs.b}});Object.defineProperty(exports,"createLabelsSubset",{enumerable:true,get:function(){return chunkPZRZVHFC_cjs.o}});Object.defineProperty(exports,"getAvailableChainIds",{enumerable:true,get:function(){return chunkPZRZVHFC_cjs.v}});Object.defineProperty(exports,"getChainsListByConnectorType",{enumerable:true,get:function(){return chunkPZRZVHFC_cjs.q}});Object.defineProperty(exports,"getConnectChainId",{enumerable:true,get:function(){return chunkPZRZVHFC_cjs.u}});Object.defineProperty(exports,"getFilteredConnectors",{enumerable:true,get:function(){return chunkPZRZVHFC_cjs.y}});Object.defineProperty(exports,"getGroupedConnectors",{enumerable:true,get:function(){return chunkPZRZVHFC_cjs.w}});Object.defineProperty(exports,"getLabelWithFallback",{enumerable:true,get:function(){return chunkPZRZVHFC_cjs.n}});Object.defineProperty(exports,"getWalletChains",{enumerable:true,get:function(){return chunkPZRZVHFC_cjs.t}});Object.defineProperty(exports,"hasAvailableConnectors",{enumerable:true,get:function(){return chunkPZRZVHFC_cjs.x}});Object.defineProperty(exports,"hasConnectorsForAdapter",{enumerable:true,get:function(){return chunkPZRZVHFC_cjs.z}});Object.defineProperty(exports,"hasLabel",{enumerable:true,get:function(){return chunkPZRZVHFC_cjs.k}});Object.defineProperty(exports,"isDefaultLabels",{enumerable:true,get:function(){return chunkPZRZVHFC_cjs.m}});Object.defineProperty(exports,"isEvmChainList",{enumerable:true,get:function(){return chunkPZRZVHFC_cjs.r}});Object.defineProperty(exports,"isSolanaChainList",{enumerable:true,get:function(){return chunkPZRZVHFC_cjs.s}});Object.defineProperty(exports,"useGetWalletNameAndAvatar",{enumerable:true,get:function(){return chunkPZRZVHFC_cjs.a}});Object.defineProperty(exports,"useHasNovaConnectContext",{enumerable:true,get:function(){return chunkPZRZVHFC_cjs.e}});Object.defineProperty(exports,"useLabelsByCategory",{enumerable:true,get:function(){return chunkPZRZVHFC_cjs.l}});Object.defineProperty(exports,"useNovaConnect",{enumerable:true,get:function(){return chunkPZRZVHFC_cjs.d}});Object.defineProperty(exports,"useNovaConnectLabel",{enumerable:true,get:function(){return chunkPZRZVHFC_cjs.i}});Object.defineProperty(exports,"useNovaConnectLabels",{enumerable:true,get:function(){return chunkPZRZVHFC_cjs.h}});Object.defineProperty(exports,"useNovaConnectLabelsSubset",{enumerable:true,get:function(){return chunkPZRZVHFC_cjs.j}});Object.defineProperty(exports,"useNovaConnectOptional",{enumerable:true,get:function(){return chunkPZRZVHFC_cjs.f}});Object.defineProperty(exports,"useNovaSiwx",{enumerable:true,get:function(){return chunkPZRZVHFC_cjs.p}});Object.defineProperty(exports,"useWalletChainsList",{enumerable:true,get:function(){return chunkPZRZVHFC_cjs.A}});Object.defineProperty(exports,"useWalletNativeBalance",{enumerable:true,get:function(){return chunkPZRZVHFC_cjs.B}});exports.ErrorsProvider=Z;exports.NovaConnectLabelsProvider=ee;exports.NovaConnectProvider=Qe;exports.NovaSiwxWatcher=be;
package/dist/index.css CHANGED
@@ -25,6 +25,8 @@
25
25
  --novacon-font-weight-semibold: 600;
26
26
  --novacon-font-weight-bold: 700;
27
27
  --novacon-tracking-wider: 0.05em;
28
+ --novacon-leading-tight: 1.25;
29
+ --novacon-leading-snug: 1.375;
28
30
  --novacon-leading-relaxed: 1.625;
29
31
  --novacon-ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
30
32
  --novacon-animate-spin: spin 1s linear infinite;
@@ -94,6 +96,9 @@
94
96
  .novacon\:top-\[25\%\] {
95
97
  top: 25%;
96
98
  }
99
+ .novacon\:top-full {
100
+ top: 100%;
101
+ }
97
102
  .novacon\:-right-1 {
98
103
  right: calc(var(--novacon-spacing) * -1);
99
104
  }
@@ -106,6 +111,9 @@
106
111
  .novacon\:right-0\.5 {
107
112
  right: calc(var(--novacon-spacing) * 0.5);
108
113
  }
114
+ .novacon\:right-1\.5 {
115
+ right: calc(var(--novacon-spacing) * 1.5);
116
+ }
109
117
  .novacon\:right-2 {
110
118
  right: calc(var(--novacon-spacing) * 2);
111
119
  }
@@ -142,6 +150,9 @@
142
150
  .novacon\:bottom-\[15\%\] {
143
151
  bottom: 15%;
144
152
  }
153
+ .novacon\:bottom-full {
154
+ bottom: 100%;
155
+ }
145
156
  .novacon\:left-1\/2 {
146
157
  left: calc(1 / 2 * 100%);
147
158
  }
@@ -190,6 +201,9 @@
190
201
  .novacon\:mx-4 {
191
202
  margin-inline: calc(var(--novacon-spacing) * 4);
192
203
  }
204
+ .novacon\:-mt-1 {
205
+ margin-top: calc(var(--novacon-spacing) * -1);
206
+ }
193
207
  .novacon\:mt-1 {
194
208
  margin-top: var(--novacon-spacing);
195
209
  }
@@ -295,6 +309,9 @@
295
309
  .novacon\:h-\[2px\] {
296
310
  height: 2px;
297
311
  }
312
+ .novacon\:h-\[18px\] {
313
+ height: 18px;
314
+ }
298
315
  .novacon\:h-\[42px\] {
299
316
  height: 42px;
300
317
  }
@@ -385,6 +402,9 @@
385
402
  .novacon\:w-\[1px\] {
386
403
  width: 1px;
387
404
  }
405
+ .novacon\:w-\[18px\] {
406
+ width: 18px;
407
+ }
388
408
  .novacon\:w-\[42px\] {
389
409
  width: 42px;
390
410
  }
@@ -400,6 +420,13 @@
400
420
  .novacon\:w-full {
401
421
  width: 100%;
402
422
  }
423
+ .novacon\:w-max {
424
+ width: -moz-max-content;
425
+ width: max-content;
426
+ }
427
+ .novacon\:max-w-\[240px\] {
428
+ max-width: 240px;
429
+ }
403
430
  .novacon\:max-w-full {
404
431
  max-width: 100%;
405
432
  }
@@ -418,6 +445,9 @@
418
445
  .novacon\:flex-shrink-0 {
419
446
  flex-shrink: 0;
420
447
  }
448
+ .novacon\:shrink-0 {
449
+ flex-shrink: 0;
450
+ }
421
451
  .novacon\:-translate-x-1\/2 {
422
452
  --tw-translate-x: calc(calc(1 / 2 * 100%) * -1);
423
453
  translate: var(--tw-translate-x) var(--tw-translate-y);
@@ -430,6 +460,9 @@
430
460
  --tw-translate-y: calc(calc(1 / 2 * 100%) * -1);
431
461
  translate: var(--tw-translate-x) var(--tw-translate-y);
432
462
  }
463
+ .novacon\:rotate-45 {
464
+ rotate: 45deg;
465
+ }
433
466
  .novacon\:transform {
434
467
  transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);
435
468
  }
@@ -494,9 +527,15 @@
494
527
  .novacon\:gap-1 {
495
528
  gap: var(--novacon-spacing);
496
529
  }
530
+ .novacon\:gap-1\.5 {
531
+ gap: calc(var(--novacon-spacing) * 1.5);
532
+ }
497
533
  .novacon\:gap-2 {
498
534
  gap: calc(var(--novacon-spacing) * 2);
499
535
  }
536
+ .novacon\:gap-2\.5 {
537
+ gap: calc(var(--novacon-spacing) * 2.5);
538
+ }
500
539
  .novacon\:gap-3 {
501
540
  gap: calc(var(--novacon-spacing) * 3);
502
541
  }
@@ -551,6 +590,12 @@
551
590
  .novacon\:overflow-y-auto {
552
591
  overflow-y: auto;
553
592
  }
593
+ .novacon\:rounded-\[inherit\] {
594
+ border-radius: inherit;
595
+ }
596
+ .novacon\:rounded-\[min\(var\(--tuwa-rounded-corners\)\,5px\)\] {
597
+ border-radius: min(var(--tuwa-rounded-corners), 5px);
598
+ }
554
599
  .novacon\:rounded-\[var\(--tuwa-rounded-corners\)\] {
555
600
  border-radius: var(--tuwa-rounded-corners);
556
601
  }
@@ -565,6 +610,10 @@
565
610
  border-style: var(--tw-border-style);
566
611
  border-width: 2px;
567
612
  }
613
+ .novacon\:border-\[1\.5px\] {
614
+ border-style: var(--tw-border-style);
615
+ border-width: 1.5px;
616
+ }
568
617
  .novacon\:border-t {
569
618
  border-top-style: var(--tw-border-style);
570
619
  border-top-width: 1px;
@@ -646,6 +695,9 @@
646
695
  .novacon\:bg-\[var\(--tuwa-text-accent\)\] {
647
696
  background-color: var(--tuwa-text-accent);
648
697
  }
698
+ .novacon\:bg-\[var\(--tuwa-text-primary\)\] {
699
+ background-color: var(--tuwa-text-primary);
700
+ }
649
701
  .novacon\:bg-\[var\(--tuwa-warning-bg\)\] {
650
702
  background-color: var(--tuwa-warning-bg);
651
703
  }
@@ -795,6 +847,14 @@
795
847
  --tw-leading: var(--novacon-leading-relaxed);
796
848
  line-height: var(--novacon-leading-relaxed);
797
849
  }
850
+ .novacon\:leading-snug {
851
+ --tw-leading: var(--novacon-leading-snug);
852
+ line-height: var(--novacon-leading-snug);
853
+ }
854
+ .novacon\:leading-tight {
855
+ --tw-leading: var(--novacon-leading-tight);
856
+ line-height: var(--novacon-leading-tight);
857
+ }
798
858
  .novacon\:font-bold {
799
859
  --tw-font-weight: var(--novacon-font-weight-bold);
800
860
  font-weight: var(--novacon-font-weight-bold);
@@ -817,6 +877,9 @@
817
877
  .novacon\:whitespace-nowrap {
818
878
  white-space: nowrap;
819
879
  }
880
+ .novacon\:text-\[var\(--tuwa-bg-primary\)\] {
881
+ color: var(--tuwa-bg-primary);
882
+ }
820
883
  .novacon\:text-\[var\(--tuwa-error-text\)\] {
821
884
  color: var(--tuwa-error-text);
822
885
  }
@@ -880,6 +943,10 @@
880
943
  .novacon\:opacity-100 {
881
944
  opacity: 100%;
882
945
  }
946
+ .novacon\:shadow-lg {
947
+ --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
948
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
949
+ }
883
950
  .novacon\:shadow-sm {
884
951
  --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
885
952
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
@@ -907,6 +974,11 @@
907
974
  transition-timing-function: var(--tw-ease, var(--novacon-default-transition-timing-function));
908
975
  transition-duration: var(--tw-duration, var(--novacon-default-transition-duration));
909
976
  }
977
+ .novacon\:transition-\[background-color\,border-color\] {
978
+ transition-property: background-color,border-color;
979
+ transition-timing-function: var(--tw-ease, var(--novacon-default-transition-timing-function));
980
+ transition-duration: var(--tw-duration, var(--novacon-default-transition-duration));
981
+ }
910
982
  .novacon\:transition-all {
911
983
  transition-property: all;
912
984
  transition-timing-function: var(--tw-ease, var(--novacon-default-transition-timing-function));
@@ -962,6 +1034,9 @@
962
1034
  --tw-scale-z: 90%;
963
1035
  scale: var(--tw-scale-x) var(--tw-scale-y);
964
1036
  }
1037
+ .novacon\:group-hover\:border-\[var\(--tuwa-text-accent\)\]:is(:where(.novacon\:group):hover *) {
1038
+ border-color: var(--tuwa-text-accent);
1039
+ }
965
1040
  .novacon\:group-hover\:text-\[var\(--tuwa-text-accent\)\]:is(:where(.novacon\:group):hover *) {
966
1041
  color: var(--tuwa-text-accent);
967
1042
  }
@@ -975,6 +1050,20 @@
975
1050
  opacity: 100%;
976
1051
  }
977
1052
  }
1053
+ .novacon\:peer-focus-visible\:ring-\[length\:var\(--tuwa-ring-width\)\]:is(:where(.novacon\:peer):focus-visible ~ *) {
1054
+ --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(var(--tuwa-ring-width) + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
1055
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
1056
+ }
1057
+ .novacon\:peer-focus-visible\:ring-\[var\(--tuwa-text-accent\)\]:is(:where(.novacon\:peer):focus-visible ~ *) {
1058
+ --tw-ring-color: var(--tuwa-text-accent);
1059
+ }
1060
+ .novacon\:peer-focus-visible\:ring-offset-\[length\:var\(--tuwa-ring-width\)\]:is(:where(.novacon\:peer):focus-visible ~ *) {
1061
+ --tw-ring-offset-width: var(--tuwa-ring-width);
1062
+ --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
1063
+ }
1064
+ .novacon\:peer-focus-visible\:ring-offset-\[var\(--tuwa-bg-primary\)\]:is(:where(.novacon\:peer):focus-visible ~ *) {
1065
+ --tw-ring-offset-color: var(--tuwa-bg-primary);
1066
+ }
978
1067
  .novacon\:placeholder\:text-\[var\(--tuwa-text-secondary\)\]::-moz-placeholder {
979
1068
  color: var(--tuwa-text-secondary);
980
1069
  }
@@ -1144,6 +1233,9 @@
1144
1233
  .novacon\:focus-visible\:ring-\[var\(--tuwa-border-accent\)\]:focus-visible {
1145
1234
  --tw-ring-color: var(--tuwa-border-accent);
1146
1235
  }
1236
+ .novacon\:focus-visible\:ring-\[var\(--tuwa-text-accent\)\]:focus-visible {
1237
+ --tw-ring-color: var(--tuwa-text-accent);
1238
+ }
1147
1239
  .novacon\:focus-visible\:ring-offset-\[length\:var\(--tuwa-ring-width\)\]:focus-visible {
1148
1240
  --tw-ring-offset-width: var(--tuwa-ring-width);
1149
1241
  --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
package/dist/index.d.cts CHANGED
@@ -1,13 +1,13 @@
1
1
  export { UseGetWalletNameAndAvatarOptions, UseNovaSiwxOptions, UseWalletChainsListProps, WalletNameAndAvatarData, useGetWalletNameAndAvatar, useNovaSiwx, useWalletChainsList } from './hooks/index.cjs';
2
- import { N as NovaConnectProviderProps, C as ConnectContentType, a as ConnectedContentType, B as ButtonTxStatus, b as NovaConnectProviderType, I as InitialChains } from './ConnectedModalTxHistory-CNOrs8nI.cjs';
3
- export { A as AllChainConfigs, L as LabelCategory, c as LegalConfig, d as NativeBalanceResult, e as NovaConnectAppChains, f as NovaConnectChainConfigTypes, g as NovaConnectLabelsContext, h as NovaConnectProviderContext, i as NovaConnectProviderError, j as NovaConnectSolanaRPCUrls, k as NovaSiwxWatcher, l as NovaSiwxWatcherProps, U as UseWalletNativeBalanceData, m as UseWalletNativeBalanceState, W as WalletBalance, n as createLabelsSubset, o as getLabelWithFallback, p as hasLabel, q as isDefaultLabels, u as useHasNovaConnectContext, r as useLabelsByCategory, s as useNovaConnect, t as useNovaConnectLabel, v as useNovaConnectLabels, w as useNovaConnectLabelsSubset, x as useNovaConnectOptional, y as useWalletNativeBalance } from './ConnectedModalTxHistory-CNOrs8nI.cjs';
2
+ import { N as NovaConnectProviderProps, C as ConnectContentType, a as ConnectedContentType, B as ButtonTxStatus, b as NovaConnectProviderType, I as InitialChains } from './ConnectedModalTxHistory-CZGzML17.cjs';
3
+ export { A as AllChainConfigs, L as LabelCategory, c as LegalConfig, d as NativeBalanceResult, e as NovaConnectAppChains, f as NovaConnectChainConfigTypes, g as NovaConnectLabelsContext, h as NovaConnectProviderContext, i as NovaConnectProviderError, j as NovaConnectSolanaRPCUrls, k as NovaSiwxWatcher, l as NovaSiwxWatcherProps, U as UseWalletNativeBalanceData, m as UseWalletNativeBalanceState, W as WalletBalance, n as createLabelsSubset, o as getLabelWithFallback, p as hasLabel, q as isDefaultLabels, u as useHasNovaConnectContext, r as useLabelsByCategory, s as useNovaConnect, t as useNovaConnectLabel, v as useNovaConnectLabels, w as useNovaConnectLabelsSubset, x as useNovaConnectOptional, y as useWalletNativeBalance } from './ConnectedModalTxHistory-CZGzML17.cjs';
4
4
  import * as React from 'react';
5
5
  import { ComponentPropsWithoutRef, ComponentType, ReactNode } from 'react';
6
6
  import { ToastCloseButtonProps } from '@tuwaio/nova-core';
7
7
  import { TuwaErrorState, ConnectorType, ChainIdentifierArray, OrbitAdapter } from '@tuwaio/orbit-core';
8
8
  import { ToastPosition, ToastContainer, toast } from 'react-toastify';
9
9
  import { ToastErrorCustomization, ConnectModalCustomization, ConnectedModalCustomization } from './components/index.cjs';
10
- import { N as NovaConnectLabels } from './types-CnOiSyvZ.cjs';
10
+ import { NovaConnectLabels } from './i18n/index.cjs';
11
11
  import { BaseConnector } from '@tuwaio/satellite-core';
12
12
  import { Connector } from '@tuwaio/satellite-react';
13
13
  import '@tuwaio/siwx-react';
@@ -545,4 +545,5 @@ declare function getFilteredConnectors({ connectors, selectedAdapter, }: GetFilt
545
545
  */
546
546
  declare function hasConnectorsForAdapter(connectors: Partial<Record<OrbitAdapter, Connector[]>>, adapter: OrbitAdapter): boolean;
547
547
 
548
- export { ButtonTxStatus, ConnectContentType, ConnectedContentType, ErrorsProvider, type ErrorsProviderContainerProps, type ErrorsProviderCustomization, type ErrorsProviderProps, type ErrorsProviderToastErrorProps, type GetChainsListByConnectorTypeParams, type GetFilteredConnectorsParams, type GetGroupedConnectorsParams, type GroupedConnector, InitialChains, NovaConnectLabelsProvider, type NovaConnectLabelsProviderProps, NovaConnectProvider, type NovaConnectProviderCustomization, type NovaConnectProviderCustomizationContext, type NovaConnectProviderErrorsProviderProps, type NovaConnectProviderLabelsProviderProps, NovaConnectProviderProps, type NovaConnectProviderPropsWithCustomization, NovaConnectProviderType, getAvailableChainIds, getChainsListByConnectorType, getConnectChainId, getFilteredConnectors, getGroupedConnectors, getWalletChains, hasAvailableConnectors, hasConnectorsForAdapter, isEvmChainList, isSolanaChainList };
548
+ export { ButtonTxStatus, ConnectContentType, ConnectedContentType, ErrorsProvider, InitialChains, NovaConnectLabelsProvider, NovaConnectProvider, NovaConnectProviderProps, NovaConnectProviderType, getAvailableChainIds, getChainsListByConnectorType, getConnectChainId, getFilteredConnectors, getGroupedConnectors, getWalletChains, hasAvailableConnectors, hasConnectorsForAdapter, isEvmChainList, isSolanaChainList };
549
+ export type { ErrorsProviderContainerProps, ErrorsProviderCustomization, ErrorsProviderProps, ErrorsProviderToastErrorProps, GetChainsListByConnectorTypeParams, GetFilteredConnectorsParams, GetGroupedConnectorsParams, GroupedConnector, NovaConnectLabelsProviderProps, NovaConnectProviderCustomization, NovaConnectProviderCustomizationContext, NovaConnectProviderErrorsProviderProps, NovaConnectProviderLabelsProviderProps, NovaConnectProviderPropsWithCustomization };
package/dist/index.d.ts CHANGED
@@ -1,13 +1,13 @@
1
1
  export { UseGetWalletNameAndAvatarOptions, UseNovaSiwxOptions, UseWalletChainsListProps, WalletNameAndAvatarData, useGetWalletNameAndAvatar, useNovaSiwx, useWalletChainsList } from './hooks/index.js';
2
- import { N as NovaConnectProviderProps, C as ConnectContentType, a as ConnectedContentType, B as ButtonTxStatus, b as NovaConnectProviderType, I as InitialChains } from './ConnectedModalTxHistory-BNJ-pXsP.js';
3
- export { A as AllChainConfigs, L as LabelCategory, c as LegalConfig, d as NativeBalanceResult, e as NovaConnectAppChains, f as NovaConnectChainConfigTypes, g as NovaConnectLabelsContext, h as NovaConnectProviderContext, i as NovaConnectProviderError, j as NovaConnectSolanaRPCUrls, k as NovaSiwxWatcher, l as NovaSiwxWatcherProps, U as UseWalletNativeBalanceData, m as UseWalletNativeBalanceState, W as WalletBalance, n as createLabelsSubset, o as getLabelWithFallback, p as hasLabel, q as isDefaultLabels, u as useHasNovaConnectContext, r as useLabelsByCategory, s as useNovaConnect, t as useNovaConnectLabel, v as useNovaConnectLabels, w as useNovaConnectLabelsSubset, x as useNovaConnectOptional, y as useWalletNativeBalance } from './ConnectedModalTxHistory-BNJ-pXsP.js';
2
+ import { N as NovaConnectProviderProps, C as ConnectContentType, a as ConnectedContentType, B as ButtonTxStatus, b as NovaConnectProviderType, I as InitialChains } from './ConnectedModalTxHistory-e9frj0Sy.js';
3
+ export { A as AllChainConfigs, L as LabelCategory, c as LegalConfig, d as NativeBalanceResult, e as NovaConnectAppChains, f as NovaConnectChainConfigTypes, g as NovaConnectLabelsContext, h as NovaConnectProviderContext, i as NovaConnectProviderError, j as NovaConnectSolanaRPCUrls, k as NovaSiwxWatcher, l as NovaSiwxWatcherProps, U as UseWalletNativeBalanceData, m as UseWalletNativeBalanceState, W as WalletBalance, n as createLabelsSubset, o as getLabelWithFallback, p as hasLabel, q as isDefaultLabels, u as useHasNovaConnectContext, r as useLabelsByCategory, s as useNovaConnect, t as useNovaConnectLabel, v as useNovaConnectLabels, w as useNovaConnectLabelsSubset, x as useNovaConnectOptional, y as useWalletNativeBalance } from './ConnectedModalTxHistory-e9frj0Sy.js';
4
4
  import * as React from 'react';
5
5
  import { ComponentPropsWithoutRef, ComponentType, ReactNode } from 'react';
6
6
  import { ToastCloseButtonProps } from '@tuwaio/nova-core';
7
7
  import { TuwaErrorState, ConnectorType, ChainIdentifierArray, OrbitAdapter } from '@tuwaio/orbit-core';
8
8
  import { ToastPosition, ToastContainer, toast } from 'react-toastify';
9
9
  import { ToastErrorCustomization, ConnectModalCustomization, ConnectedModalCustomization } from './components/index.js';
10
- import { N as NovaConnectLabels } from './types-CnOiSyvZ.js';
10
+ import { NovaConnectLabels } from './i18n/index.js';
11
11
  import { BaseConnector } from '@tuwaio/satellite-core';
12
12
  import { Connector } from '@tuwaio/satellite-react';
13
13
  import '@tuwaio/siwx-react';
@@ -545,4 +545,5 @@ declare function getFilteredConnectors({ connectors, selectedAdapter, }: GetFilt
545
545
  */
546
546
  declare function hasConnectorsForAdapter(connectors: Partial<Record<OrbitAdapter, Connector[]>>, adapter: OrbitAdapter): boolean;
547
547
 
548
- export { ButtonTxStatus, ConnectContentType, ConnectedContentType, ErrorsProvider, type ErrorsProviderContainerProps, type ErrorsProviderCustomization, type ErrorsProviderProps, type ErrorsProviderToastErrorProps, type GetChainsListByConnectorTypeParams, type GetFilteredConnectorsParams, type GetGroupedConnectorsParams, type GroupedConnector, InitialChains, NovaConnectLabelsProvider, type NovaConnectLabelsProviderProps, NovaConnectProvider, type NovaConnectProviderCustomization, type NovaConnectProviderCustomizationContext, type NovaConnectProviderErrorsProviderProps, type NovaConnectProviderLabelsProviderProps, NovaConnectProviderProps, type NovaConnectProviderPropsWithCustomization, NovaConnectProviderType, getAvailableChainIds, getChainsListByConnectorType, getConnectChainId, getFilteredConnectors, getGroupedConnectors, getWalletChains, hasAvailableConnectors, hasConnectorsForAdapter, isEvmChainList, isSolanaChainList };
548
+ export { ButtonTxStatus, ConnectContentType, ConnectedContentType, ErrorsProvider, InitialChains, NovaConnectLabelsProvider, NovaConnectProvider, NovaConnectProviderProps, NovaConnectProviderType, getAvailableChainIds, getChainsListByConnectorType, getConnectChainId, getFilteredConnectors, getGroupedConnectors, getWalletChains, hasAvailableConnectors, hasConnectorsForAdapter, isEvmChainList, isSolanaChainList };
549
+ export type { ErrorsProviderContainerProps, ErrorsProviderCustomization, ErrorsProviderProps, ErrorsProviderToastErrorProps, GetChainsListByConnectorTypeParams, GetFilteredConnectorsParams, GetGroupedConnectorsParams, GroupedConnector, NovaConnectLabelsProviderProps, NovaConnectProviderCustomization, NovaConnectProviderCustomizationContext, NovaConnectProviderErrorsProviderProps, NovaConnectProviderLabelsProviderProps, NovaConnectProviderPropsWithCustomization };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import {G,t,H}from'./chunk-INTLGQEB.js';import {h,g,c}from'./chunk-IKMNJLDC.js';export{g as NovaConnectLabelsContext,c as NovaConnectProviderContext,b as NovaConnectProviderError,o as createLabelsSubset,v as getAvailableChainIds,q as getChainsListByConnectorType,u as getConnectChainId,y as getFilteredConnectors,w as getGroupedConnectors,n as getLabelWithFallback,t as getWalletChains,x as hasAvailableConnectors,z as hasConnectorsForAdapter,k as hasLabel,m as isDefaultLabels,r as isEvmChainList,s as isSolanaChainList,a as useGetWalletNameAndAvatar,e as useHasNovaConnectContext,l as useLabelsByCategory,d as useNovaConnect,i as useNovaConnectLabel,h as useNovaConnectLabels,j as useNovaConnectLabelsSubset,f as useNovaConnectOptional,p as useNovaSiwx,A as useWalletChainsList,B as useWalletNativeBalance}from'./chunk-IKMNJLDC.js';import {a}from'./chunk-6EDQ7JRZ.js';import {d}from'./chunk-ZVADGOGQ.js';import'./chunk-3LWAAUG4.js';import {ToastCloseButton}from'@tuwaio/nova-core';import {useRef,useCallback,useEffect,useMemo,useEffectEvent,useState}from'react';import {toast,Bounce,ToastContainer}from'react-toastify';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {deepMerge}from'@tuwaio/nova-core/utils';import {useSiwx,useSiwxSessionStore,getSatelliteSiwxFields,isSessionMatchingConnection}from'@tuwaio/siwx-react';var Be=({title:e,rawError:r,onCopyComplete:i,errorType:u,isConnected:n,...m})=>jsx(H,{title:e,rawError:r,onCopyComplete:i,customization:m.customization}),We=e=>{let r=h();return jsx(ToastContainer,{...e,role:"alert","aria-live":"assertive","aria-label":r.somethingWentWrong})},ze=(e,r)=>{e(r.title,r.rawError,r.errorKey);},He=e=>{e();},Ie=(e,r)=>{if(e&&process.env.NODE_ENV==="development"){let i=typeof r=="string"?r:r.message;console.log("Error copied to clipboard:",i.substring(0,100));}},Ae=e=>e,Fe=e=>e;function Z({containerId:e="nova-connect-errors",position:r="top-center",autoClose:i=7e3,draggable:u=false,customization:n}){let m=h(),B=d(a=>a.switchNetworkError),A=d(a=>a.activeConnection),W=d(a=>a.connectionError),{ToastError:z=Be,Container:F=We}=n?.components??{},{showError:H=ze,dismissError:L=He,onCopyComplete:p=Ie}=n?.handlers??{},{errorTitle:V=Ae,errorHash:o=Fe}=n??{},y=useRef(new Set),v=useRef(null),M=!!W,f=!!B,c=!!A?.isConnected,w=M||f,b=W||B||null,l=M?"wallet":f?"switch":null,s={hasWalletError:M,hasSwitchError:f,isConnected:c,hasAnyError:w,primaryError:b,errorType:l},O=m.somethingWentWrong;switch(s.errorType){case "wallet":O=m.connectionError;break;case "switch":O=m.errorWhenChainSwitching;break}let S=V(O,{errorType:s.errorType}),t=s.primaryError?`${s.errorType}-${s.primaryError.message.substring(0,50)}`:null,d$1=o(t,{primaryError:s.primaryError,errorType:s.errorType}),C=useCallback(()=>{L(()=>{v.current&&(toast.dismiss(v.current),v.current=null),toast.dismiss({containerId:e});});},[e,L]),x=useCallback((a,P)=>{p(a,P,l);},[p,l]),R=useCallback((a,P,h)=>{if(C(),!y.current.has(h))try{let k={containerId:e,toastId:h,onClose:()=>{y.current.delete(h),v.current=null;}},U=n?.toastOptions?.error?.({title:a,rawError:P,errorType:s.errorType,isConnected:s.isConnected}),K={...k,...U};toast.error(jsx(z,{title:a,rawError:P,errorType:s.errorType,isConnected:s.isConnected,onCopyComplete:_=>x(_,P),customization:n?.toastErrorCustomization}),K),y.current.add(h),v.current=h;}catch(k){console.error("Failed to show error toast:",k);}},[C,e,n?.toastOptions?.error,n?.toastErrorCustomization,z,s.errorType,s.isConnected,x]),N=useCallback((a,P,h)=>{H(R,{title:a,rawError:P,errorKey:h,errorType:l});},[R,H,l]);useEffect(()=>{if(c&&!w){C(),y.current.clear();return}if(w&&b&&d$1){if(c&&l!=="switch")return;N(S,b,d$1);}},[w,c,b,l,S,d$1,N,C]),useEffect(()=>()=>{C(),y.current.clear();},[C]);let I=n?.classNames?.container?n.classNames.container({hasErrors:s.hasAnyError,errorType:s.errorType}):"novacon:p-0 novacon:bg-transparent",D=useMemo(()=>{let a=n?.toastCloseButton;return a?({closeToast:P})=>jsx(ToastCloseButton,{closeToast:P,...a}):ToastCloseButton},[n?.toastCloseButton]),$={...{containerId:e,position:r,closeOnClick:false,icon:false,closeButton:D,autoClose:i,hideProgressBar:false,newestOnTop:false,pauseOnFocusLoss:false,draggable:u,pauseOnHover:true,theme:"light",transition:Bounce},...n?.containerProps,className:I};return jsx(F,{...$})}Z.displayName="ErrorsProvider";function ee({labels:e,children:r}){let i=useMemo(()=>e,[e]);if(process.env.NODE_ENV==="development"){(!e||typeof e!="object")&&console.warn("NovaConnectLabelsProvider: labels prop should be an object");let n=["connectWallet","disconnect","connecting","connected","error","success"].filter(m=>!(m in e));n.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${n.join(", ")}`);}return jsx(g.Provider,{value:i,children:r})}ee.displayName="NovaConnectLabelsProvider";function be(e){let{enabled:r=true,getNonce:i,verifier:u,destroyer:n,domain:m,uri:B,statement:A,expirationTime:W,expirationSeconds:z,notBefore:F,requestId:H,resources:L,onSuccess:p,onError:V}=e,o=d(t=>t.activeConnection),y=d(t=>t.disconnect),v=d(t=>t.isAutoConnectFinished),{signIn:M}=useSiwx(),f=useSiwxSessionStore(t=>t.session),c=useSiwxSessionStore(t=>t.status),w=useSiwxSessionStore(t=>t.reset),b=useRef(null),l=useRef(false),s=useEffectEvent(()=>{w(),n&&n().catch(t=>{console.warn("[NovaSiwxWatcher] Failed to execute session destroyer:",t);});});useEffect(()=>{if(!o?.isConnected||!o?.address){if(b.current=null,v===false)return;(c==="authenticated"||f)&&s();}},[o?.isConnected,o?.address,v,c,f]);let O=useEffectEvent((t,d)=>o?.connectorType===t&&o.address===d),S=useEffectEvent(()=>{if(!(!o?.isConnected||!o.address||!o.signMessage))try{let t={address:String(o.address),chainId:o.chainId,signMessage:o.signMessage,isConnected:o.isConnected},d=getSatelliteSiwxFields(t,{domain:m,uri:B,statement:A,expirationTime:W,expirationSeconds:z,notBefore:F,requestId:H,resources:L});if(c==="authenticated"&&isSessionMatchingConnection(f,t)||b.current===d.address)return;if(b.current=d.address,!u){console.warn("[NovaSiwxWatcher] Verifier not provided, skipping SIWX auto-authentication.");return}let{connectorType:C,address:x}=o,R=N=>{let I=N instanceof Error?N.message:String(N);console.warn("[NovaSiwxWatcher] SIWX authentication rejected or failed:",I),C&&O(C,x)&&y(C),w(),V?.(I);};l.current=!0,M({signer:o.signMessage,verifier:u,getNonce:i,fields:d,onSuccess:p,onError:R}).catch(R).finally(()=>{l.current=!1;});}catch(t){console.warn("[NovaSiwxWatcher] Failed to build SIWX fields:",t);}});return useEffect(()=>{!r||!o?.isConnected||!o?.address||!o?.chainId||o.signMessage&&(l.current||c==="building"||c==="signing"||c==="verifying"||S());},[o?.isConnected,o?.address,o?.chainId,o?.signMessage,o?.connectorType,r,c,f?.address]),null}var Xe=({labels:e,children:r})=>jsx(ee,{labels:e,children:r}),$e=({customization:e})=>jsx(Z,{customization:e}),Ue=(e,r)=>deepMerge(e,r||{}),_e=e=>e,je=e=>e,Je=(e,r,i)=>e;function Qe({labels:e,children:r,appChains:i,solanaRPCUrls:u,transactionPool:n,pulsarAdapter:m,withImpersonated:B,withBalance:A,withChain:W,popularConnectors:z,customConnectorGroups:F,legal:H,siwx:L,customization:p,pagination:V}){let o=d(J=>J.activeConnection),y=d(J=>J.connectionError),{LabelsProvider:v=Xe,ErrorsProvider:M=$e}=p?.components??{},{merge:f=Ue,transform:c$1=_e}=p?.labels??{},{transform:w=je}=p?.contextValue??{},{providerTree:b=Je}=p?.rendering??{},l=useMemo(()=>f(a,e||{}),[e,f]),[s,O]=useState(false),[S,t$1]=useState(false),[d$1,C]=useState(false),[x,R]=useState(false),[N,I]=useState("idle"),[D,se]=useState("connectors"),[$,a$1]=useState(void 0),[P,h]=useState(void 0),[k,U]=useState(""),[K,_]=useState(false),[j,Ne]=useState("main"),we={appChains:i,solanaRPCUrls:u,withImpersonated:B,popularConnectors:z,customConnectorGroups:F,withBalance:A,withChain:W,isConnectModalOpen:s,setIsConnectModalOpen:O,isConnectedModalOpen:S,setIsConnectedModalOpen:t$1,isChainsListOpen:d$1,setIsChainsListOpen:C,isChainsListOpenMobile:x,setIsChainsListOpenMobile:R,connectedButtonStatus:N,setConnectedButtonStatus:I,connectedModalContentType:j,setConnectedModalContentType:Ne,connectModalContentType:D,setConnectModalContentType:se,selectedAdapter:$,setSelectedAdapter:a$1,activeConnector:P,setActiveConnector:h,impersonatedAddress:k,setImpersonatedAddress:U,isConnected:K,setIsConnected:_,legal:H},G$1=useMemo(()=>({isConnected:K,activeConnection:o,connectionError:y,modalStates:{isConnectModalOpen:s,isConnectedModalOpen:S,isChainsListOpen:d$1,isChainsListOpenMobile:x},contentTypes:{connectModal:D,connectedModal:j},statuses:{connectedButton:N}}),[K,o,y,s,S,d$1,x,D,j,N]),ae=useMemo(()=>c$1(l,G$1),[l,c$1,G$1]),he=w(we,G$1),ie=jsx(M,{customization:p?.errors}),Se=jsx(v,{labels:ae,children:r}),ce=i||u?jsx(G,{solanaRPCUrls:u,appChains:i,customization:p?.modals?.connectModal}):null,le=i||u?jsx(t,{solanaRPCUrls:u,appChains:i,transactionPool:n,pulsarAdapter:m,customization:p?.modals?.connectedModal,pagination:V}):null,xe=L?jsx(be,{...L}):null,de=jsx(c.Provider,{value:he,children:jsxs(v,{labels:ae,children:[xe,ie,r,ce,le]})}),Le=b(de,{ErrorsProvider:ie,LabelsProvider:Se,MainContent:de,ConnectModal:ce||jsx(Fragment,{}),ConnectedModal:le||jsx(Fragment,{})},G$1);return jsx(Fragment,{children:Le})}Qe.displayName="NovaConnectProvider";export{Z as ErrorsProvider,ee as NovaConnectLabelsProvider,Qe as NovaConnectProvider,be as NovaSiwxWatcher};
1
+ import {H,t,I}from'./chunk-XWM2T5W4.js';import {h,g,c}from'./chunk-DKUNTLIC.js';export{g as NovaConnectLabelsContext,c as NovaConnectProviderContext,b as NovaConnectProviderError,o as createLabelsSubset,v as getAvailableChainIds,q as getChainsListByConnectorType,u as getConnectChainId,y as getFilteredConnectors,w as getGroupedConnectors,n as getLabelWithFallback,t as getWalletChains,x as hasAvailableConnectors,z as hasConnectorsForAdapter,k as hasLabel,m as isDefaultLabels,r as isEvmChainList,s as isSolanaChainList,a as useGetWalletNameAndAvatar,e as useHasNovaConnectContext,l as useLabelsByCategory,d as useNovaConnect,i as useNovaConnectLabel,h as useNovaConnectLabels,j as useNovaConnectLabelsSubset,f as useNovaConnectOptional,p as useNovaSiwx,A as useWalletChainsList,B as useWalletNativeBalance}from'./chunk-DKUNTLIC.js';import {a}from'./chunk-JTMEDBC3.js';import {d}from'./chunk-ZVADGOGQ.js';import'./chunk-3LWAAUG4.js';import {ToastCloseButton}from'@tuwaio/nova-core';import {useRef,useCallback,useEffect,useMemo,useEffectEvent,useState}from'react';import {toast,Bounce,ToastContainer}from'react-toastify';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {deepMerge}from'@tuwaio/nova-core/utils';import {useSiwx,useSiwxSessionStore,getSatelliteSiwxFields,isSessionMatchingConnection}from'@tuwaio/siwx-react';var Be=({title:e,rawError:r,onCopyComplete:i,errorType:u,isConnected:n,...m})=>jsx(I,{title:e,rawError:r,onCopyComplete:i,customization:m.customization}),We=e=>{let r=h();return jsx(ToastContainer,{...e,role:"alert","aria-live":"assertive","aria-label":r.somethingWentWrong})},ze=(e,r)=>{e(r.title,r.rawError,r.errorKey);},He=e=>{e();},Ie=(e,r)=>{if(e&&process.env.NODE_ENV==="development"){let i=typeof r=="string"?r:r.message;console.log("Error copied to clipboard:",i.substring(0,100));}},Ae=e=>e,Fe=e=>e;function Z({containerId:e="nova-connect-errors",position:r="top-center",autoClose:i=7e3,draggable:u=false,customization:n}){let m=h(),B=d(a=>a.switchNetworkError),A=d(a=>a.activeConnection),W=d(a=>a.connectionError),{ToastError:z=Be,Container:F=We}=n?.components??{},{showError:H=ze,dismissError:L=He,onCopyComplete:p=Ie}=n?.handlers??{},{errorTitle:V=Ae,errorHash:o=Fe}=n??{},y=useRef(new Set),v=useRef(null),M=!!W,f=!!B,c=!!A?.isConnected,w=M||f,b=W||B||null,l=M?"wallet":f?"switch":null,s={hasWalletError:M,hasSwitchError:f,isConnected:c,hasAnyError:w,primaryError:b,errorType:l},O=m.somethingWentWrong;switch(s.errorType){case "wallet":O=m.connectionError;break;case "switch":O=m.errorWhenChainSwitching;break}let S=V(O,{errorType:s.errorType}),t=s.primaryError?`${s.errorType}-${s.primaryError.message.substring(0,50)}`:null,d$1=o(t,{primaryError:s.primaryError,errorType:s.errorType}),C=useCallback(()=>{L(()=>{v.current&&(toast.dismiss(v.current),v.current=null),toast.dismiss({containerId:e});});},[e,L]),x=useCallback((a,P)=>{p(a,P,l);},[p,l]),R=useCallback((a,P,h)=>{if(C(),!y.current.has(h))try{let k={containerId:e,toastId:h,onClose:()=>{y.current.delete(h),v.current=null;}},U=n?.toastOptions?.error?.({title:a,rawError:P,errorType:s.errorType,isConnected:s.isConnected}),K={...k,...U};toast.error(jsx(z,{title:a,rawError:P,errorType:s.errorType,isConnected:s.isConnected,onCopyComplete:_=>x(_,P),customization:n?.toastErrorCustomization}),K),y.current.add(h),v.current=h;}catch(k){console.error("Failed to show error toast:",k);}},[C,e,n?.toastOptions?.error,n?.toastErrorCustomization,z,s.errorType,s.isConnected,x]),N=useCallback((a,P,h)=>{H(R,{title:a,rawError:P,errorKey:h,errorType:l});},[R,H,l]);useEffect(()=>{if(c&&!w){C(),y.current.clear();return}if(w&&b&&d$1){if(c&&l!=="switch")return;N(S,b,d$1);}},[w,c,b,l,S,d$1,N,C]),useEffect(()=>()=>{C(),y.current.clear();},[C]);let I=n?.classNames?.container?n.classNames.container({hasErrors:s.hasAnyError,errorType:s.errorType}):"novacon:p-0 novacon:bg-transparent",D=useMemo(()=>{let a=n?.toastCloseButton;return a?({closeToast:P})=>jsx(ToastCloseButton,{closeToast:P,...a}):ToastCloseButton},[n?.toastCloseButton]),$={...{containerId:e,position:r,closeOnClick:false,icon:false,closeButton:D,autoClose:i,hideProgressBar:false,newestOnTop:false,pauseOnFocusLoss:false,draggable:u,pauseOnHover:true,theme:"light",transition:Bounce},...n?.containerProps,className:I};return jsx(F,{...$})}Z.displayName="ErrorsProvider";function ee({labels:e,children:r}){let i=useMemo(()=>e,[e]);if(process.env.NODE_ENV==="development"){(!e||typeof e!="object")&&console.warn("NovaConnectLabelsProvider: labels prop should be an object");let n=["connectWallet","disconnect","connecting","connected","error","success"].filter(m=>!(m in e));n.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${n.join(", ")}`);}return jsx(g.Provider,{value:i,children:r})}ee.displayName="NovaConnectLabelsProvider";function be(e){let{enabled:r=true,getNonce:i,verifier:u,destroyer:n,domain:m,uri:B,statement:A,expirationTime:W,expirationSeconds:z,notBefore:F,requestId:H,resources:L,onSuccess:p,onError:V}=e,o=d(t=>t.activeConnection),y=d(t=>t.disconnect),v=d(t=>t.isAutoConnectFinished),{signIn:M}=useSiwx(),f=useSiwxSessionStore(t=>t.session),c=useSiwxSessionStore(t=>t.status),w=useSiwxSessionStore(t=>t.reset),b=useRef(null),l=useRef(false),s=useEffectEvent(()=>{w(),n&&n().catch(t=>{console.warn("[NovaSiwxWatcher] Failed to execute session destroyer:",t);});});useEffect(()=>{if(!o?.isConnected||!o?.address){if(b.current=null,v===false)return;(c==="authenticated"||f)&&s();}},[o?.isConnected,o?.address,v,c,f]);let O=useEffectEvent((t,d)=>o?.connectorType===t&&o.address===d),S=useEffectEvent(()=>{if(!(!o?.isConnected||!o.address||!o.signMessage))try{let t={address:String(o.address),chainId:o.chainId,signMessage:o.signMessage,isConnected:o.isConnected},d=getSatelliteSiwxFields(t,{domain:m,uri:B,statement:A,expirationTime:W,expirationSeconds:z,notBefore:F,requestId:H,resources:L});if(c==="authenticated"&&isSessionMatchingConnection(f,t)||b.current===d.address)return;if(b.current=d.address,!u){console.warn("[NovaSiwxWatcher] Verifier not provided, skipping SIWX auto-authentication.");return}let{connectorType:C,address:x}=o,R=N=>{let I=N instanceof Error?N.message:String(N);console.warn("[NovaSiwxWatcher] SIWX authentication rejected or failed:",I),C&&O(C,x)&&y(C),w(),V?.(I);};l.current=!0,M({signer:o.signMessage,verifier:u,getNonce:i,fields:d,onSuccess:p,onError:R}).catch(R).finally(()=>{l.current=!1;});}catch(t){console.warn("[NovaSiwxWatcher] Failed to build SIWX fields:",t);}});return useEffect(()=>{!r||!o?.isConnected||!o?.address||!o?.chainId||o.signMessage&&(l.current||c==="building"||c==="signing"||c==="verifying"||S());},[o?.isConnected,o?.address,o?.chainId,o?.signMessage,o?.connectorType,r,c,f?.address]),null}var Xe=({labels:e,children:r})=>jsx(ee,{labels:e,children:r}),$e=({customization:e})=>jsx(Z,{customization:e}),Ue=(e,r)=>deepMerge(e,r||{}),_e=e=>e,je=e=>e,Je=(e,r,i)=>e;function Qe({labels:e,children:r,appChains:i,solanaRPCUrls:u,transactionPool:n,pulsarAdapter:m,withImpersonated:B,withBalance:A,withChain:W,popularConnectors:z,customConnectorGroups:F,legal:H$1,siwx:L,customization:p,pagination:V}){let o=d(J=>J.activeConnection),y=d(J=>J.connectionError),{LabelsProvider:v=Xe,ErrorsProvider:M=$e}=p?.components??{},{merge:f=Ue,transform:c$1=_e}=p?.labels??{},{transform:w=je}=p?.contextValue??{},{providerTree:b=Je}=p?.rendering??{},l=useMemo(()=>f(a,e||{}),[e,f]),[s,O]=useState(false),[S,t$1]=useState(false),[d$1,C]=useState(false),[x,R]=useState(false),[N,I]=useState("idle"),[D,se]=useState("connectors"),[$,a$1]=useState(void 0),[P,h]=useState(void 0),[k,U]=useState(""),[K,_]=useState(false),[j,Ne]=useState("main"),we={appChains:i,solanaRPCUrls:u,withImpersonated:B,popularConnectors:z,customConnectorGroups:F,withBalance:A,withChain:W,isConnectModalOpen:s,setIsConnectModalOpen:O,isConnectedModalOpen:S,setIsConnectedModalOpen:t$1,isChainsListOpen:d$1,setIsChainsListOpen:C,isChainsListOpenMobile:x,setIsChainsListOpenMobile:R,connectedButtonStatus:N,setConnectedButtonStatus:I,connectedModalContentType:j,setConnectedModalContentType:Ne,connectModalContentType:D,setConnectModalContentType:se,selectedAdapter:$,setSelectedAdapter:a$1,activeConnector:P,setActiveConnector:h,impersonatedAddress:k,setImpersonatedAddress:U,isConnected:K,setIsConnected:_,legal:H$1},G=useMemo(()=>({isConnected:K,activeConnection:o,connectionError:y,modalStates:{isConnectModalOpen:s,isConnectedModalOpen:S,isChainsListOpen:d$1,isChainsListOpenMobile:x},contentTypes:{connectModal:D,connectedModal:j},statuses:{connectedButton:N}}),[K,o,y,s,S,d$1,x,D,j,N]),ae=useMemo(()=>c$1(l,G),[l,c$1,G]),he=w(we,G),ie=jsx(M,{customization:p?.errors}),Se=jsx(v,{labels:ae,children:r}),ce=i||u?jsx(H,{solanaRPCUrls:u,appChains:i,customization:p?.modals?.connectModal}):null,le=i||u?jsx(t,{solanaRPCUrls:u,appChains:i,transactionPool:n,pulsarAdapter:m,customization:p?.modals?.connectedModal,pagination:V}):null,xe=L?jsx(be,{...L}):null,de=jsx(c.Provider,{value:he,children:jsxs(v,{labels:ae,children:[xe,ie,r,ce,le]})}),Le=b(de,{ErrorsProvider:ie,LabelsProvider:Se,MainContent:de,ConnectModal:ce||jsx(Fragment,{}),ConnectedModal:le||jsx(Fragment,{})},G);return jsx(Fragment,{children:Le})}Qe.displayName="NovaConnectProvider";export{Z as ErrorsProvider,ee as NovaConnectLabelsProvider,Qe as NovaConnectProvider,be as NovaSiwxWatcher};
@@ -187,13 +187,29 @@ type NovaConnectLabels = {
187
187
  impersonateAddressNotCorrect: string;
188
188
  /** Error of the impersonation form while a wallet is connected */
189
189
  impersonateAddressConnected: string;
190
- /** Start of the legal disclaimer */
190
+ /** Label of the "Remember this wallet" checkbox under the wallet list */
191
+ rememberWallet: string;
192
+ /** What the checkbox does: the tooltip of its info button and its description for screen readers */
193
+ rememberWalletHint: string;
194
+ /** Accessible name of the info button next to the checkbox */
195
+ rememberWalletInfo: string;
196
+ /** Start of the sentence of the legal disclaimer with the terms link: what connecting a wallet agrees to */
191
197
  legalIntro: string;
192
198
  /** Link text of the terms of service (default: `Terms of Service`) */
193
199
  legalTerms: string;
194
200
  /** Link text of the privacy policy (default: `Privacy Policy`) */
195
201
  legalPrivacy: string;
196
- /** Word between the two legal links (default: `and`) */
202
+ /**
203
+ * Start of the sentence with the privacy policy link (default: `See our`). The privacy policy is information to
204
+ * read, not something the user agrees to, so it has a sentence of its own.
205
+ */
206
+ legalPrivacyIntro: string;
207
+ /**
208
+ * Word that once joined the two legal links (default: `and`).
209
+ *
210
+ * @deprecated Not used by the default legal disclaimer since the privacy policy has a sentence of its own; kept for
211
+ * custom components that read it.
212
+ */
197
213
  legalAnd: string;
198
214
  /** Aria-roledescription of the About wallets carousel (default: `carousel`) */
199
215
  carousel: string;
@@ -187,13 +187,29 @@ type NovaConnectLabels = {
187
187
  impersonateAddressNotCorrect: string;
188
188
  /** Error of the impersonation form while a wallet is connected */
189
189
  impersonateAddressConnected: string;
190
- /** Start of the legal disclaimer */
190
+ /** Label of the "Remember this wallet" checkbox under the wallet list */
191
+ rememberWallet: string;
192
+ /** What the checkbox does: the tooltip of its info button and its description for screen readers */
193
+ rememberWalletHint: string;
194
+ /** Accessible name of the info button next to the checkbox */
195
+ rememberWalletInfo: string;
196
+ /** Start of the sentence of the legal disclaimer with the terms link: what connecting a wallet agrees to */
191
197
  legalIntro: string;
192
198
  /** Link text of the terms of service (default: `Terms of Service`) */
193
199
  legalTerms: string;
194
200
  /** Link text of the privacy policy (default: `Privacy Policy`) */
195
201
  legalPrivacy: string;
196
- /** Word between the two legal links (default: `and`) */
202
+ /**
203
+ * Start of the sentence with the privacy policy link (default: `See our`). The privacy policy is information to
204
+ * read, not something the user agrees to, so it has a sentence of its own.
205
+ */
206
+ legalPrivacyIntro: string;
207
+ /**
208
+ * Word that once joined the two legal links (default: `and`).
209
+ *
210
+ * @deprecated Not used by the default legal disclaimer since the privacy policy has a sentence of its own; kept for
211
+ * custom components that read it.
212
+ */
197
213
  legalAnd: string;
198
214
  /** Aria-roledescription of the About wallets carousel (default: `carousel`) */
199
215
  carousel: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tuwaio/nova-connect",
3
- "version": "0.9.2",
3
+ "version": "0.10.1",
4
4
  "private": false,
5
5
  "author": "Oleksandr Tkach",
6
6
  "license": "Apache-2.0",
@@ -94,7 +94,7 @@
94
94
  "@tuwaio/orbit-evm": ">=0.3",
95
95
  "@tuwaio/orbit-solana": ">=0.4",
96
96
  "@tuwaio/pulsar-core": ">=0.10",
97
- "@tuwaio/satellite-core": ">=0.7",
97
+ "@tuwaio/satellite-core": ">=0.10",
98
98
  "@tuwaio/satellite-evm": ">=0.7",
99
99
  "@tuwaio/satellite-react": ">=0.7",
100
100
  "@tuwaio/satellite-solana": ">=0.7",
@@ -164,23 +164,23 @@
164
164
  "devDependencies": {
165
165
  "@emotion/is-prop-valid": "^1.4.0",
166
166
  "@heroicons/react": "^2.2.0",
167
- "@radix-ui/react-dialog": "^1.2.0",
168
- "@radix-ui/react-select": "^2.3.8",
169
- "@solana/kit": "^8.4.0",
167
+ "@radix-ui/react-dialog": "^1.3.1",
168
+ "@radix-ui/react-select": "^2.4.1",
169
+ "@solana/kit": "^8.5.0",
170
170
  "@tailwindcss/postcss": "^4.3.3",
171
171
  "@tailwindcss/vite": "^4.3.3",
172
- "@tuwaio/nova-core": "^0.9.3",
173
- "@tuwaio/nova-transactions": "^0.9.1",
174
- "@tuwaio/orbit-core": "0.5.1",
175
- "@tuwaio/orbit-evm": "0.3.3",
176
- "@tuwaio/orbit-solana": "0.5.0",
177
- "@tuwaio/pulsar-core": "0.10.0",
178
- "@tuwaio/satellite-core": "0.9.0",
179
- "@tuwaio/satellite-evm": "0.9.0",
180
- "@tuwaio/satellite-react": "0.9.0",
181
- "@tuwaio/satellite-solana": "0.9.0",
172
+ "@tuwaio/nova-core": "^0.10.0",
173
+ "@tuwaio/nova-transactions": "^0.10.0",
174
+ "@tuwaio/orbit-core": "0.6.0",
175
+ "@tuwaio/orbit-evm": "0.4.0",
176
+ "@tuwaio/orbit-solana": "0.6.0",
177
+ "@tuwaio/pulsar-core": "0.10.1",
178
+ "@tuwaio/satellite-core": "0.10.0",
179
+ "@tuwaio/satellite-evm": "0.10.0",
180
+ "@tuwaio/satellite-react": "0.10.0",
181
+ "@tuwaio/satellite-solana": "0.10.0",
182
182
  "@tuwaio/siwx-react": "0.6.2",
183
- "@types/node": "^26.6.4",
183
+ "@types/node": "^26.6.5",
184
184
  "@types/react": "^19.3.0",
185
185
  "@wagmi/core": "^3.6.5",
186
186
  "@wallet-standard/react": "^1.0.3",
@@ -190,18 +190,18 @@
190
190
  "clsx": "^2.1.1",
191
191
  "dayjs": "^1.11.23",
192
192
  "ethereum-blockies-base64": "^1.0.2",
193
- "framer-motion": "14.0.0",
193
+ "framer-motion": "14.3.0",
194
194
  "immer": "^11.1.21",
195
- "postcss": "^8.5.29",
195
+ "postcss": "^8.5.30",
196
196
  "postcss-cli": "^12.0.0",
197
- "react": "^19.3.0",
197
+ "react": "^19.3.1",
198
198
  "react-toastify": "^11.1.0",
199
199
  "tailwind-merge": "^3.7.0",
200
200
  "tailwindcss": "^4.3.3",
201
- "tsup": "^8.5.1",
201
+ "tsup": "^9.0.0",
202
202
  "tw-animate-css": "^1.4.0",
203
203
  "typescript": "6.0.3",
204
- "viem": "^2.57.3",
204
+ "viem": "^2.57.7",
205
205
  "zustand": "^5.0.15"
206
206
  },
207
207
  "scripts": {