@tuwaio/sdk 0.1.13 → 0.2.0
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 +69 -266
- package/dist/nova-connect-components.d.cts +2 -0
- package/dist/nova-connect-components.d.ts +2 -0
- package/dist/nova-connect-evm.cjs +1 -0
- package/dist/nova-connect-evm.d.cts +1 -0
- package/dist/nova-connect-evm.d.ts +1 -0
- package/dist/nova-connect-evm.js +1 -0
- package/dist/nova-connect-solana.cjs +1 -0
- package/dist/nova-connect-solana.d.cts +1 -0
- package/dist/nova-connect-solana.d.ts +1 -0
- package/dist/nova-connect-solana.js +1 -0
- package/dist/satellite.d.cts +1 -1
- package/dist/satellite.d.ts +1 -1
- package/dist/styles/all.css +0 -25
- package/dist/styles/nova-connect.css +0 -22
- package/dist/styles/nova-transactions.css +0 -3
- package/package.json +72 -31
package/README.md
CHANGED
|
@@ -1,322 +1,125 @@
|
|
|
1
1
|
# @tuwaio/sdk
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/@tuwaio/sdk)
|
|
4
|
-
[](
|
|
4
|
+
[](https://github.com/TuwaIO/sdk/blob/main/packages/sdk/LICENSE)
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
`@tuwaio/sdk` is the Layer 8 (L8) package of the **TUWA SDK**: one package for React apps that re-exports the client packages of the TUWA projects under subpaths — Orbit Utils, Pulsar (transaction tracking), Satellite Connect (wallet connection), SIWX (sign-in with a wallet) and Nova UI Kit (connect and transaction components) — with the Nova stylesheets. Chain support comes from its two add-ons, [`@tuwaio/evm-sdk`](https://sdk.docs.tuwa.io/packages/evm-sdk) and [`@tuwaio/solana-sdk`](https://sdk.docs.tuwa.io/packages/solana-sdk); none of the subpaths below loads EVM or Solana code.
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
## 🏛️
|
|
10
|
+
## 🏛️ Core Capabilities
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
---
|
|
17
|
-
|
|
18
|
-
## ✨ Key Features
|
|
19
|
-
|
|
20
|
-
- **📦 Zero-Config Integration**: Combines Orbit (adapters), Pulsar (tracking), Satellite (connections), Nova (UI), and SIWX (CAIP-122 Auth) out of the box.
|
|
21
|
-
- **⚡ Modular Subpath Imports**: Clean exports for each domain (e.g. `@tuwaio/sdk/pulsar`, `@tuwaio/sdk/satellite`, `@tuwaio/sdk/siwx`, `@tuwaio/sdk/nova-connect`).
|
|
22
|
-
- **🔐 Headless SIWX (CAIP-122) Auth**: Off-chain authentication across EVM and Solana with session management (`@tuwaio/sdk/siwx` and `@tuwaio/sdk/siwx/server`).
|
|
23
|
-
- **🎨 Includes Nova UI & Styles**: Access beautifully styled wallet connection modals and transaction toasts with simple CSS imports (`@import '@tuwaio/sdk/styles/all.css'`).
|
|
24
|
-
- **🛡️ Strict Singleton Contexts**: Uses intelligent peer dependencies to ensure you never run into multiple instances of React or Web3 singletons.
|
|
25
|
-
|
|
26
|
-
> [!WARNING]
|
|
27
|
-
> **SIWX Migration Notice**: Legacy SIWE authorization flows in Satellite are **deprecated**. Use `@tuwaio/sdk/siwx` and `@tuwaio/sdk/siwx/server` for multi-chain CAIP-122 authentication.
|
|
12
|
+
- **One version to install:** the TUWA packages and the libraries they share (`zustand`, `immer`, `framer-motion`, Radix UI, `react-toastify`, `dayjs`) are dependencies of `@tuwaio/sdk`, so a release of the SDK pins a set of TUWA versions that work together. `react` and `react-dom` are peer dependencies: the app keeps one copy of React.
|
|
13
|
+
- **Subpaths:** every subpath re-exports one entry point of a TUWA package, unchanged (see [Subpaths](#-subpaths)). Its reference is on the site of that package.
|
|
14
|
+
- **Stylesheets:** `@tuwaio/sdk/styles/*.css` are copies of the compiled stylesheets of Nova Core, Nova Connect and Nova Transactions. The app does not need Tailwind CSS.
|
|
28
15
|
|
|
29
16
|
---
|
|
30
17
|
|
|
31
18
|
## 💾 Installation
|
|
32
19
|
|
|
33
|
-
To install the core SDK, simply run:
|
|
34
|
-
|
|
35
20
|
```bash
|
|
36
21
|
pnpm add @tuwaio/sdk react react-dom
|
|
37
22
|
```
|
|
38
23
|
|
|
39
|
-
|
|
24
|
+
Then add the chains of your app:
|
|
40
25
|
|
|
41
|
-
|
|
26
|
+
```bash
|
|
27
|
+
# EVM
|
|
28
|
+
pnpm add @tuwaio/evm-sdk @wagmi/core viem
|
|
42
29
|
|
|
43
|
-
|
|
30
|
+
# Solana
|
|
31
|
+
pnpm add @tuwaio/solana-sdk @solana/kit @wallet-standard/react @wallet-standard/app @wallet-standard/base @wallet-standard/features @wallet-standard/ui @wallet-standard/ui-registry
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Do not install the re-exported TUWA packages separately at other versions: two copies of a package with a store or a React context, such as `@tuwaio/satellite-react` or `@tuwaio/nova-connect`, do not share their state or their types.
|
|
44
35
|
|
|
45
|
-
Import the
|
|
36
|
+
Import the stylesheets once, for example in the global CSS file of the app:
|
|
46
37
|
|
|
47
38
|
```css
|
|
48
|
-
/* Import all Nova UI styles at once */
|
|
49
39
|
@import '@tuwaio/sdk/styles/all.css';
|
|
50
|
-
|
|
51
|
-
/* Optional: if your dApp uses Tailwind CSS v4 */
|
|
52
|
-
@import 'tailwindcss';
|
|
53
|
-
|
|
54
|
-
/* Or import individually if needed */
|
|
55
|
-
/* @import '@tuwaio/sdk/styles/nova-core.css'; */
|
|
56
|
-
/* @import '@tuwaio/sdk/styles/nova-connect.css'; */
|
|
57
|
-
/* @import '@tuwaio/sdk/styles/nova-transactions.css'; */
|
|
58
40
|
```
|
|
59
41
|
|
|
60
|
-
|
|
42
|
+
`all.css` joins `nova-core.css` (the `--tuwa-*` theme variables), `nova-connect.css` and `nova-transactions.css`; import them one by one to leave one out.
|
|
61
43
|
|
|
62
44
|
---
|
|
63
45
|
|
|
64
|
-
##
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
export type TransactionUnion = SwapTx;
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
### 2. Multi-Chain Tracking Store (`usePulsarStore.ts`)
|
|
91
|
-
|
|
92
|
-
Configure the headless tracking store with both EVM and Solana adapters.
|
|
93
|
-
|
|
94
|
-
```ts
|
|
95
|
-
// src/hooks/usePulsarStore.ts
|
|
96
|
-
'use client';
|
|
97
|
-
|
|
98
|
-
import { createPulsarStore, createBoundedUseStore } from '@tuwaio/sdk/pulsar';
|
|
99
|
-
import { pulsarEvmAdapter } from '@tuwaio/evm-sdk/pulsar';
|
|
100
|
-
import { pulsarSolanaAdapter } from '@tuwaio/solana-sdk/pulsar';
|
|
101
|
-
|
|
102
|
-
import { wagmiConfig, appEVMChains, solanaRPCUrls } from '@/configs/appConfig';
|
|
103
|
-
import { TransactionUnion } from '@/types';
|
|
104
|
-
|
|
105
|
-
// Create the headless tracking store with BOTH EVM and Solana adapters
|
|
106
|
-
const initialStore = createPulsarStore<TransactionUnion>({
|
|
107
|
-
name: 'tuwa-transactions-multi',
|
|
108
|
-
adapter: [pulsarEvmAdapter(wagmiConfig, appEVMChains), pulsarSolanaAdapter({ rpcUrls: solanaRPCUrls })],
|
|
109
|
-
});
|
|
110
|
-
|
|
111
|
-
export const usePulsarStore = createBoundedUseStore(initialStore);
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
### 3. Nova Transactions Provider (`NovaTransactionsProvider.tsx`)
|
|
46
|
+
## 🧭 Subpaths
|
|
47
|
+
|
|
48
|
+
| Import path | Re-exports | Reference |
|
|
49
|
+
| ----------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
50
|
+
| `@tuwaio/sdk/orbit` | `@tuwaio/orbit-core` | [orbit.docs.tuwa.io](https://orbit.docs.tuwa.io/packages/orbit-core) |
|
|
51
|
+
| `@tuwaio/sdk/pulsar` | `@tuwaio/pulsar-core` and `@tuwaio/pulsar-react` | [pulsar-core](https://pulsar.docs.tuwa.io/packages/pulsar-core), [pulsar-react](https://pulsar.docs.tuwa.io/packages/pulsar-react) |
|
|
52
|
+
| `@tuwaio/sdk/satellite` | `@tuwaio/satellite-core` and `@tuwaio/satellite-react` (its `Connector` type as `SatelliteReactConnector`) | [satellite-core](https://satellite.docs.tuwa.io/packages/satellite-core), [satellite-react](https://satellite.docs.tuwa.io/packages/satellite-react/react) |
|
|
53
|
+
| `@tuwaio/sdk/siwx` | `@tuwaio/siwx-react` | [siwx.docs.tuwa.io](https://siwx.docs.tuwa.io/packages/siwx-react) |
|
|
54
|
+
| `@tuwaio/sdk/siwx/core` | `@tuwaio/siwx-core` | [siwx.docs.tuwa.io](https://siwx.docs.tuwa.io/packages/siwx-core) |
|
|
55
|
+
| `@tuwaio/sdk/siwx/server` | `@tuwaio/siwx-server` | [siwx.docs.tuwa.io](https://siwx.docs.tuwa.io/packages/siwx-server/server) |
|
|
56
|
+
| `@tuwaio/sdk/siwx/server-next` | `@tuwaio/siwx-server/next` | [siwx.docs.tuwa.io](https://siwx.docs.tuwa.io/packages/siwx-server/next) |
|
|
57
|
+
| `@tuwaio/sdk/nova-core` | `@tuwaio/nova-core` | [Storybook](https://stories.tuwa.io/?path=/docs/packages-nova-core-overview--docs) |
|
|
58
|
+
| `@tuwaio/sdk/nova-connect` | `@tuwaio/nova-connect` | [Storybook](https://stories.tuwa.io/?path=/docs/packages-nova-connect-connect-overview--docs) |
|
|
59
|
+
| `@tuwaio/sdk/nova-connect/components` | `@tuwaio/nova-connect/components` | [Storybook](https://stories.tuwa.io/?path=/docs/packages-nova-connect-components-overview--docs) |
|
|
60
|
+
| `@tuwaio/sdk/nova-connect/hooks` | `@tuwaio/nova-connect/hooks` | [Storybook](https://stories.tuwa.io/?path=/docs/packages-nova-connect-hooks-overview--docs) |
|
|
61
|
+
| `@tuwaio/sdk/nova-connect/i18n` | `@tuwaio/nova-connect/i18n` | [Storybook](https://stories.tuwa.io/?path=/docs/packages-nova-connect-i18n-overview--docs) |
|
|
62
|
+
| `@tuwaio/sdk/nova-connect/satellite` | `@tuwaio/nova-connect/satellite` | [Storybook](https://stories.tuwa.io/?path=/docs/packages-nova-connect-satellite-overview--docs) |
|
|
63
|
+
| `@tuwaio/sdk/nova-transactions` | `@tuwaio/nova-transactions` | [Storybook](https://stories.tuwa.io/?path=/docs/packages-nova-transactions-transactions-overview--docs) |
|
|
64
|
+
| `@tuwaio/sdk/nova-transactions/providers` | `@tuwaio/nova-transactions/providers` | [Storybook](https://stories.tuwa.io/?path=/docs/packages-nova-transactions-providers-overview--docs) |
|
|
65
|
+
| `@tuwaio/sdk/styles/*.css` | `dist/index.css` of the three Nova packages | `all.css`, `nova-core.css`, `nova-connect.css`, `nova-transactions.css` |
|
|
66
|
+
|
|
67
|
+
`@tuwaio/sdk/nova-connect/evm` and `@tuwaio/sdk/nova-connect/solana` re-export the chain entry points of Nova Connect for the add-ons; import them as `@tuwaio/evm-sdk/nova-connect` and `@tuwaio/solana-sdk/nova-connect`. They need the chain packages that the add-ons install, and going through `@tuwaio/sdk` makes their chain registration and types apply to the same copy of Nova Connect and Satellite React as the other subpaths.
|
|
115
68
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
```tsx
|
|
119
|
-
// src/providers/NovaTransactionsProvider.tsx
|
|
120
|
-
'use client';
|
|
121
|
-
|
|
122
|
-
import { useSatelliteConnectStore } from '@tuwaio/sdk/satellite';
|
|
123
|
-
import { useInitializeTransactionsPool } from '@tuwaio/sdk/pulsar';
|
|
124
|
-
import { getAdapterFromConnectorType } from '@tuwaio/sdk/orbit';
|
|
125
|
-
import { NovaTransactionsProvider as NTP } from '@tuwaio/sdk/nova-transactions/providers';
|
|
126
|
-
import { usePulsarStore } from '@/hooks/usePulsarStore';
|
|
127
|
-
|
|
128
|
-
export function NovaTransactionsProvider() {
|
|
129
|
-
const initialTx = usePulsarStore((s) => s.initialTx);
|
|
130
|
-
const closeTxTrackedModal = usePulsarStore((s) => s.closeTxTrackedModal);
|
|
131
|
-
const executeTxAction = usePulsarStore((s) => s.executeTxAction);
|
|
132
|
-
const initializeTransactionsPool = usePulsarStore((s) => s.initializeTransactionsPool);
|
|
133
|
-
const getAdapter = usePulsarStore((s) => s.getAdapter);
|
|
134
|
-
const transactionsPool = usePulsarStore((s) => s.transactionsPool);
|
|
135
|
-
|
|
136
|
-
const activeConnection = useSatelliteConnectStore((s) => s.activeConnection);
|
|
137
|
-
|
|
138
|
-
useInitializeTransactionsPool({ initializeTransactionsPool });
|
|
139
|
-
|
|
140
|
-
return (
|
|
141
|
-
<NTP
|
|
142
|
-
transactionsPool={transactionsPool}
|
|
143
|
-
initialTx={initialTx}
|
|
144
|
-
closeTxTrackedModal={closeTxTrackedModal}
|
|
145
|
-
executeTxAction={executeTxAction}
|
|
146
|
-
connectedWalletAddress={activeConnection?.isConnected ? activeConnection.address : undefined}
|
|
147
|
-
connectedAdapterType={getAdapterFromConnectorType(activeConnection?.connectorType ?? 'evm:')}
|
|
148
|
-
adapter={getAdapter()}
|
|
149
|
-
/>
|
|
150
|
-
);
|
|
151
|
-
}
|
|
152
|
-
```
|
|
69
|
+
---
|
|
153
70
|
|
|
154
|
-
|
|
71
|
+
## 🚀 Usage
|
|
155
72
|
|
|
156
|
-
|
|
73
|
+
The providers of an EVM app with a connect button:
|
|
157
74
|
|
|
158
75
|
```tsx
|
|
159
|
-
// src/providers/AppProviders.tsx
|
|
160
76
|
'use client';
|
|
161
77
|
|
|
162
|
-
import { SatelliteConnectProvider } from '@tuwaio/sdk/satellite';
|
|
163
|
-
import { NovaConnectProvider } from '@tuwaio/sdk/nova-connect';
|
|
164
|
-
import { satelliteEVMAdapter } from '@tuwaio/evm-sdk/satellite';
|
|
165
78
|
import { EVMConnectorsWatcher } from '@tuwaio/evm-sdk/nova-connect';
|
|
166
|
-
import {
|
|
167
|
-
import {
|
|
168
|
-
import {
|
|
169
|
-
|
|
170
|
-
import {
|
|
171
|
-
import {
|
|
172
|
-
import {
|
|
173
|
-
|
|
174
|
-
export function AppProviders({ children }: { children: React.ReactNode }) {
|
|
175
|
-
const getAdapter = usePulsarStore((state) => state.getAdapter);
|
|
176
|
-
const transactionsPool = usePulsarStore((state) => state.transactionsPool);
|
|
79
|
+
import { satelliteEVMAdapter } from '@tuwaio/evm-sdk/satellite';
|
|
80
|
+
import { NovaConnectProvider } from '@tuwaio/sdk/nova-connect';
|
|
81
|
+
import { ConnectButton } from '@tuwaio/sdk/nova-connect/components';
|
|
82
|
+
import { SatelliteConnectProvider } from '@tuwaio/sdk/satellite';
|
|
83
|
+
import { createConfig, http, injected } from '@wagmi/core';
|
|
84
|
+
import type { ReactNode } from 'react';
|
|
85
|
+
import { mainnet } from 'viem/chains';
|
|
177
86
|
|
|
178
|
-
|
|
87
|
+
const appChains = [mainnet] as const;
|
|
88
|
+
const wagmiConfig = createConfig({ chains: appChains, connectors: [injected()], transports: { [mainnet.id]: http() } });
|
|
89
|
+
const adapter = satelliteEVMAdapter(wagmiConfig, appChains);
|
|
179
90
|
|
|
91
|
+
export function Providers({ children }: { children: ReactNode }) {
|
|
180
92
|
return (
|
|
181
|
-
<SatelliteConnectProvider
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
>
|
|
185
|
-
<EVMConnectorsWatcher wagmiConfig={wagmiConfig} siwx={siwxSession} />
|
|
186
|
-
<SolanaConnectorsWatcher siwx={siwxSession} />
|
|
187
|
-
|
|
188
|
-
<NovaTransactionsProvider />
|
|
189
|
-
|
|
190
|
-
<NovaConnectProvider
|
|
191
|
-
appChains={appEVMChains}
|
|
192
|
-
solanaRPCUrls={solanaRPCUrls}
|
|
193
|
-
transactionPool={transactionsPool}
|
|
194
|
-
pulsarAdapter={getAdapter()}
|
|
195
|
-
withImpersonated
|
|
196
|
-
withBalance
|
|
197
|
-
withChain
|
|
198
|
-
siwx={{
|
|
199
|
-
verifier: async (payload) => {
|
|
200
|
-
const res = await fetch('/api/siwx/verify', {
|
|
201
|
-
method: 'POST',
|
|
202
|
-
headers: { 'Content-Type': 'application/json' },
|
|
203
|
-
body: JSON.stringify(payload),
|
|
204
|
-
});
|
|
205
|
-
return res.ok ? res.json() : null;
|
|
206
|
-
},
|
|
207
|
-
destroyer: async () => {
|
|
208
|
-
await fetch('/api/siwx/logout', { method: 'POST' });
|
|
209
|
-
},
|
|
210
|
-
}}
|
|
211
|
-
>
|
|
212
|
-
{children}
|
|
213
|
-
</NovaConnectProvider>
|
|
93
|
+
<SatelliteConnectProvider adapter={adapter} autoConnect>
|
|
94
|
+
<EVMConnectorsWatcher wagmiConfig={wagmiConfig} />
|
|
95
|
+
<NovaConnectProvider appChains={appChains}>{children}</NovaConnectProvider>
|
|
214
96
|
</SatelliteConnectProvider>
|
|
215
97
|
);
|
|
216
98
|
}
|
|
217
|
-
```
|
|
218
|
-
|
|
219
|
-
### 5. Creating a Multi-Chain Transaction (Usage)
|
|
220
|
-
|
|
221
|
-
Now you can safely execute strictly-typed, cross-chain transactions anywhere in your app. The store automatically routes the transaction to the correct adapter.
|
|
222
|
-
|
|
223
|
-
```tsx
|
|
224
|
-
// src/components/SwapButton.tsx
|
|
225
|
-
'use client';
|
|
226
99
|
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
import { TxActionButton } from '@tuwaio/sdk/nova-transactions';
|
|
230
|
-
import { usePulsarStore } from '@/hooks/usePulsarStore';
|
|
231
|
-
import { AppTxType } from '@/types';
|
|
232
|
-
|
|
233
|
-
export function SwapButton() {
|
|
234
|
-
const executeTxAction = usePulsarStore((s) => s.executeTxAction);
|
|
235
|
-
const getLastTxKey = usePulsarStore((s) => s.getLastTxKey);
|
|
236
|
-
const transactionsPool = usePulsarStore((s) => s.transactionsPool);
|
|
237
|
-
const activeConnection = useSatelliteConnectStore((s) => s.activeConnection);
|
|
238
|
-
|
|
239
|
-
const handleSwapAction = async () => {
|
|
240
|
-
const adapterType = activeConnection?.connectorType
|
|
241
|
-
? getAdapterFromConnectorType(activeConnection.connectorType)
|
|
242
|
-
: OrbitAdapter.EVM;
|
|
243
|
-
const isEvm = adapterType === OrbitAdapter.EVM;
|
|
244
|
-
|
|
245
|
-
await executeTxAction({
|
|
246
|
-
actionFunction: async () => {
|
|
247
|
-
// Execute smart contract call (e.g. writeContract via Viem/Wagmi or sendTransaction via Gill)
|
|
248
|
-
/* return await swapTokensContractCall(); */
|
|
249
|
-
},
|
|
250
|
-
onSuccess: (tx) => {
|
|
251
|
-
console.log('Swap transaction completed successfully:', tx);
|
|
252
|
-
},
|
|
253
|
-
params: {
|
|
254
|
-
type: AppTxType.SWAP,
|
|
255
|
-
adapter: adapterType,
|
|
256
|
-
desiredChainID: isEvm ? 1 : 'mainnet',
|
|
257
|
-
rpcUrl: isEvm ? undefined : activeConnection?.rpcURL,
|
|
258
|
-
title: ['Swapping Tokens', 'Tokens Swapped', 'Error During Swap', 'Swap Transaction Replaced'],
|
|
259
|
-
description: [
|
|
260
|
-
`Swapping 100 USDC for ${isEvm ? 'ETH' : 'SOL'}...`,
|
|
261
|
-
`Success! Swapped 100 USDC for ${isEvm ? 'ETH' : 'SOL'}.`,
|
|
262
|
-
'Something went wrong during token swap.',
|
|
263
|
-
'Transaction was replaced in wallet.',
|
|
264
|
-
],
|
|
265
|
-
payload: {
|
|
266
|
-
tokenIn: 'USDC',
|
|
267
|
-
tokenOut: isEvm ? 'ETH' : 'SOL',
|
|
268
|
-
amount: 100,
|
|
269
|
-
},
|
|
270
|
-
withTrackedModal: true,
|
|
271
|
-
requiredConfirmations: isEvm ? 3 : undefined,
|
|
272
|
-
},
|
|
273
|
-
});
|
|
274
|
-
};
|
|
275
|
-
|
|
276
|
-
return (
|
|
277
|
-
<TxActionButton
|
|
278
|
-
action={handleSwapAction}
|
|
279
|
-
getLastTxKey={getLastTxKey}
|
|
280
|
-
transactionsPool={transactionsPool}
|
|
281
|
-
walletAddress={activeConnection?.address}
|
|
282
|
-
>
|
|
283
|
-
Cross-Chain Swap
|
|
284
|
-
</TxActionButton>
|
|
285
|
-
);
|
|
100
|
+
export function Header() {
|
|
101
|
+
return <ConnectButton />;
|
|
286
102
|
}
|
|
287
103
|
```
|
|
288
104
|
|
|
105
|
+
The full setup — EVM and Solana, transaction tracking with Pulsar and Nova Transactions, SIWX sign-in and Quasar sync — is the **[Full-Stack React guide](https://docs.tuwa.io/guides/full-stack-react)**. Ready-made apps are in the [starter templates](https://docs.tuwa.io/guides/starter-templates).
|
|
106
|
+
|
|
289
107
|
---
|
|
290
108
|
|
|
291
|
-
##
|
|
292
|
-
|
|
293
|
-
This package provides direct subpath entry points for clean, tree-shakeable imports:
|
|
294
|
-
|
|
295
|
-
- **`@tuwaio/sdk/pulsar`** — State machine & tracking stores (`createPulsarStore`, `createTxInMemoryStore`, `useInitializeTransactionsPool`).
|
|
296
|
-
- **`@tuwaio/sdk/satellite`** — Wallet state & react hooks (`useSatelliteConnectStore`, `SatelliteConnectProvider`, `useAccount`).
|
|
297
|
-
- **`@tuwaio/sdk/siwx`** — Client-side SIWX (CAIP-122) auto-authentication hooks.
|
|
298
|
-
- **`@tuwaio/sdk/siwx/core`** — SIWX core types, error handling, and message building logic.
|
|
299
|
-
- **`@tuwaio/sdk/siwx/server`** — Server-side SIWX session handlers.
|
|
300
|
-
- **`@tuwaio/sdk/nova-connect`** — Connect UI main entry (`ConnectButton`, `NovaConnectProvider`).
|
|
301
|
-
- **`@tuwaio/sdk/nova-connect/components`** — Standalone UI components (`ConnectButton`, Modals, Customization interfaces).
|
|
302
|
-
- **`@tuwaio/sdk/nova-connect/hooks`** — Helper hooks (`useGetWalletNameAndAvatar`, `useWalletChainsList`).
|
|
303
|
-
- **`@tuwaio/sdk/nova-connect/i18n`** — Internationalization and label providers (`NovaConnectLabelsProvider`).
|
|
304
|
-
- **`@tuwaio/sdk/nova-transactions`** — Transaction UI components (`TxActionButton`).
|
|
305
|
-
- **`@tuwaio/sdk/nova-transactions/providers`** — Transaction UI provider (`NovaTransactionsProvider`).
|
|
306
|
-
- **`@tuwaio/sdk/nova-core`** — UI Core variables, base components, and utilities.
|
|
307
|
-
- **`@tuwaio/sdk/orbit`** — Core multi-chain types and adapters (`OrbitAdapter`, `getAdapterFromConnectorType`).
|
|
308
|
-
- **`@tuwaio/sdk/styles/all.css`** — Complete bundled stylesheet for Nova UI components.
|
|
109
|
+
## 🗄️ Browser Storage
|
|
309
110
|
|
|
310
|
-
|
|
111
|
+
`@tuwaio/sdk` saves nothing itself. The re-exported packages use these `localStorage` keys; each page lists when they are written:
|
|
311
112
|
|
|
312
|
-
|
|
113
|
+
- `orbit-core:lastConnectedConnector`, `orbit-core:recentlyConnectedConnectorsListHelpers` and `satellite-connect:impersonatedAddress`: the last connection, the recent wallets and the impersonated address ([`@tuwaio/satellite-core`](https://satellite.docs.tuwa.io/packages/satellite-core), read by Nova Connect);
|
|
114
|
+
- the `name` passed to `createPulsarStore`: the tracked transactions ([`@tuwaio/pulsar-core`](https://pulsar.docs.tuwa.io/packages/pulsar-core));
|
|
115
|
+
- `siwx-react:session`: the SIWX session shown in the UI ([`@tuwaio/siwx-react`](https://siwx.docs.tuwa.io/packages/siwx-react)).
|
|
313
116
|
|
|
314
|
-
|
|
117
|
+
## 🌐 External Services
|
|
315
118
|
|
|
316
|
-
|
|
119
|
+
`@tuwaio/sdk` sends no requests itself. Of the packages it re-exports, only `@tuwaio/nova-core` does: it loads network and wallet icons that `@web3icons/common` does not have from `raw.githubusercontent.com` ([details](https://stories.tuwa.io/?path=/docs/packages-nova-core-overview--docs)). The chain requests (RPC endpoints, ENS, SNS, Pimlico, Safe Transaction Service) come from the chain packages of the add-ons: see [`@tuwaio/evm-sdk`](https://sdk.docs.tuwa.io/packages/evm-sdk) and [`@tuwaio/solana-sdk`](https://sdk.docs.tuwa.io/packages/solana-sdk). The SIWX endpoints are those of your server.
|
|
317
120
|
|
|
318
|
-
|
|
121
|
+
---
|
|
319
122
|
|
|
320
123
|
## 📄 License
|
|
321
124
|
|
|
322
|
-
|
|
125
|
+
Licensed under the **Apache-2.0 License**. See the [LICENSE](https://github.com/TuwaIO/sdk/blob/main/packages/sdk/LICENSE) file for details.
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
export * from '@tuwaio/nova-connect/components';
|
|
2
|
+
import '@tuwaio/nova-connect/evm';
|
|
2
3
|
import '@tuwaio/nova-connect/hooks';
|
|
3
4
|
import '@tuwaio/nova-connect/i18n';
|
|
4
5
|
import '@tuwaio/nova-connect/satellite';
|
|
6
|
+
import '@tuwaio/nova-connect/solana';
|
|
5
7
|
import '@tuwaio/nova-connect';
|
|
6
8
|
import '@tuwaio/nova-core';
|
|
7
9
|
import '@tuwaio/nova-transactions/providers';
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
export * from '@tuwaio/nova-connect/components';
|
|
2
|
+
import '@tuwaio/nova-connect/evm';
|
|
2
3
|
import '@tuwaio/nova-connect/hooks';
|
|
3
4
|
import '@tuwaio/nova-connect/i18n';
|
|
4
5
|
import '@tuwaio/nova-connect/satellite';
|
|
6
|
+
import '@tuwaio/nova-connect/solana';
|
|
5
7
|
import '@tuwaio/nova-connect';
|
|
6
8
|
import '@tuwaio/nova-core';
|
|
7
9
|
import '@tuwaio/nova-transactions/providers';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var evm=require('@tuwaio/nova-connect/evm');Object.keys(evm).forEach(function(k){if(k!=='default'&&!Object.prototype.hasOwnProperty.call(exports,k))Object.defineProperty(exports,k,{enumerable:true,get:function(){return evm[k]}})});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@tuwaio/nova-connect/evm';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@tuwaio/nova-connect/evm';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export*from'@tuwaio/nova-connect/evm';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var solana=require('@tuwaio/nova-connect/solana');Object.keys(solana).forEach(function(k){if(k!=='default'&&!Object.prototype.hasOwnProperty.call(exports,k))Object.defineProperty(exports,k,{enumerable:true,get:function(){return solana[k]}})});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@tuwaio/nova-connect/solana';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@tuwaio/nova-connect/solana';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export*from'@tuwaio/nova-connect/solana';
|
package/dist/satellite.d.cts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export * from '@tuwaio/satellite-core';
|
|
2
|
-
export { AllConnections, AllConnectors, Connection, SatelliteConnectProvider, SatelliteConnectProviderProps, Connector as SatelliteReactConnector, SatelliteStoreContext, useInitializeAutoConnect, useSatelliteConnectStore } from '@tuwaio/satellite-react';
|
|
2
|
+
export { AllConnections, AllConnectors, Connection, InitializeAutoConnectProps, SatelliteConnectProvider, SatelliteConnectProviderProps, SatelliteContextType, Connector as SatelliteReactConnector, SatelliteStoreContext, useInitializeAutoConnect, useSatelliteConnectStore } from '@tuwaio/satellite-react';
|
package/dist/satellite.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export * from '@tuwaio/satellite-core';
|
|
2
|
-
export { AllConnections, AllConnectors, Connection, SatelliteConnectProvider, SatelliteConnectProviderProps, Connector as SatelliteReactConnector, SatelliteStoreContext, useInitializeAutoConnect, useSatelliteConnectStore } from '@tuwaio/satellite-react';
|
|
2
|
+
export { AllConnections, AllConnectors, Connection, InitializeAutoConnectProps, SatelliteConnectProvider, SatelliteConnectProviderProps, SatelliteContextType, Connector as SatelliteReactConnector, SatelliteStoreContext, useInitializeAutoConnect, useSatelliteConnectStore } from '@tuwaio/satellite-react';
|
package/dist/styles/all.css
CHANGED
|
@@ -723,9 +723,6 @@ html {
|
|
|
723
723
|
.novatx\:max-w-\[55\%\] {
|
|
724
724
|
max-width: 55%;
|
|
725
725
|
}
|
|
726
|
-
.novatx\:max-w-\[200px\] {
|
|
727
|
-
max-width: 200px;
|
|
728
|
-
}
|
|
729
726
|
.novatx\:min-w-0 {
|
|
730
727
|
min-width: 0px;
|
|
731
728
|
}
|
|
@@ -1666,7 +1663,6 @@ html {
|
|
|
1666
1663
|
--novacon-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New',
|
|
1667
1664
|
monospace;
|
|
1668
1665
|
--novacon-color-red-500: oklch(63.7% 0.237 25.331);
|
|
1669
|
-
--novacon-color-red-600: oklch(57.7% 0.245 27.325);
|
|
1670
1666
|
--novacon-color-green-600: oklch(62.7% 0.194 149.214);
|
|
1671
1667
|
--novacon-color-blue-500: oklch(62.3% 0.214 259.815);
|
|
1672
1668
|
--novacon-color-white: #fff;
|
|
@@ -2119,9 +2115,6 @@ html {
|
|
|
2119
2115
|
--tw-pan-x: pan-x;
|
|
2120
2116
|
touch-action: var(--tw-pan-x,) var(--tw-pan-y,) var(--tw-pinch-zoom,);
|
|
2121
2117
|
}
|
|
2122
|
-
.novacon\:scrollbar-thin {
|
|
2123
|
-
scrollbar-width: thin;
|
|
2124
|
-
}
|
|
2125
2118
|
.novacon\:flex-col {
|
|
2126
2119
|
flex-direction: column;
|
|
2127
2120
|
}
|
|
@@ -2313,19 +2306,12 @@ html {
|
|
|
2313
2306
|
.novacon\:bg-\[var\(--tuwa-warning-bg\)\] {
|
|
2314
2307
|
background-color: var(--tuwa-warning-bg);
|
|
2315
2308
|
}
|
|
2316
|
-
.novacon\:bg-blue-500 {
|
|
2317
|
-
background-color: var(--novacon-color-blue-500);
|
|
2318
|
-
}
|
|
2319
2309
|
.novacon\:bg-red-500 {
|
|
2320
2310
|
background-color: var(--novacon-color-red-500);
|
|
2321
2311
|
}
|
|
2322
2312
|
.novacon\:bg-transparent {
|
|
2323
2313
|
background-color: transparent;
|
|
2324
2314
|
}
|
|
2325
|
-
.novacon\:bg-gradient-to-b {
|
|
2326
|
-
--tw-gradient-position: to bottom in oklab;
|
|
2327
|
-
background-image: linear-gradient(var(--tw-gradient-stops));
|
|
2328
|
-
}
|
|
2329
2315
|
.novacon\:bg-gradient-to-r {
|
|
2330
2316
|
--tw-gradient-position: to right in oklab;
|
|
2331
2317
|
background-image: linear-gradient(var(--tw-gradient-stops));
|
|
@@ -2551,14 +2537,6 @@ html {
|
|
|
2551
2537
|
.novacon\:opacity-100 {
|
|
2552
2538
|
opacity: 100%;
|
|
2553
2539
|
}
|
|
2554
|
-
.novacon\:shadow-2xl {
|
|
2555
|
-
--tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / 0.25));
|
|
2556
|
-
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
2557
|
-
}
|
|
2558
|
-
.novacon\:shadow-lg {
|
|
2559
|
-
--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
|
|
2560
|
-
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
2561
|
-
}
|
|
2562
2540
|
.novacon\:shadow-sm {
|
|
2563
2541
|
--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
|
|
2564
2542
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
@@ -2757,9 +2735,6 @@ html {
|
|
|
2757
2735
|
.novacon\:hover\:bg-\[var\(--tuwa-text-accent\)\]:hover {
|
|
2758
2736
|
background-color: var(--tuwa-text-accent);
|
|
2759
2737
|
}
|
|
2760
|
-
.novacon\:hover\:bg-red-600:hover {
|
|
2761
|
-
background-color: var(--novacon-color-red-600);
|
|
2762
|
-
}
|
|
2763
2738
|
.novacon\:hover\:text-\[var\(--tuwa-error-text\)\]:hover {
|
|
2764
2739
|
color: var(--tuwa-error-text);
|
|
2765
2740
|
}
|
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
--novacon-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New',
|
|
7
7
|
monospace;
|
|
8
8
|
--novacon-color-red-500: oklch(63.7% 0.237 25.331);
|
|
9
|
-
--novacon-color-red-600: oklch(57.7% 0.245 27.325);
|
|
10
9
|
--novacon-color-green-600: oklch(62.7% 0.194 149.214);
|
|
11
10
|
--novacon-color-blue-500: oklch(62.3% 0.214 259.815);
|
|
12
11
|
--novacon-color-white: #fff;
|
|
@@ -459,9 +458,6 @@
|
|
|
459
458
|
--tw-pan-x: pan-x;
|
|
460
459
|
touch-action: var(--tw-pan-x,) var(--tw-pan-y,) var(--tw-pinch-zoom,);
|
|
461
460
|
}
|
|
462
|
-
.novacon\:scrollbar-thin {
|
|
463
|
-
scrollbar-width: thin;
|
|
464
|
-
}
|
|
465
461
|
.novacon\:flex-col {
|
|
466
462
|
flex-direction: column;
|
|
467
463
|
}
|
|
@@ -653,19 +649,12 @@
|
|
|
653
649
|
.novacon\:bg-\[var\(--tuwa-warning-bg\)\] {
|
|
654
650
|
background-color: var(--tuwa-warning-bg);
|
|
655
651
|
}
|
|
656
|
-
.novacon\:bg-blue-500 {
|
|
657
|
-
background-color: var(--novacon-color-blue-500);
|
|
658
|
-
}
|
|
659
652
|
.novacon\:bg-red-500 {
|
|
660
653
|
background-color: var(--novacon-color-red-500);
|
|
661
654
|
}
|
|
662
655
|
.novacon\:bg-transparent {
|
|
663
656
|
background-color: transparent;
|
|
664
657
|
}
|
|
665
|
-
.novacon\:bg-gradient-to-b {
|
|
666
|
-
--tw-gradient-position: to bottom in oklab;
|
|
667
|
-
background-image: linear-gradient(var(--tw-gradient-stops));
|
|
668
|
-
}
|
|
669
658
|
.novacon\:bg-gradient-to-r {
|
|
670
659
|
--tw-gradient-position: to right in oklab;
|
|
671
660
|
background-image: linear-gradient(var(--tw-gradient-stops));
|
|
@@ -891,14 +880,6 @@
|
|
|
891
880
|
.novacon\:opacity-100 {
|
|
892
881
|
opacity: 100%;
|
|
893
882
|
}
|
|
894
|
-
.novacon\:shadow-2xl {
|
|
895
|
-
--tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / 0.25));
|
|
896
|
-
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
897
|
-
}
|
|
898
|
-
.novacon\:shadow-lg {
|
|
899
|
-
--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
|
|
900
|
-
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
901
|
-
}
|
|
902
883
|
.novacon\:shadow-sm {
|
|
903
884
|
--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
|
|
904
885
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
@@ -1097,9 +1078,6 @@
|
|
|
1097
1078
|
.novacon\:hover\:bg-\[var\(--tuwa-text-accent\)\]:hover {
|
|
1098
1079
|
background-color: var(--tuwa-text-accent);
|
|
1099
1080
|
}
|
|
1100
|
-
.novacon\:hover\:bg-red-600:hover {
|
|
1101
|
-
background-color: var(--novacon-color-red-600);
|
|
1102
|
-
}
|
|
1103
1081
|
.novacon\:hover\:text-\[var\(--tuwa-error-text\)\]:hover {
|
|
1104
1082
|
color: var(--tuwa-error-text);
|
|
1105
1083
|
}
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tuwaio/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"author": "Oleksandr Tkach",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
|
-
"description": "Layer 8 (L8) of the TUWA Ecosystem.
|
|
7
|
+
"description": "Layer 8 (L8) of the TUWA Ecosystem. One package for React apps: re-exports Orbit, Pulsar, Satellite Connect, SIWX and Nova UI Kit under subpaths, with their stylesheets. Add @tuwaio/evm-sdk or @tuwaio/solana-sdk for the chains.",
|
|
8
8
|
"type": "module",
|
|
9
9
|
"exports": {
|
|
10
10
|
"./pulsar": {
|
|
@@ -42,6 +42,16 @@
|
|
|
42
42
|
"import": "./dist/nova-connect-i18n.js",
|
|
43
43
|
"require": "./dist/nova-connect-i18n.cjs"
|
|
44
44
|
},
|
|
45
|
+
"./nova-connect/evm": {
|
|
46
|
+
"types": "./dist/nova-connect-evm.d.ts",
|
|
47
|
+
"import": "./dist/nova-connect-evm.js",
|
|
48
|
+
"require": "./dist/nova-connect-evm.cjs"
|
|
49
|
+
},
|
|
50
|
+
"./nova-connect/solana": {
|
|
51
|
+
"types": "./dist/nova-connect-solana.d.ts",
|
|
52
|
+
"import": "./dist/nova-connect-solana.js",
|
|
53
|
+
"require": "./dist/nova-connect-solana.cjs"
|
|
54
|
+
},
|
|
45
55
|
"./nova-transactions": {
|
|
46
56
|
"types": "./dist/nova-transactions.d.ts",
|
|
47
57
|
"import": "./dist/nova-transactions.js",
|
|
@@ -102,7 +112,7 @@
|
|
|
102
112
|
"solana",
|
|
103
113
|
"wagmi",
|
|
104
114
|
"viem",
|
|
105
|
-
"
|
|
115
|
+
"@solana/kit",
|
|
106
116
|
"wallet-standard",
|
|
107
117
|
"wallet",
|
|
108
118
|
"wallet-connect",
|
|
@@ -127,12 +137,7 @@
|
|
|
127
137
|
"i18n",
|
|
128
138
|
"modal",
|
|
129
139
|
"toast",
|
|
130
|
-
"quasar",
|
|
131
|
-
"cloud",
|
|
132
140
|
"sdk",
|
|
133
|
-
"cosmos",
|
|
134
|
-
"playground",
|
|
135
|
-
"cli",
|
|
136
141
|
"siwx"
|
|
137
142
|
],
|
|
138
143
|
"repository": {
|
|
@@ -151,45 +156,81 @@
|
|
|
151
156
|
}
|
|
152
157
|
],
|
|
153
158
|
"dependencies": {
|
|
154
|
-
"@emotion/is-prop-valid": "^1.4.0",
|
|
155
159
|
"@heroicons/react": "^2.2.0",
|
|
156
160
|
"@radix-ui/react-dialog": "^1.1.23",
|
|
157
161
|
"@radix-ui/react-select": "^2.3.7",
|
|
158
|
-
"@tuwaio/nova-connect": "^0.
|
|
159
|
-
"@tuwaio/nova-core": "^0.
|
|
160
|
-
"@tuwaio/nova-transactions": "^0.
|
|
161
|
-
"@tuwaio/orbit-core": "^0.
|
|
162
|
-
"@tuwaio/pulsar-core": "^0.
|
|
163
|
-
"@tuwaio/pulsar-react": "^0.
|
|
164
|
-
"@tuwaio/satellite-core": "^0.
|
|
165
|
-
"@tuwaio/satellite-react": "^0.
|
|
166
|
-
"@tuwaio/siwx-core": "^0.
|
|
167
|
-
"@tuwaio/siwx-react": "^0.
|
|
168
|
-
"@tuwaio/siwx-server": "^0.
|
|
169
|
-
"@web3icons/common": "^0.11.
|
|
170
|
-
"@web3icons/react": "^4.1.
|
|
162
|
+
"@tuwaio/nova-connect": "^0.7.2",
|
|
163
|
+
"@tuwaio/nova-core": "^0.7.1",
|
|
164
|
+
"@tuwaio/nova-transactions": "^0.7.2",
|
|
165
|
+
"@tuwaio/orbit-core": "^0.3.1",
|
|
166
|
+
"@tuwaio/pulsar-core": "^0.8.2",
|
|
167
|
+
"@tuwaio/pulsar-react": "^0.6.1",
|
|
168
|
+
"@tuwaio/satellite-core": "^0.6.2",
|
|
169
|
+
"@tuwaio/satellite-react": "^0.6.2",
|
|
170
|
+
"@tuwaio/siwx-core": "^0.4.0",
|
|
171
|
+
"@tuwaio/siwx-react": "^0.4.0",
|
|
172
|
+
"@tuwaio/siwx-server": "^0.4.1",
|
|
173
|
+
"@web3icons/common": "^0.11.51",
|
|
174
|
+
"@web3icons/react": "^4.1.22",
|
|
171
175
|
"clsx": "^2.1.1",
|
|
172
|
-
"dayjs": "^1.11.
|
|
176
|
+
"dayjs": "^1.11.23",
|
|
173
177
|
"ethereum-blockies-base64": "^1.0.2",
|
|
174
|
-
"framer-motion": "^13.
|
|
175
|
-
"immer": "^11.1.
|
|
178
|
+
"framer-motion": "^13.4.6",
|
|
179
|
+
"immer": "^11.1.18",
|
|
176
180
|
"react-toastify": "^11.1.0",
|
|
177
|
-
"tailwind-merge": "^3.
|
|
181
|
+
"tailwind-merge": "^3.7.0",
|
|
178
182
|
"zustand": "^5.0.15"
|
|
179
183
|
},
|
|
180
184
|
"peerDependencies": {
|
|
181
185
|
"react": ">=19.2.3",
|
|
182
|
-
"react-dom": ">=19.2.3"
|
|
186
|
+
"react-dom": ">=19.2.3",
|
|
187
|
+
"@tuwaio/orbit-evm": ">=0.3",
|
|
188
|
+
"@tuwaio/orbit-solana": ">=0.3",
|
|
189
|
+
"@tuwaio/satellite-evm": ">=0.6",
|
|
190
|
+
"@tuwaio/satellite-solana": ">=0.6",
|
|
191
|
+
"@wagmi/core": "3.x.x",
|
|
192
|
+
"@wallet-standard/react": "1.x.x",
|
|
193
|
+
"viem": "2.x.x"
|
|
194
|
+
},
|
|
195
|
+
"peerDependenciesMeta": {
|
|
196
|
+
"@tuwaio/orbit-evm": {
|
|
197
|
+
"optional": true
|
|
198
|
+
},
|
|
199
|
+
"@tuwaio/orbit-solana": {
|
|
200
|
+
"optional": true
|
|
201
|
+
},
|
|
202
|
+
"@tuwaio/satellite-evm": {
|
|
203
|
+
"optional": true
|
|
204
|
+
},
|
|
205
|
+
"@tuwaio/satellite-solana": {
|
|
206
|
+
"optional": true
|
|
207
|
+
},
|
|
208
|
+
"@wagmi/core": {
|
|
209
|
+
"optional": true
|
|
210
|
+
},
|
|
211
|
+
"@wallet-standard/react": {
|
|
212
|
+
"optional": true
|
|
213
|
+
},
|
|
214
|
+
"viem": {
|
|
215
|
+
"optional": true
|
|
216
|
+
}
|
|
183
217
|
},
|
|
184
218
|
"devDependencies": {
|
|
185
|
-
"
|
|
186
|
-
"
|
|
219
|
+
"@tuwaio/orbit-evm": "^0.3.2",
|
|
220
|
+
"@tuwaio/orbit-solana": "^0.3.3",
|
|
221
|
+
"@tuwaio/satellite-evm": "^0.6.1",
|
|
222
|
+
"@tuwaio/satellite-solana": "^0.6.1",
|
|
223
|
+
"@wagmi/core": "^3.6.5",
|
|
224
|
+
"@wallet-standard/react": "^1.0.3",
|
|
225
|
+
"react": "^19.3.0",
|
|
226
|
+
"react-dom": "^19.3.0",
|
|
187
227
|
"tsup": "^8.5.1",
|
|
188
|
-
"typescript": "6.0.3"
|
|
228
|
+
"typescript": "6.0.3",
|
|
229
|
+
"viem": "^2.57.1"
|
|
189
230
|
},
|
|
190
231
|
"scripts": {
|
|
191
232
|
"start": "tsup --watch",
|
|
192
233
|
"build": "tsup && node scripts/bundle-styles.js",
|
|
193
|
-
"test": "
|
|
234
|
+
"test": "vitest run"
|
|
194
235
|
}
|
|
195
236
|
}
|