@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 • 31.2 kB
JavaScript
'use strict';var react=require('react'),jsxRuntime=require('react/jsx-runtime'),novaCore=require('@tuwaio/nova-core'),pulsarCore=require('@tuwaio/pulsar-core'),reactToastify=require('react-toastify'),solid=require('@heroicons/react/24/solid'),reactWeb3Icons=require('@bgd-labs/react-web3-icons'),utils=require('@bgd-labs/react-web3-icons/dist/utils'),orbitCore=require('@tuwaio/orbit-core'),kt=require('dayjs'),qo=require('dayjs/plugin/relativeTime');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var kt__default=/*#__PURE__*/_interopDefault(kt);var qo__default=/*#__PURE__*/_interopDefault(qo);var z={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 it=react.createContext(z),ct=({labels:t,children:o})=>jsxRuntime.jsx(it.Provider,{value:t,children:o}),v=()=>react.useContext(it);function E({label:t,hash:o,explorerUrl:n,variant:r="default",className:s}){let{isCopied:l,copy:c}=novaCore.useCopyToClipboard(),{actions:i,txError:p}=v(),a=novaCore.cn("novatx:flex novatx:items-center novatx:justify-between",{"novatx:text-sm":r==="default","novatx:text-xs":r==="compact"},s),e=novaCore.cn("novatx:pr-1",{"novatx:font-bold novatx:text-[var(--tuwa-text-primary)]":r==="default","novatx:font-medium novatx:text-[var(--tuwa-text-secondary)]":r==="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:()=>c(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 pt={[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 B({txStatus:t,source:o,fallback:n,variant:r,className:s,applyColor:l=false}){let c,i="";if(typeof o=="string")c=o;else if(Array.isArray(o)){let e=pt[t||"default"]??pt.default;c=o[e.index],l&&(i=e.colorClass);}else c=n;return c?jsxRuntime.jsx("div",{className:novaCore.cn(r==="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,s),children:c}):null}function K({tx:t,adapter:o,variant:n="toast",className:r,renderHashLink:s,confirmations:l}){let{hashLabels:c,statuses:i}=v(),p=orbitCore.selectAdapterByKey({adapterKey:t.adapter,adapter:o});if(!p)return null;let a=m=>s?s(m):jsxRuntime.jsx(E,{...m}),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=c[String(t.tracker)],f=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,b=(()=>{let m=t.hash,u=t.replacedTxHash;return !m&&!u?null:u?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[m&&a({label:c.original,hash:m,variant:"compact"}),typeof p.getExplorerTxUrl<"u"&&a({label:c.replaced,hash:u,explorerUrl:p.getExplorerTxUrl(t)})]}):m&&typeof p.getExplorerTxUrl<"u"&&a({label:c.default,hash:m,explorerUrl:p.getExplorerTxUrl(t)})})(),T=x&&x!==c.default&&t.txKey!==t.hash;return jsxRuntime.jsxs("div",{className:novaCore.cn(e,r),children:[T&&f,b,typeof l=="number"&&jsxRuntime.jsxs("p",{className:"novatx:text-xs novatx:text-[var(--tuwa-text-tertiary)]",children:[i.confirmationsLabel,": ",l]})]})}var oo=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 _({tx:t,className:o}){let{statuses:n}=v(),r=react.useMemo(()=>oo(n),[n]),s="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,c=l?r[l]:null;if(!c)return jsxRuntime.jsx("div",{className:novaCore.cn(s,"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}=c;return jsxRuntime.jsxs("div",{className:novaCore.cn(s,a,o),children:[jsxRuntime.jsx(p,{className:novaCore.cn("novatx:h-4 novatx:w-4",e)}),i]})}var io=({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}),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-secondary)] novatx:transition-opacity novatx:hover:opacity-80",children:o}),lo=({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 mt({openTxInfoModal:t,tx:o,icon:n,className:r,customization:s,connectedWalletAddress:l,adapter:c}){let{actions:i,toast:p}=v(),a=orbitCore.selectAdapterByKey({adapterKey:o.adapter,adapter:c}),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);},f=()=>{e&&a.speedUpTxAction(o);},{StatusAwareText:b=B,TransactionKey:T=K,StatusBadge:m=_,SpeedUpButton:u=io,CancelButton:A=co,TxInfoButton:w=lo}=s?.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",r),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(b,{txStatus:o.status,source:o.title,fallback:o.type,variant:"title",applyColor:true}),jsxRuntime.jsx(b,{txStatus:o.status,source:o.description,variant:"description"})]})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx(T,{adapter:c,tx:o,variant:"toast"}),jsxRuntime.jsxs("div",{className:"novatx:mt-3 novatx:flex novatx:items-center novatx:justify-between",children:[jsxRuntime.jsx(m,{tx:o}),e?jsxRuntime.jsxs("div",{className:"novatx:flex novatx:items-center novatx:gap-4",children:[jsxRuntime.jsx(u,{onClick:f,children:i.speedUp}),jsxRuntime.jsx(A,{onClick:x,children:i.cancel})]}):t&&!!l&&jsxRuntime.jsx(w,{onClick:t,children:p.openTransactionsInfo})]})]})]})}function yt({adapter:t,onClose:o,onOpenAllTransactions:n,className:r,customization:s,transactionsPool:l,executeTxAction:c,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:f,isSucceed:b,isFailed:T,isReplaced:m}=react.useMemo(()=>{let R=a?.status,Dt=i?.isInitializing??false,Ot=a?.pending??false;return {isProcessing:Dt||Ot,isSucceed:R===pulsarCore.TransactionStatus.Success,isFailed:a?.isError||!!i?.errorMessage,isReplaced:R===pulsarCore.TransactionStatus.Replaced}},[a,i]),u=react.useMemo(()=>e?orbitCore.selectAdapterByKey({adapterKey:e.adapter,adapter:t}):void 0,[e,t]),A=!!(T&&e&&i?.actionFunction&&c),w=!!(u?.speedUpTxAction&&u?.cancelTxAction&&a?.pending&&a.tracker==="ethereum"),F=()=>{if(!A||!u?.retryTxAction)return;let R={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};u.retryTxAction({tx:R,txKey:a?.txKey??"",onClose:o,executeTxAction:c});},S=w&&a&&["metamask"].includes(a?.connectorType.split(":")[1]),g=()=>{S&&u.cancelTxAction(a);},h=()=>{S&&u.speedUpTxAction(a);},I=s?.components?.Header,W=s?.components?.Footer,et=s?.components?.StatusVisual,nt=s?.components?.ProgressIndicator,rt=s?.components?.InfoBlock,st=s?.components?.ErrorBlock;return e?jsxRuntime.jsx(novaCore.Dialog,{open:x,onOpenChange:R=>!R&&o(a?.txKey),children:jsxRuntime.jsx(novaCore.DialogContent,{className:novaCore.cn("novatx:w-full novatx:sm:max-w-md",s?.modalProps?.className),...s?.modalProps,children:jsxRuntime.jsxs("div",{className:novaCore.cn("novatx:relative novatx:flex novatx:w-full novatx:flex-col",r),children:[I?jsxRuntime.jsx(I,{onClose:()=>o(a?.txKey),title:jsxRuntime.jsx(gt,{tx:e})}):jsxRuntime.jsx(go,{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:[et?jsxRuntime.jsx(et,{isProcessing:f,isSucceed:b,isFailed:T,isReplaced:m}):jsxRuntime.jsx(ht,{isProcessing:f,isSucceed:b,isFailed:T,isReplaced:m}),nt?jsxRuntime.jsx(nt,{isProcessing:f,isSucceed:b,isFailed:T,isReplaced:m}):jsxRuntime.jsx(wt,{isProcessing:f,isSucceed:b,isFailed:T,isReplaced:m}),rt?jsxRuntime.jsx(rt,{tx:e,adapter:t}):jsxRuntime.jsx(Ct,{tx:e,adapter:t}),st?jsxRuntime.jsx(st,{error:a?.errorMessage||i?.errorMessage}):jsxRuntime.jsx(bt,{error:a?.errorMessage||i?.errorMessage})]}),W?jsxRuntime.jsx(W,{onClose:()=>o(a?.txKey),onOpenAllTransactions:n,isProcessing:f,isFailed:T,canReplace:w,onRetry:A?F:void 0,onSpeedUp:S?h:void 0,onCancel:S?g:void 0,connectedWalletAddress:p}):jsxRuntime.jsx(bo,{onClose:()=>o(a?.txKey),onOpenAllTransactions:n,isProcessing:f,isFailed:T,canReplace:w,onRetry:A?F:void 0,onSpeedUp:S?h:void 0,onCancel:S?g:void 0,connectedWalletAddress:p})]})})}):null}function gt({tx:t}){return jsxRuntime.jsx(B,{txStatus:"status"in t?t.status:void 0,source:t.title,fallback:t.type,variant:"title",className:"novatx:text-lg"})}var go=({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,{})})})]})},yo=({isFailed:t,onRetry:o,isProcessing:n,canReplace:r,connectedWalletAddress:s,onOpenAllTransactions:l})=>{let{trackingModal:c}=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:c.retry}):!n&&!r&&s?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:c.allTransactions}):null},bo=({onClose:t,onOpenAllTransactions:o,isProcessing:n,onRetry:r,onSpeedUp:s,onCancel:l,canReplace:c,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:c&&s&&l&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("button",{type:"button",onClick:s,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(yo,{isFailed:i,onRetry:r,isProcessing:n,canReplace:c,connectedWalletAddress:p,onOpenAllTransactions:o}),jsxRuntime.jsx("button",{type:"button",onClick:t,disabled:n&&!c,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&&!c?a.processing:a.close})]})]})};function bt({error:t,className:o}){let{isCopied:n,copy:r}=novaCore.useCopyToClipboard(),{actions:s,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:()=>r(t),title:n?l.copied:s.copy,"aria-label":n?l.copied:`${s.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 Ro({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 Ct({tx:t,adapter:o,className:n,customization:r}){let{txInfo:s,statuses:l,hashLabels:c}=v(),i=orbitCore.selectAdapterByKey({adapterKey:t.adapter,adapter:o});if(!i)return null;let{InfoRow:p=Ro}=r?.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:s.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:s.started,value:kt__default.default.unix(t.localTimestamp).format("MMM D, HH:mm:ss")}),e&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[x?.slot&&jsxRuntime.jsx(p,{label:s.slot,value:jsxRuntime.jsx(E,{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:c.recentBlockhash,value:jsxRuntime.jsx(E,{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(K,{tx:t,adapter:o,variant:"history",renderHashLink:r?.components?.transactionKey})})]})}var Uo={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 Fo({status:t,label:o,isFirst:n=false}){let r=Uo[t],s=()=>{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",r.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",r.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",r.border,r.fill),children:s()}),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 wt({isProcessing:t,isSucceed:o,isFailed:n,isReplaced:r,className:s,StepComponent:l=Fo}){let{trackingModal:c,statuses:i}=v(),p=react.useMemo(()=>{let a=x=>{if(x===1)return "completed";if(x===2){if(o||n||r)return "completed";if(t)return "active"}if(x===3){if(o)return "completed";if(n)return "error";if(r)return "replaced";if(t)return "active"}return "inactive"},e=x=>x===1?c.progressIndicator.created:x===2?c.progressIndicator.processing:n?i.failed:r?i.replaced:c.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,r,c,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",s),children:p.map((a,e)=>jsxRuntime.jsx(l,{...a},e))})}var Xo={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 ht({isProcessing:t,isSucceed:o,isFailed:n,isReplaced:r}){let s=o&&"succeed"||n&&"failed"||r&&"replaced"||t&&"processing"||"initializing",{Icon:l,className:c}=Xo[s];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",c)})})}kt__default.default.extend(qo__default.default);var Qo=({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)})}),Zo=({timestamp:t})=>jsxRuntime.jsx("span",{className:"novatx:mb-1 novatx:block novatx:text-xs novatx:text-[var(--tuwa-text-secondary)]",children:t?kt__default.default.unix(t).fromNow():"..."});function St({tx:t,adapter:o,className:n,customization:r}){let{Icon:s=Qo,Title:l=B,Description:c=B,Timestamp:i=Zo,StatusBadge:p=_,TransactionKey:a=K}=r?.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(s,{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(c,{txStatus:t.status,source:t.description,variant:"description"})]})]}),jsxRuntime.jsx(p,{tx:t})]}),jsxRuntime.jsx(a,{tx:t,adapter:o,variant:"history"})]})}function oa({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 At({adapter:t,connectedWalletAddress:o,transactionsPool:n,className:r,customization:s}){let{transactionsModal:l}=v(),c=react.useMemo(()=>o?pulsarCore.selectAllTransactionsByActiveWallet(n,o).sort((x,f)=>(f.localTimestamp??0)-(x.localTimestamp??0)):[],[n,o]),{Placeholder:i=oa,HistoryItem:p=St}=s?.components??{},a=()=>o?c.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)]",s?.classNames?.listWrapper),children:c.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",r),children:[s?.title&&jsxRuntime.jsx("h3",{className:"novatx:text-lg novatx:font-bold novatx:text-[var(--tuwa-text-primary)]",children:s?.title}),a()]})}var ca=({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 Ht({isOpen:t,setIsOpen:o,customization:n,adapter:r,connectedWalletAddress:s,transactionsPool:l}){let{transactionsModal:c}=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(ca,{closeModal:i,title:c.history.title}),a?jsxRuntime.jsx(a,{adapter:r,transactionsPool:l,connectedWalletAddress:s}):jsxRuntime.jsx(At,{adapter:r,transactionsPool:l,connectedWalletAddress:s})]})})})}var fa={[pulsarCore.TransactionStatus.Success]:"success",[pulsarCore.TransactionStatus.Failed]:"error",[pulsarCore.TransactionStatus.Replaced]:"info"};function Ur({adapter:t,connectedWalletAddress:o,connectedAdapterType:n,transactionsPool:r,initialTx:s,executeTxAction:l,closeTxTrackedModal:c,labels:i,features:p,customization:a,...e}){let[x,f]=react.useState(false),b=react.useRef(r),T="nova-transactions",m=novaCore.useMediaQuery("(max-width: 767px)"),u=react.useMemo(()=>({toasts:p?.toasts??true,transactionsModal:p?.transactionsModal??true,trackingTxModal:p?.trackingTxModal??true}),[p]),A=react.useMemo(()=>novaCore.deepMerge(z,i||{}),[i]),w=react.useCallback(g=>{if(!u.toasts)return;let h=g.pending?"info":fa[g.status]??"info",I=W=>jsxRuntime.jsx(mt,{...W,tx:g,openTxInfoModal:u.transactionsModal?()=>f(true):void 0,customization:a?.toast,adapter:t,connectedWalletAddress:o});reactToastify.toast.isActive(g.txKey)?reactToastify.toast.update(g.txKey,{render:I,type:h,containerId:T}):reactToastify.toast(I,{toastId:g.txKey,type:h,closeOnClick:false,containerId:T});},[r,u,a?.toast,t,o]);react.useEffect(()=>{let g=b.current;Object.values(r).forEach(h=>{let I=g[h.txKey];if(!I&&h.pending){w(h);return}I&&JSON.stringify(I)!==JSON.stringify(h)&&w(h);}),b.current=r;},[r,w]),react.useEffect(()=>{Object.values(r).forEach(g=>{reactToastify.toast.isActive(g.txKey,T)&&w(g);});},[o,w,r]);let F=!!s?.withTrackedModal&&r[s?.lastTxKey??""]?.isTrackedModalOpen,S=u.toasts&&(!m||!F&&!x);return jsxRuntime.jsxs(ct,{labels:A,children:[S&&jsxRuntime.jsx(reactToastify.ToastContainer,{position:"bottom-right",stacked:true,autoClose:false,hideProgressBar:true,closeOnClick:false,icon:false,closeButton:novaCore.ToastCloseButton,containerId:T,toastClassName:"novatx:!p-0 novatx:!bg-transparent novatx:!shadow-none novatx:!min-h-0",...e}),u.transactionsModal&&jsxRuntime.jsx(Ht,{isOpen:x,setIsOpen:f,customization:a?.transactionsInfoModal,adapter:t,connectedWalletAddress:o,connectedAdapterType:n,transactionsPool:r}),u.trackingTxModal&&jsxRuntime.jsx(yt,{initialTx:s,onClose:c,onOpenAllTransactions:()=>f(true),transactionsPool:r,customization:a?.trackingTxModal,executeTxAction:l,adapter:t,connectedWalletAddress:o})]})}exports.NovaTransactionsLabelsProvider=ct;exports.NovaTransactionsProvider=Ur;exports.useLabels=v;//# sourceMappingURL=index.cjs.map
//# sourceMappingURL=index.cjs.map