@tuwaio/nova-transactions 1.0.0-fix-integrate-orbit-alpha.21.4b8f114 → 1.0.0-fix-integrate-orbit-alpha.23.c69d70b

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { T as TuwaLabels } from './TransactionsInfoModal-ZGqfDAxN.cjs';
2
- export { a as HashLink, H as HashLinkProps, b as StatusAwareText, S as StatusAwareTextProps, o as StepProps, n as StepStatus, e as ToastTransaction, c as ToastTransactionCustomization, d as ToastTransactionProps, h as TrackingTxModal, f as TrackingTxModalCustomization, g as TrackingTxModalProps, v as TransactionHistoryItem, t as TransactionHistoryItemCustomization, u as TransactionHistoryItemProps, x as TransactionKey, w as TransactionKeyProps, F as TransactionStatusBadge, E as TransactionStatusBadgeProps, A as TransactionsHistory, y as TransactionsHistoryCustomization, z as TransactionsHistoryProps, D as TransactionsInfoModal, B as TransactionsInfoModalCustomization, C as TransactionsInfoModalProps, j as TxErrorBlock, i as TxErrorBlockProps, m as TxInfoBlock, k as TxInfoBlockCustomization, l as TxInfoBlockProps, q as TxProgressIndicator, p as TxProgressIndicatorProps, s as TxStatusVisual, r as TxStatusVisualProps } from './TransactionsInfoModal-ZGqfDAxN.cjs';
1
+ import { T as TuwaLabels } from './TransactionsInfoModal-BPOe6aUa.cjs';
2
+ export { a as HashLink, H as HashLinkProps, b as StatusAwareText, S as StatusAwareTextProps, o as StepProps, n as StepStatus, e as ToastTransaction, c as ToastTransactionCustomization, d as ToastTransactionProps, h as TrackingTxModal, f as TrackingTxModalCustomization, g as TrackingTxModalProps, v as TransactionHistoryItem, t as TransactionHistoryItemCustomization, u as TransactionHistoryItemProps, x as TransactionKey, w as TransactionKeyProps, F as TransactionStatusBadge, E as TransactionStatusBadgeProps, A as TransactionsHistory, y as TransactionsHistoryCustomization, z as TransactionsHistoryProps, D as TransactionsInfoModal, B as TransactionsInfoModalCustomization, C as TransactionsInfoModalProps, j as TxErrorBlock, i as TxErrorBlockProps, m as TxInfoBlock, k as TxInfoBlockCustomization, l as TxInfoBlockProps, q as TxProgressIndicator, p as TxProgressIndicatorProps, s as TxStatusVisual, r as TxStatusVisualProps } from './TransactionsInfoModal-BPOe6aUa.cjs';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import { Transaction, TransactionPool } from '@tuwaio/pulsar-core';
5
5
  import { ButtonHTMLAttributes, ReactNode } from 'react';
@@ -28,31 +28,17 @@ type ToastCloseButtonProps = {
28
28
  declare function ToastCloseButton({ closeToast }: ToastCloseButtonProps): react_jsx_runtime.JSX.Element;
29
29
 
30
30
  type TxActionButtonProps<T extends Transaction> = Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'onClick'> & {
31
- /** The default content to display when the button is 'idle'. */
32
31
  children: ReactNode;
33
- /** The async function to execute when the button is clicked to initiate the transaction. */
34
32
  action: () => Promise<void>;
35
- /** A function that returns the unique key of the most recently initiated transaction. */
36
33
  getLastTxKey: () => string | undefined;
37
- /** The global transaction pool from the Pulsar store. */
38
34
  transactionsPool: TransactionPool<T>;
39
- /** Optional active wallet address. If provided, the button will only track transactions from this address. */
40
35
  walletAddress?: string;
41
- /** Optional custom content for the 'loading' state. */
42
36
  loadingContent?: ReactNode;
43
- /** Optional custom content for the 'succeed' state. */
44
37
  succeedContent?: ReactNode;
45
- /** Optional custom content for the 'failed' state. */
46
38
  failedContent?: ReactNode;
47
- /** Optional custom content for the 'replaced' state. */
48
39
  replacedContent?: ReactNode;
49
- /** The duration (in ms) to display a final state before resetting to 'idle'. Defaults to 2500ms. */
50
40
  resetTimeout?: number;
51
41
  };
52
- /**
53
- * A stateful button that provides real-time feedback for a transaction's lifecycle.
54
- * It listens for changes in `transactionsPool` to automatically update its visual state.
55
- */
56
42
  declare function TxActionButton<T extends Transaction>({ children, action, getLastTxKey, transactionsPool, walletAddress, loadingContent, succeedContent, failedContent, replacedContent, resetTimeout, className, ...props }: TxActionButtonProps<T>): react_jsx_runtime.JSX.Element;
57
43
 
58
44
  /**
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { T as TuwaLabels } from './TransactionsInfoModal-ZGqfDAxN.js';
2
- export { a as HashLink, H as HashLinkProps, b as StatusAwareText, S as StatusAwareTextProps, o as StepProps, n as StepStatus, e as ToastTransaction, c as ToastTransactionCustomization, d as ToastTransactionProps, h as TrackingTxModal, f as TrackingTxModalCustomization, g as TrackingTxModalProps, v as TransactionHistoryItem, t as TransactionHistoryItemCustomization, u as TransactionHistoryItemProps, x as TransactionKey, w as TransactionKeyProps, F as TransactionStatusBadge, E as TransactionStatusBadgeProps, A as TransactionsHistory, y as TransactionsHistoryCustomization, z as TransactionsHistoryProps, D as TransactionsInfoModal, B as TransactionsInfoModalCustomization, C as TransactionsInfoModalProps, j as TxErrorBlock, i as TxErrorBlockProps, m as TxInfoBlock, k as TxInfoBlockCustomization, l as TxInfoBlockProps, q as TxProgressIndicator, p as TxProgressIndicatorProps, s as TxStatusVisual, r as TxStatusVisualProps } from './TransactionsInfoModal-ZGqfDAxN.js';
1
+ import { T as TuwaLabels } from './TransactionsInfoModal-BPOe6aUa.js';
2
+ export { a as HashLink, H as HashLinkProps, b as StatusAwareText, S as StatusAwareTextProps, o as StepProps, n as StepStatus, e as ToastTransaction, c as ToastTransactionCustomization, d as ToastTransactionProps, h as TrackingTxModal, f as TrackingTxModalCustomization, g as TrackingTxModalProps, v as TransactionHistoryItem, t as TransactionHistoryItemCustomization, u as TransactionHistoryItemProps, x as TransactionKey, w as TransactionKeyProps, F as TransactionStatusBadge, E as TransactionStatusBadgeProps, A as TransactionsHistory, y as TransactionsHistoryCustomization, z as TransactionsHistoryProps, D as TransactionsInfoModal, B as TransactionsInfoModalCustomization, C as TransactionsInfoModalProps, j as TxErrorBlock, i as TxErrorBlockProps, m as TxInfoBlock, k as TxInfoBlockCustomization, l as TxInfoBlockProps, q as TxProgressIndicator, p as TxProgressIndicatorProps, s as TxStatusVisual, r as TxStatusVisualProps } from './TransactionsInfoModal-BPOe6aUa.js';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import { Transaction, TransactionPool } from '@tuwaio/pulsar-core';
5
5
  import { ButtonHTMLAttributes, ReactNode } from 'react';
@@ -28,31 +28,17 @@ type ToastCloseButtonProps = {
28
28
  declare function ToastCloseButton({ closeToast }: ToastCloseButtonProps): react_jsx_runtime.JSX.Element;
29
29
 
30
30
  type TxActionButtonProps<T extends Transaction> = Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'onClick'> & {
31
- /** The default content to display when the button is 'idle'. */
32
31
  children: ReactNode;
33
- /** The async function to execute when the button is clicked to initiate the transaction. */
34
32
  action: () => Promise<void>;
35
- /** A function that returns the unique key of the most recently initiated transaction. */
36
33
  getLastTxKey: () => string | undefined;
37
- /** The global transaction pool from the Pulsar store. */
38
34
  transactionsPool: TransactionPool<T>;
39
- /** Optional active wallet address. If provided, the button will only track transactions from this address. */
40
35
  walletAddress?: string;
41
- /** Optional custom content for the 'loading' state. */
42
36
  loadingContent?: ReactNode;
43
- /** Optional custom content for the 'succeed' state. */
44
37
  succeedContent?: ReactNode;
45
- /** Optional custom content for the 'failed' state. */
46
38
  failedContent?: ReactNode;
47
- /** Optional custom content for the 'replaced' state. */
48
39
  replacedContent?: ReactNode;
49
- /** The duration (in ms) to display a final state before resetting to 'idle'. Defaults to 2500ms. */
50
40
  resetTimeout?: number;
51
41
  };
