@varity-labs/ui-kit 2.0.0-beta.1 → 2.0.0-beta.12
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/LICENSE +3 -3
- package/README.md +66 -35
- package/dist/components/Dashboard/DashboardHeader.js +4 -4
- package/dist/components/Dashboard/DashboardHeader.js.map +1 -1
- package/dist/components/Dashboard/DashboardLayout.d.ts +3 -3
- package/dist/components/Dashboard/DashboardLayout.d.ts.map +1 -1
- package/dist/components/Dashboard/DashboardLayout.js +1 -1
- package/dist/components/Onramp/BuyUSDCButton.d.ts +4 -4
- package/dist/components/Onramp/BuyUSDCButton.d.ts.map +1 -1
- package/dist/components/Onramp/BuyUSDCButton.js +5 -5
- package/dist/components/Onramp/BuyUSDCButton.js.map +1 -1
- package/dist/components/Onramp/OnrampWidget.d.ts +4 -4
- package/dist/components/Onramp/OnrampWidget.d.ts.map +1 -1
- package/dist/components/Onramp/OnrampWidget.js +10 -11
- package/dist/components/Onramp/OnrampWidget.js.map +1 -1
- package/dist/components/Onramp/index.d.ts +3 -4
- package/dist/components/Onramp/index.d.ts.map +1 -1
- package/dist/components/Onramp/index.js +3 -4
- package/dist/components/Onramp/index.js.map +1 -1
- package/dist/components/PaymentWidget/PaymentWidget.d.ts +7 -7
- package/dist/components/PaymentWidget/PaymentWidget.d.ts.map +1 -1
- package/dist/components/PaymentWidget/PaymentWidget.js +12 -133
- package/dist/components/PaymentWidget/PaymentWidget.js.map +1 -1
- package/dist/components/PaymentWidget/useSeamlessPayment.d.ts +43 -0
- package/dist/components/PaymentWidget/useSeamlessPayment.d.ts.map +1 -0
- package/dist/components/PaymentWidget/useSeamlessPayment.js +59 -0
- package/dist/components/PaymentWidget/useSeamlessPayment.js.map +1 -0
- package/dist/components/PaymentWidget/useVarityPayment.d.ts +5 -1
- package/dist/components/PaymentWidget/useVarityPayment.d.ts.map +1 -1
- package/dist/components/PaymentWidget/useVarityPayment.js +17 -123
- package/dist/components/PaymentWidget/useVarityPayment.js.map +1 -1
- package/dist/components/Payments/CheckoutModal.d.ts +4 -1
- package/dist/components/Payments/CheckoutModal.d.ts.map +1 -1
- package/dist/components/Payments/CheckoutModal.js +23 -145
- package/dist/components/Payments/CheckoutModal.js.map +1 -1
- package/dist/components/Payments/constants.d.ts +1 -1
- package/dist/components/Payments/constants.d.ts.map +1 -1
- package/dist/components/Payments/constants.js +1 -1
- package/dist/components/Payments/constants.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/modules/cache/CacheClient.d.ts +48 -0
- package/dist/modules/cache/CacheClient.d.ts.map +1 -0
- package/dist/modules/cache/CacheClient.js +59 -0
- package/dist/modules/cache/CacheClient.js.map +1 -0
- package/dist/providers/PrivyStack.d.ts +21 -49
- package/dist/providers/PrivyStack.d.ts.map +1 -1
- package/dist/providers/PrivyStack.js +16 -46
- package/dist/providers/PrivyStack.js.map +1 -1
- package/dist/providers/VarityDashboardProvider.d.ts +1 -7
- package/dist/providers/VarityDashboardProvider.d.ts.map +1 -1
- package/dist/providers/VarityDashboardProvider.js +4 -28
- package/dist/providers/VarityDashboardProvider.js.map +1 -1
- package/dist/providers/WalletSyncProvider.d.ts +17 -24
- package/dist/providers/WalletSyncProvider.d.ts.map +1 -1
- package/dist/providers/WalletSyncProvider.js +16 -27
- package/dist/providers/WalletSyncProvider.js.map +1 -1
- package/dist/providers/ZeroDevProvider.d.ts +69 -0
- package/dist/providers/ZeroDevProvider.d.ts.map +1 -0
- package/dist/providers/ZeroDevProvider.js +208 -0
- package/dist/providers/ZeroDevProvider.js.map +1 -0
- package/dist/providers/index.d.ts +1 -0
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +2 -0
- package/dist/providers/index.js.map +1 -1
- package/dist/wallets/SmartWalletProvider.js +1 -1
- package/dist/wallets/SmartWalletProvider.js.map +1 -1
- package/dist/wallets/config.d.ts +24 -3
- package/dist/wallets/config.d.ts.map +1 -1
- package/dist/wallets/config.js +24 -1
- package/dist/wallets/config.js.map +1 -1
- package/dist/wallets/index.d.ts +1 -1
- package/dist/wallets/index.d.ts.map +1 -1
- package/dist/wallets/index.js +1 -1
- package/dist/wallets/index.js.map +1 -1
- package/package.json +10 -8
- package/dist/core/VarityClient.d.ts +0 -76
- package/dist/core/VarityClient.d.ts.map +0 -1
- package/dist/core/VarityClient.js +0 -99
- package/dist/core/VarityClient.js.map +0 -1
- package/dist/core/config.d.ts +0 -136
- package/dist/core/config.d.ts.map +0 -1
- package/dist/core/config.js +0 -156
- package/dist/core/config.js.map +0 -1
- package/dist/hooks/useAnalytics.d.ts +0 -94
- package/dist/hooks/useAnalytics.d.ts.map +0 -1
- package/dist/hooks/useAnalytics.js +0 -116
- package/dist/hooks/useAnalytics.js.map +0 -1
- package/dist/hooks/useAuth.d.ts +0 -71
- package/dist/hooks/useAuth.d.ts.map +0 -1
- package/dist/hooks/useAuth.js +0 -198
- package/dist/hooks/useAuth.js.map +0 -1
- package/dist/hooks/useDashboard.d.ts +0 -110
- package/dist/hooks/useDashboard.d.ts.map +0 -1
- package/dist/hooks/useDashboard.js +0 -201
- package/dist/hooks/useDashboard.js.map +0 -1
- package/dist/hooks/useVarityAPI.d.ts +0 -88
- package/dist/hooks/useVarityAPI.d.ts.map +0 -1
- package/dist/hooks/useVarityAPI.js +0 -138
- package/dist/hooks/useVarityAPI.js.map +0 -1
- package/dist/hooks/useWalletAuth.d.ts +0 -108
- package/dist/hooks/useWalletAuth.d.ts.map +0 -1
- package/dist/hooks/useWalletAuth.js +0 -415
- package/dist/hooks/useWalletAuth.js.map +0 -1
- package/dist/modules/cache/index.d.ts +0 -12
- package/dist/modules/cache/index.d.ts.map +0 -1
- package/dist/modules/cache/index.js +0 -13
- package/dist/modules/cache/index.js.map +0 -1
- package/dist/types/api-extensions.d.ts +0 -92
- package/dist/types/api-extensions.d.ts.map +0 -1
- package/dist/types/api-extensions.js +0 -7
- package/dist/types/api-extensions.js.map +0 -1
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { PrivyProvider } from '@privy-io/react-auth';
|
|
3
3
|
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
|
4
|
-
import { ThirdwebProvider } from 'thirdweb/react';
|
|
5
4
|
import { PrivyReadyGate } from '../components/Privy/PrivyReadyGate';
|
|
6
5
|
import { WalletSyncProvider } from './WalletSyncProvider';
|
|
7
|
-
import {
|
|
6
|
+
import { VARITY_DEV_CREDENTIALS } from '@varity-labs/sdk';
|
|
8
7
|
/**
|
|
9
8
|
* Create React Query client (memoized singleton)
|
|
10
9
|
*/
|
|
@@ -17,7 +16,7 @@ const queryClient = new QueryClient({
|
|
|
17
16
|
},
|
|
18
17
|
});
|
|
19
18
|
/**
|
|
20
|
-
* Convert
|
|
19
|
+
* Convert Varity Chain to Privy Chain format
|
|
21
20
|
*/
|
|
22
21
|
function toPrivyChain(chain) {
|
|
23
22
|
return {
|
|
@@ -25,9 +24,9 @@ function toPrivyChain(chain) {
|
|
|
25
24
|
name: chain.name || `Chain ${chain.id}`,
|
|
26
25
|
network: `chain-${chain.id}`,
|
|
27
26
|
nativeCurrency: {
|
|
28
|
-
name: '
|
|
29
|
-
symbol: '
|
|
30
|
-
decimals:
|
|
27
|
+
name: 'USDC',
|
|
28
|
+
symbol: 'USDC',
|
|
29
|
+
decimals: 6,
|
|
31
30
|
},
|
|
32
31
|
rpcUrls: {
|
|
33
32
|
default: { http: [chain.rpc] },
|
|
@@ -74,41 +73,34 @@ function toPrivyChain(chain) {
|
|
|
74
73
|
* }
|
|
75
74
|
* ```
|
|
76
75
|
*
|
|
77
|
-
* @example Production setup
|
|
76
|
+
* @example Production setup (varitykit deploy injects appId automatically)
|
|
78
77
|
* ```tsx
|
|
79
78
|
* import { PrivyStack } from '@varity-labs/ui-kit';
|
|
80
79
|
*
|
|
81
80
|
* function App() {
|
|
82
81
|
* return (
|
|
83
|
-
* <PrivyStack
|
|
84
|
-
* appId={process.env.PRIVY_APP_ID}
|
|
85
|
-
* thirdwebClientId={process.env.THIRDWEB_CLIENT_ID}
|
|
86
|
-
* >
|
|
82
|
+
* <PrivyStack appId={process.env.NEXT_PUBLIC_VARITY_AUTH_ID}>
|
|
87
83
|
* <YourApp />
|
|
88
84
|
* </PrivyStack>
|
|
89
85
|
* );
|
|
90
86
|
* }
|
|
91
87
|
* ```
|
|
92
88
|
*
|
|
93
|
-
* @example With
|
|
89
|
+
* @example With appearance customization
|
|
94
90
|
* ```tsx
|
|
95
91
|
* import { PrivyStack } from '@varity-labs/ui-kit';
|
|
96
|
-
* import { varityL3Testnet, arbitrumSepolia } from '@varity-labs/sdk';
|
|
97
92
|
*
|
|
98
93
|
* function App() {
|
|
99
94
|
* return (
|
|
100
95
|
* <PrivyStack
|
|
101
|
-
*
|
|
102
|
-
* thirdwebClientId={process.env.THIRDWEB_CLIENT_ID}
|
|
103
|
-
* chains={[varityL3Testnet, arbitrumSepolia]}
|
|
104
|
-
* loginMethods={['email', 'google', 'wallet']}
|
|
96
|
+
* loginMethods={['email', 'google']}
|
|
105
97
|
* appearance={{
|
|
106
98
|
* theme: 'light',
|
|
107
99
|
* accentColor: '#2563EB',
|
|
108
100
|
* logo: '/logo.png'
|
|
109
101
|
* }}
|
|
110
102
|
* onAddressChange={(address) => {
|
|
111
|
-
* console.log('
|
|
103
|
+
* console.log('User address changed:', address);
|
|
112
104
|
* }}
|
|
113
105
|
* >
|
|
114
106
|
* <YourApp />
|
|
@@ -116,34 +108,13 @@ function toPrivyChain(chain) {
|
|
|
116
108
|
* );
|
|
117
109
|
* }
|
|
118
110
|
* ```
|
|
119
|
-
*
|
|
120
|
-
* @example With wallet address tracking
|
|
121
|
-
* ```tsx
|
|
122
|
-
* <PrivyStack
|
|
123
|
-
* appId={process.env.PRIVY_APP_ID}
|
|
124
|
-
* thirdwebClientId={process.env.THIRDWEB_CLIENT_ID}
|
|
125
|
-
* onAddressChange={(address) => {
|
|
126
|
-
* if (address) {
|
|
127
|
-
* // User connected wallet
|
|
128
|
-
* localStorage.setItem('wallet_address', address);
|
|
129
|
-
* } else {
|
|
130
|
-
* // User disconnected
|
|
131
|
-
* localStorage.removeItem('wallet_address');
|
|
132
|
-
* }
|
|
133
|
-
* }}
|
|
134
|
-
* >
|
|
135
|
-
* <YourApp />
|
|
136
|
-
* </PrivyStack>
|
|
137
|
-
* ```
|
|
138
111
|
*/
|
|
139
|
-
export function PrivyStack({ appId,
|
|
112
|
+
export function PrivyStack({ appId, chains, children, loginMethods = ['email', 'google'], appearance = {
|
|
140
113
|
theme: 'light',
|
|
141
114
|
accentColor: '#2563EB',
|
|
142
115
|
}, onAddressChange, }) {
|
|
143
|
-
// Resolve
|
|
144
|
-
const
|
|
145
|
-
return resolveCredentials(appId || VARITY_DEV_CREDENTIALS.privy.appId, thirdwebClientId || VARITY_DEV_CREDENTIALS.thirdweb.clientId);
|
|
146
|
-
}, [appId, thirdwebClientId]);
|
|
116
|
+
// Resolve auth app ID — fall back to shared dev credentials automatically
|
|
117
|
+
const resolvedAppId = React.useMemo(() => appId || VARITY_DEV_CREDENTIALS.privy.appId, [appId]);
|
|
147
118
|
// Use Varity default chain if none provided
|
|
148
119
|
const supportedChains = React.useMemo(() => {
|
|
149
120
|
if (chains && chains.length > 0) {
|
|
@@ -153,7 +124,7 @@ export function PrivyStack({ appId, thirdwebClientId, chains, children, loginMet
|
|
|
153
124
|
return [
|
|
154
125
|
{
|
|
155
126
|
id: 33529,
|
|
156
|
-
name: 'Varity
|
|
127
|
+
name: 'Varity Testnet',
|
|
157
128
|
network: 'varity-testnet',
|
|
158
129
|
nativeCurrency: {
|
|
159
130
|
name: 'USDC',
|
|
@@ -179,7 +150,7 @@ export function PrivyStack({ appId, thirdwebClientId, chains, children, loginMet
|
|
|
179
150
|
];
|
|
180
151
|
}, [chains]);
|
|
181
152
|
return (React.createElement(QueryClientProvider, { client: queryClient },
|
|
182
|
-
React.createElement(PrivyProvider, { appId:
|
|
153
|
+
React.createElement(PrivyProvider, { appId: resolvedAppId, config: {
|
|
183
154
|
loginMethods,
|
|
184
155
|
appearance: {
|
|
185
156
|
theme: appearance.theme || 'light',
|
|
@@ -190,8 +161,7 @@ export function PrivyStack({ appId, thirdwebClientId, chains, children, loginMet
|
|
|
190
161
|
defaultChain: supportedChains[0],
|
|
191
162
|
} },
|
|
192
163
|
React.createElement(PrivyReadyGate, null,
|
|
193
|
-
React.createElement(
|
|
194
|
-
React.createElement(WalletSyncProvider, { onAddressChange: onAddressChange }, children))))));
|
|
164
|
+
React.createElement(WalletSyncProvider, { onAddressChange: onAddressChange }, children)))));
|
|
195
165
|
}
|
|
196
166
|
export default PrivyStack;
|
|
197
167
|
//# sourceMappingURL=PrivyStack.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PrivyStack.js","sourceRoot":"","sources":["../../src/providers/PrivyStack.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"PrivyStack.js","sourceRoot":"","sources":["../../src/providers/PrivyStack.tsx"],"names":[],"mappings":"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"}
|
|
@@ -7,11 +7,6 @@ export interface VarityDashboardProviderProps {
|
|
|
7
7
|
* Can also be set via NEXT_PUBLIC_PRIVY_APP_ID environment variable
|
|
8
8
|
*/
|
|
9
9
|
privyAppId?: string;
|
|
10
|
-
/**
|
|
11
|
-
* Thirdweb Client ID (from thirdweb Dashboard)
|
|
12
|
-
* Can also be set via NEXT_PUBLIC_THIRDWEB_CLIENT_ID environment variable
|
|
13
|
-
*/
|
|
14
|
-
thirdwebClientId?: string;
|
|
15
10
|
/**
|
|
16
11
|
* Appearance configuration
|
|
17
12
|
*/
|
|
@@ -67,7 +62,6 @@ export interface VarityDashboardProviderProps {
|
|
|
67
62
|
* return (
|
|
68
63
|
* <VarityDashboardProvider
|
|
69
64
|
* privyAppId="your-privy-app-id"
|
|
70
|
-
* thirdwebClientId="your-thirdweb-client-id"
|
|
71
65
|
* appearance={{
|
|
72
66
|
* theme: 'light',
|
|
73
67
|
* accentColor: '#2563EB',
|
|
@@ -80,7 +74,7 @@ export interface VarityDashboardProviderProps {
|
|
|
80
74
|
* }
|
|
81
75
|
* ```
|
|
82
76
|
*/
|
|
83
|
-
export declare function VarityDashboardProvider({ children, privyAppId,
|
|
77
|
+
export declare function VarityDashboardProvider({ children, privyAppId, appearance, loginMethods, initTimeout, onAddressChange, onWalletSyncChange, errorBoundary: ErrorBoundary, }: VarityDashboardProviderProps): React.JSX.Element;
|
|
84
78
|
export { useWalletSync };
|
|
85
79
|
export type { WalletSyncState };
|
|
86
80
|
export default VarityDashboardProvider;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VarityDashboardProvider.d.ts","sourceRoot":"","sources":["../../src/providers/VarityDashboardProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAuB,SAAS,
|
|
1
|
+
{"version":3,"file":"VarityDashboardProvider.d.ts","sourceRoot":"","sources":["../../src/providers/VarityDashboardProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAuB,SAAS,EAAE,MAAM,OAAO,CAAC;AAO9D,OAAO,EAAsB,aAAa,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAwM1F,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,SAAS,CAAC;IACpB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,UAAU,CAAC,EAAE;QACX,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;QACzB,WAAW,CAAC,EAAE,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;IAC5F;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACnD;;OAEG;IACH,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IACtD;;OAEG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE,CAAC,CAAC;CACpE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,QAAQ,EACR,UAAU,EACV,UAGC,EACD,YAA4C,EAC5C,WAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,aAAa,EAAE,aAAa,GAC7B,EAAE,4BAA4B,qBA2D9B;AAGD,OAAO,EAAE,aAAa,EAAE,CAAC;AACzB,YAAY,EAAE,eAAe,EAAE,CAAC;AAEhC,eAAe,uBAAuB,CAAC"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import React, { useState, useEffect
|
|
2
|
+
import React, { useState, useEffect } from 'react';
|
|
3
3
|
import { PrivyProvider, usePrivy } from '@privy-io/react-auth';
|
|
4
4
|
import { WagmiProvider } from '@privy-io/wagmi';
|
|
5
5
|
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
|
6
|
-
import { ThirdwebProvider } from 'thirdweb/react';
|
|
7
|
-
import { createThirdwebClient } from 'thirdweb';
|
|
8
6
|
import { http } from 'viem';
|
|
9
7
|
import { arbitrumSepolia, arbitrum } from 'viem/chains';
|
|
10
8
|
import { createConfig } from 'wagmi';
|
|
@@ -155,7 +153,6 @@ function PrivyReadyGate({ children, logo, initTimeout = 10000, }) {
|
|
|
155
153
|
* return (
|
|
156
154
|
* <VarityDashboardProvider
|
|
157
155
|
* privyAppId="your-privy-app-id"
|
|
158
|
-
* thirdwebClientId="your-thirdweb-client-id"
|
|
159
156
|
* appearance={{
|
|
160
157
|
* theme: 'light',
|
|
161
158
|
* accentColor: '#2563EB',
|
|
@@ -168,46 +165,26 @@ function PrivyReadyGate({ children, logo, initTimeout = 10000, }) {
|
|
|
168
165
|
* }
|
|
169
166
|
* ```
|
|
170
167
|
*/
|
|
171
|
-
export function VarityDashboardProvider({ children, privyAppId,
|
|
168
|
+
export function VarityDashboardProvider({ children, privyAppId, appearance = {
|
|
172
169
|
theme: 'light',
|
|
173
170
|
accentColor: '#2563EB',
|
|
174
171
|
}, loginMethods = ['email', 'google', 'wallet'], initTimeout = 10000, onAddressChange, onWalletSyncChange, errorBoundary: ErrorBoundary, }) {
|
|
175
172
|
// Get config from props or environment variables
|
|
176
173
|
const appId = privyAppId || process.env.NEXT_PUBLIC_PRIVY_APP_ID;
|
|
177
|
-
const clientId = thirdwebClientId || process.env.NEXT_PUBLIC_THIRDWEB_CLIENT_ID;
|
|
178
174
|
// Validate required config
|
|
179
175
|
const [configError, setConfigError] = useState(null);
|
|
180
176
|
useEffect(() => {
|
|
181
177
|
if (!appId) {
|
|
182
178
|
setConfigError('Privy App ID is required (pass privyAppId prop or set NEXT_PUBLIC_PRIVY_APP_ID)');
|
|
183
179
|
}
|
|
184
|
-
else if (!clientId) {
|
|
185
|
-
setConfigError('Thirdweb Client ID is required (pass thirdwebClientId prop or set NEXT_PUBLIC_THIRDWEB_CLIENT_ID)');
|
|
186
|
-
}
|
|
187
180
|
else {
|
|
188
181
|
setConfigError(null);
|
|
189
182
|
}
|
|
190
|
-
}, [appId
|
|
191
|
-
// Create thirdweb client
|
|
192
|
-
const thirdwebClient = useMemo(() => {
|
|
193
|
-
if (!clientId)
|
|
194
|
-
return null;
|
|
195
|
-
try {
|
|
196
|
-
return createThirdwebClient({ clientId });
|
|
197
|
-
}
|
|
198
|
-
catch (error) {
|
|
199
|
-
console.error('Failed to create thirdweb client:', error);
|
|
200
|
-
return null;
|
|
201
|
-
}
|
|
202
|
-
}, [clientId]);
|
|
183
|
+
}, [appId]);
|
|
203
184
|
// Show config error
|
|
204
185
|
if (configError) {
|
|
205
186
|
return React.createElement(ConfigErrorScreen, { error: configError });
|
|
206
187
|
}
|
|
207
|
-
// Show thirdweb error
|
|
208
|
-
if (!thirdwebClient) {
|
|
209
|
-
return React.createElement(ConfigErrorScreen, { error: "Failed to initialize thirdweb client" });
|
|
210
|
-
}
|
|
211
188
|
const content = (React.createElement(PrivyProvider, { appId: appId, config: {
|
|
212
189
|
loginMethods,
|
|
213
190
|
appearance: {
|
|
@@ -225,8 +202,7 @@ export function VarityDashboardProvider({ children, privyAppId, thirdwebClientId
|
|
|
225
202
|
React.createElement(QueryClientProvider, { client: queryClient },
|
|
226
203
|
React.createElement(WagmiProvider, { config: wagmiConfig },
|
|
227
204
|
React.createElement(PrivyReadyGate, { logo: appearance.logo, initTimeout: initTimeout },
|
|
228
|
-
React.createElement(
|
|
229
|
-
React.createElement(WalletSyncProvider, { onAddressChange: onAddressChange, onSyncStateChange: onWalletSyncChange }, children)))))));
|
|
205
|
+
React.createElement(WalletSyncProvider, { onAddressChange: onAddressChange, onSyncStateChange: onWalletSyncChange }, children))))));
|
|
230
206
|
// Wrap with error boundary if provided
|
|
231
207
|
if (ErrorBoundary) {
|
|
232
208
|
return React.createElement(ErrorBoundary, null, content);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VarityDashboardProvider.js","sourceRoot":"","sources":["../../src/providers/VarityDashboardProvider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAa,
|
|
1
|
+
{"version":3,"file":"VarityDashboardProvider.js","sourceRoot":"","sources":["../../src/providers/VarityDashboardProvider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +1,22 @@
|
|
|
1
1
|
import React, { ReactNode } from 'react';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
* Provides unified
|
|
3
|
+
* Auth Sync State
|
|
4
|
+
* Provides unified auth state from Privy
|
|
5
5
|
*/
|
|
6
6
|
export interface WalletSyncState {
|
|
7
|
-
/** The
|
|
7
|
+
/** The user's account address (from Privy embedded wallet) */
|
|
8
8
|
address: string | null;
|
|
9
|
-
/** Whether
|
|
9
|
+
/** Whether auth state is still loading */
|
|
10
10
|
isLoading: boolean;
|
|
11
|
-
/** Whether
|
|
11
|
+
/** Whether the user account is ready */
|
|
12
12
|
isSynced: boolean;
|
|
13
|
-
/** Whether the user is authenticated
|
|
13
|
+
/** Whether the user is authenticated */
|
|
14
14
|
isAuthenticated: boolean;
|
|
15
|
-
/** The authentication method used (email, google,
|
|
15
|
+
/** The authentication method used (email, google, etc.) */
|
|
16
16
|
authMethod: string | null;
|
|
17
17
|
}
|
|
18
18
|
/**
|
|
19
|
-
* WalletSyncContext - Provides unified
|
|
20
|
-
*
|
|
21
|
-
* This context synchronizes embedded wallets (created by Privy for email/social users)
|
|
22
|
-
* with Thirdweb's wallet context, ensuring a consistent experience.
|
|
19
|
+
* WalletSyncContext - Provides unified auth state via Privy
|
|
23
20
|
*/
|
|
24
21
|
export declare const WalletSyncContext: React.Context<WalletSyncState>;
|
|
25
22
|
/**
|
|
@@ -50,30 +47,26 @@ export interface WalletSyncProviderProps {
|
|
|
50
47
|
onSyncStateChange?: (state: WalletSyncState) => void;
|
|
51
48
|
}
|
|
52
49
|
/**
|
|
53
|
-
* WalletSyncProvider -
|
|
50
|
+
* WalletSyncProvider - Provides unified auth state for Varity apps
|
|
54
51
|
*
|
|
55
52
|
* This provider ensures that when a user signs in with email/Google,
|
|
56
|
-
* their
|
|
53
|
+
* their account address is available to all components.
|
|
57
54
|
*
|
|
58
55
|
* Features:
|
|
59
|
-
* -
|
|
60
|
-
* - Supports
|
|
61
|
-
* -
|
|
62
|
-
* - Provides unified wallet state across the app
|
|
56
|
+
* - Tracks user address from Privy embedded account
|
|
57
|
+
* - Supports email/social login (email, Google, etc.)
|
|
58
|
+
* - Provides unified auth state across the app
|
|
63
59
|
*
|
|
64
60
|
* @example
|
|
65
61
|
* ```tsx
|
|
66
62
|
* import { WalletSyncProvider, VarityPrivyProvider } from '@varity-labs/ui-kit';
|
|
67
|
-
* import { ThirdwebProvider } from 'thirdweb/react';
|
|
68
63
|
*
|
|
69
64
|
* function App() {
|
|
70
65
|
* return (
|
|
71
|
-
* <VarityPrivyProvider appId="your-
|
|
72
|
-
* <
|
|
73
|
-
* <
|
|
74
|
-
*
|
|
75
|
-
* </WalletSyncProvider>
|
|
76
|
-
* </ThirdwebProvider>
|
|
66
|
+
* <VarityPrivyProvider appId="your-app-id">
|
|
67
|
+
* <WalletSyncProvider>
|
|
68
|
+
* <YourApp />
|
|
69
|
+
* </WalletSyncProvider>
|
|
77
70
|
* </VarityPrivyProvider>
|
|
78
71
|
* );
|
|
79
72
|
* }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WalletSyncProvider.d.ts","sourceRoot":"","sources":["../../src/providers/WalletSyncProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAkD,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"WalletSyncProvider.d.ts","sourceRoot":"","sources":["../../src/providers/WalletSyncProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAkD,SAAS,EAAE,MAAM,OAAO,CAAC;AAGzF;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,8DAA8D;IAC9D,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,0CAA0C;IAC1C,SAAS,EAAE,OAAO,CAAC;IACnB,wCAAwC;IACxC,QAAQ,EAAE,OAAO,CAAC;IAClB,wCAAwC;IACxC,eAAe,EAAE,OAAO,CAAC;IACzB,2DAA2D;IAC3D,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,gCAM5B,CAAC;AAEH;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,aAAa,uBAAsC,CAAC;AAEjE,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,SAAS,CAAC;IACpB;;OAEG;IACH,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACnD;;OAEG;IACH,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;CACtD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,QAAQ,EACR,eAAe,EACf,iBAAiB,GAClB,EAAE,uBAAuB,qBAwEzB;AAED,eAAe,kBAAkB,CAAC"}
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
import React, { useState, useEffect, createContext, useContext } from 'react';
|
|
2
2
|
import { usePrivy, useWallets } from '@privy-io/react-auth';
|
|
3
|
-
import { useActiveAccount } from 'thirdweb/react';
|
|
4
3
|
/**
|
|
5
|
-
* WalletSyncContext - Provides unified
|
|
6
|
-
*
|
|
7
|
-
* This context synchronizes embedded wallets (created by Privy for email/social users)
|
|
8
|
-
* with Thirdweb's wallet context, ensuring a consistent experience.
|
|
4
|
+
* WalletSyncContext - Provides unified auth state via Privy
|
|
9
5
|
*/
|
|
10
6
|
export const WalletSyncContext = createContext({
|
|
11
7
|
address: null,
|
|
@@ -31,30 +27,26 @@ export const WalletSyncContext = createContext({
|
|
|
31
27
|
*/
|
|
32
28
|
export const useWalletSync = () => useContext(WalletSyncContext);
|
|
33
29
|
/**
|
|
34
|
-
* WalletSyncProvider -
|
|
30
|
+
* WalletSyncProvider - Provides unified auth state for Varity apps
|
|
35
31
|
*
|
|
36
32
|
* This provider ensures that when a user signs in with email/Google,
|
|
37
|
-
* their
|
|
33
|
+
* their account address is available to all components.
|
|
38
34
|
*
|
|
39
35
|
* Features:
|
|
40
|
-
* -
|
|
41
|
-
* - Supports
|
|
42
|
-
* -
|
|
43
|
-
* - Provides unified wallet state across the app
|
|
36
|
+
* - Tracks user address from Privy embedded account
|
|
37
|
+
* - Supports email/social login (email, Google, etc.)
|
|
38
|
+
* - Provides unified auth state across the app
|
|
44
39
|
*
|
|
45
40
|
* @example
|
|
46
41
|
* ```tsx
|
|
47
42
|
* import { WalletSyncProvider, VarityPrivyProvider } from '@varity-labs/ui-kit';
|
|
48
|
-
* import { ThirdwebProvider } from 'thirdweb/react';
|
|
49
43
|
*
|
|
50
44
|
* function App() {
|
|
51
45
|
* return (
|
|
52
|
-
* <VarityPrivyProvider appId="your-
|
|
53
|
-
* <
|
|
54
|
-
* <
|
|
55
|
-
*
|
|
56
|
-
* </WalletSyncProvider>
|
|
57
|
-
* </ThirdwebProvider>
|
|
46
|
+
* <VarityPrivyProvider appId="your-app-id">
|
|
47
|
+
* <WalletSyncProvider>
|
|
48
|
+
* <YourApp />
|
|
49
|
+
* </WalletSyncProvider>
|
|
58
50
|
* </VarityPrivyProvider>
|
|
59
51
|
* );
|
|
60
52
|
* }
|
|
@@ -63,7 +55,6 @@ export const useWalletSync = () => useContext(WalletSyncContext);
|
|
|
63
55
|
export function WalletSyncProvider({ children, onAddressChange, onSyncStateChange, }) {
|
|
64
56
|
const { authenticated, user, ready: privyReady } = usePrivy();
|
|
65
57
|
const { wallets, ready: walletsReady } = useWallets();
|
|
66
|
-
const activeAccount = useActiveAccount();
|
|
67
58
|
const [syncState, setSyncState] = useState({
|
|
68
59
|
address: null,
|
|
69
60
|
isLoading: true,
|
|
@@ -72,11 +63,9 @@ export function WalletSyncProvider({ children, onAddressChange, onSyncStateChang
|
|
|
72
63
|
authMethod: null,
|
|
73
64
|
});
|
|
74
65
|
useEffect(() => {
|
|
75
|
-
// Get the primary
|
|
76
|
-
// Priority: Privy wallet > Thirdweb active account
|
|
66
|
+
// Get the primary user address (Privy embedded wallet)
|
|
77
67
|
const privyWallet = wallets && wallets.length > 0 ? wallets[0] : null;
|
|
78
|
-
const
|
|
79
|
-
const primaryAddress = privyWallet?.address || thirdwebAddress || null;
|
|
68
|
+
const primaryAddress = privyWallet?.address || null;
|
|
80
69
|
// Determine auth method
|
|
81
70
|
let authMethod = null;
|
|
82
71
|
if (user?.email) {
|
|
@@ -116,14 +105,14 @@ export function WalletSyncProvider({ children, onAddressChange, onSyncStateChang
|
|
|
116
105
|
if (onSyncStateChange) {
|
|
117
106
|
onSyncStateChange(newState);
|
|
118
107
|
}
|
|
119
|
-
}, [authenticated, user, wallets, walletsReady, privyReady,
|
|
120
|
-
// Store
|
|
108
|
+
}, [authenticated, user, wallets, walletsReady, privyReady, onAddressChange, onSyncStateChange, syncState.address]);
|
|
109
|
+
// Store user address in localStorage for persistence across sessions
|
|
121
110
|
useEffect(() => {
|
|
122
111
|
if (syncState.address) {
|
|
123
|
-
localStorage.setItem('
|
|
112
|
+
localStorage.setItem('varity_user_address', syncState.address);
|
|
124
113
|
}
|
|
125
114
|
else if (!syncState.isLoading && !syncState.isAuthenticated) {
|
|
126
|
-
localStorage.removeItem('
|
|
115
|
+
localStorage.removeItem('varity_user_address');
|
|
127
116
|
}
|
|
128
117
|
}, [syncState.address, syncState.isLoading, syncState.isAuthenticated]);
|
|
129
118
|
return (React.createElement(WalletSyncContext.Provider, { value: syncState }, children));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WalletSyncProvider.js","sourceRoot":"","sources":["../../src/providers/WalletSyncProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAa,MAAM,OAAO,CAAC;AACzF,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"WalletSyncProvider.js","sourceRoot":"","sources":["../../src/providers/WalletSyncProvider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { type KernelAccountClient } from "@zerodev/sdk";
|
|
3
|
+
export interface ZeroDevContextType {
|
|
4
|
+
smartAccountClient: KernelAccountClient<any> | null;
|
|
5
|
+
smartAccountAddress: `0x${string}` | null;
|
|
6
|
+
isSmartAccountReady: boolean;
|
|
7
|
+
isInitializing: boolean;
|
|
8
|
+
error: string | null;
|
|
9
|
+
retry: () => void;
|
|
10
|
+
account: {
|
|
11
|
+
address: `0x${string}`;
|
|
12
|
+
} | null;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Hook to access ZeroDev smart account state
|
|
16
|
+
*
|
|
17
|
+
* @returns {ZeroDevContextType} Smart account client, address, and status
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```tsx
|
|
21
|
+
* function MyComponent() {
|
|
22
|
+
* const { smartAccountClient, smartAccountAddress, isSmartAccountReady } = useSmartAccount();
|
|
23
|
+
*
|
|
24
|
+
* if (!isSmartAccountReady) {
|
|
25
|
+
* return <div>Loading smart account...</div>;
|
|
26
|
+
* }
|
|
27
|
+
*
|
|
28
|
+
* return <div>Smart Account: {smartAccountAddress}</div>;
|
|
29
|
+
* }
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export declare const useSmartAccount: () => ZeroDevContextType;
|
|
33
|
+
export declare const useZeroDev: () => ZeroDevContextType;
|
|
34
|
+
export interface ZeroDevProviderProps {
|
|
35
|
+
children: React.ReactNode;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* ZeroDevProvider - Enables free transactions via ZeroDev + Conduit
|
|
39
|
+
*
|
|
40
|
+
* Wraps the user's authentication with a smart account (Kernel v0.3.1 + ERC-4337).
|
|
41
|
+
* All transactions are free for end users via Conduit's bundler+paymaster.
|
|
42
|
+
*
|
|
43
|
+
* @param {ZeroDevProviderProps} props - Component props
|
|
44
|
+
* @param {React.ReactNode} props.children - Child components
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```tsx
|
|
48
|
+
* import { PrivyProvider } from '@privy-io/react-auth';
|
|
49
|
+
* import { ZeroDevProvider } from '@varity-labs/ui-kit';
|
|
50
|
+
*
|
|
51
|
+
* function App() {
|
|
52
|
+
* return (
|
|
53
|
+
* <PrivyProvider appId="your-privy-app-id">
|
|
54
|
+
* <ZeroDevProvider>
|
|
55
|
+
* <YourApp />
|
|
56
|
+
* </ZeroDevProvider>
|
|
57
|
+
* </PrivyProvider>
|
|
58
|
+
* );
|
|
59
|
+
* }
|
|
60
|
+
* ```
|
|
61
|
+
*
|
|
62
|
+
* @remarks
|
|
63
|
+
* - Requires PrivyProvider as parent
|
|
64
|
+
* - Auto-creates smart account on user login
|
|
65
|
+
* - Supports free transactions for all operations
|
|
66
|
+
* - Uses Conduit bundler for Varity L3 (chain ID 33529)
|
|
67
|
+
*/
|
|
68
|
+
export declare function ZeroDevProvider({ children }: ZeroDevProviderProps): React.JSX.Element;
|
|
69
|
+
//# sourceMappingURL=ZeroDevProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ZeroDevProvider.d.ts","sourceRoot":"","sources":["../../src/providers/ZeroDevProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAON,MAAM,OAAO,CAAC;AAIf,OAAO,EAAkD,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAsCxG,MAAM,WAAW,kBAAkB;IAEjC,kBAAkB,EAAE,mBAAmB,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IACpD,mBAAmB,EAAE,KAAK,MAAM,EAAE,GAAG,IAAI,CAAC;IAC1C,mBAAmB,EAAE,OAAO,CAAC;IAC7B,cAAc,EAAE,OAAO,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,OAAO,EAAE;QAAE,OAAO,EAAE,KAAK,MAAM,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC;CAC5C;AAYD;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,eAAe,0BAAmC,CAAC;AAGhE,eAAO,MAAM,UAAU,0BAAkB,CAAC;AAK1C,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,eAAe,CAAC,EAAE,QAAQ,EAAE,EAAE,oBAAoB,qBAoIjE"}
|