UNPKG

@tuwaio/nova-transactions

Version:

A React component library that provides the UI for @tuwaio/pulsar-core. Includes components, providers, and i18n support for transaction tracking.

16 lines 32.1 kB
'use strict';var solid=require('@heroicons/react/24/solid'),novaCore=require('@tuwaio/nova-core'),react=require('react'),jsxRuntime=require('react/jsx-runtime'),pulsarCore=require('@tuwaio/pulsar-core');require('react-toastify');var reactWeb3Icons=require('@bgd-labs/react-web3-icons'),utils=require('@bgd-labs/react-web3-icons/dist/utils'),orbitCore=require('@tuwaio/orbit-core'),It=require('dayjs'),Qo=require('dayjs/plugin/relativeTime');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var It__default=/*#__PURE__*/_interopDefault(It);var Qo__default=/*#__PURE__*/_interopDefault(Qo);var J={transactionsModal:{history:{title:"Transactions History",connectWalletTitle:"Connect Wallet",connectWalletMessage:"Please connect your wallet to see your past activity.",noTransactionsTitle:"No Transactions Yet",noTransactionsMessage:"Once you interact with the app, your transaction history will appear here."}},toast:{openTransactionsInfo:"Open transactions"},statuses:{pending:"Pending",success:"Success",failed:"Failed",reverted:"Reverted",replaced:"Replaced",unknown:"Unknown",confirmationsLabel:"Confirmations"},hashLabels:{gelato:"Gelato Task ID",safe:"Safe Tx Hash",original:"Original Tx Hash",replaced:"Replaced Tx Hash",default:"Tx Hash",recentBlockhash:"Recent Blockhash",solana:"Signature"},txInfo:{started:"Started",network:"Network",slot:"Slot"},txError:{title:"Error",copied:"Copied!"},trackingModal:{title:"Transaction Overview",processing:"Processing...",close:"Close",allTransactions:"All transactions",retry:"Retry",progressIndicator:{created:"Created",processing:"Processing",succeed:"Succeed"}},trackedTxButton:{loading:"Processing...",succeed:"Success",failed:"Failed",replaced:"Replaced"},actions:{copy:"Copy address",viewOnExplorer:"View on explorer",close:"Close",cancel:"Cancel",speedUp:"Speed up"}};var Et=react.createContext(J);var v=()=>react.useContext(Et);({[pulsarCore.TransactionStatus.Success]:"success",[pulsarCore.TransactionStatus.Failed]:"error",[pulsarCore.TransactionStatus.Replaced]:"info"});function D({label:t,hash:o,explorerUrl:n,variant:c="default",className:r}){let{isCopied:l,copy:s}=novaCore.useCopyToClipboard(),{actions:i,txError:p}=v(),a=novaCore.cn("novatx:flex novatx:items-center novatx:justify-between",{"novatx:text-sm":c==="default","novatx:text-xs":c==="compact"},r),e=novaCore.cn("novatx:pr-1",{"novatx:font-bold novatx:text-[var(--tuwa-text-primary)]":c==="default","novatx:font-medium novatx:text-[var(--tuwa-text-secondary)]":c==="compact"}),x=jsxRuntime.jsx("span",{className:"novatx:font-mono",children:novaCore.textCenterEllipsis(o,5,5)});return jsxRuntime.jsxs("div",{className:a,children:[t&&jsxRuntime.jsxs("span",{className:e,children:[t,":"]}),jsxRuntime.jsxs("div",{className:"novatx:flex novatx:items-center novatx:gap-x-2",children:[n?jsxRuntime.jsxs("a",{href:n,target:"_blank",rel:"noopener noreferrer",className:"novatx:flex novatx:items-center novatx:gap-x-1 novatx:text-[var(--tuwa-text-accent)] novatx:transition-colors novatx:hover:underline",title:i.viewOnExplorer,"aria-label":i.viewOnExplorer,children:[x,jsxRuntime.jsx(solid.ArrowTopRightOnSquareIcon,{className:"novatx:h-4 novatx:w-4"})]}):jsxRuntime.jsx("span",{className:"novatx:text-[var(--tuwa-text-primary)]",children:x}),jsxRuntime.jsx("button",{type:"button",onClick:()=>s(o),className:"novatx:cursor-pointer novatx:text-[var(--tuwa-text-tertiary)] novatx:transition-colors novatx:hover:text-[var(--tuwa-text-secondary)]",title:l?p.copied:i.copy,"aria-label":l?p.copied:i.copy,children:l?jsxRuntime.jsx(solid.CheckIcon,{className:"novatx:h-4 novatx:w-4 novatx:text-[var(--tuwa-success-icon)]"}):jsxRuntime.jsx(solid.DocumentDuplicateIcon,{className:"novatx:h-4 novatx:w-4"})})]})]})}var xt={[pulsarCore.TransactionStatus.Success]:{index:1,colorClass:"novatx:text-[var(--tuwa-success-text)]"},[pulsarCore.TransactionStatus.Failed]:{index:2,colorClass:"novatx:text-[var(--tuwa-error-text)]"},[pulsarCore.TransactionStatus.Replaced]:{index:3,colorClass:"novatx:text-[var(--tuwa-text-secondary)]"},default:{index:0,colorClass:"novatx:text-[var(--tuwa-text-primary)]"}};function S({txStatus:t,source:o,fallback:n,variant:c,className:r,applyColor:l=false}){let s,i="";if(typeof o=="string")s=o;else if(Array.isArray(o)){let e=xt[t||"default"]??xt.default;s=o[e.index],l&&(i=e.colorClass);}else s=n;return s?jsxRuntime.jsx("div",{className:novaCore.cn(c==="title"?"novatx:text-sm novatx:font-semibold novatx:text-[var(--tuwa-text-primary)]":"novatx:mt-1 novatx:text-xs novatx:text-[var(--tuwa-text-secondary)]",i,r),children:s}):null}function R({tx:t,adapter:o,variant:n="toast",className:c,renderHashLink:r,confirmations:l}){let{hashLabels:s,statuses:i}=v(),p=orbitCore.selectAdapterByKey({adapterKey:t.adapter,adapter:o});if(!p)return null;let a=f=>r?r(f):jsxRuntime.jsx(D,{...f}),e=n==="toast"?"novatx:mt-2 novatx:flex novatx:w-full novatx:flex-col novatx:gap-y-2 novatx:border-t novatx:border-[var(--tuwa-border-primary)] novatx:pt-2":"novatx:flex novatx:w-full novatx:flex-col novatx:gap-y-2",x=s[String(t.tracker)],g=x?a({label:x,hash:t.txKey,variant:t.tracker!==pulsarCore.TransactionTracker.Solana?"compact":"default",explorerUrl:p.getExplorerTxUrl&&t.tracker===pulsarCore.TransactionTracker.Solana?p?.getExplorerTxUrl(t):void 0}):null,u=(()=>{let f=t.hash,T=t.replacedTxHash;return !f&&!T?null:T?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[f&&a({label:s.original,hash:f,variant:"compact"}),typeof p.getExplorerTxUrl<"u"&&a({label:s.replaced,hash:T,explorerUrl:p.getExplorerTxUrl(t)})]}):f&&typeof p.getExplorerTxUrl<"u"&&a({label:s.default,hash:f,explorerUrl:p.getExplorerTxUrl(t)})})(),m=x&&x!==s.default&&t.txKey!==t.hash;return jsxRuntime.jsxs("div",{className:novaCore.cn(e,c),children:[m&&g,u,typeof l=="number"&&jsxRuntime.jsxs("p",{className:"novatx:text-xs novatx:text-[var(--tuwa-text-tertiary)]",children:[i.confirmationsLabel,": ",l]})]})}var ao=t=>({Pending:{label:t.pending,Icon:solid.ArrowPathIcon,badgeClasses:"novatx:bg-[var(--tuwa-pending-bg)] novatx:text-[var(--tuwa-pending-text)]",iconClasses:"novatx:animate-spin novatx:text-[var(--tuwa-pending-icon)]"},[pulsarCore.TransactionStatus.Success]:{label:t.success,Icon:solid.CheckCircleIcon,badgeClasses:"novatx:bg-[var(--tuwa-success-bg)] novatx:text-[var(--tuwa-success-text)]",iconClasses:"novatx:text-[var(--tuwa-success-icon)]"},[pulsarCore.TransactionStatus.Failed]:{label:t.failed,Icon:solid.XCircleIcon,badgeClasses:"novatx:bg-[var(--tuwa-error-bg)] novatx:text-[var(--tuwa-error-text)]",iconClasses:"novatx:text-[var(--tuwa-error-icon)]"},[pulsarCore.TransactionStatus.Replaced]:{label:t.replaced,Icon:solid.ArrowPathIcon,badgeClasses:"novatx:bg-[var(--tuwa-info-bg)] novatx:text-[var(--tuwa-info-text)]",iconClasses:"novatx:text-[var(--tuwa-info-icon)]"}});function F({tx:t,className:o}){let{statuses:n}=v(),c=react.useMemo(()=>ao(n),[n]),r="novatx:inline-flex novatx:items-center novatx:gap-x-1.5 novatx:rounded-full novatx:px-2 novatx:py-1 novatx:text-xs novatx:font-medium",l=t.pending?"Pending":t.status,s=l?c[l]:null;if(!s)return jsxRuntime.jsx("div",{className:novaCore.cn(r,"novatx:bg-[var(--tuwa-info-bg)] novatx:text-[var(--tuwa-info-text)]",o),children:t.status??n.unknown});let{label:i,Icon:p,badgeClasses:a,iconClasses:e}=s;return jsxRuntime.jsxs("div",{className:novaCore.cn(r,a,o),children:[jsxRuntime.jsx(p,{className:novaCore.cn("novatx:h-4 novatx:w-4",e)}),i]})}var co=({onClick:t,children:o})=>jsxRuntime.jsx("button",{onClick:t,type:"button",className:"novatx:cursor-pointer novatx:text-sm novatx:font-medium novatx:text-[var(--tuwa-text-accent)] novatx:transition-opacity novatx:hover:opacity-80",children:o}),lo=({onClick:t,children:o})=>jsxRuntime.jsx("button",{onClick:t,type:"button",className:"novatx:cursor-pointer novatx:text-sm novatx:font-medium novatx:text-[var(--tuwa-text-secondary)] novatx:transition-opacity novatx:hover:opacity-80",children:o}),po=({onClick:t,children:o})=>jsxRuntime.jsx("button",{className:"novatx:cursor-pointer novatx:rounded-md novatx:bg-gradient-to-r novatx:from-[var(--tuwa-button-gradient-from)] novatx:to-[var(--tuwa-button-gradient-to)] novatx:px-3 novatx:py-1 novatx:text-xs novatx:font-bold novatx:text-[var(--tuwa-text-on-accent)] novatx:shadow-lg novatx:transition-all novatx:duration-200 novatx:ease-in-out novatx:hover:shadow-xl novatx:hover:from-[var(--tuwa-button-gradient-from-hover)] novatx:hover:to-[var(--tuwa-button-gradient-to-hover)] novatx:active:scale-95",onClick:t,type:"button",children:o});function Ut({openTxInfoModal:t,tx:o,icon:n,className:c,customization:r,connectedWalletAddress:l,adapter:s}){let{actions:i,toast:p}=v(),a=orbitCore.selectAdapterByKey({adapterKey:o.adapter,adapter:s}),e=!!(o.tracker==="ethereum"&&o.pending&&a?.speedUpTxAction&&a?.cancelTxAction&&o.from.toLowerCase()===l?.toLowerCase()&&["metamask"].includes(o.connectorType.split(":")[1])),x=()=>{e&&a.cancelTxAction(o);},g=()=>{e&&a.speedUpTxAction(o);},{StatusAwareText:u=S,TransactionKey:m=R,StatusBadge:f=F,SpeedUpButton:T=co,CancelButton:w=lo,TxInfoButton:k=po}=r?.components??{};return jsxRuntime.jsxs("div",{className:novaCore.cn("novatx:flex novatx:w-full novatx:flex-col novatx:gap-3 novatx:rounded-lg novatx:bg-[var(--tuwa-bg-primary)] novatx:p-4 novatx:shadow-md",c),children:[jsxRuntime.jsxs("div",{className:"novatx:flex novatx:items-center novatx:gap-3",children:[jsxRuntime.jsx("div",{className:"novatx:w-[40px] novatx:flex-shrink-0 [&>img]:novatx:w-full [&>img]:novatx:h-auto",title:utils.getChainName(orbitCore.setChainId(o.chainId)),children:n??jsxRuntime.jsx(reactWeb3Icons.Web3Icon,{chainId:orbitCore.setChainId(o.chainId)})}),jsxRuntime.jsxs("div",{className:"novatx:flex-1",children:[jsxRuntime.jsx(u,{txStatus:o.status,source:o.title,fallback:o.type,variant:"title",applyColor:true}),jsxRuntime.jsx(u,{txStatus:o.status,source:o.description,variant:"description"})]})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx(m,{adapter:s,tx:o,variant:"toast"}),jsxRuntime.jsxs("div",{className:"novatx:mt-3 novatx:flex novatx:items-center novatx:justify-between",children:[jsxRuntime.jsx(f,{tx:o}),e?jsxRuntime.jsxs("div",{className:"novatx:flex novatx:items-center novatx:gap-4",children:[jsxRuntime.jsx(T,{onClick:g,children:i.speedUp}),jsxRuntime.jsx(w,{onClick:x,children:i.cancel})]}):t&&!!l&&jsxRuntime.jsx(k,{onClick:t,children:p.openTransactionsInfo})]})]})]})}function Ft({adapter:t,onClose:o,onOpenAllTransactions:n,className:c,customization:r,transactionsPool:l,executeTxAction:s,initialTx:i,connectedWalletAddress:p}){let a=react.useMemo(()=>i?.lastTxKey?l[i.lastTxKey]:void 0,[l,i]),e=a??i,x=i?.withTrackedModal&&!a||(a?.isTrackedModalOpen??false),{isProcessing:g,isSucceed:u,isFailed:m,isReplaced:f}=react.useMemo(()=>{let M=a?.status,Lt=i?.isInitializing??false,Kt=a?.pending??false;return {isProcessing:Lt||Kt,isSucceed:M===pulsarCore.TransactionStatus.Success,isFailed:a?.isError||!!i?.errorMessage,isReplaced:M===pulsarCore.TransactionStatus.Replaced}},[a,i]),T=react.useMemo(()=>e?orbitCore.selectAdapterByKey({adapterKey:e.adapter,adapter:t}):void 0,[e,t]),w=!!(m&&e&&i?.actionFunction&&s),k=!!(T?.speedUpTxAction&&T?.cancelTxAction&&a?.pending&&a.tracker==="ethereum"),E=()=>{if(!w||!T?.retryTxAction)return;let M={adapter:e.adapter,type:e.type,desiredChainID:"desiredChainID"in e?e.desiredChainID:e.chainId,actionFunction:i?.actionFunction,title:e.title,description:e.description,payload:e.payload,rpcUrl:"rpcUrl"in e?e?.rpcUrl:"desiredChainID"in e?e.desiredChainID:e.chainId.split(":")[1],withTrackedModal:"withTrackedModal"in e?e.withTrackedModal:false};T.retryTxAction({tx:M,txKey:a?.txKey??"",onClose:o,executeTxAction:s});},b=k&&a&&["metamask"].includes(a?.connectorType.split(":")[1]),at=()=>{b&&T.cancelTxAction(a);},et=()=>{b&&T.speedUpTxAction(a);},nt=r?.components?.Header,rt=r?.components?.Footer,st=r?.components?.StatusVisual,it=r?.components?.ProgressIndicator,ct=r?.components?.InfoBlock,lt=r?.components?.ErrorBlock;return e?jsxRuntime.jsx(novaCore.Dialog,{open:x,onOpenChange:M=>!M&&o(a?.txKey),children:jsxRuntime.jsx(novaCore.DialogContent,{className:novaCore.cn("novatx:w-full novatx:sm:max-w-md",r?.modalProps?.className),...r?.modalProps,children:jsxRuntime.jsxs("div",{className:novaCore.cn("novatx:relative novatx:flex novatx:w-full novatx:flex-col",c),children:[nt?jsxRuntime.jsx(nt,{onClose:()=>o(a?.txKey),title:jsxRuntime.jsx(gt,{tx:e})}):jsxRuntime.jsx(yo,{onClose:()=>o(a?.txKey),title:jsxRuntime.jsx(gt,{tx:e})}),jsxRuntime.jsxs("main",{className:"novatx:flex novatx:flex-col novatx:gap-4 novatx:p-4",children:[st?jsxRuntime.jsx(st,{isProcessing:g,isSucceed:u,isFailed:m,isReplaced:f}):jsxRuntime.jsx(wt,{isProcessing:g,isSucceed:u,isFailed:m,isReplaced:f}),it?jsxRuntime.jsx(it,{isProcessing:g,isSucceed:u,isFailed:m,isReplaced:f}):jsxRuntime.jsx(Ct,{isProcessing:g,isSucceed:u,isFailed:m,isReplaced:f}),ct?jsxRuntime.jsx(ct,{tx:e,adapter:t}):jsxRuntime.jsx(bt,{tx:e,adapter:t}),lt?jsxRuntime.jsx(lt,{error:a?.errorMessage||i?.errorMessage}):jsxRuntime.jsx(yt,{error:a?.errorMessage||i?.errorMessage})]}),rt?jsxRuntime.jsx(rt,{onClose:()=>o(a?.txKey),onOpenAllTransactions:n,isProcessing:g,isFailed:m,canReplace:k,onRetry:w?E:void 0,onSpeedUp:b?et:void 0,onCancel:b?at:void 0,connectedWalletAddress:p}):jsxRuntime.jsx(Co,{onClose:()=>o(a?.txKey),onOpenAllTransactions:n,isProcessing:g,isFailed:m,canReplace:k,onRetry:w?E:void 0,onSpeedUp:b?et:void 0,onCancel:b?at:void 0,connectedWalletAddress:p})]})})}):null}function gt({tx:t}){return jsxRuntime.jsx(S,{txStatus:"status"in t?t.status:void 0,source:t.title,fallback:t.type,variant:"title",className:"novatx:text-lg"})}var yo=({onClose:t,title:o})=>{let{actions:n}=v();return jsxRuntime.jsxs(novaCore.DialogHeader,{children:[jsxRuntime.jsx(novaCore.DialogTitle,{children:o}),jsxRuntime.jsx(novaCore.DialogClose,{asChild:true,children:jsxRuntime.jsx("button",{type:"button",onClick:()=>t(),"aria-label":n.close,className:`novatx:cursor-pointer novatx:rounded-full novatx:p-1 novatx:text-[var(--tuwa-text-tertiary)] novatx:transition-colors novatx:hover:bg-[var(--tuwa-bg-muted)] novatx:hover:text-[var(--tuwa-text-primary)]`,children:jsxRuntime.jsx(novaCore.CloseIcon,{})})})]})},bo=({isFailed:t,onRetry:o,isProcessing:n,canReplace:c,connectedWalletAddress:r,onOpenAllTransactions:l})=>{let{trackingModal:s}=v();return t&&o?jsxRuntime.jsx("button",{type:"button",onClick:o,className:`novatx:cursor-pointer novatx:rounded-t-md novatx:sm:rounded-md novatx:bg-gradient-to-r novatx:from-[var(--tuwa-button-gradient-from)] novatx:to-[var(--tuwa-button-gradient-to)] novatx:px-4 novatx:py-2 novatx:text-sm novatx:font-semibold novatx:text-[var(--tuwa-text-on-accent)] novatx:transition-opacity novatx:hover:from-[var(--tuwa-button-gradient-from-hover)] novatx:hover:to-[var(--tuwa-button-gradient-to-hover)]`,children:s.retry}):!n&&!c&&r?jsxRuntime.jsx("button",{type:"button",onClick:l,className:`novatx:cursor-pointer novatx:rounded-md novatx:bg-[var(--tuwa-bg-muted)] novatx:px-4 novatx:py-2 novatx:text-sm novatx:font-semibold novatx:text-[var(--tuwa-text-primary)] novatx:transition-colors novatx:hover:bg-[var(--tuwa-border-primary)]`,children:s.allTransactions}):null},Co=({onClose:t,onOpenAllTransactions:o,isProcessing:n,onRetry:c,onSpeedUp:r,onCancel:l,canReplace:s,isFailed:i,connectedWalletAddress:p})=>{let{trackingModal:a,actions:e}=v();return jsxRuntime.jsxs("footer",{className:`novatx:flex novatx:w-full novatx:items-center novatx:justify-between novatx:border-t novatx:border-[var(--tuwa-border-primary)] novatx:p-4`,children:[jsxRuntime.jsx("div",{className:"novatx:flex novatx:items-center novatx:gap-4",children:s&&r&&l&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("button",{type:"button",onClick:r,className:`novatx:cursor-pointer novatx:text-sm novatx:font-medium novatx:text-[var(--tuwa-text-accent)] novatx:transition-opacity novatx:hover:opacity-80`,children:e.speedUp}),jsxRuntime.jsx("button",{type:"button",onClick:l,className:`novatx:cursor-pointer novatx:text-sm novatx:font-medium novatx:text-[var(--tuwa-text-secondary)] novatx:transition-opacity novatx:hover:opacity-80`,children:e.cancel})]})}),jsxRuntime.jsxs("div",{className:"novatx:flex novatx:items-center novatx:gap-3",children:[jsxRuntime.jsx(bo,{isFailed:i,onRetry:c,isProcessing:n,canReplace:s,connectedWalletAddress:p,onOpenAllTransactions:o}),jsxRuntime.jsx("button",{type:"button",onClick:t,disabled:n&&!s,className:`novatx:cursor-pointer novatx:rounded-md novatx:bg-[var(--tuwa-bg-muted)] novatx:px-4 novatx:py-2 novatx:text-sm novatx:font-semibold novatx:text-[var(--tuwa-text-primary)] novatx:transition-colors novatx:hover:bg-[var(--tuwa-border-primary)] novatx:disabled:cursor-not-allowed novatx:disabled:opacity-50`,children:n&&!s?a.processing:a.close})]})]})};function yt({error:t,className:o}){let{isCopied:n,copy:c}=novaCore.useCopyToClipboard(),{actions:r,txError:l}=v();return t?jsxRuntime.jsxs("div",{className:novaCore.cn("novatx:rounded-lg novatx:border novatx:border-[var(--tuwa-error-icon)]/30 novatx:bg-[var(--tuwa-error-bg)] novatx:p-3 novatx:text-sm",o),children:[jsxRuntime.jsxs("div",{className:"novatx:mb-2 novatx:flex novatx:items-center novatx:justify-between",children:[jsxRuntime.jsxs("div",{className:"novatx:flex novatx:items-center novatx:gap-2 novatx:font-bold novatx:text-[var(--tuwa-error-icon)]",children:[jsxRuntime.jsx(solid.ExclamationTriangleIcon,{className:"novatx:h-5 novatx:w-5"}),jsxRuntime.jsx("span",{children:l.title})]}),jsxRuntime.jsx("button",{type:"button",onClick:()=>c(t),title:n?l.copied:r.copy,"aria-label":n?l.copied:`${r.copy} error message`,className:"novatx:cursor-pointer novatx:text-[var(--tuwa-error-icon)]/50 novatx:transition-colors novatx:hover:text-[var(--tuwa-error-icon)]",children:n?jsxRuntime.jsx(solid.CheckIcon,{className:"novatx:h-5 novatx:w-5 novatx:text-[var(--tuwa-success-icon)]"}):jsxRuntime.jsx(solid.DocumentDuplicateIcon,{className:"novatx:h-5 novatx:w-5"})})]}),jsxRuntime.jsx("div",{className:"novatx:max-h-24 novatx:overflow-y-auto novatx:rounded novatx:bg-[var(--tuwa-bg-primary)] novatx:p-2",children:jsxRuntime.jsx("p",{className:"novatx:font-mono novatx:text-xs novatx:text-[var(--tuwa-error-text)] novatx:break-all",children:t})})]}):null}function Lo({label:t,value:o}){return jsxRuntime.jsxs("div",{className:"novatx:flex novatx:items-center novatx:justify-between novatx:text-sm",children:[jsxRuntime.jsx("span",{className:"novatx:text-[var(--tuwa-text-secondary)]",children:t}),jsxRuntime.jsx("span",{className:"novatx:font-medium novatx:text-[var(--tuwa-text-primary)]",children:o})]})}function bt({tx:t,adapter:o,className:n,customization:c}){let{txInfo:r,statuses:l,hashLabels:s}=v(),i=orbitCore.selectAdapterByKey({adapterKey:t.adapter,adapter:o});if(!i)return null;let{InfoRow:p=Lo}=c?.components??{},a="chainId"in t?t.chainId:t.desiredChainID,e=t.adapter===orbitCore.OrbitAdapter.SOLANA,x=e?t:void 0;return jsxRuntime.jsxs("div",{className:novaCore.cn("novatx:flex novatx:flex-col novatx:gap-3 novatx:rounded-lg novatx:border novatx:border-[var(--tuwa-border-primary)] novatx:bg-[var(--tuwa-bg-primary)] novatx:p-3",n),children:[jsxRuntime.jsx(p,{label:r.network,value:jsxRuntime.jsxs("div",{className:"novatx:flex novatx:items-center novatx:justify-end novatx:gap-2",children:[jsxRuntime.jsx("div",{className:"novatx:h-4 novatx:w-4",children:jsxRuntime.jsx(reactWeb3Icons.Web3Icon,{chainId:orbitCore.setChainId(a)})}),jsxRuntime.jsx("span",{children:utils.getChainName(orbitCore.setChainId(a))})]})}),t.localTimestamp&&jsxRuntime.jsx(p,{label:r.started,value:It__default.default.unix(t.localTimestamp).format("MMM D, HH:mm:ss")}),e&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[x?.slot&&jsxRuntime.jsx(p,{label:r.slot,value:jsxRuntime.jsx(D,{hash:x.slot.toString(),explorerUrl:i?.getExplorerUrl?`${i?.getExplorerUrl(`/block/${x.slot}`)}`:void 0})}),(typeof x?.confirmations=="number"||typeof x?.confirmations=="string")&&jsxRuntime.jsx(p,{label:l.confirmationsLabel,value:x.confirmations}),x?.recentBlockhash&&jsxRuntime.jsx(p,{label:s.recentBlockhash,value:jsxRuntime.jsx(D,{hash:x.recentBlockhash})})]}),"txKey"in t&&t.txKey&&jsxRuntime.jsx("div",{className:"novatx:border-t novatx:border-[var(--tuwa-border-primary)] novatx:pt-3",children:jsxRuntime.jsx(R,{tx:t,adapter:o,variant:"history",renderHashLink:c?.components?.transactionKey})})]})}var Fo={completed:{line:"novatx:bg-[var(--tuwa-success-icon)]",border:"novatx:border-[var(--tuwa-success-icon)]",fill:"novatx:bg-[var(--tuwa-success-icon)]"},error:{line:"novatx:bg-[var(--tuwa-error-icon)]",border:"novatx:border-[var(--tuwa-error-icon)]",fill:"novatx:bg-[var(--tuwa-error-icon)]"},replaced:{line:"novatx:bg-[var(--tuwa-info-icon)]",border:"novatx:border-[var(--tuwa-info-icon)]",fill:"novatx:bg-[var(--tuwa-info-icon)]"},active:{line:"novatx:bg-[var(--tuwa-pending-icon)]",border:"novatx:border-[var(--tuwa-pending-icon)]",fill:"novatx:bg-transparent",pulse:"novatx:bg-[var(--tuwa-pending-icon)]"},inactive:{line:"novatx:bg-[var(--tuwa-border-primary)]",border:"novatx:border-[var(--tuwa-border-primary)]",fill:"novatx:bg-transparent"}};function Wo({status:t,label:o,isFirst:n=false}){let c=Fo[t],r=()=>{switch(t){case "completed":return jsxRuntime.jsx(solid.CheckIcon,{className:"novatx:h-3 novatx:w-3 novatx:text-white"});case "error":return jsxRuntime.jsx(solid.ExclamationTriangleIcon,{className:"novatx:h-3 novatx:w-3 novatx:text-white"});case "replaced":return jsxRuntime.jsx(solid.ArrowPathIcon,{className:"novatx:h-3 novatx:w-3 novatx:text-white"});case "active":return jsxRuntime.jsx("div",{className:novaCore.cn("novatx:h-2 novatx:w-2 novatx:animate-pulse novatx:rounded-full",c.pulse)});default:return null}};return jsxRuntime.jsxs("div",{className:"novatx:relative novatx:flex novatx:min-w-[80px] novatx:flex-1 novatx:flex-col novatx:items-center",children:[!n&&jsxRuntime.jsx("div",{className:novaCore.cn("novatx:absolute novatx:right-1/2 novatx:top-[10px] novatx:h-0.5 novatx:w-full",c.line)}),jsxRuntime.jsx("div",{className:novaCore.cn("novatx:relative novatx:z-10 novatx:flex novatx:h-5 novatx:w-5 novatx:items-center novatx:justify-center novatx:rounded-full novatx:border-2",c.border,c.fill),children:r()}),jsxRuntime.jsx("span",{className:novaCore.cn("novatx:mt-2 novatx:text-center novatx:text-xs",t!=="inactive"?"novatx:font-semibold novatx:text-[var(--tuwa-text-primary)]":"novatx:text-[var(--tuwa-text-secondary)]"),children:o})]})}function Ct({isProcessing:t,isSucceed:o,isFailed:n,isReplaced:c,className:r,StepComponent:l=Wo}){let{trackingModal:s,statuses:i}=v(),p=react.useMemo(()=>{let a=x=>{if(x===1)return "completed";if(x===2){if(o||n||c)return "completed";if(t)return "active"}if(x===3){if(o)return "completed";if(n)return "error";if(c)return "replaced";if(t)return "active"}return "inactive"},e=x=>x===1?s.progressIndicator.created:x===2?s.progressIndicator.processing:n?i.failed:c?i.replaced:s.progressIndicator.succeed;return [{status:a(1),label:e(1),isFirst:true},{status:a(2),label:e(2)},{status:a(3),label:e(3),isLast:true}]},[t,o,n,c,s,i]);return jsxRuntime.jsx("div",{className:novaCore.cn("novatx:flex novatx:w-full novatx:items-start novatx:px-4 novatx:pt-2 novatx:pb-1",r),children:p.map((a,e)=>jsxRuntime.jsx(l,{...a},e))})}var Go={succeed:{Icon:solid.CheckCircleIcon,className:"novatx:text-[var(--tuwa-success-icon)]"},failed:{Icon:solid.ExclamationCircleIcon,className:"novatx:text-[var(--tuwa-error-icon)]"},replaced:{Icon:solid.ArrowPathIcon,className:"novatx:text-[var(--tuwa-info-icon)]"},processing:{Icon:solid.ArrowPathIcon,className:"novatx:animate-spin novatx:text-[var(--tuwa-text-accent)]"},initializing:{Icon:solid.ClockIcon,className:"novatx:animate-pulse novatx:text-[var(--tuwa-pending-icon)]"}};function wt({isProcessing:t,isSucceed:o,isFailed:n,isReplaced:c}){let r=o&&"succeed"||n&&"failed"||c&&"replaced"||t&&"processing"||"initializing",{Icon:l,className:s}=Go[r];return jsxRuntime.jsx("div",{className:"novatx:flex novatx:justify-center novatx:py-4",children:jsxRuntime.jsx(l,{className:novaCore.cn("novatx:h-16 novatx:w-16",s)})})}It__default.default.extend(Qo__default.default);var Zo=({chainId:t})=>jsxRuntime.jsx("div",{className:"novatx:h-8 novatx:w-8 novatx:text-[var(--tuwa-text-secondary)]",children:jsxRuntime.jsx(reactWeb3Icons.Web3Icon,{chainId:orbitCore.setChainId(t)})}),jo=({timestamp:t})=>jsxRuntime.jsx("span",{className:"novatx:mb-1 novatx:block novatx:text-xs novatx:text-[var(--tuwa-text-secondary)]",children:t?It__default.default.unix(t).fromNow():"..."});function kt({tx:t,adapter:o,className:n,customization:c}){let{Icon:r=Zo,Title:l=S,Description:s=S,Timestamp:i=jo,StatusBadge:p=F,TransactionKey:a=R}=c?.components??{};return jsxRuntime.jsxs("div",{className:novaCore.cn("novatx:flex novatx:flex-col novatx:gap-2 novatx:border-b novatx:border-[var(--tuwa-border-secondary)] novatx:p-3 novatx:transition-colors novatx:hover:bg-[var(--tuwa-bg-secondary)]",n),children:[jsxRuntime.jsxs("div",{className:"novatx:flex novatx:items-start novatx:justify-between",children:[jsxRuntime.jsxs("div",{className:"novatx:flex novatx:items-center novatx:gap-4",children:[jsxRuntime.jsx("div",{className:"novatx:flex novatx:h-10 novatx:w-10 novatx:flex-shrink-0 novatx:items-center novatx:justify-center novatx:rounded-full novatx:bg-[var(--tuwa-bg-muted)]",children:jsxRuntime.jsx(r,{chainId:t.chainId})}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx(l,{txStatus:t.status,source:t.title,fallback:t.type,variant:"title",applyColor:true}),jsxRuntime.jsx(i,{timestamp:t.localTimestamp}),jsxRuntime.jsx(s,{txStatus:t.status,source:t.description,variant:"description"})]})]}),jsxRuntime.jsx(p,{tx:t})]}),jsxRuntime.jsx(a,{tx:t,adapter:o,variant:"history"})]})}function aa({title:t,message:o,className:n}){return jsxRuntime.jsxs("div",{className:novaCore.cn("novatx:rounded-lg novatx:bg-[var(--tuwa-bg-muted)] novatx:p-8 novatx:text-center",n),children:[jsxRuntime.jsx("h4",{className:"novatx:font-semibold novatx:text-[var(--tuwa-text-primary)]",children:t}),jsxRuntime.jsx("p",{className:"novatx:mt-1 novatx:text-sm novatx:text-[var(--tuwa-text-secondary)]",children:o})]})}function St({adapter:t,connectedWalletAddress:o,transactionsPool:n,className:c,customization:r}){let{transactionsModal:l}=v(),s=react.useMemo(()=>o?pulsarCore.selectAllTransactionsByActiveWallet(n,o).sort((x,g)=>(g.localTimestamp??0)-(x.localTimestamp??0)):[],[n,o]),{Placeholder:i=aa,HistoryItem:p=kt}=r?.components??{},a=()=>o?s.length>0?jsxRuntime.jsx("div",{className:novaCore.cn("NovaCustomScroll novatx:max-h-[400px] novatx:overflow-y-auto novatx:rounded-lg novatx:border novatx:border-[var(--tuwa-border-primary)] novatx:bg-[var(--tuwa-bg-primary)]",r?.classNames?.listWrapper),children:s.map(e=>jsxRuntime.jsx(p,{tx:e,adapter:t},e.txKey))}):jsxRuntime.jsx(i,{title:l.history.noTransactionsTitle,message:l.history.noTransactionsMessage}):jsxRuntime.jsx(i,{title:l.history.connectWalletTitle,message:l.history.connectWalletMessage});return jsxRuntime.jsxs("div",{className:novaCore.cn("novatx:flex novatx:flex-col novatx:gap-y-3",c),children:[r?.title&&jsxRuntime.jsx("h3",{className:"novatx:text-lg novatx:font-bold novatx:text-[var(--tuwa-text-primary)]",children:r?.title}),a()]})}var la=({closeModal:t,title:o})=>{let{actions:n}=v();return jsxRuntime.jsxs(novaCore.DialogHeader,{children:[jsxRuntime.jsx(novaCore.DialogTitle,{children:o}),jsxRuntime.jsx(novaCore.DialogClose,{asChild:true,children:jsxRuntime.jsx("button",{type:"button",onClick:t,"aria-label":n.close,className:`novatx:cursor-pointer novatx:rounded-full novatx:p-1 novatx:text-[var(--tuwa-text-tertiary)] novatx:transition-colors novatx:hover:bg-[var(--tuwa-bg-muted)] novatx:hover:text-[var(--tuwa-text-primary)]`,children:jsxRuntime.jsx(novaCore.CloseIcon,{})})})]})};function Wt({isOpen:t,setIsOpen:o,customization:n,adapter:c,connectedWalletAddress:r,transactionsPool:l}){let{transactionsModal:s}=v(),i=()=>o(false),p=n?.components?.Header,a=n?.components?.History;return jsxRuntime.jsx(novaCore.Dialog,{open:t,onOpenChange:e=>!e&&i(),children:jsxRuntime.jsx(novaCore.DialogContent,{className:novaCore.cn("novatx:w-full novatx:sm:max-w-2xl",n?.modalProps?.className),...n?.modalProps,children:jsxRuntime.jsxs("div",{className:novaCore.cn("novatx:relative novatx:max-h-[95dvh] novatx:w-full novatx:flex novatx:flex-col",n?.classNames?.contentWrapper),children:[p?jsxRuntime.jsx(p,{closeModal:i}):jsxRuntime.jsx(la,{closeModal:i,title:s.history.title}),a?jsxRuntime.jsx(a,{adapter:c,transactionsPool:l,connectedWalletAddress:r}):jsxRuntime.jsx(St,{adapter:c,transactionsPool:l,connectedWalletAddress:r})]})})})}var ua=t=>({replaced:jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(solid.ArrowPathIcon,{className:"novatx:h-4 novatx:w-4"}),jsxRuntime.jsx("span",{children:t.replaced})]}),loading:jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(solid.ArrowPathIcon,{className:"novatx:h-4 novatx:w-4 novatx:animate-spin"}),jsxRuntime.jsx("span",{children:t.loading})]}),succeed:jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(solid.CheckCircleIcon,{className:"novatx:h-4 novatx:w-4"}),jsxRuntime.jsx("span",{children:t.succeed})]}),failed:jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(solid.ExclamationCircleIcon,{className:"novatx:h-4 novatx:w-4"}),jsxRuntime.jsx("span",{children:t.failed})]})});function Hr({children:t,action:o,getLastTxKey:n,transactionsPool:c,walletAddress:r,loadingContent:l,succeedContent:s,failedContent:i,replacedContent:p,resetTimeout:a=2500,className:e,...x}){let{trackedTxButton:g}=v(),[u,m]=react.useState("idle"),[f,T]=react.useState(void 0),w=react.useMemo(()=>ua(g),[g]);react.useEffect(()=>{m("idle"),T(void 0);},[r]),react.useEffect(()=>{if(!f)return;let b=c[f];if(b)switch(b.status){case pulsarCore.TransactionStatus.Success:m("succeed");break;case pulsarCore.TransactionStatus.Replaced:m("replaced");break;case pulsarCore.TransactionStatus.Failed:m("failed");break}},[c,f,r]),react.useEffect(()=>{if(["succeed","failed","replaced"].includes(u)){let b=setTimeout(()=>{m("idle"),T(void 0);},a);return ()=>clearTimeout(b)}},[u,a]);let k=async()=>{m("loading");try{await o(),T(n());}catch(b){console.error("Transaction initiation failed:",b),m("failed");}},E=()=>{switch(u){case "loading":return l??w.loading;case "succeed":return s??w.succeed;case "failed":return i??w.failed;case "replaced":return p??w.replaced;default:return t}};return jsxRuntime.jsx("button",{...x,disabled:u!=="idle"||x.disabled,onClick:k,className:novaCore.cn("novatx:flex novatx:cursor-pointer novatx:items-center novatx:justify-center novatx:gap-1.5 novatx:rounded-md novatx:px-3 novatx:py-1.5 novatx:text-sm novatx:font-medium novatx:transition-all novatx:duration-200 novatx:disabled:cursor-not-allowed novatx:disabled:opacity-70",{"novatx:bg-gradient-to-r novatx:from-[var(--tuwa-button-gradient-from)] novatx:to-[var(--tuwa-button-gradient-to)] novatx:text-[var(--tuwa-text-on-accent)] novatx:hover:opacity-90":u==="idle","novatx:bg-gray-400 novatx:text-white":u==="loading","novatx:bg-gray-500 novatx:text-white":u==="replaced","novatx:bg-[var(--tuwa-success-bg)] novatx:text-[var(--tuwa-success-text)]":u==="succeed","novatx:bg-[var(--tuwa-error-bg)] novatx:text-[var(--tuwa-error-text)]":u==="failed"},e),children:E()})}exports.HashLink=D;exports.StatusAwareText=S;exports.ToastTransaction=Ut;exports.TrackingTxModal=Ft;exports.TransactionHistoryItem=kt;exports.TransactionKey=R;exports.TransactionStatusBadge=F;exports.TransactionsHistory=St;exports.TransactionsInfoModal=Wt;exports.TxActionButton=Hr;exports.TxErrorBlock=yt;exports.TxInfoBlock=bt;exports.TxProgressIndicator=Ct;exports.TxStatusVisual=wt;exports.defaultLabels=J;//# sourceMappingURL=index.cjs.map //# sourceMappingURL=index.cjs.map