52
- /**
53
- * A stateful button that provides real-time feedback for a transaction's lifecycle.
54
- * It listens for changes in `transactionsPool` to automatically update its visual state.
55
- */
56
42
  declare function TxActionButton<T extends Transaction>({ children, action, getLastTxKey, transactionsPool, walletAddress, loadingContent, succeedContent, failedContent, replacedContent, resetTimeout, className, ...props }: TxActionButtonProps<T>): react_jsx_runtime.JSX.Element;
57
43
 
58
44
  /**
package/dist/index.js CHANGED
@@ -1,16 +1,16 @@
1
- import {ArrowTopRightOnSquareIcon,CheckIcon,DocumentDuplicateIcon,XMarkIcon,ArrowPathIcon,XCircleIcon,CheckCircleIcon,ExclamationTriangleIcon,ClockIcon,ExclamationCircleIcon}from'@heroicons/react/24/solid';import {useCopyToClipboard,cn,textCenterEllipsis,Dialog,DialogContent,DialogHeader,DialogTitle,DialogClose,CloseIcon}from'@tuwaio/nova-core';import {createContext,useContext,useMemo,useState,useEffect}from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {TransactionStatus,TransactionTracker,selectAllTransactionsByActiveWallet}from'@tuwaio/pulsar-core';import'react-toastify';import {Web3Icon}from'@bgd-labs/react-web3-icons';import {getChainName}from'@bgd-labs/react-web3-icons/dist/utils';import {selectAdapterByKey,setChainId,OrbitAdapter}from'@tuwaio/orbit-core';import It from'dayjs';import Ze from'dayjs/plugin/relativeTime';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 Ot=createContext(J);var m=()=>useContext(Ot);({[TransactionStatus.Success]:"success",[TransactionStatus.Failed]:"error",[TransactionStatus.Replaced]:"info"});function D({label:t,hash:e,explorerUrl:r,variant:c="default",className:s}){let{isCopied:l,copy:i}=useCopyToClipboard(),{actions:n,txError:p}=m(),o=cn("flex items-center justify-between",{"text-sm":c==="default","text-xs":c==="compact"},s),a=cn("pr-1",{"font-bold text-[var(--tuwa-text-primary)]":c==="default","font-medium text-[var(--tuwa-text-secondary)]":c==="compact"}),d=jsx("span",{className:"font-mono",children:textCenterEllipsis(e,5,5)});return jsxs("div",{className:o,children:[t&&jsxs("span",{className:a,children:[t,":"]}),jsxs("div",{className:"flex items-center gap-x-2",children:[r?jsxs("a",{href:r,target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-x-1 text-[var(--tuwa-text-accent)] transition-colors hover:underline",title:n.viewOnExplorer,"aria-label":n.viewOnExplorer,children:[d,jsx(ArrowTopRightOnSquareIcon,{className:"h-4 w-4"})]}):jsx("span",{className:"text-[var(--tuwa-text-primary)]",children:d}),jsx("button",{type:"button",onClick:()=>i(e),className:"cursor-pointer text-[var(--tuwa-text-tertiary)] transition-colors hover:text-[var(--tuwa-text-secondary)]",title:l?p.copied:n.copy,"aria-label":l?p.copied:n.copy,children:l?jsx(CheckIcon,{className:"h-4 w-4 text-[var(--tuwa-success-icon)]"}):jsx(DocumentDuplicateIcon,{className:"h-4 w-4"})})]})]})}var pt={[TransactionStatus.Success]:{index:1,colorClass:"text-[var(--tuwa-success-text)]"},[TransactionStatus.Failed]:{index:2,colorClass:"text-[var(--tuwa-error-text)]"},[TransactionStatus.Replaced]:{index:3,colorClass:"text-[var(--tuwa-text-secondary)]"},default:{index:0,colorClass:"text-[var(--tuwa-text-primary)]"}};function S({txStatus:t,source:e,fallback:r,variant:c,className:s,applyColor:l=false}){let i,n="";if(typeof e=="string")i=e;else if(Array.isArray(e)){let a=pt[t||"default"]??pt.default;i=e[a.index],l&&(n=a.colorClass);}else i=r;return i?jsx("div",{className:cn(c==="title"?"text-sm font-semibold text-[var(--tuwa-text-primary)]":"mt-1 text-xs text-[var(--tuwa-text-secondary)]",n,s),children:i}):null}function Ut({closeToast:t}){let{actions:e}=m();return jsx("button",{type:"button",onClick:t,"aria-label":e.close,title:e.close,className:cn("absolute top-2 right-2 cursor-pointer rounded-full p-1","text-[var(--tuwa-text-tertiary)] transition-colors","hover:bg-[var(--tuwa-bg-muted)] hover:text-[var(--tuwa-text-primary)]"),children:jsx(XMarkIcon,{className:"h-5 w-5"})})}function L({tx:t,adapter:e,variant:r="toast",className:c,renderHashLink:s,confirmations:l}){let{hashLabels:i,statuses:n}=m(),p=selectAdapterByKey({adapterKey:t.adapter,adapter:e});if(!p)return null;let o=x=>s?s(x):jsx(D,{...x}),a=r==="toast"?"mt-2 flex w-full flex-col gap-y-2 border-t border-[var(--tuwa-border-primary)] pt-2":"flex w-full flex-col gap-y-2",d=i[String(t.tracker)],v=d?o({label:d,hash:t.txKey,variant:t.tracker!==TransactionTracker.Solana?"compact":"default",explorerUrl:p.getExplorerTxUrl&&t.tracker===TransactionTracker.Solana?p?.getExplorerTxUrl(t):void 0}):null,f=(()=>{let x=t.hash,g=t.replacedTxHash;return !x&&!g?null:g?jsxs(Fragment,{children:[x&&o({label:i.original,hash:x,variant:"compact"}),typeof p.getExplorerTxUrl<"u"&&o({label:i.replaced,hash:g,explorerUrl:p.getExplorerTxUrl(t)})]}):x&&typeof p.getExplorerTxUrl<"u"&&o({label:i.default,hash:x,explorerUrl:p.getExplorerTxUrl(t)})})(),T=d&&d!==i.default&&t.txKey!==t.hash;return jsxs("div",{className:cn(a,c),children:[T&&v,f,typeof l=="number"&&jsxs("p",{className:"text-xs text-[var(--tuwa-text-tertiary)]",children:[n.confirmationsLabel,": ",l]})]})}var se=t=>({Pending:{label:t.pending,Icon:ArrowPathIcon,badgeClasses:"bg-[var(--tuwa-pending-bg)] text-[var(--tuwa-pending-text)]",iconClasses:"animate-spin text-[var(--tuwa-pending-icon)]"},[TransactionStatus.Success]:{label:t.success,Icon:CheckCircleIcon,badgeClasses:"bg-[var(--tuwa-success-bg)] text-[var(--tuwa-success-text)]",iconClasses:"text-[var(--tuwa-success-icon)]"},[TransactionStatus.Failed]:{label:t.failed,Icon:XCircleIcon,badgeClasses:"bg-[var(--tuwa-error-bg)] text-[var(--tuwa-error-text)]",iconClasses:"text-[var(--tuwa-error-icon)]"},[TransactionStatus.Replaced]:{label:t.replaced,Icon:ArrowPathIcon,badgeClasses:"bg-[var(--tuwa-info-bg)] text-[var(--tuwa-info-text)]",iconClasses:"text-[var(--tuwa-info-icon)]"}});function F({tx:t,className:e}){let{statuses:r}=m(),c=useMemo(()=>se(r),[r]),s="inline-flex items-center gap-x-1.5 rounded-full px-2 py-1 text-xs font-medium",l=t.pending?"Pending":t.status,i=l?c[l]:null;if(!i)return jsx("div",{className:cn(s,"bg-[var(--tuwa-info-bg)] text-[var(--tuwa-info-text)]",e),children:t.status??r.unknown});let{label:n,Icon:p,badgeClasses:o,iconClasses:a}=i;return jsxs("div",{className:cn(s,o,e),children:[jsx(p,{className:cn("h-4 w-4",a)}),n]})}var de=({onClick:t,children:e})=>jsx("button",{onClick:t,type:"button",className:"cursor-pointer text-sm font-medium text-[var(--tuwa-text-accent)] transition-opacity hover:opacity-80",children:e}),ue=({onClick:t,children:e})=>jsx("button",{onClick:t,type:"button",className:"cursor-pointer text-sm font-medium text-[var(--tuwa-text-secondary)] transition-opacity hover:opacity-80",children:e}),me=({onClick:t,children:e})=>jsx("button",{className:"cursor-pointer rounded-md bg-gradient-to-r from-[var(--tuwa-button-gradient-from)] to-[var(--tuwa-button-gradient-to)] px-3 py-1 text-xs font-bold text-[var(--tuwa-text-on-accent)] shadow-lg transition-all duration-200 ease-in-out hover:shadow-xl hover:from-[var(--tuwa-button-gradient-from-hover)] hover:to-[var(--tuwa-button-gradient-to-hover)] active:scale-95",onClick:t,type:"button",children:e});function Ft({openTxInfoModal:t,tx:e,icon:r,className:c,customization:s,connectedWalletAddress:l,adapter:i}){let{actions:n,toast:p}=m(),o=selectAdapterByKey({adapterKey:e.adapter,adapter:i}),a=!!(e.tracker==="ethereum"&&e.pending&&o?.speedUpTxAction&&o?.cancelTxAction&&e.from.toLowerCase()===l?.toLowerCase()),d=()=>{a&&o.cancelTxAction(e);},v=()=>{a&&o.speedUpTxAction(e);},{StatusAwareText:f=S,TransactionKey:T=L,StatusBadge:x=F,SpeedUpButton:g=de,CancelButton:w=ue,TxInfoButton:b=me}=s?.components??{};return jsxs("div",{className:cn("flex w-full flex-col gap-3 rounded-lg bg-[var(--tuwa-bg-primary)] p-4 shadow-md",c),children:[jsxs("div",{className:"flex items-center gap-3",children:[jsx("div",{className:"w-[40px] flex-shrink-0 [&>img]:w-full [&>img]:h-auto",title:getChainName(setChainId(e.chainId)),children:r??jsx(Web3Icon,{chainId:setChainId(e.chainId)})}),jsxs("div",{className:"flex-1",children:[jsx(f,{txStatus:e.status,source:e.title,fallback:e.type,variant:"title",applyColor:true}),jsx(f,{txStatus:e.status,source:e.description,variant:"description"})]})]}),jsxs("div",{children:[jsx(T,{adapter:i,tx:e,variant:"toast"}),jsxs("div",{className:"mt-3 flex items-center justify-between",children:[jsx(x,{tx:e}),a?jsxs("div",{className:"flex items-center gap-4",children:[jsx(g,{onClick:v,children:n.speedUp}),jsx(w,{onClick:d,children:n.cancel})]}):t&&!!l&&jsx(b,{onClick:t,children:p.openTransactionsInfo})]})]})]})}function Wt({adapter:t,onClose:e,onOpenAllTransactions:r,className:c,customization:s,transactionsPool:l,executeTxAction:i,initialTx:n,connectedWalletAddress:p}){let o=useMemo(()=>n?.lastTxKey?l[n.lastTxKey]:void 0,[l,n]),a=o??n,d=n?.withTrackedModal&&!o||(o?.isTrackedModalOpen??false),{isProcessing:v,isSucceed:f,isFailed:T,isReplaced:x}=useMemo(()=>{let M=o?.status,Rt=n?.isInitializing??false,Kt=o?.pending??false;return {isProcessing:Rt||Kt,isSucceed:M===TransactionStatus.Success,isFailed:o?.isError||!!n?.errorMessage,isReplaced:M===TransactionStatus.Replaced}},[o,n]),g=useMemo(()=>a?selectAdapterByKey({adapterKey:a.adapter,adapter:t}):void 0,[a,t]),w=!!(T&&a&&n?.actionFunction&&i),b=!!(g?.speedUpTxAction&&g?.cancelTxAction&&o?.pending&&o.tracker==="ethereum"),O=()=>{if(!w||!g?.retryTxAction)return;let M={adapter:a.adapter,type:a.type,desiredChainID:"desiredChainID"in a?a.desiredChainID:a.chainId,actionFunction:n?.actionFunction,title:a.title,description:a.description,payload:a.payload,rpcUrl:"rpcUrl"in a?a?.rpcUrl:"desiredChainID"in a?a.desiredChainID:a.chainId.split(":")[1],withTrackedModal:"withTrackedModal"in a?a.withTrackedModal:false};g.retryTxAction({tx:M,txKey:o?.txKey??"",onClose:e,executeTxAction:i});},N=()=>{b&&o&&g.cancelTxAction(o);},ot=()=>{b&&o&&g.speedUpTxAction(o);},at=s?.components?.Header,rt=s?.components?.Footer,st=s?.components?.StatusVisual,nt=s?.components?.ProgressIndicator,it=s?.components?.InfoBlock,ct=s?.components?.ErrorBlock;return a?jsx(Dialog,{open:d,onOpenChange:M=>!M&&e(o?.txKey),children:jsx(DialogContent,{className:cn("w-full sm:max-w-md",s?.modalProps?.className),...s?.modalProps,children:jsxs("div",{className:cn("relative flex w-full flex-col",c),children:[at?jsx(at,{onClose:()=>e(o?.txKey),title:jsx(vt,{tx:a})}):jsx(Ce,{onClose:()=>e(o?.txKey),title:jsx(vt,{tx:a})}),jsxs("main",{className:"flex flex-col gap-4 p-4",children:[st?jsx(st,{isProcessing:v,isSucceed:f,isFailed:T,isReplaced:x}):jsx(wt,{isProcessing:v,isSucceed:f,isFailed:T,isReplaced:x}),nt?jsx(nt,{isProcessing:v,isSucceed:f,isFailed:T,isReplaced:x}):jsx(Ct,{isProcessing:v,isSucceed:f,isFailed:T,isReplaced:x}),it?jsx(it,{tx:a,adapter:t}):jsx(bt,{tx:a,adapter:t}),ct?jsx(ct,{error:o?.errorMessage||n?.errorMessage}):jsx(yt,{error:o?.errorMessage||n?.errorMessage})]}),rt?jsx(rt,{onClose:()=>e(o?.txKey),onOpenAllTransactions:r,isProcessing:v,isFailed:T,canReplace:b,onRetry:w?O:void 0,onSpeedUp:b?ot:void 0,onCancel:b?N:void 0,connectedWalletAddress:p}):jsx(we,{onClose:()=>e(o?.txKey),onOpenAllTransactions:r,isProcessing:v,isFailed:T,canReplace:b,onRetry:w?O:void 0,onSpeedUp:b?ot:void 0,onCancel:b?N:void 0,connectedWalletAddress:p})]})})}):null}function vt({tx:t}){return jsx(S,{txStatus:"status"in t?t.status:void 0,source:t.title,fallback:t.type,variant:"title",className:"text-lg"})}var Ce=({onClose:t,title:e})=>{let{actions:r}=m();return jsxs(DialogHeader,{children:[jsx(DialogTitle,{children:e}),jsx(DialogClose,{asChild:true,children:jsx("button",{type:"button",onClick:()=>t(),"aria-label":r.close,className:`cursor-pointer rounded-full p-1
2
- text-[var(--tuwa-text-tertiary)] transition-colors
3
- hover:bg-[var(--tuwa-bg-muted)] hover:text-[var(--tuwa-text-primary)]`,children:jsx(CloseIcon,{})})})]})},we=({onClose:t,onOpenAllTransactions:e,isProcessing:r,onRetry:c,onSpeedUp:s,onCancel:l,canReplace:i,isFailed:n,connectedWalletAddress:p})=>{let{trackingModal:o,actions:a}=m(),d=()=>n&&c?jsx("button",{type:"button",onClick:c,className:`cursor-pointer rounded-t-md sm:rounded-md
4
- bg-gradient-to-r from-[var(--tuwa-button-gradient-from)] to-[var(--tuwa-button-gradient-to)]
5
- px-4 py-2 text-sm font-semibold text-[var(--tuwa-text-on-accent)] transition-opacity
6
- hover:from-[var(--tuwa-button-gradient-from-hover)] hover:to-[var(--tuwa-button-gradient-to-hover)]`,children:o.retry}):!r&&!i&&p?jsx("button",{type:"button",onClick:e,className:`cursor-pointer rounded-md
7
- bg-[var(--tuwa-bg-muted)] px-4 py-2 text-sm font-semibold text-[var(--tuwa-text-primary)]
8
- transition-colors hover:bg-[var(--tuwa-border-primary)]`,children:o.allTransactions}):null;return jsxs("footer",{className:`flex w-full items-center justify-between
9
- border-t border-[var(--tuwa-border-primary)] p-4`,children:[jsx("div",{className:"flex items-center gap-4",children:i&&s&&l&&jsxs(Fragment,{children:[jsx("button",{type:"button",onClick:s,className:`cursor-pointer text-sm font-medium
10
- text-[var(--tuwa-text-accent)] transition-opacity hover:opacity-80`,children:a.speedUp}),jsx("button",{type:"button",onClick:l,className:`cursor-pointer text-sm font-medium
11
- text-[var(--tuwa-text-secondary)] transition-opacity hover:opacity-80`,children:a.cancel})]})}),jsxs("div",{className:"flex items-center gap-3",children:[jsx(d,{}),jsx("button",{type:"button",onClick:t,disabled:r&&!i,className:`cursor-pointer rounded-md bg-[var(--tuwa-bg-muted)] px-4 py-2 text-sm font-semibold
12
- text-[var(--tuwa-text-primary)] transition-colors hover:bg-[var(--tuwa-border-primary)]
13
- disabled:cursor-not-allowed disabled:opacity-50`,children:r&&!i?o.processing:o.close})]})]})};function yt({error:t,className:e}){let{isCopied:r,copy:c}=useCopyToClipboard(),{actions:s,txError:l}=m();return t?jsxs("div",{className:cn("rounded-lg border border-[var(--tuwa-error-icon)]/30 bg-[var(--tuwa-error-bg)] p-3 text-sm",e),children:[jsxs("div",{className:"mb-2 flex items-center justify-between",children:[jsxs("div",{className:"flex items-center gap-2 font-bold text-[var(--tuwa-error-icon)]",children:[jsx(ExclamationTriangleIcon,{className:"h-5 w-5"}),jsx("span",{children:l.title})]}),jsx("button",{type:"button",onClick:()=>c(t),title:r?l.copied:s.copy,"aria-label":r?l.copied:`${s.copy} error message`,className:"cursor-pointer text-[var(--tuwa-error-icon)]/50 transition-colors hover:text-[var(--tuwa-error-icon)]",children:r?jsx(CheckIcon,{className:"h-5 w-5 text-[var(--tuwa-success-icon)]"}):jsx(DocumentDuplicateIcon,{className:"h-5 w-5"})})]}),jsx("div",{className:"max-h-24 overflow-y-auto rounded bg-[var(--tuwa-bg-primary)] p-2",children:jsx("p",{className:"font-mono text-xs text-[var(--tuwa-error-text)] break-all",children:t})})]}):null}function Ke({label:t,value:e}){return jsxs("div",{className:"flex items-center justify-between text-sm",children:[jsx("span",{className:"text-[var(--tuwa-text-secondary)]",children:t}),jsx("span",{className:"font-medium text-[var(--tuwa-text-primary)]",children:e})]})}function bt({tx:t,adapter:e,className:r,customization:c}){let{txInfo:s,statuses:l,hashLabels:i}=m(),n=selectAdapterByKey({adapterKey:t.adapter,adapter:e});if(!n)return null;let{InfoRow:p=Ke}=c?.components??{},o="chainId"in t?t.chainId:t.desiredChainID,a=t.adapter===OrbitAdapter.SOLANA,d=a?t:void 0;return jsxs("div",{className:cn("flex flex-col gap-3 rounded-lg border border-[var(--tuwa-border-primary)] bg-[var(--tuwa-bg-primary)] p-3",r),children:[jsx(p,{label:s.network,value:jsxs("div",{className:"flex items-center justify-end gap-2",children:[jsx("div",{className:"h-4 w-4",children:jsx(Web3Icon,{chainId:setChainId(o)})}),jsx("span",{children:getChainName(setChainId(o))})]})}),t.localTimestamp&&jsx(p,{label:s.started,value:It.unix(t.localTimestamp).format("MMM D, HH:mm:ss")}),a&&jsxs(Fragment,{children:[d?.slot&&jsx(p,{label:s.slot,value:jsx(D,{hash:d.slot.toString(),explorerUrl:n?.getExplorerUrl?`${n?.getExplorerUrl(`/block/${d.slot}`)}`:void 0})}),(typeof d?.confirmations=="number"||typeof d?.confirmations=="string")&&jsx(p,{label:l.confirmationsLabel,value:d.confirmations}),d?.recentBlockhash&&jsx(p,{label:i.recentBlockhash,value:jsx(D,{hash:d.recentBlockhash})})]}),"txKey"in t&&t.txKey&&jsx("div",{className:"border-t border-[var(--tuwa-border-primary)] pt-3",children:jsx(L,{tx:t,adapter:e,variant:"history",renderHashLink:c?.components?.transactionKey})})]})}var We={completed:{line:"bg-[var(--tuwa-success-icon)]",border:"border-[var(--tuwa-success-icon)]",fill:"bg-[var(--tuwa-success-icon)]"},error:{line:"bg-[var(--tuwa-error-icon)]",border:"border-[var(--tuwa-error-icon)]",fill:"bg-[var(--tuwa-error-icon)]"},replaced:{line:"bg-[var(--tuwa-info-icon)]",border:"border-[var(--tuwa-info-icon)]",fill:"bg-[var(--tuwa-info-icon)]"},active:{line:"bg-[var(--tuwa-pending-icon)]",border:"border-[var(--tuwa-pending-icon)]",fill:"bg-transparent",pulse:"bg-[var(--tuwa-pending-icon)]"},inactive:{line:"bg-[var(--tuwa-border-primary)]",border:"border-[var(--tuwa-border-primary)]",fill:"bg-transparent"}};function ze({status:t,label:e,isFirst:r=false}){let c=We[t],s=()=>{switch(t){case "completed":return jsx(CheckIcon,{className:"h-3 w-3 text-white"});case "error":return jsx(ExclamationTriangleIcon,{className:"h-3 w-3 text-white"});case "replaced":return jsx(ArrowPathIcon,{className:"h-3 w-3 text-white"});case "active":return jsx("div",{className:cn("h-2 w-2 animate-pulse rounded-full",c.pulse)});default:return null}};return jsxs("div",{className:"relative flex min-w-[80px] flex-1 flex-col items-center",children:[!r&&jsx("div",{className:cn("absolute right-1/2 top-[10px] h-0.5 w-full",c.line)}),jsx("div",{className:cn("relative z-10 flex h-5 w-5 items-center justify-center rounded-full border-2",c.border,c.fill),children:s()}),jsx("span",{className:cn("mt-2 text-center text-xs",t!=="inactive"?"font-semibold text-[var(--tuwa-text-primary)]":"text-[var(--tuwa-text-secondary)]"),children:e})]})}function Ct({isProcessing:t,isSucceed:e,isFailed:r,isReplaced:c,className:s,StepComponent:l=ze}){let{trackingModal:i,statuses:n}=m(),p=useMemo(()=>{let o=d=>{if(d===1)return "completed";if(d===2){if(e||r||c)return "completed";if(t)return "active"}if(d===3){if(e)return "completed";if(r)return "error";if(c)return "replaced";if(t)return "active"}return "inactive"},a=d=>d===1?i.progressIndicator.created:d===2?i.progressIndicator.processing:r?n.failed:c?n.replaced:i.progressIndicator.succeed;return [{status:o(1),label:a(1),isFirst:true},{status:o(2),label:a(2)},{status:o(3),label:a(3),isLast:true}]},[t,e,r,c,i,n]);return jsx("div",{className:cn("flex w-full items-start px-4 pt-2 pb-1",s),children:p.map((o,a)=>jsx(l,{...o},a))})}var Ye={succeed:{Icon:CheckCircleIcon,className:"text-[var(--tuwa-success-icon)]"},failed:{Icon:ExclamationCircleIcon,className:"text-[var(--tuwa-error-icon)]"},replaced:{Icon:ArrowPathIcon,className:"text-[var(--tuwa-info-icon)]"},processing:{Icon:ArrowPathIcon,className:"animate-spin text-[var(--tuwa-text-accent)]"},initializing:{Icon:ClockIcon,className:"animate-pulse text-[var(--tuwa-pending-icon)]"}};function wt({isProcessing:t,isSucceed:e,isFailed:r,isReplaced:c}){let s=e&&"succeed"||r&&"failed"||c&&"replaced"||t&&"processing"||"initializing",{Icon:l,className:i}=Ye[s];return jsx("div",{className:"flex justify-center py-4",children:jsx(l,{className:cn("h-16 w-16",i)})})}It.extend(Ze);var je=({chainId:t})=>jsx("div",{className:"h-8 w-8 text-[var(--tuwa-text-secondary)]",children:jsx(Web3Icon,{chainId:setChainId(t)})}),to=({timestamp:t})=>jsx("span",{className:"mb-1 block text-xs text-[var(--tuwa-text-secondary)]",children:t?It.unix(t).fromNow():"..."});function kt({tx:t,adapter:e,className:r,customization:c}){let{Icon:s=je,Title:l=S,Description:i=S,Timestamp:n=to,StatusBadge:p=F,TransactionKey:o=L}=c?.components??{};return jsxs("div",{className:cn("flex flex-col gap-2 border-b border-[var(--tuwa-border-secondary)] p-3 transition-colors hover:bg-[var(--tuwa-bg-secondary)]",r),children:[jsxs("div",{className:"flex items-start justify-between",children:[jsxs("div",{className:"flex items-center gap-4",children:[jsx("div",{className:"flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-full bg-[var(--tuwa-bg-muted)]",children:jsx(s,{chainId:t.chainId})}),jsxs("div",{children:[jsx(l,{txStatus:t.status,source:t.title,fallback:t.type,variant:"title",applyColor:true}),jsx(n,{timestamp:t.localTimestamp}),jsx(i,{txStatus:t.status,source:t.description,variant:"description"})]})]}),jsx(p,{tx:t})]}),jsx(o,{tx:t,adapter:e,variant:"history"})]})}function ao({title:t,message:e,className:r}){return jsxs("div",{className:cn("rounded-lg bg-[var(--tuwa-bg-muted)] p-8 text-center",r),children:[jsx("h4",{className:"font-semibold text-[var(--tuwa-text-primary)]",children:t}),jsx("p",{className:"mt-1 text-sm text-[var(--tuwa-text-secondary)]",children:e})]})}function St({adapter:t,connectedWalletAddress:e,transactionsPool:r,className:c,customization:s}){let{transactionsModal:l}=m(),i=useMemo(()=>e?selectAllTransactionsByActiveWallet(r,e).sort((d,v)=>(v.localTimestamp??0)-(d.localTimestamp??0)):[],[r,e]),{Placeholder:n=ao,HistoryItem:p=kt}=s?.components??{},o=()=>e?i.length>0?jsx("div",{className:cn("max-h-[400px] overflow-y-auto rounded-lg border border-[var(--tuwa-border-primary)] bg-[var(--tuwa-bg-primary)]",s?.classNames?.listWrapper),children:i.map(a=>jsx(p,{tx:a,adapter:t},a.txKey))}):jsx(n,{title:l.history.noTransactionsTitle,message:l.history.noTransactionsMessage}):jsx(n,{title:l.history.connectWalletTitle,message:l.history.connectWalletMessage});return jsxs("div",{className:cn("flex flex-col gap-y-3",c),children:[s?.title&&jsx("h3",{className:"text-lg font-bold text-[var(--tuwa-text-primary)]",children:s?.title}),o()]})}var po=({closeModal:t,title:e})=>{let{actions:r}=m();return jsxs(DialogHeader,{children:[jsx(DialogTitle,{children:e}),jsx(DialogClose,{asChild:true,children:jsx("button",{type:"button",onClick:t,"aria-label":r.close,className:`cursor-pointer rounded-full p-1
14
- text-[var(--tuwa-text-tertiary)] transition-colors
15
- hover:bg-[var(--tuwa-bg-muted)] hover:text-[var(--tuwa-text-primary)]`,children:jsx(CloseIcon,{})})})]})};function zt({isOpen:t,setIsOpen:e,customization:r,adapter:c,connectedWalletAddress:s,transactionsPool:l}){let{transactionsModal:i}=m(),n=()=>e(false),p=r?.components?.Header,o=r?.components?.History;return jsx(Dialog,{open:t,onOpenChange:a=>!a&&n(),children:jsx(DialogContent,{className:cn("w-full sm:max-w-2xl",r?.modalProps?.className),...r?.modalProps,children:jsxs("div",{className:cn("relative max-h-[95dvh] w-full flex flex-col",r?.classNames?.contentWrapper),children:[p?jsx(p,{closeModal:n}):jsx(po,{closeModal:n,title:i.history.title}),o?jsx(o,{adapter:c,transactionsPool:l,connectedWalletAddress:s}):jsx(St,{adapter:c,transactionsPool:l,connectedWalletAddress:s})]})})})}var xo=t=>({replaced:jsxs(Fragment,{children:[jsx(ArrowPathIcon,{className:"h-4 w-4"}),jsx("span",{children:t.replaced})]}),loading:jsxs(Fragment,{children:[jsx(ArrowPathIcon,{className:"h-4 w-4 animate-spin"}),jsx("span",{children:t.loading})]}),succeed:jsxs(Fragment,{children:[jsx(CheckCircleIcon,{className:"h-4 w-4"}),jsx("span",{children:t.succeed})]}),failed:jsxs(Fragment,{children:[jsx(ExclamationCircleIcon,{className:"h-4 w-4"}),jsx("span",{children:t.failed})]})});function Es({children:t,action:e,getLastTxKey:r,transactionsPool:c,walletAddress:s,loadingContent:l,succeedContent:i,failedContent:n,replacedContent:p,resetTimeout:o=2500,className:a,...d}){let{trackedTxButton:v}=m(),[f,T]=useState("idle"),[x,g]=useState(void 0),w=useMemo(()=>xo(v),[v]);useEffect(()=>{T("idle"),g(void 0);},[s]),useEffect(()=>{if(!x)return;let N=c[x];if(N)switch(N.status){case TransactionStatus.Success:T("succeed");break;case TransactionStatus.Replaced:T("replaced");break;case TransactionStatus.Failed:T("failed");break}},[c,x,s]),useEffect(()=>{if(["succeed","failed","replaced"].includes(f)){let N=setTimeout(()=>{T("idle"),g(void 0);},o);return ()=>clearTimeout(N)}},[f,o]);let b=async()=>{T("loading");try{await e(),g(r());}catch(N){console.error("Transaction initiation failed:",N),T("failed");}},O=()=>{switch(f){case "loading":return l??w.loading;case "succeed":return i??w.succeed;case "failed":return n??w.failed;case "replaced":return p??w.replaced;default:return t}};return jsx("button",{...d,disabled:f!=="idle"||d.disabled,onClick:b,className:cn("flex cursor-pointer items-center justify-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium transition-all duration-200 disabled:cursor-not-allowed disabled:opacity-70",{"bg-gradient-to-r from-[var(--tuwa-button-gradient-from)] to-[var(--tuwa-button-gradient-to)] text-[var(--tuwa-text-on-accent)] hover:opacity-90":f==="idle","bg-gray-400 text-white":f==="loading","bg-gray-500 text-white":f==="replaced","bg-[var(--tuwa-success-bg)] text-[var(--tuwa-success-text)]":f==="succeed","bg-[var(--tuwa-error-bg)] text-[var(--tuwa-error-text)]":f==="failed"},a),children:O()})}export{D as HashLink,S as StatusAwareText,Ut as ToastCloseButton,Ft as ToastTransaction,Wt as TrackingTxModal,kt as TransactionHistoryItem,L as TransactionKey,F as TransactionStatusBadge,St as TransactionsHistory,zt as TransactionsInfoModal,Es as TxActionButton,yt as TxErrorBlock,bt as TxInfoBlock,Ct as TxProgressIndicator,wt as TxStatusVisual,J as defaultLabels};//# sourceMappingURL=index.js.map
1
+ import {ArrowTopRightOnSquareIcon,CheckIcon,DocumentDuplicateIcon,XMarkIcon,ArrowPathIcon,XCircleIcon,CheckCircleIcon,ExclamationTriangleIcon,ClockIcon,ExclamationCircleIcon}from'@heroicons/react/24/solid';import {useCopyToClipboard,cn,textCenterEllipsis,Dialog,DialogContent,DialogHeader,DialogTitle,DialogClose,CloseIcon}from'@tuwaio/nova-core';import {createContext,useContext,useMemo,useState,useEffect}from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {TransactionStatus,TransactionTracker,selectAllTransactionsByActiveWallet}from'@tuwaio/pulsar-core';import'react-toastify';import {Web3Icon}from'@bgd-labs/react-web3-icons';import {getChainName}from'@bgd-labs/react-web3-icons/dist/utils';import {selectAdapterByKey,setChainId,OrbitAdapter}from'@tuwaio/orbit-core';import It from'dayjs';import jo from'dayjs/plugin/relativeTime';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 Ot=createContext(J);var v=()=>useContext(Ot);({[TransactionStatus.Success]:"success",[TransactionStatus.Failed]:"error",[TransactionStatus.Replaced]:"info"});function D({label:t,hash:o,explorerUrl:n,variant:c="default",className:r}){let{isCopied:l,copy:i}=useCopyToClipboard(),{actions:s,txError:p}=v(),a=cn("novatx:flex novatx:items-center novatx:justify-between",{"novatx:text-sm":c==="default","novatx:text-xs":c==="compact"},r),e=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=jsx("span",{className:"novatx:font-mono",children:textCenterEllipsis(o,5,5)});return jsxs("div",{className:a,children:[t&&jsxs("span",{className:e,children:[t,":"]}),jsxs("div",{className:"novatx:flex novatx:items-center novatx:gap-x-2",children:[n?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:s.viewOnExplorer,"aria-label":s.viewOnExplorer,children:[x,jsx(ArrowTopRightOnSquareIcon,{className:"novatx:h-4 novatx:w-4"})]}):jsx("span",{className:"novatx:text-[var(--tuwa-text-primary)]",children:x}),jsx("button",{type:"button",onClick:()=>i(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:s.copy,"aria-label":l?p.copied:s.copy,children:l?jsx(CheckIcon,{className:"novatx:h-4 novatx:w-4 novatx:text-[var(--tuwa-success-icon)]"}):jsx(DocumentDuplicateIcon,{className:"novatx:h-4 novatx:w-4"})})]})]})}var pt={[TransactionStatus.Success]:{index:1,colorClass:"novatx:text-[var(--tuwa-success-text)]"},[TransactionStatus.Failed]:{index:2,colorClass:"novatx:text-[var(--tuwa-error-text)]"},[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 i,s="";if(typeof o=="string")i=o;else if(Array.isArray(o)){let e=pt[t||"default"]??pt.default;i=o[e.index],l&&(s=e.colorClass);}else i=n;return i?jsx("div",{className: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)]",s,r),children:i}):null}function Ut({closeToast:t}){let{actions:o}=v();return jsx("button",{type:"button",onClick:t,"aria-label":o.close,title:o.close,className:cn("novatx:absolute novatx:top-2 novatx:right-2 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:jsx(XMarkIcon,{className:"novatx:h-5 novatx:w-5"})})}function L({tx:t,adapter:o,variant:n="toast",className:c,renderHashLink:r,confirmations:l}){let{hashLabels:i,statuses:s}=v(),p=selectAdapterByKey({adapterKey:t.adapter,adapter:o});if(!p)return null;let a=f=>r?r(f):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=i[String(t.tracker)],g=x?a({label:x,hash:t.txKey,variant:t.tracker!==TransactionTracker.Solana?"compact":"default",explorerUrl:p.getExplorerTxUrl&&t.tracker===TransactionTracker.Solana?p?.getExplorerTxUrl(t):void 0}):null,u=(()=>{let f=t.hash,T=t.replacedTxHash;return !f&&!T?null:T?jsxs(Fragment,{children:[f&&a({label:i.original,hash:f,variant:"compact"}),typeof p.getExplorerTxUrl<"u"&&a({label:i.replaced,hash:T,explorerUrl:p.getExplorerTxUrl(t)})]}):f&&typeof p.getExplorerTxUrl<"u"&&a({label:i.default,hash:f,explorerUrl:p.getExplorerTxUrl(t)})})(),m=x&&x!==i.default&&t.txKey!==t.hash;return jsxs("div",{className:cn(e,c),children:[m&&g,u,typeof l=="number"&&jsxs("p",{className:"novatx:text-xs novatx:text-[var(--tuwa-text-tertiary)]",children:[s.confirmationsLabel,": ",l]})]})}var ro=t=>({Pending:{label:t.pending,Icon:ArrowPathIcon,badgeClasses:"novatx:bg-[var(--tuwa-pending-bg)] novatx:text-[var(--tuwa-pending-text)]",iconClasses:"novatx:animate-spin novatx:text-[var(--tuwa-pending-icon)]"},[TransactionStatus.Success]:{label:t.success,Icon:CheckCircleIcon,badgeClasses:"novatx:bg-[var(--tuwa-success-bg)] novatx:text-[var(--tuwa-success-text)]",iconClasses:"novatx:text-[var(--tuwa-success-icon)]"},[TransactionStatus.Failed]:{label:t.failed,Icon:XCircleIcon,badgeClasses:"novatx:bg-[var(--tuwa-error-bg)] novatx:text-[var(--tuwa-error-text)]",iconClasses:"novatx:text-[var(--tuwa-error-icon)]"},[TransactionStatus.Replaced]:{label:t.replaced,Icon: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=useMemo(()=>ro(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,i=l?c[l]:null;if(!i)return jsx("div",{className:cn(r,"novatx:bg-[var(--tuwa-info-bg)] novatx:text-[var(--tuwa-info-text)]",o),children:t.status??n.unknown});let{label:s,Icon:p,badgeClasses:a,iconClasses:e}=i;return jsxs("div",{className:cn(r,a,o),children:[jsx(p,{className:cn("novatx:h-4 novatx:w-4",e)}),s]})}var xo=({onClick:t,children:o})=>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}),vo=({onClick:t,children:o})=>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}),uo=({onClick:t,children:o})=>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 Ft({openTxInfoModal:t,tx:o,icon:n,className:c,customization:r,connectedWalletAddress:l,adapter:i}){let{actions:s,toast:p}=v(),a=selectAdapterByKey({adapterKey:o.adapter,adapter:i}),e=!!(o.tracker==="ethereum"&&o.pending&&a?.speedUpTxAction&&a?.cancelTxAction&&o.from.toLowerCase()===l?.toLowerCase()),x=()=>{e&&a.cancelTxAction(o);},g=()=>{e&&a.speedUpTxAction(o);},{StatusAwareText:u=S,TransactionKey:m=L,StatusBadge:f=F,SpeedUpButton:T=xo,CancelButton:w=vo,TxInfoButton:b=uo}=r?.components??{};return jsxs("div",{className: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:[jsxs("div",{className:"novatx:flex novatx:items-center novatx:gap-3",children:[jsx("div",{className:"novatx:w-[40px] novatx:flex-shrink-0 [&>img]:novatx:w-full [&>img]:novatx:h-auto",title:getChainName(setChainId(o.chainId)),children:n??jsx(Web3Icon,{chainId:setChainId(o.chainId)})}),jsxs("div",{className:"novatx:flex-1",children:[jsx(u,{txStatus:o.status,source:o.title,fallback:o.type,variant:"title",applyColor:true}),jsx(u,{txStatus:o.status,source:o.description,variant:"description"})]})]}),jsxs("div",{children:[jsx(m,{adapter:i,tx:o,variant:"toast"}),jsxs("div",{className:"novatx:mt-3 novatx:flex novatx:items-center novatx:justify-between",children:[jsx(f,{tx:o}),e?jsxs("div",{className:"novatx:flex novatx:items-center novatx:gap-4",children:[jsx(T,{onClick:g,children:s.speedUp}),jsx(w,{onClick:x,children:s.cancel})]}):t&&!!l&&jsx(b,{onClick:t,children:p.openTransactionsInfo})]})]})]})}function Wt({adapter:t,onClose:o,onOpenAllTransactions:n,className:c,customization:r,transactionsPool:l,executeTxAction:i,initialTx:s,connectedWalletAddress:p}){let a=useMemo(()=>s?.lastTxKey?l[s.lastTxKey]:void 0,[l,s]),e=a??s,x=s?.withTrackedModal&&!a||(a?.isTrackedModalOpen??false),{isProcessing:g,isSucceed:u,isFailed:m,isReplaced:f}=useMemo(()=>{let M=a?.status,Rt=s?.isInitializing??false,Kt=a?.pending??false;return {isProcessing:Rt||Kt,isSucceed:M===TransactionStatus.Success,isFailed:a?.isError||!!s?.errorMessage,isReplaced:M===TransactionStatus.Replaced}},[a,s]),T=useMemo(()=>e?selectAdapterByKey({adapterKey:e.adapter,adapter:t}):void 0,[e,t]),w=!!(m&&e&&s?.actionFunction&&i),b=!!(T?.speedUpTxAction&&T?.cancelTxAction&&a?.pending&&a.tracker==="ethereum"),O=()=>{if(!w||!T?.retryTxAction)return;let M={adapter:e.adapter,type:e.type,desiredChainID:"desiredChainID"in e?e.desiredChainID:e.chainId,actionFunction:s?.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:i});},N=()=>{b&&a&&T.cancelTxAction(a);},at=()=>{b&&a&&T.speedUpTxAction(a);},et=r?.components?.Header,nt=r?.components?.Footer,rt=r?.components?.StatusVisual,st=r?.components?.ProgressIndicator,it=r?.components?.InfoBlock,ct=r?.components?.ErrorBlock;return e?jsx(Dialog,{open:x,onOpenChange:M=>!M&&o(a?.txKey),children:jsx(DialogContent,{className:cn("novatx:w-full novatx:sm:max-w-md",r?.modalProps?.className),...r?.modalProps,children:jsxs("div",{className:cn("novatx:relative novatx:flex novatx:w-full novatx:flex-col",c),children:[et?jsx(et,{onClose:()=>o(a?.txKey),title:jsx(gt,{tx:e})}):jsx(wo,{onClose:()=>o(a?.txKey),title:jsx(gt,{tx:e})}),jsxs("main",{className:"novatx:flex novatx:flex-col novatx:gap-4 novatx:p-4",children:[rt?jsx(rt,{isProcessing:g,isSucceed:u,isFailed:m,isReplaced:f}):jsx(wt,{isProcessing:g,isSucceed:u,isFailed:m,isReplaced:f}),st?jsx(st,{isProcessing:g,isSucceed:u,isFailed:m,isReplaced:f}):jsx(Ct,{isProcessing:g,isSucceed:u,isFailed:m,isReplaced:f}),it?jsx(it,{tx:e,adapter:t}):jsx(bt,{tx:e,adapter:t}),ct?jsx(ct,{error:a?.errorMessage||s?.errorMessage}):jsx(yt,{error:a?.errorMessage||s?.errorMessage})]}),nt?jsx(nt,{onClose:()=>o(a?.txKey),onOpenAllTransactions:n,isProcessing:g,isFailed:m,canReplace:b,onRetry:w?O:void 0,onSpeedUp:b?at:void 0,onCancel:b?N:void 0,connectedWalletAddress:p}):jsx(ho,{onClose:()=>o(a?.txKey),onOpenAllTransactions:n,isProcessing:g,isFailed:m,canReplace:b,onRetry:w?O:void 0,onSpeedUp:b?at:void 0,onCancel:b?N:void 0,connectedWalletAddress:p})]})})}):null}function gt({tx:t}){return jsx(S,{txStatus:"status"in t?t.status:void 0,source:t.title,fallback:t.type,variant:"title",className:"novatx:text-lg"})}var wo=({onClose:t,title:o})=>{let{actions:n}=v();return jsxs(DialogHeader,{children:[jsx(DialogTitle,{children:o}),jsx(DialogClose,{asChild:true,children:jsx("button",{type:"button",onClick:()=>t(),"aria-label":n.close,className:`novatx:cursor-pointer novatx:rounded-full novatx:p-1
2
+ novatx:text-[var(--tuwa-text-tertiary)] novatx:transition-colors
3
+ novatx:hover:bg-[var(--tuwa-bg-muted)] novatx:hover:text-[var(--tuwa-text-primary)]`,children:jsx(CloseIcon,{})})})]})},ho=({onClose:t,onOpenAllTransactions:o,isProcessing:n,onRetry:c,onSpeedUp:r,onCancel:l,canReplace:i,isFailed:s,connectedWalletAddress:p})=>{let{trackingModal:a,actions:e}=v(),x=()=>s&&c?jsx("button",{type:"button",onClick:c,className:`novatx:cursor-pointer novatx:rounded-t-md novatx:sm:rounded-md
4
+ novatx:bg-gradient-to-r novatx:from-[var(--tuwa-button-gradient-from)] novatx:to-[var(--tuwa-button-gradient-to)]
5
+ novatx:px-4 novatx:py-2 novatx:text-sm novatx:font-semibold novatx:text-[var(--tuwa-text-on-accent)] novatx:transition-opacity
6
+ novatx:hover:from-[var(--tuwa-button-gradient-from-hover)] novatx:hover:to-[var(--tuwa-button-gradient-to-hover)]`,children:a.retry}):!n&&!i&&p?jsx("button",{type:"button",onClick:o,className:`novatx:cursor-pointer novatx:rounded-md
7
+ novatx:bg-[var(--tuwa-bg-muted)] novatx:px-4 novatx:py-2 novatx:text-sm novatx:font-semibold novatx:text-[var(--tuwa-text-primary)]
8
+ novatx:transition-colors novatx:hover:bg-[var(--tuwa-border-primary)]`,children:a.allTransactions}):null;return jsxs("footer",{className:`novatx:flex novatx:w-full novatx:items-center novatx:justify-between
9
+ novatx:border-t novatx:border-[var(--tuwa-border-primary)] novatx:p-4`,children:[jsx("div",{className:"novatx:flex novatx:items-center novatx:gap-4",children:i&&r&&l&&jsxs(Fragment,{children:[jsx("button",{type:"button",onClick:r,className:`novatx:cursor-pointer novatx:text-sm novatx:font-medium
10
+ novatx:text-[var(--tuwa-text-accent)] novatx:transition-opacity novatx:hover:opacity-80`,children:e.speedUp}),jsx("button",{type:"button",onClick:l,className:`novatx:cursor-pointer novatx:text-sm novatx:font-medium
11
+ novatx:text-[var(--tuwa-text-secondary)] novatx:transition-opacity novatx:hover:opacity-80`,children:e.cancel})]})}),jsxs("div",{className:"novatx:flex novatx:items-center novatx:gap-3",children:[jsx(x,{}),jsx("button",{type:"button",onClick:t,disabled:n&&!i,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
12
+ novatx:text-[var(--tuwa-text-primary)] novatx:transition-colors novatx:hover:bg-[var(--tuwa-border-primary)]
13
+ novatx:disabled:cursor-not-allowed novatx:disabled:opacity-50`,children:n&&!i?a.processing:a.close})]})]})};function yt({error:t,className:o}){let{isCopied:n,copy:c}=useCopyToClipboard(),{actions:r,txError:l}=v();return t?jsxs("div",{className: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:[jsxs("div",{className:"novatx:mb-2 novatx:flex novatx:items-center novatx:justify-between",children:[jsxs("div",{className:"novatx:flex novatx:items-center novatx:gap-2 novatx:font-bold novatx:text-[var(--tuwa-error-icon)]",children:[jsx(ExclamationTriangleIcon,{className:"novatx:h-5 novatx:w-5"}),jsx("span",{children:l.title})]}),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?jsx(CheckIcon,{className:"novatx:h-5 novatx:w-5 novatx:text-[var(--tuwa-success-icon)]"}):jsx(DocumentDuplicateIcon,{className:"novatx:h-5 novatx:w-5"})})]}),jsx("div",{className:"novatx:max-h-24 novatx:overflow-y-auto novatx:rounded novatx:bg-[var(--tuwa-bg-primary)] novatx:p-2",children:jsx("p",{className:"novatx:font-mono novatx:text-xs novatx:text-[var(--tuwa-error-text)] novatx:break-all",children:t})})]}):null}function Do({label:t,value:o}){return jsxs("div",{className:"novatx:flex novatx:items-center novatx:justify-between novatx:text-sm",children:[jsx("span",{className:"novatx:text-[var(--tuwa-text-secondary)]",children:t}),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:i}=v(),s=selectAdapterByKey({adapterKey:t.adapter,adapter:o});if(!s)return null;let{InfoRow:p=Do}=c?.components??{},a="chainId"in t?t.chainId:t.desiredChainID,e=t.adapter===OrbitAdapter.SOLANA,x=e?t:void 0;return jsxs("div",{className: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:[jsx(p,{label:r.network,value:jsxs("div",{className:"novatx:flex novatx:items-center novatx:justify-end novatx:gap-2",children:[jsx("div",{className:"novatx:h-4 novatx:w-4",children:jsx(Web3Icon,{chainId:setChainId(a)})}),jsx("span",{children:getChainName(setChainId(a))})]})}),t.localTimestamp&&jsx(p,{label:r.started,value:It.unix(t.localTimestamp).format("MMM D, HH:mm:ss")}),e&&jsxs(Fragment,{children:[x?.slot&&jsx(p,{label:r.slot,value:jsx(D,{hash:x.slot.toString(),explorerUrl:s?.getExplorerUrl?`${s?.getExplorerUrl(`/block/${x.slot}`)}`:void 0})}),(typeof x?.confirmations=="number"||typeof x?.confirmations=="string")&&jsx(p,{label:l.confirmationsLabel,value:x.confirmations}),x?.recentBlockhash&&jsx(p,{label:i.recentBlockhash,value:jsx(D,{hash:x.recentBlockhash})})]}),"txKey"in t&&t.txKey&&jsx("div",{className:"novatx:border-t novatx:border-[var(--tuwa-border-primary)] novatx:pt-3",children:jsx(L,{tx:t,adapter:o,variant:"history",renderHashLink:c?.components?.transactionKey})})]})}var zo={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 Vo({status:t,label:o,isFirst:n=false}){let c=zo[t],r=()=>{switch(t){case "completed":return jsx(CheckIcon,{className:"novatx:h-3 novatx:w-3 novatx:text-white"});case "error":return jsx(ExclamationTriangleIcon,{className:"novatx:h-3 novatx:w-3 novatx:text-white"});case "replaced":return jsx(ArrowPathIcon,{className:"novatx:h-3 novatx:w-3 novatx:text-white"});case "active":return jsx("div",{className:cn("novatx:h-2 novatx:w-2 novatx:animate-pulse novatx:rounded-full",c.pulse)});default:return null}};return jsxs("div",{className:"novatx:relative novatx:flex novatx:min-w-[80px] novatx:flex-1 novatx:flex-col novatx:items-center",children:[!n&&jsx("div",{className:cn("novatx:absolute novatx:right-1/2 novatx:top-[10px] novatx:h-0.5 novatx:w-full",c.line)}),jsx("div",{className: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()}),jsx("span",{className: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=Vo}){let{trackingModal:i,statuses:s}=v(),p=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?i.progressIndicator.created:x===2?i.progressIndicator.processing:n?s.failed:c?s.replaced:i.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,i,s]);return jsx("div",{className:cn("novatx:flex novatx:w-full novatx:items-start novatx:px-4 novatx:pt-2 novatx:pb-1",r),children:p.map((a,e)=>jsx(l,{...a},e))})}var $o={succeed:{Icon:CheckCircleIcon,className:"novatx:text-[var(--tuwa-success-icon)]"},failed:{Icon:ExclamationCircleIcon,className:"novatx:text-[var(--tuwa-error-icon)]"},replaced:{Icon:ArrowPathIcon,className:"novatx:text-[var(--tuwa-info-icon)]"},processing:{Icon:ArrowPathIcon,className:"novatx:animate-spin novatx:text-[var(--tuwa-text-accent)]"},initializing:{Icon: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:i}=$o[r];return jsx("div",{className:"novatx:flex novatx:justify-center novatx:py-4",children:jsx(l,{className:cn("novatx:h-16 novatx:w-16",i)})})}It.extend(jo);var ta=({chainId:t})=>jsx("div",{className:"novatx:h-8 novatx:w-8 novatx:text-[var(--tuwa-text-secondary)]",children:jsx(Web3Icon,{chainId:setChainId(t)})}),oa=({timestamp:t})=>jsx("span",{className:"novatx:mb-1 novatx:block novatx:text-xs novatx:text-[var(--tuwa-text-secondary)]",children:t?It.unix(t).fromNow():"..."});function kt({tx:t,adapter:o,className:n,customization:c}){let{Icon:r=ta,Title:l=S,Description:i=S,Timestamp:s=oa,StatusBadge:p=F,TransactionKey:a=L}=c?.components??{};return jsxs("div",{className: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:[jsxs("div",{className:"novatx:flex novatx:items-start novatx:justify-between",children:[jsxs("div",{className:"novatx:flex novatx:items-center novatx:gap-4",children:[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:jsx(r,{chainId:t.chainId})}),jsxs("div",{children:[jsx(l,{txStatus:t.status,source:t.title,fallback:t.type,variant:"title",applyColor:true}),jsx(s,{timestamp:t.localTimestamp}),jsx(i,{txStatus:t.status,source:t.description,variant:"description"})]})]}),jsx(p,{tx:t})]}),jsx(a,{tx:t,adapter:o,variant:"history"})]})}function na({title:t,message:o,className:n}){return jsxs("div",{className:cn("novatx:rounded-lg novatx:bg-[var(--tuwa-bg-muted)] novatx:p-8 novatx:text-center",n),children:[jsx("h4",{className:"novatx:font-semibold novatx:text-[var(--tuwa-text-primary)]",children:t}),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(),i=useMemo(()=>o?selectAllTransactionsByActiveWallet(n,o).sort((x,g)=>(g.localTimestamp??0)-(x.localTimestamp??0)):[],[n,o]),{Placeholder:s=na,HistoryItem:p=kt}=r?.components??{},a=()=>o?i.length>0?jsx("div",{className: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:i.map(e=>jsx(p,{tx:e,adapter:t},e.txKey))}):jsx(s,{title:l.history.noTransactionsTitle,message:l.history.noTransactionsMessage}):jsx(s,{title:l.history.connectWalletTitle,message:l.history.connectWalletMessage});return jsxs("div",{className:cn("novatx:flex novatx:flex-col novatx:gap-y-3",c),children:[r?.title&&jsx("h3",{className:"novatx:text-lg novatx:font-bold novatx:text-[var(--tuwa-text-primary)]",children:r?.title}),a()]})}var xa=({closeModal:t,title:o})=>{let{actions:n}=v();return jsxs(DialogHeader,{children:[jsx(DialogTitle,{children:o}),jsx(DialogClose,{asChild:true,children:jsx("button",{type:"button",onClick:t,"aria-label":n.close,className:`novatx:cursor-pointer novatx:rounded-full novatx:p-1
14
+ novatx:text-[var(--tuwa-text-tertiary)] novatx:transition-colors
15
+ novatx:hover:bg-[var(--tuwa-bg-muted)] novatx:hover:text-[var(--tuwa-text-primary)]`,children:jsx(CloseIcon,{})})})]})};function zt({isOpen:t,setIsOpen:o,customization:n,adapter:c,connectedWalletAddress:r,transactionsPool:l}){let{transactionsModal:i}=v(),s=()=>o(false),p=n?.components?.Header,a=n?.components?.History;return jsx(Dialog,{open:t,onOpenChange:e=>!e&&s(),children:jsx(DialogContent,{className:cn("novatx:w-full novatx:sm:max-w-2xl",n?.modalProps?.className),...n?.modalProps,children:jsxs("div",{className:cn("novatx:relative novatx:max-h-[95dvh] novatx:w-full novatx:flex novatx:flex-col",n?.classNames?.contentWrapper),children:[p?jsx(p,{closeModal:s}):jsx(xa,{closeModal:s,title:i.history.title}),a?jsx(a,{adapter:c,transactionsPool:l,connectedWalletAddress:r}):jsx(St,{adapter:c,transactionsPool:l,connectedWalletAddress:r})]})})})}var fa=t=>({replaced:jsxs(Fragment,{children:[jsx(ArrowPathIcon,{className:"novatx:h-4 novatx:w-4"}),jsx("span",{children:t.replaced})]}),loading:jsxs(Fragment,{children:[jsx(ArrowPathIcon,{className:"novatx:h-4 novatx:w-4 novatx:animate-spin"}),jsx("span",{children:t.loading})]}),succeed:jsxs(Fragment,{children:[jsx(CheckCircleIcon,{className:"novatx:h-4 novatx:w-4"}),jsx("span",{children:t.succeed})]}),failed:jsxs(Fragment,{children:[jsx(ExclamationCircleIcon,{className:"novatx:h-4 novatx:w-4"}),jsx("span",{children:t.failed})]})});function Or({children:t,action:o,getLastTxKey:n,transactionsPool:c,walletAddress:r,loadingContent:l,succeedContent:i,failedContent:s,replacedContent:p,resetTimeout:a=2500,className:e,...x}){let{trackedTxButton:g}=v(),[u,m]=useState("idle"),[f,T]=useState(void 0),w=useMemo(()=>fa(g),[g]);useEffect(()=>{m("idle"),T(void 0);},[r]),useEffect(()=>{if(!f)return;let N=c[f];if(N)switch(N.status){case TransactionStatus.Success:m("succeed");break;case TransactionStatus.Replaced:m("replaced");break;case TransactionStatus.Failed:m("failed");break}},[c,f,r]),useEffect(()=>{if(["succeed","failed","replaced"].includes(u)){let N=setTimeout(()=>{m("idle"),T(void 0);},a);return ()=>clearTimeout(N)}},[u,a]);let b=async()=>{m("loading");try{await o(),T(n());}catch(N){console.error("Transaction initiation failed:",N),m("failed");}},O=()=>{switch(u){case "loading":return l??w.loading;case "succeed":return i??w.succeed;case "failed":return s??w.failed;case "replaced":return p??w.replaced;default:return t}};return jsx("button",{...x,disabled:u!=="idle"||x.disabled,onClick:b,className: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:O()})}export{D as HashLink,S as StatusAwareText,Ut as ToastCloseButton,Ft as ToastTransaction,Wt as TrackingTxModal,kt as TransactionHistoryItem,L as TransactionKey,F as TransactionStatusBadge,St as TransactionsHistory,zt as TransactionsInfoModal,Or as TxActionButton,yt as TxErrorBlock,bt as TxInfoBlock,Ct as TxProgressIndicator,wt as TxStatusVisual,J as defaultLabels};//# sourceMappingURL=index.js.map
16
16
  //# sourceMappingURL=index.js.map