@tuwaio/nova-transactions 0.4.5 → 0.4.6
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/README.md +86 -124
- package/dist/{TransactionsInfoModal-Cd6hZioh.d.cts → TransactionsInfoModal-B4bKn2as.d.cts} +15 -14
- package/dist/{TransactionsInfoModal-Cd6hZioh.d.ts → TransactionsInfoModal-B4bKn2as.d.ts} +15 -14
- package/dist/chunk-INPSUYMF.js +2 -0
- package/dist/chunk-NBHLBVBH.cjs +2 -0
- package/dist/index.cjs +1 -1
- package/dist/index.css +110 -185
- package/dist/index.d.cts +5 -5
- package/dist/index.d.ts +5 -5
- package/dist/index.js +1 -1
- package/dist/providers/index.cjs +1 -1
- package/dist/providers/index.d.cts +3 -4
- package/dist/providers/index.d.ts +3 -4
- package/dist/providers/index.js +1 -1
- package/package.json +18 -18
- package/dist/chunk-DC5FYE4N.cjs +0 -2
- package/dist/chunk-IJMNYPXP.js +0 -2
package/README.md
CHANGED
|
@@ -1,203 +1,165 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @tuwaio/nova-transactions
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/@tuwaio/nova-transactions)
|
|
4
4
|
[](./LICENSE)
|
|
5
|
-
[](https://github.com/TuwaIO/nova-uikit/actions)
|
|
6
5
|
|
|
7
|
-
|
|
6
|
+
`@tuwaio/nova-transactions` is the **UI Components (L7)** package of the TUWA Ecosystem transaction lifecycle tracking system. It provides the visual layer to monitor, display, and manage active on-chain transactions, consuming state directly from the headless **[Pulsar Engine](https://github.com/TuwaIO/pulsar-core)** state machine.
|
|
8
7
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
## 🏛️ Architecture
|
|
12
|
-
|
|
13
|
-
This package provides the **View Layer** for TUWA's transaction tracking ecosystem. It works by consuming the state from your headless Pulsar store and rendering the appropriate UI. You must connect your Pulsar store's state and actions to the `<NovaTransactionsProvider />` component, which acts as a self-contained UI manager that renders modals and toasts.
|
|
8
|
+
By coupling the UI manager to Pulsar stores, it automatically handles pending loaders, speed-up options, failure overlays, and success notifications, keeping the user in the loop even during congested block space periods.
|
|
14
9
|
|
|
15
10
|
---
|
|
16
11
|
|
|
17
|
-
##
|
|
12
|
+
## 🏛️ Core Capabilities
|
|
18
13
|
|
|
19
|
-
- **🧩
|
|
20
|
-
- **🔌
|
|
21
|
-
-
|
|
22
|
-
-
|
|
14
|
+
- **🧩 Interactive Visual Nodes:** Built-in dialogs and widget cards (`TrackingTxModal` for individual status, `TransactionsInfoModal` for full transaction lists, and `ToastTransaction` feeds).
|
|
15
|
+
- **🔌 Isolated Provider Hooks:** The `<NovaTransactionsProvider />` bridges your React tree with Pulsar's transaction history pools and signature polling events.
|
|
16
|
+
- **🎨 Custom Styling overrides:** Style sub-components via CSS variables from `@tuwaio/nova-core` or replace components using the `customization` property.
|
|
17
|
+
- **🌍 Dynamic Internationalization:** Supports overriding labels configuration to localize status messages (`pending`, `success`, `failed`, `replaced`) and actions.
|
|
23
18
|
|
|
24
19
|
---
|
|
25
20
|
|
|
26
21
|
## 💾 Installation
|
|
27
22
|
|
|
28
|
-
### Basic Installation
|
|
29
|
-
|
|
30
|
-
Install the main package:
|
|
31
|
-
|
|
32
23
|
```bash
|
|
33
|
-
pnpm add @tuwaio/nova-transactions
|
|
24
|
+
pnpm add @tuwaio/nova-transactions @tuwaio/nova-core @tuwaio/pulsar-core @tuwaio/pulsar-react
|
|
34
25
|
```
|
|
35
26
|
|
|
36
|
-
### Peer Dependencies
|
|
27
|
+
### Peer Dependencies Check
|
|
37
28
|
|
|
38
|
-
|
|
29
|
+
Make sure your project contains the required layout and utility engines:
|
|
39
30
|
|
|
40
31
|
```bash
|
|
41
|
-
#
|
|
42
|
-
pnpm add
|
|
43
|
-
|
|
44
|
-
# React ecosystem
|
|
45
|
-
pnpm add react react-dom zustand immer
|
|
46
|
-
|
|
47
|
-
# UI libraries
|
|
48
|
-
pnpm add framer-motion @radix-ui/react-dialog @heroicons/react
|
|
49
|
-
pnpm add react-toastify @web3icons/common @web3icons/react
|
|
50
|
-
|
|
51
|
-
# Utilities
|
|
52
|
-
pnpm add dayjs clsx tailwind-merge
|
|
53
|
-
```
|
|
32
|
+
# State & Utilities
|
|
33
|
+
pnpm add zustand immer dayjs clsx tailwind-merge framer-motion
|
|
54
34
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
For a complete setup with all TUWA packages:
|
|
58
|
-
|
|
59
|
-
```bash
|
|
60
|
-
# Using pnpm (recommended), but you can use npm, yarn or bun as well
|
|
61
|
-
pnpm add @tuwaio/nova-transactions @tuwaio/nova-core @tuwaio/pulsar-core @tuwaio/orbit-core react-toastify framer-motion @radix-ui/react-dialog @heroicons/react @web3icons/common @web3icons/react dayjs react immer zustand clsx tailwind-merge
|
|
35
|
+
# Dialog Primitives & Notifications
|
|
36
|
+
pnpm add @radix-ui/react-dialog @heroicons/react @web3icons/common @web3icons/react react-toastify
|
|
62
37
|
```
|
|
63
38
|
|
|
64
39
|
---
|
|
65
40
|
|
|
66
|
-
## 🚀
|
|
41
|
+
## 🚀 Quick Start Setup
|
|
67
42
|
|
|
68
|
-
|
|
43
|
+
### 1. Create the Transaction Store (Pulsar)
|
|
69
44
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
### 1. Create Transaction Store
|
|
45
|
+
Initialize the local-first persistent transaction store with chain-specific state adapters:
|
|
73
46
|
|
|
74
47
|
```tsx
|
|
75
|
-
// src/hooks/
|
|
76
|
-
|
|
77
|
-
import { evmAdapter } from '@tuwaio/pulsar-evm';
|
|
48
|
+
// src/hooks/usePulsarStore.ts
|
|
49
|
+
'use client';
|
|
78
50
|
|
|
79
|
-
import {
|
|
51
|
+
import { createBoundedUseStore, createPulsarStore, Transaction } from '@tuwaio/pulsar-core';
|
|
52
|
+
import { pulsarEvmAdapter } from '@tuwaio/pulsar-evm';
|
|
53
|
+
import { pulsarSolanaAdapter } from '@tuwaio/pulsar-solana';
|
|
54
|
+
import { wagmiConfig, appEVMChains, solanaRPCUrls } from '@/config/appConfig';
|
|
80
55
|
|
|
81
56
|
const storageName = 'transactions-tracking-storage';
|
|
82
57
|
|
|
83
58
|
export enum TxType {
|
|
84
|
-
|
|
59
|
+
swap = 'swap',
|
|
85
60
|
}
|
|
86
61
|
|
|
87
|
-
type
|
|
88
|
-
type: TxType.
|
|
89
|
-
payload: {
|
|
90
|
-
value: number;
|
|
91
|
-
};
|
|
62
|
+
type SwapTx = Transaction & {
|
|
63
|
+
type: TxType.swap;
|
|
64
|
+
payload: { from: string; to: string; amount: string };
|
|
92
65
|
};
|
|
93
66
|
|
|
94
|
-
export type TransactionUnion =
|
|
67
|
+
export type TransactionUnion = SwapTx;
|
|
95
68
|
|
|
96
69
|
export const usePulsarStore = createBoundedUseStore(
|
|
97
70
|
createPulsarStore<TransactionUnion>({
|
|
98
71
|
name: storageName,
|
|
99
|
-
adapter:
|
|
72
|
+
adapter: [pulsarEvmAdapter(wagmiConfig, appEVMChains), pulsarSolanaAdapter({ rpcUrls: solanaRPCUrls })],
|
|
73
|
+
maxTransactions: 50, // prevent localStorage bloat
|
|
100
74
|
}),
|
|
101
75
|
);
|
|
102
76
|
```
|
|
103
77
|
|
|
104
|
-
### 2. Setup Provider
|
|
78
|
+
### 2. Setup the Transactions UI Provider
|
|
79
|
+
|
|
80
|
+
Create a bridge component connecting your Pulsar store parameters and Satellite wallet state with the Nova Transactions UI:
|
|
105
81
|
|
|
106
82
|
```tsx
|
|
107
|
-
// src/providers/
|
|
108
|
-
|
|
109
|
-
|
|
83
|
+
// src/providers/NovaTransactionsWrapper.tsx
|
|
84
|
+
'use client';
|
|
85
|
+
|
|
86
|
+
import { useSatelliteConnectStore } from '@tuwaio/nova-connect/satellite';
|
|
87
|
+
import { NovaTransactionsProvider as NTP } from '@tuwaio/nova-transactions/providers';
|
|
88
|
+
import { getAdapterFromConnectorType } from '@tuwaio/orbit-core';
|
|
110
89
|
import { useInitializeTransactionsPool } from '@tuwaio/pulsar-react';
|
|
111
|
-
import { useAccount } from 'wagmi';
|
|
112
90
|
|
|
113
|
-
import { usePulsarStore } from '@/hooks/
|
|
91
|
+
import { usePulsarStore } from '@/hooks/usePulsarStore';
|
|
114
92
|
|
|
115
|
-
export function
|
|
116
|
-
const
|
|
93
|
+
export function NovaTransactionsWrapper() {
|
|
94
|
+
const getAdapter = usePulsarStore((state) => state.getAdapter);
|
|
117
95
|
const initialTx = usePulsarStore((state) => state.initialTx);
|
|
118
96
|
const closeTxTrackedModal = usePulsarStore((state) => state.closeTxTrackedModal);
|
|
119
|
-
const
|
|
97
|
+
const transactionsPool = usePulsarStore((state) => state.transactionsPool);
|
|
98
|
+
const executeTxAction = usePulsarStore((state) => state.executeTxAction);
|
|
120
99
|
const initializeTransactionsPool = usePulsarStore((state) => state.initializeTransactionsPool);
|
|
121
|
-
const getAdapter = usePulsarStore((state) => state.getAdapter);
|
|
122
100
|
|
|
123
|
-
|
|
101
|
+
const activeConnection = useSatelliteConnectStore((state) => state.activeConnection);
|
|
124
102
|
|
|
125
|
-
|
|
103
|
+
// Resume tracking for active pending signatures on mount
|
|
104
|
+
useInitializeTransactionsPool({ initializeTransactionsPool });
|
|
126
105
|
|
|
127
106
|
return (
|
|
128
|
-
<
|
|
107
|
+
<NTP
|
|
129
108
|
transactionsPool={transactionsPool}
|
|
130
109
|
initialTx={initialTx}
|
|
131
110
|
closeTxTrackedModal={closeTxTrackedModal}
|
|
132
|
-
|
|
133
|
-
connectedWalletAddress={address}
|
|
134
|
-
connectedAdapterType={
|
|
111
|
+
executeTxAction={executeTxAction}
|
|
112
|
+
connectedWalletAddress={activeConnection?.isConnected ? activeConnection.address : undefined}
|
|
113
|
+
connectedAdapterType={getAdapterFromConnectorType(activeConnection?.connectorType ?? 'evm:')}
|
|
135
114
|
adapter={getAdapter()}
|
|
136
115
|
/>
|
|
137
116
|
);
|
|
138
117
|
}
|
|
139
118
|
```
|
|
140
119
|
|
|
141
|
-
### 3.
|
|
120
|
+
### 3. Usage in Action Buttons
|
|
142
121
|
|
|
143
|
-
|
|
144
|
-
// src/providers/index.tsx
|
|
145
|
-
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
|
146
|
-
import { ReactNode } from 'react';
|
|
147
|
-
import { WagmiProvider } from 'wagmi';
|
|
122
|
+
Call the action wrapper to trigger on-chain operations and auto-render status modals:
|
|
148
123
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
import {
|
|
152
|
-
|
|
153
|
-
|
|
124
|
+
```tsx
|
|
125
|
+
import { usePulsarStore, TxType } from '@/hooks/usePulsarStore';
|
|
126
|
+
import { OrbitAdapter } from '@tuwaio/orbit-core';
|
|
127
|
+
import { mainnet } from 'viem/chains';
|
|
128
|
+
|
|
129
|
+
export function SwapButton() {
|
|
130
|
+
const executeTxAction = usePulsarStore((state) => state.executeTxAction);
|
|
131
|
+
|
|
132
|
+
const triggerSwap = async () => {
|
|
133
|
+
const swapFunction = async () => {
|
|
134
|
+
// Execute smart contract write method and return the hash
|
|
135
|
+
return '0x...';
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
await executeTxAction({
|
|
139
|
+
actionFunction: swapFunction,
|
|
140
|
+
onSuccess: (tx) => console.log('Transaction succeeded!', tx.hash),
|
|
141
|
+
params: {
|
|
142
|
+
type: TxType.swap,
|
|
143
|
+
adapter: OrbitAdapter.EVM,
|
|
144
|
+
desiredChainID: mainnet.id,
|
|
145
|
+
title: 'Swap ETH',
|
|
146
|
+
description: 'Swapping 1 ETH for USDC',
|
|
147
|
+
payload: { from: 'ETH', to: 'USDC', amount: '1' },
|
|
148
|
+
withTrackedModal: true, // opens tracking overlay automatically
|
|
149
|
+
},
|
|
150
|
+
});
|
|
151
|
+
};
|
|
154
152
|
|
|
155
|
-
export function Providers({ children }: { children: ReactNode }) {
|
|
156
153
|
return (
|
|
157
|
-
<
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
{children}
|
|
161
|
-
</QueryClientProvider>
|
|
162
|
-
</WagmiProvider>
|
|
154
|
+
<button onClick={triggerSwap} className="btn-primary">
|
|
155
|
+
Execute Swap
|
|
156
|
+
</button>
|
|
163
157
|
);
|
|
164
158
|
}
|
|
165
159
|
```
|
|
166
160
|
|
|
167
|
-
## 🎨 Customization
|
|
168
|
-
|
|
169
|
-
You can easily override the default English text by passing a `labels` prop, or replace entire components using the `customization` prop.
|
|
170
|
-
|
|
171
|
-
```tsx
|
|
172
|
-
<NovaTransactionsProvider
|
|
173
|
-
// 1. Override text labels
|
|
174
|
-
labels={{
|
|
175
|
-
statuses: {
|
|
176
|
-
pending: 'В обработке...',
|
|
177
|
-
success: 'Успешно!',
|
|
178
|
-
failed: 'Ошибка!',
|
|
179
|
-
},
|
|
180
|
-
// ... other keys
|
|
181
|
-
}}
|
|
182
|
-
customization={{
|
|
183
|
-
components: {
|
|
184
|
-
statusBadge: ({ tx }) => <MyCustomBadge status={tx.status} />,
|
|
185
|
-
},
|
|
186
|
-
}}
|
|
187
|
-
// ... other required props
|
|
188
|
-
/>
|
|
189
|
-
```
|
|
190
|
-
|
|
191
161
|
---
|
|
192
162
|
|
|
193
|
-
## 🤝 Contributing & Support
|
|
194
|
-
|
|
195
|
-
Contributions are welcome! Please read our main **[Contribution Guidelines](https://github.com/TuwaIO/workflows/blob/main/CONTRIBUTING.md)**.
|
|
196
|
-
|
|
197
|
-
If you find this library useful, please consider supporting its development. Every contribution helps!
|
|
198
|
-
|
|
199
|
-
[**➡️ View Support Options**](https://github.com/TuwaIO/workflows/blob/main/Donation.md)
|
|
200
|
-
|
|
201
163
|
## 📄 License
|
|
202
164
|
|
|
203
|
-
|
|
165
|
+
Licensed under the **Apache-2.0 License**. See the [LICENSE](./LICENSE) file for details.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { ReactNode, ComponentType, ComponentPropsWithoutRef, JSX } from 'react';
|
|
2
3
|
import { ToastCloseButtonProps, DialogContent } from '@tuwaio/nova-core';
|
|
3
4
|
import { TransactionStatus, Transaction, TxAdapter, TransactionPool, TxInMemoryPagination, ITxTrackingStore, InitialTransaction } from '@tuwaio/pulsar-core';
|
|
4
|
-
import { ReactNode, ComponentType, ComponentPropsWithoutRef, JSX } from 'react';
|
|
5
5
|
import { OrbitAdapter, TuwaErrorState } from '@tuwaio/orbit-core';
|
|
6
6
|
import { ToastContentProps, ToastContainerProps } from 'react-toastify';
|
|
7
7
|
import { MotionProps } from 'framer-motion';
|
|
@@ -35,7 +35,7 @@ type HashLinkProps = {
|
|
|
35
35
|
linkIcon?: string;
|
|
36
36
|
};
|
|
37
37
|
};
|
|
38
|
-
declare function HashLink({ label, hash, explorerUrl, variant, className, classNames }: HashLinkProps):
|
|
38
|
+
declare function HashLink({ label, hash, explorerUrl, variant, className, classNames }: HashLinkProps): react.JSX.Element;
|
|
39
39
|
|
|
40
40
|
/**
|
|
41
41
|
* @file This file contains the `StatusAwareText` component, which displays different text based on a transaction's status.
|
|
@@ -518,7 +518,7 @@ type NovaTransactionsProviderProps<T extends Transaction> = {
|
|
|
518
518
|
*
|
|
519
519
|
* @template T The specific transaction type, extending the base `Transaction`.
|
|
520
520
|
*/
|
|
521
|
-
declare function NovaTransactionsProvider<T extends Transaction>({ adapter, connectedWalletAddress, connectedAdapterType, transactionsPool, initialTx, executeTxAction, closeTxTrackedModal, labels, features, customization, pagination, ...toastProps }: NovaTransactionsProviderProps<T>):
|
|
521
|
+
declare function NovaTransactionsProvider<T extends Transaction>({ adapter, connectedWalletAddress, connectedAdapterType, transactionsPool, initialTx, executeTxAction, closeTxTrackedModal, labels, features, customization, pagination, ...toastProps }: NovaTransactionsProviderProps<T>): react.JSX.Element;
|
|
522
522
|
|
|
523
523
|
type TransactionKeyProps<T extends Transaction> = Pick<NovaTransactionsProviderProps<T>, 'adapter'> & {
|
|
524
524
|
tx: T;
|
|
@@ -531,7 +531,7 @@ type TransactionKeyProps<T extends Transaction> = Pick<NovaTransactionsProviderP
|
|
|
531
531
|
/** ClassNames for original hash link in replaced transactions (falls back to hashLinkClassNames) */
|
|
532
532
|
originalHashLinkClassNames?: HashLinkProps['classNames'];
|
|
533
533
|
};
|
|
534
|
-
declare function TransactionKey<T extends Transaction>({ tx, adapter, variant, className, renderHashLink, confirmations, hashLinkClassNames, originalHashLinkClassNames, }: TransactionKeyProps<T>):
|
|
534
|
+
declare function TransactionKey<T extends Transaction>({ tx, adapter, variant, className, renderHashLink, confirmations, hashLinkClassNames, originalHashLinkClassNames, }: TransactionKeyProps<T>): react.JSX.Element | null;
|
|
535
535
|
|
|
536
536
|
type TransactionStatusBadgeProps<T extends Transaction> = {
|
|
537
537
|
tx: T;
|
|
@@ -546,7 +546,7 @@ type TransactionStatusBadgeProps<T extends Transaction> = {
|
|
|
546
546
|
label?: string;
|
|
547
547
|
};
|
|
548
548
|
};
|
|
549
|
-
declare function TransactionStatusBadge<T extends Transaction>({ tx, className, classNames, }: TransactionStatusBadgeProps<T>):
|
|
549
|
+
declare function TransactionStatusBadge<T extends Transaction>({ tx, className, classNames, }: TransactionStatusBadgeProps<T>): react.JSX.Element;
|
|
550
550
|
|
|
551
551
|
/**
|
|
552
552
|
* @file This file contains the `ToastTransaction` component, which serves as the main body for a transaction notification toast.
|
|
@@ -716,7 +716,7 @@ type TrackingTxModalProps<T extends Transaction> = Pick<NovaTransactionsProvider
|
|
|
716
716
|
className?: string;
|
|
717
717
|
customization?: TrackingTxModalCustomization<T>;
|
|
718
718
|
};
|
|
719
|
-
declare function TrackingTxModal<T extends Transaction>({ adapter, onClose, onOpenAllTransactions, className, customization, transactionsPool, executeTxAction, initialTx, connectedWalletAddress, }: TrackingTxModalProps<T>):
|
|
719
|
+
declare function TrackingTxModal<T extends Transaction>({ adapter, onClose, onOpenAllTransactions, className, customization, transactionsPool, executeTxAction, initialTx, connectedWalletAddress, }: TrackingTxModalProps<T>): react.JSX.Element | null;
|
|
720
720
|
|
|
721
721
|
type TxErrorBlockClassNames = {
|
|
722
722
|
/** Classes for the container */
|
|
@@ -747,7 +747,7 @@ type TxErrorBlockProps = {
|
|
|
747
747
|
* It includes a title, an icon, the error message in a scrollable area,
|
|
748
748
|
* and a button to copy the message to the clipboard.
|
|
749
749
|
*/
|
|
750
|
-
declare function TxErrorBlock({ error, className, classNames }: TxErrorBlockProps):
|
|
750
|
+
declare function TxErrorBlock({ error, className, classNames }: TxErrorBlockProps): react.JSX.Element | null;
|
|
751
751
|
|
|
752
752
|
type CustomInfoRowProps = {
|
|
753
753
|
label: ReactNode;
|
|
@@ -793,7 +793,7 @@ type TxInfoBlockProps<T extends Transaction> = {
|
|
|
793
793
|
* A component that displays a block of essential transaction details,
|
|
794
794
|
* such as network, timestamps, Solana-specific details, and relevant hashes/keys.
|
|
795
795
|
*/
|
|
796
|
-
declare function TxInfoBlock<T extends Transaction>({ tx, adapter, className, customization }: TxInfoBlockProps<T>):
|
|
796
|
+
declare function TxInfoBlock<T extends Transaction>({ tx, adapter, className, customization }: TxInfoBlockProps<T>): react.JSX.Element | null;
|
|
797
797
|
|
|
798
798
|
type StepStatus = 'active' | 'completed' | 'error' | 'inactive' | 'replaced';
|
|
799
799
|
/** ClassNames for step styling overrides */
|
|
@@ -830,7 +830,7 @@ interface TxProgressIndicatorProps {
|
|
|
830
830
|
/** ClassNames for step customization */
|
|
831
831
|
stepClassNames?: StepClassNames;
|
|
832
832
|
}
|
|
833
|
-
declare function TxProgressIndicator({ isProcessing, isSucceed, isFailed, isReplaced, className, StepComponent, stepClassNames, }: TxProgressIndicatorProps):
|
|
833
|
+
declare function TxProgressIndicator({ isProcessing, isSucceed, isFailed, isReplaced, className, StepComponent, stepClassNames, }: TxProgressIndicatorProps): react.JSX.Element;
|
|
834
834
|
|
|
835
835
|
/**
|
|
836
836
|
* @file This file contains the `TxStatusVisual` component, which displays a large icon representing the transaction's status.
|
|
@@ -860,7 +860,7 @@ type TxStatusVisualProps = {
|
|
|
860
860
|
* A component that renders a large, animated icon to visually represent the
|
|
861
861
|
* current state of a transaction within the tracking modal.
|
|
862
862
|
*/
|
|
863
|
-
declare function TxStatusVisual({ isProcessing, isSucceed, isFailed, isReplaced, className: containerClassName, iconClassNames, }: TxStatusVisualProps):
|
|
863
|
+
declare function TxStatusVisual({ isProcessing, isSucceed, isFailed, isReplaced, className: containerClassName, iconClassNames, }: TxStatusVisualProps): react.JSX.Element;
|
|
864
864
|
|
|
865
865
|
/** Props for a copyable field block */
|
|
866
866
|
type CopyableFieldProps = {
|
|
@@ -923,6 +923,7 @@ type TransactionDetailsCustomization = {
|
|
|
923
923
|
statusIconContainer?: string;
|
|
924
924
|
title?: string;
|
|
925
925
|
subtitle?: string;
|
|
926
|
+
sectionHeader?: string;
|
|
926
927
|
coreInfoCard?: string;
|
|
927
928
|
networkBadge?: string;
|
|
928
929
|
metadataSection?: string;
|
|
@@ -953,7 +954,7 @@ type TransactionDetailsProps<T extends Transaction> = Pick<NovaTransactionsProvi
|
|
|
953
954
|
/**
|
|
954
955
|
* TransactionDetails component provides a deep look into a specific transaction's metadata and execution state.
|
|
955
956
|
*/
|
|
956
|
-
declare function TransactionDetails<T extends Transaction>({ tx, onBack, adapter, className, customization, }: TransactionDetailsProps<T>):
|
|
957
|
+
declare function TransactionDetails<T extends Transaction>({ tx, onBack, adapter, className, customization, }: TransactionDetailsProps<T>): react.JSX.Element;
|
|
957
958
|
|
|
958
959
|
/**
|
|
959
960
|
* @file This file contains the `TransactionHistoryItem` component, which renders a single transaction
|
|
@@ -1130,7 +1131,7 @@ type TransactionsHistoryProps<T extends Transaction> = Pick<NovaTransactionsProv
|
|
|
1130
1131
|
/** Whether transaction details can be viewed by clicking on history items. Defaults to true. */
|
|
1131
1132
|
canViewDetails?: boolean;
|
|
1132
1133
|
};
|
|
1133
|
-
declare function TransactionsHistory<T extends Transaction>({ adapter, connectedWalletAddress, transactionsPool, className, customization, pagination, initialTxKey, canViewDetails, }: TransactionsHistoryProps<T>):
|
|
1134
|
+
declare function TransactionsHistory<T extends Transaction>({ adapter, connectedWalletAddress, transactionsPool, className, customization, pagination, initialTxKey, canViewDetails, }: TransactionsHistoryProps<T>): react.JSX.Element;
|
|
1134
1135
|
|
|
1135
1136
|
type CustomHeaderProps = {
|
|
1136
1137
|
closeModal: () => void;
|
|
@@ -1165,6 +1166,6 @@ type TransactionsInfoModalProps<T extends Transaction> = Pick<NovaTransactionsPr
|
|
|
1165
1166
|
/** Optional transaction key to open directly in detail view */
|
|
1166
1167
|
selectedTxKey?: string | null;
|
|
1167
1168
|
};
|
|
1168
|
-
declare function TransactionsInfoModal<T extends Transaction>({ isOpen, setIsOpen, customization, adapter, connectedWalletAddress, transactionsPool, pagination, selectedTxKey, }: TransactionsInfoModalProps<T>):
|
|
1169
|
+
declare function TransactionsInfoModal<T extends Transaction>({ isOpen, setIsOpen, customization, adapter, connectedWalletAddress, transactionsPool, pagination, selectedTxKey, }: TransactionsInfoModalProps<T>): react.JSX.Element;
|
|
1169
1170
|
|
|
1170
1171
|
export { type TxStatusVisualClassNames as $, type TransactionKeyProps as A, TransactionStatusBadge as B, type CopyableFieldProps as C, type DetailItemProps as D, type TransactionStatusBadgeProps as E, TransactionsHistory as F, type TransactionsHistoryCustomization as G, HashLink as H, type TransactionsHistoryLoaderProps as I, type JsonBlockProps as J, type TransactionsHistoryProps as K, TransactionsInfoModal as L, type MetadataRowProps as M, type NovaTransactionsLabels as N, type TransactionsInfoModalCustomization as O, type TransactionsInfoModalProps as P, TxErrorBlock as Q, type TxErrorBlockClassNames as R, StatusAwareText as S, ToastTransaction as T, type TxErrorBlockProps as U, TxInfoBlock as V, type TxInfoBlockCustomization as W, type TxInfoBlockProps as X, TxProgressIndicator as Y, type TxProgressIndicatorProps as Z, TxStatusVisual as _, type HashLinkProps as a, type TxStatusVisualProps as a0, NovaTransactionsProvider as a1, type NovaTransactionsProviderProps as a2, type StatusAwareTextProps as b, type StepClassNames as c, type StepProps as d, type StepStatus as e, type ToastTransactionCustomization as f, type ToastTransactionProps as g, ToastValidationError as h, type ToastValidationErrorClassNames as i, type ToastValidationErrorCopyContentProps as j, type ToastValidationErrorCustomization as k, type ToastValidationErrorFieldProps as l, type ToastValidationErrorIconProps as m, type ToastValidationErrorMessageProps as n, type ToastValidationErrorProps as o, type ToastValidationErrorTitleProps as p, TrackingTxModal as q, type TrackingTxModalCustomization as r, type TrackingTxModalProps as s, TransactionDetails as t, type TransactionDetailsCustomization as u, type TransactionDetailsProps as v, TransactionHistoryItem as w, type TransactionHistoryItemCustomization as x, type TransactionHistoryItemProps as y, TransactionKey as z };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { ReactNode, ComponentType, ComponentPropsWithoutRef, JSX } from 'react';
|
|
2
3
|
import { ToastCloseButtonProps, DialogContent } from '@tuwaio/nova-core';
|
|
3
4
|
import { TransactionStatus, Transaction, TxAdapter, TransactionPool, TxInMemoryPagination, ITxTrackingStore, InitialTransaction } from '@tuwaio/pulsar-core';
|
|
4
|
-
import { ReactNode, ComponentType, ComponentPropsWithoutRef, JSX } from 'react';
|
|
5
5
|
import { OrbitAdapter, TuwaErrorState } from '@tuwaio/orbit-core';
|
|
6
6
|
import { ToastContentProps, ToastContainerProps } from 'react-toastify';
|
|
7
7
|
import { MotionProps } from 'framer-motion';
|
|
@@ -35,7 +35,7 @@ type HashLinkProps = {
|
|
|
35
35
|
linkIcon?: string;
|
|
36
36
|
};
|
|
37
37
|
};
|
|
38
|
-
declare function HashLink({ label, hash, explorerUrl, variant, className, classNames }: HashLinkProps):
|
|
38
|
+
declare function HashLink({ label, hash, explorerUrl, variant, className, classNames }: HashLinkProps): react.JSX.Element;
|
|
39
39
|
|
|
40
40
|
/**
|
|
41
41
|
* @file This file contains the `StatusAwareText` component, which displays different text based on a transaction's status.
|
|
@@ -518,7 +518,7 @@ type NovaTransactionsProviderProps<T extends Transaction> = {
|
|
|
518
518
|
*
|
|
519
519
|
* @template T The specific transaction type, extending the base `Transaction`.
|
|
520
520
|
*/
|
|
521
|
-
declare function NovaTransactionsProvider<T extends Transaction>({ adapter, connectedWalletAddress, connectedAdapterType, transactionsPool, initialTx, executeTxAction, closeTxTrackedModal, labels, features, customization, pagination, ...toastProps }: NovaTransactionsProviderProps<T>):
|
|
521
|
+
declare function NovaTransactionsProvider<T extends Transaction>({ adapter, connectedWalletAddress, connectedAdapterType, transactionsPool, initialTx, executeTxAction, closeTxTrackedModal, labels, features, customization, pagination, ...toastProps }: NovaTransactionsProviderProps<T>): react.JSX.Element;
|
|
522
522
|
|
|
523
523
|
type TransactionKeyProps<T extends Transaction> = Pick<NovaTransactionsProviderProps<T>, 'adapter'> & {
|
|
524
524
|
tx: T;
|
|
@@ -531,7 +531,7 @@ type TransactionKeyProps<T extends Transaction> = Pick<NovaTransactionsProviderP
|
|
|
531
531
|
/** ClassNames for original hash link in replaced transactions (falls back to hashLinkClassNames) */
|
|
532
532
|
originalHashLinkClassNames?: HashLinkProps['classNames'];
|
|
533
533
|
};
|
|
534
|
-
declare function TransactionKey<T extends Transaction>({ tx, adapter, variant, className, renderHashLink, confirmations, hashLinkClassNames, originalHashLinkClassNames, }: TransactionKeyProps<T>):
|
|
534
|
+
declare function TransactionKey<T extends Transaction>({ tx, adapter, variant, className, renderHashLink, confirmations, hashLinkClassNames, originalHashLinkClassNames, }: TransactionKeyProps<T>): react.JSX.Element | null;
|
|
535
535
|
|
|
536
536
|
type TransactionStatusBadgeProps<T extends Transaction> = {
|
|
537
537
|
tx: T;
|
|
@@ -546,7 +546,7 @@ type TransactionStatusBadgeProps<T extends Transaction> = {
|
|
|
546
546
|
label?: string;
|
|
547
547
|
};
|
|
548
548
|
};
|
|
549
|
-
declare function TransactionStatusBadge<T extends Transaction>({ tx, className, classNames, }: TransactionStatusBadgeProps<T>):
|
|
549
|
+
declare function TransactionStatusBadge<T extends Transaction>({ tx, className, classNames, }: TransactionStatusBadgeProps<T>): react.JSX.Element;
|
|
550
550
|
|
|
551
551
|
/**
|
|
552
552
|
* @file This file contains the `ToastTransaction` component, which serves as the main body for a transaction notification toast.
|
|
@@ -716,7 +716,7 @@ type TrackingTxModalProps<T extends Transaction> = Pick<NovaTransactionsProvider
|
|
|
716
716
|
className?: string;
|
|
717
717
|
customization?: TrackingTxModalCustomization<T>;
|
|
718
718
|
};
|
|
719
|
-
declare function TrackingTxModal<T extends Transaction>({ adapter, onClose, onOpenAllTransactions, className, customization, transactionsPool, executeTxAction, initialTx, connectedWalletAddress, }: TrackingTxModalProps<T>):
|
|
719
|
+
declare function TrackingTxModal<T extends Transaction>({ adapter, onClose, onOpenAllTransactions, className, customization, transactionsPool, executeTxAction, initialTx, connectedWalletAddress, }: TrackingTxModalProps<T>): react.JSX.Element | null;
|
|
720
720
|
|
|
721
721
|
type TxErrorBlockClassNames = {
|
|
722
722
|
/** Classes for the container */
|
|
@@ -747,7 +747,7 @@ type TxErrorBlockProps = {
|
|
|
747
747
|
* It includes a title, an icon, the error message in a scrollable area,
|
|
748
748
|
* and a button to copy the message to the clipboard.
|
|
749
749
|
*/
|
|
750
|
-
declare function TxErrorBlock({ error, className, classNames }: TxErrorBlockProps):
|
|
750
|
+
declare function TxErrorBlock({ error, className, classNames }: TxErrorBlockProps): react.JSX.Element | null;
|
|
751
751
|
|
|
752
752
|
type CustomInfoRowProps = {
|
|
753
753
|
label: ReactNode;
|
|
@@ -793,7 +793,7 @@ type TxInfoBlockProps<T extends Transaction> = {
|
|
|
793
793
|
* A component that displays a block of essential transaction details,
|
|
794
794
|
* such as network, timestamps, Solana-specific details, and relevant hashes/keys.
|
|
795
795
|
*/
|
|
796
|
-
declare function TxInfoBlock<T extends Transaction>({ tx, adapter, className, customization }: TxInfoBlockProps<T>):
|
|
796
|
+
declare function TxInfoBlock<T extends Transaction>({ tx, adapter, className, customization }: TxInfoBlockProps<T>): react.JSX.Element | null;
|
|
797
797
|
|
|
798
798
|
type StepStatus = 'active' | 'completed' | 'error' | 'inactive' | 'replaced';
|
|
799
799
|
/** ClassNames for step styling overrides */
|
|
@@ -830,7 +830,7 @@ interface TxProgressIndicatorProps {
|
|
|
830
830
|
/** ClassNames for step customization */
|
|
831
831
|
stepClassNames?: StepClassNames;
|
|
832
832
|
}
|
|
833
|
-
declare function TxProgressIndicator({ isProcessing, isSucceed, isFailed, isReplaced, className, StepComponent, stepClassNames, }: TxProgressIndicatorProps):
|
|
833
|
+
declare function TxProgressIndicator({ isProcessing, isSucceed, isFailed, isReplaced, className, StepComponent, stepClassNames, }: TxProgressIndicatorProps): react.JSX.Element;
|
|
834
834
|
|
|
835
835
|
/**
|
|
836
836
|
* @file This file contains the `TxStatusVisual` component, which displays a large icon representing the transaction's status.
|
|
@@ -860,7 +860,7 @@ type TxStatusVisualProps = {
|
|
|
860
860
|
* A component that renders a large, animated icon to visually represent the
|
|
861
861
|
* current state of a transaction within the tracking modal.
|
|
862
862
|
*/
|
|
863
|
-
declare function TxStatusVisual({ isProcessing, isSucceed, isFailed, isReplaced, className: containerClassName, iconClassNames, }: TxStatusVisualProps):
|
|
863
|
+
declare function TxStatusVisual({ isProcessing, isSucceed, isFailed, isReplaced, className: containerClassName, iconClassNames, }: TxStatusVisualProps): react.JSX.Element;
|
|
864
864
|
|
|
865
865
|
/** Props for a copyable field block */
|
|
866
866
|
type CopyableFieldProps = {
|
|
@@ -923,6 +923,7 @@ type TransactionDetailsCustomization = {
|
|
|
923
923
|
statusIconContainer?: string;
|
|
924
924
|
title?: string;
|
|
925
925
|
subtitle?: string;
|
|
926
|
+
sectionHeader?: string;
|
|
926
927
|
coreInfoCard?: string;
|
|
927
928
|
networkBadge?: string;
|
|
928
929
|
metadataSection?: string;
|
|
@@ -953,7 +954,7 @@ type TransactionDetailsProps<T extends Transaction> = Pick<NovaTransactionsProvi
|
|
|
953
954
|
/**
|
|
954
955
|
* TransactionDetails component provides a deep look into a specific transaction's metadata and execution state.
|
|
955
956
|
*/
|
|
956
|
-
declare function TransactionDetails<T extends Transaction>({ tx, onBack, adapter, className, customization, }: TransactionDetailsProps<T>):
|
|
957
|
+
declare function TransactionDetails<T extends Transaction>({ tx, onBack, adapter, className, customization, }: TransactionDetailsProps<T>): react.JSX.Element;
|
|
957
958
|
|
|
958
959
|
/**
|
|
959
960
|
* @file This file contains the `TransactionHistoryItem` component, which renders a single transaction
|
|
@@ -1130,7 +1131,7 @@ type TransactionsHistoryProps<T extends Transaction> = Pick<NovaTransactionsProv
|
|
|
1130
1131
|
/** Whether transaction details can be viewed by clicking on history items. Defaults to true. */
|
|
1131
1132
|
canViewDetails?: boolean;
|
|
1132
1133
|
};
|
|
1133
|
-
declare function TransactionsHistory<T extends Transaction>({ adapter, connectedWalletAddress, transactionsPool, className, customization, pagination, initialTxKey, canViewDetails, }: TransactionsHistoryProps<T>):
|
|
1134
|
+
declare function TransactionsHistory<T extends Transaction>({ adapter, connectedWalletAddress, transactionsPool, className, customization, pagination, initialTxKey, canViewDetails, }: TransactionsHistoryProps<T>): react.JSX.Element;
|
|
1134
1135
|
|
|
1135
1136
|
type CustomHeaderProps = {
|
|
1136
1137
|
closeModal: () => void;
|
|
@@ -1165,6 +1166,6 @@ type TransactionsInfoModalProps<T extends Transaction> = Pick<NovaTransactionsPr
|
|
|
1165
1166
|
/** Optional transaction key to open directly in detail view */
|
|
1166
1167
|
selectedTxKey?: string | null;
|
|
1167
1168
|
};
|
|
1168
|
-
declare function TransactionsInfoModal<T extends Transaction>({ isOpen, setIsOpen, customization, adapter, connectedWalletAddress, transactionsPool, pagination, selectedTxKey, }: TransactionsInfoModalProps<T>):
|
|
1169
|
+
declare function TransactionsInfoModal<T extends Transaction>({ isOpen, setIsOpen, customization, adapter, connectedWalletAddress, transactionsPool, pagination, selectedTxKey, }: TransactionsInfoModalProps<T>): react.JSX.Element;
|
|
1169
1170
|
|
|
1170
1171
|
export { type TxStatusVisualClassNames as $, type TransactionKeyProps as A, TransactionStatusBadge as B, type CopyableFieldProps as C, type DetailItemProps as D, type TransactionStatusBadgeProps as E, TransactionsHistory as F, type TransactionsHistoryCustomization as G, HashLink as H, type TransactionsHistoryLoaderProps as I, type JsonBlockProps as J, type TransactionsHistoryProps as K, TransactionsInfoModal as L, type MetadataRowProps as M, type NovaTransactionsLabels as N, type TransactionsInfoModalCustomization as O, type TransactionsInfoModalProps as P, TxErrorBlock as Q, type TxErrorBlockClassNames as R, StatusAwareText as S, ToastTransaction as T, type TxErrorBlockProps as U, TxInfoBlock as V, type TxInfoBlockCustomization as W, type TxInfoBlockProps as X, TxProgressIndicator as Y, type TxProgressIndicatorProps as Z, TxStatusVisual as _, type HashLinkProps as a, type TxStatusVisualProps as a0, NovaTransactionsProvider as a1, type NovaTransactionsProviderProps as a2, type StatusAwareTextProps as b, type StepClassNames as c, type StepProps as d, type StepStatus as e, type ToastTransactionCustomization as f, type ToastTransactionProps as g, ToastValidationError as h, type ToastValidationErrorClassNames as i, type ToastValidationErrorCopyContentProps as j, type ToastValidationErrorCustomization as k, type ToastValidationErrorFieldProps as l, type ToastValidationErrorIconProps as m, type ToastValidationErrorMessageProps as n, type ToastValidationErrorProps as o, type ToastValidationErrorTitleProps as p, TrackingTxModal as q, type TrackingTxModalCustomization as r, type TrackingTxModalProps as s, TransactionDetails as t, type TransactionDetailsCustomization as u, type TransactionDetailsProps as v, TransactionHistoryItem as w, type TransactionHistoryItemCustomization as x, type TransactionHistoryItemProps as y, TransactionKey as z };
|