@varity-labs/ui-kit 2.0.0-beta.8 → 2.0.0-beta.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/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/InAppWallet/EmailLoginButton.d.ts +27 -0
- package/dist/components/InAppWallet/EmailLoginButton.d.ts.map +1 -0
- package/dist/components/InAppWallet/EmailLoginButton.js +84 -0
- package/dist/components/InAppWallet/EmailLoginButton.js.map +1 -0
- package/dist/components/InAppWallet/InAppWalletProvider.d.ts +54 -0
- package/dist/components/InAppWallet/InAppWalletProvider.d.ts.map +1 -0
- package/dist/components/InAppWallet/InAppWalletProvider.js +225 -0
- package/dist/components/InAppWallet/InAppWalletProvider.js.map +1 -0
- package/dist/components/InAppWallet/OnboardingFlow.d.ts +25 -0
- package/dist/components/InAppWallet/OnboardingFlow.d.ts.map +1 -0
- package/dist/components/InAppWallet/OnboardingFlow.js +159 -0
- package/dist/components/InAppWallet/OnboardingFlow.js.map +1 -0
- package/dist/components/InAppWallet/SocialLoginButtons.d.ts +28 -0
- package/dist/components/InAppWallet/SocialLoginButtons.d.ts.map +1 -0
- package/dist/components/InAppWallet/SocialLoginButtons.js +128 -0
- package/dist/components/InAppWallet/SocialLoginButtons.js.map +1 -0
- package/dist/components/InAppWallet/index.d.ts +15 -0
- package/dist/components/InAppWallet/index.d.ts.map +1 -0
- package/dist/components/InAppWallet/index.js +14 -0
- package/dist/components/InAppWallet/index.js.map +1 -0
- package/dist/components/PaymentWidget/PaymentWidget.d.ts +19 -7
- package/dist/components/PaymentWidget/PaymentWidget.d.ts.map +1 -1
- package/dist/components/PaymentWidget/PaymentWidget.js +176 -10
- package/dist/components/PaymentWidget/PaymentWidget.js.map +1 -1
- package/dist/components/PaymentWidget/useSeamlessPayment.d.ts +34 -8
- package/dist/components/PaymentWidget/useSeamlessPayment.d.ts.map +1 -1
- package/dist/components/PaymentWidget/useSeamlessPayment.js +158 -12
- package/dist/components/PaymentWidget/useSeamlessPayment.js.map +1 -1
- package/dist/components/PaymentWidget/useVarityPayment.d.ts +6 -5
- package/dist/components/PaymentWidget/useVarityPayment.d.ts.map +1 -1
- package/dist/components/PaymentWidget/useVarityPayment.js +147 -11
- package/dist/components/PaymentWidget/useVarityPayment.js.map +1 -1
- package/dist/components/Payments/CheckoutModal.d.ts +19 -0
- package/dist/components/Payments/CheckoutModal.d.ts.map +1 -0
- package/dist/components/Payments/CheckoutModal.js +194 -0
- package/dist/components/Payments/CheckoutModal.js.map +1 -0
- package/dist/components/Payments/SubscriptionWidget.d.ts +17 -0
- package/dist/components/Payments/SubscriptionWidget.d.ts.map +1 -0
- package/dist/components/Payments/SubscriptionWidget.js +89 -0
- package/dist/components/Payments/SubscriptionWidget.js.map +1 -0
- package/dist/components/Payments/constants.d.ts +59 -0
- package/dist/components/Payments/constants.d.ts.map +1 -0
- package/dist/components/Payments/constants.js +145 -0
- package/dist/components/Payments/constants.js.map +1 -0
- package/dist/components/Payments/index.d.ts +10 -0
- package/dist/components/Payments/index.d.ts.map +1 -0
- package/dist/components/Payments/index.js +12 -0
- package/dist/components/Payments/index.js.map +1 -0
- package/dist/components/Payments/types.d.ts +119 -0
- package/dist/components/Payments/types.d.ts.map +1 -0
- package/dist/components/Payments/types.js +27 -0
- package/dist/components/Payments/types.js.map +1 -0
- package/dist/components/Payments/usePayments.d.ts +33 -0
- package/dist/components/Payments/usePayments.d.ts.map +1 -0
- package/dist/components/Payments/usePayments.js +249 -0
- package/dist/components/Payments/usePayments.js.map +1 -0
- package/dist/components/SIWE/AuthStatus.d.ts +15 -0
- package/dist/components/SIWE/AuthStatus.d.ts.map +1 -0
- package/dist/components/SIWE/AuthStatus.js +47 -0
- package/dist/components/SIWE/AuthStatus.js.map +1 -0
- package/dist/components/SIWE/ProtectedRoute.d.ts +17 -0
- package/dist/components/SIWE/ProtectedRoute.d.ts.map +1 -0
- package/dist/components/SIWE/ProtectedRoute.js +52 -0
- package/dist/components/SIWE/ProtectedRoute.js.map +1 -0
- package/dist/components/SIWE/SIWEButton.d.ts +22 -0
- package/dist/components/SIWE/SIWEButton.d.ts.map +1 -0
- package/dist/components/SIWE/SIWEButton.js +106 -0
- package/dist/components/SIWE/SIWEButton.js.map +1 -0
- package/dist/components/SIWE/SIWEModal.d.ts +19 -0
- package/dist/components/SIWE/SIWEModal.d.ts.map +1 -0
- package/dist/components/SIWE/SIWEModal.js +75 -0
- package/dist/components/SIWE/SIWEModal.js.map +1 -0
- package/dist/components/SIWE/SIWEProvider.d.ts +38 -0
- package/dist/components/SIWE/SIWEProvider.d.ts.map +1 -0
- package/dist/components/SIWE/SIWEProvider.js +227 -0
- package/dist/components/SIWE/SIWEProvider.js.map +1 -0
- package/dist/components/SIWE/index.d.ts +15 -0
- package/dist/components/SIWE/index.d.ts.map +1 -0
- package/dist/components/SIWE/index.js +10 -0
- package/dist/components/SIWE/index.js.map +1 -0
- package/dist/hooks/web3/index.d.ts +5 -0
- package/dist/hooks/web3/index.d.ts.map +1 -0
- package/dist/hooks/web3/index.js +6 -0
- package/dist/hooks/web3/index.js.map +1 -0
- package/dist/hooks/web3/useAddressValidation.d.ts +37 -0
- package/dist/hooks/web3/useAddressValidation.d.ts.map +1 -0
- package/dist/hooks/web3/useAddressValidation.js +59 -0
- package/dist/hooks/web3/useAddressValidation.js.map +1 -0
- package/dist/hooks/web3/useBlockExplorer.d.ts +37 -0
- package/dist/hooks/web3/useBlockExplorer.d.ts.map +1 -0
- package/dist/hooks/web3/useBlockExplorer.js +59 -0
- package/dist/hooks/web3/useBlockExplorer.js.map +1 -0
- package/dist/hooks/web3/useUSDCFormat.d.ts +34 -0
- package/dist/hooks/web3/useUSDCFormat.d.ts.map +1 -0
- package/dist/hooks/web3/useUSDCFormat.js +43 -0
- package/dist/hooks/web3/useUSDCFormat.js.map +1 -0
- package/dist/hooks/web3/useVarityWallet.d.ts +48 -0
- package/dist/hooks/web3/useVarityWallet.d.ts.map +1 -0
- package/dist/hooks/web3/useVarityWallet.js +70 -0
- package/dist/hooks/web3/useVarityWallet.js.map +1 -0
- package/dist/providers/ChainContext.d.ts +65 -0
- package/dist/providers/ChainContext.d.ts.map +1 -0
- package/dist/providers/ChainContext.js +92 -0
- package/dist/providers/ChainContext.js.map +1 -0
- package/dist/providers/PrivyStack.d.ts +17 -50
- package/dist/providers/PrivyStack.d.ts.map +1 -1
- package/dist/providers/PrivyStack.js +15 -43
- package/dist/providers/PrivyStack.js.map +1 -1
- package/dist/providers/VarityDashboardProvider.d.ts +2 -2
- package/dist/providers/VarityDashboardProvider.d.ts.map +1 -1
- package/dist/providers/VarityDashboardProvider.js +26 -3
- package/dist/providers/VarityDashboardProvider.js.map +1 -1
- package/dist/providers/VarityProvider.d.ts +32 -0
- package/dist/providers/VarityProvider.d.ts.map +1 -0
- package/dist/providers/VarityProvider.js +56 -0
- package/dist/providers/VarityProvider.js.map +1 -0
- package/dist/providers/WalletContext.d.ts +68 -0
- package/dist/providers/WalletContext.d.ts.map +1 -0
- package/dist/providers/WalletContext.js +98 -0
- package/dist/providers/WalletContext.js.map +1 -0
- package/dist/providers/WalletSyncProvider.d.ts +15 -18
- package/dist/providers/WalletSyncProvider.d.ts.map +1 -1
- package/dist/providers/WalletSyncProvider.js +12 -15
- package/dist/providers/WalletSyncProvider.js.map +1 -1
- package/dist/providers/index.d.ts +48 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +53 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/wallets/SimpleSmartWallet.d.ts +68 -0
- package/dist/wallets/SimpleSmartWallet.d.ts.map +1 -0
- package/dist/wallets/SimpleSmartWallet.js +74 -0
- package/dist/wallets/SimpleSmartWallet.js.map +1 -0
- package/dist/wallets/SmartWalletProvider.d.ts +217 -0
- package/dist/wallets/SmartWalletProvider.d.ts.map +1 -0
- package/dist/wallets/SmartWalletProvider.js +366 -0
- package/dist/wallets/SmartWalletProvider.js.map +1 -0
- package/dist/wallets/config.d.ts +222 -0
- package/dist/wallets/config.d.ts.map +1 -0
- package/dist/wallets/config.js +206 -0
- package/dist/wallets/config.js.map +1 -0
- package/dist/wallets/index.d.ts +9 -0
- package/dist/wallets/index.d.ts.map +1 -0
- package/dist/wallets/index.js +9 -0
- package/dist/wallets/index.js.map +1 -0
- package/dist/web3/AddressDisplay/AddressDisplay.d.ts +33 -0
- package/dist/web3/AddressDisplay/AddressDisplay.d.ts.map +1 -0
- package/dist/web3/AddressDisplay/AddressDisplay.js +42 -0
- package/dist/web3/AddressDisplay/AddressDisplay.js.map +1 -0
- package/dist/web3/AddressInput/AddressInput.d.ts +36 -0
- package/dist/web3/AddressInput/AddressInput.d.ts.map +1 -0
- package/dist/web3/AddressInput/AddressInput.js +54 -0
- package/dist/web3/AddressInput/AddressInput.js.map +1 -0
- package/dist/web3/AmountInput/AmountInput.d.ts +41 -0
- package/dist/web3/AmountInput/AmountInput.d.ts.map +1 -0
- package/dist/web3/AmountInput/AmountInput.js +74 -0
- package/dist/web3/AmountInput/AmountInput.js.map +1 -0
- package/dist/web3/BalanceDisplay/BalanceDisplay.d.ts +30 -0
- package/dist/web3/BalanceDisplay/BalanceDisplay.d.ts.map +1 -0
- package/dist/web3/BalanceDisplay/BalanceDisplay.js +35 -0
- package/dist/web3/BalanceDisplay/BalanceDisplay.js.map +1 -0
- package/dist/web3/BlockExplorerLink/BlockExplorerLink.d.ts +41 -0
- package/dist/web3/BlockExplorerLink/BlockExplorerLink.d.ts.map +1 -0
- package/dist/web3/BlockExplorerLink/BlockExplorerLink.js +46 -0
- package/dist/web3/BlockExplorerLink/BlockExplorerLink.js.map +1 -0
- package/dist/web3/ConnectWallet/ConnectWallet.d.ts +35 -0
- package/dist/web3/ConnectWallet/ConnectWallet.d.ts.map +1 -0
- package/dist/web3/ConnectWallet/ConnectWallet.js +58 -0
- package/dist/web3/ConnectWallet/ConnectWallet.js.map +1 -0
- package/dist/web3/DisconnectButton/DisconnectButton.d.ts +30 -0
- package/dist/web3/DisconnectButton/DisconnectButton.d.ts.map +1 -0
- package/dist/web3/DisconnectButton/DisconnectButton.js +48 -0
- package/dist/web3/DisconnectButton/DisconnectButton.js.map +1 -0
- package/dist/web3/WalletBalance/WalletBalance.d.ts +27 -0
- package/dist/web3/WalletBalance/WalletBalance.d.ts.map +1 -0
- package/dist/web3/WalletBalance/WalletBalance.js +49 -0
- package/dist/web3/WalletBalance/WalletBalance.js.map +1 -0
- package/dist/web3/WalletDropdown/WalletDropdown.d.ts +29 -0
- package/dist/web3/WalletDropdown/WalletDropdown.d.ts.map +1 -0
- package/dist/web3/WalletDropdown/WalletDropdown.js +93 -0
- package/dist/web3/WalletDropdown/WalletDropdown.js.map +1 -0
- package/dist/web3/WalletInfo/WalletInfo.d.ts +31 -0
- package/dist/web3/WalletInfo/WalletInfo.d.ts.map +1 -0
- package/dist/web3/WalletInfo/WalletInfo.js +41 -0
- package/dist/web3/WalletInfo/WalletInfo.js.map +1 -0
- package/dist/web3/index.d.ts +11 -0
- package/dist/web3/index.d.ts.map +1 -0
- package/dist/web3/index.js +14 -0
- package/dist/web3/index.js.map +1 -0
- package/package.json +4 -3
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { useActiveAccount, useDisconnect, useActiveWallet, useWalletBalance } from 'thirdweb/react';
|
|
2
|
+
import { createThirdwebClient } from 'thirdweb';
|
|
3
|
+
import { THIRDWEB_CLIENT_ID, DEFAULT_CHAIN, formatAddress } from '../../config/chains';
|
|
4
|
+
import { useMemo, useCallback } from 'react';
|
|
5
|
+
/**
|
|
6
|
+
* Hook for wallet operations
|
|
7
|
+
*
|
|
8
|
+
* Provides convenient access to wallet state and operations:
|
|
9
|
+
* - Current address and formatted address
|
|
10
|
+
* - Connection status
|
|
11
|
+
* - Disconnect function
|
|
12
|
+
* - Balance queries
|
|
13
|
+
*
|
|
14
|
+
* @returns {UseVarityWalletReturn} Wallet state and operations
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```tsx
|
|
18
|
+
* import { useVarityWallet } from '@varity-labs/ui-kit';
|
|
19
|
+
*
|
|
20
|
+
* function MyComponent() {
|
|
21
|
+
* const {
|
|
22
|
+
* address,
|
|
23
|
+
* formattedAddress,
|
|
24
|
+
* isConnected,
|
|
25
|
+
* disconnect,
|
|
26
|
+
* balance
|
|
27
|
+
* } = useVarityWallet();
|
|
28
|
+
*
|
|
29
|
+
* if (!isConnected) {
|
|
30
|
+
* return <ConnectWallet />;
|
|
31
|
+
* }
|
|
32
|
+
*
|
|
33
|
+
* return (
|
|
34
|
+
* <div>
|
|
35
|
+
* <p>Address: {formattedAddress}</p>
|
|
36
|
+
* <p>Balance: {balance?.toString()} USDC</p>
|
|
37
|
+
* <button onClick={disconnect}>Disconnect</button>
|
|
38
|
+
* </div>
|
|
39
|
+
* );
|
|
40
|
+
* }
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export function useVarityWallet() {
|
|
44
|
+
const account = useActiveAccount();
|
|
45
|
+
const wallet = useActiveWallet();
|
|
46
|
+
const { disconnect: thirdwebDisconnect } = useDisconnect();
|
|
47
|
+
const client = useMemo(() => createThirdwebClient({ clientId: THIRDWEB_CLIENT_ID }), []);
|
|
48
|
+
const { data: balanceData, isLoading: isLoadingBalance } = useWalletBalance({
|
|
49
|
+
client,
|
|
50
|
+
chain: DEFAULT_CHAIN,
|
|
51
|
+
address: account?.address,
|
|
52
|
+
});
|
|
53
|
+
const address = account?.address || null;
|
|
54
|
+
const formattedAddress = address ? formatAddress(address) : null;
|
|
55
|
+
const isConnected = !!address;
|
|
56
|
+
const disconnect = useCallback(async () => {
|
|
57
|
+
if (wallet) {
|
|
58
|
+
await thirdwebDisconnect(wallet);
|
|
59
|
+
}
|
|
60
|
+
}, [wallet, thirdwebDisconnect]);
|
|
61
|
+
return {
|
|
62
|
+
address,
|
|
63
|
+
formattedAddress,
|
|
64
|
+
isConnected,
|
|
65
|
+
disconnect,
|
|
66
|
+
balance: balanceData?.value || null,
|
|
67
|
+
isLoadingBalance,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=useVarityWallet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useVarityWallet.js","sourceRoot":"","sources":["../../../src/hooks/web3/useVarityWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACpG,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAW7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,GAAG,aAAa,EAAE,CAAC;IAE3D,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,EAC5D,EAAE,CACH,CAAC;IAEF,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,CAAC;QAC1E,MAAM;QACN,KAAK,EAAE,aAAa;QACpB,OAAO,EAAE,OAAO,EAAE,OAAO;KAC1B,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC;IACzC,MAAM,gBAAgB,GAAG,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACjE,MAAM,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC;IAE9B,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACxC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAEjC,OAAO;QACL,OAAO;QACP,gBAAgB;QAChB,WAAW;QACX,UAAU;QACV,OAAO,EAAE,WAAW,EAAE,KAAK,IAAI,IAAI;QACnC,gBAAgB;KACjB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import type { Chain } from 'thirdweb/chains';
|
|
3
|
+
export interface ChainContextValue {
|
|
4
|
+
activeChain: Chain | undefined;
|
|
5
|
+
supportedChains: Chain[];
|
|
6
|
+
switchChain: (chainId: number) => Promise<void>;
|
|
7
|
+
isCorrectChain: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface ChainProviderProps {
|
|
10
|
+
children: ReactNode;
|
|
11
|
+
supportedChains?: Chain[];
|
|
12
|
+
defaultChain?: Chain;
|
|
13
|
+
onChainChange?: (chainId: number) => void;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Chain state management provider
|
|
17
|
+
*
|
|
18
|
+
* Manages blockchain network state and provides utilities for:
|
|
19
|
+
* - Accessing current chain
|
|
20
|
+
* - Switching between chains
|
|
21
|
+
* - Validating chain compatibility
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```tsx
|
|
25
|
+
* import { ChainProvider } from '@varity-labs/ui-kit';
|
|
26
|
+
*
|
|
27
|
+
* function App() {
|
|
28
|
+
* return (
|
|
29
|
+
* <ChainProvider
|
|
30
|
+
* onChainChange={(chainId) => console.log('Chain changed to:', chainId)}
|
|
31
|
+
* >
|
|
32
|
+
* <YourApp />
|
|
33
|
+
* </ChainProvider>
|
|
34
|
+
* );
|
|
35
|
+
* }
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export declare function ChainProvider({ children, supportedChains, defaultChain, onChainChange, }: ChainProviderProps): JSX.Element;
|
|
39
|
+
/**
|
|
40
|
+
* Hook to access chain context
|
|
41
|
+
*
|
|
42
|
+
* @returns {ChainContextValue} Chain state and utilities
|
|
43
|
+
* @throws {Error} If used outside ChainProvider
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```tsx
|
|
47
|
+
* import { useChain } from '@varity-labs/ui-kit';
|
|
48
|
+
*
|
|
49
|
+
* function MyComponent() {
|
|
50
|
+
* const { activeChain, switchChain, isCorrectChain } = useChain();
|
|
51
|
+
*
|
|
52
|
+
* if (!isCorrectChain) {
|
|
53
|
+
* return (
|
|
54
|
+
* <button onClick={() => switchChain(33529)}>
|
|
55
|
+
* Switch to Varity L3
|
|
56
|
+
* </button>
|
|
57
|
+
* );
|
|
58
|
+
* }
|
|
59
|
+
*
|
|
60
|
+
* return <p>Connected to: {activeChain?.name}</p>;
|
|
61
|
+
* }
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
export declare function useChain(): ChainContextValue;
|
|
65
|
+
//# sourceMappingURL=ChainContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChainContext.d.ts","sourceRoot":"","sources":["../../src/providers/ChainContext.tsx"],"names":[],"mappings":"AAAA,OAAc,EAA6B,SAAS,EAAE,MAAM,OAAO,CAAC;AAGpE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,KAAK,GAAG,SAAS,CAAC;IAC/B,eAAe,EAAE,KAAK,EAAE,CAAC;IACzB,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,cAAc,EAAE,OAAO,CAAC;CACzB;AAID,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,SAAS,CAAC;IACpB,eAAe,CAAC,EAAE,KAAK,EAAE,CAAC;IAC1B,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,eAAkC,EAClC,YAA4B,EAC5B,aAAa,GACd,EAAE,kBAAkB,GAAG,GAAG,CAAC,OAAO,CAqClC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,QAAQ,IAAI,iBAAiB,CAM5C"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import React, { createContext, useContext } from 'react';
|
|
2
|
+
import { useActiveWalletChain, useSwitchActiveWalletChain } from 'thirdweb/react';
|
|
3
|
+
import { DEFAULT_CHAIN, SUPPORTED_CHAINS } from '../config/chains';
|
|
4
|
+
const ChainContext = createContext(null);
|
|
5
|
+
/**
|
|
6
|
+
* Chain state management provider
|
|
7
|
+
*
|
|
8
|
+
* Manages blockchain network state and provides utilities for:
|
|
9
|
+
* - Accessing current chain
|
|
10
|
+
* - Switching between chains
|
|
11
|
+
* - Validating chain compatibility
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```tsx
|
|
15
|
+
* import { ChainProvider } from '@varity-labs/ui-kit';
|
|
16
|
+
*
|
|
17
|
+
* function App() {
|
|
18
|
+
* return (
|
|
19
|
+
* <ChainProvider
|
|
20
|
+
* onChainChange={(chainId) => console.log('Chain changed to:', chainId)}
|
|
21
|
+
* >
|
|
22
|
+
* <YourApp />
|
|
23
|
+
* </ChainProvider>
|
|
24
|
+
* );
|
|
25
|
+
* }
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export function ChainProvider({ children, supportedChains = SUPPORTED_CHAINS, defaultChain = DEFAULT_CHAIN, onChainChange, }) {
|
|
29
|
+
const activeChain = useActiveWalletChain();
|
|
30
|
+
const switchChain = useSwitchActiveWalletChain();
|
|
31
|
+
const isCorrectChain = React.useMemo(() => {
|
|
32
|
+
if (!activeChain)
|
|
33
|
+
return false;
|
|
34
|
+
return supportedChains.some((chain) => chain.id === activeChain.id);
|
|
35
|
+
}, [activeChain, supportedChains]);
|
|
36
|
+
const handleSwitchChain = React.useCallback(async (chainId) => {
|
|
37
|
+
const targetChain = supportedChains.find((c) => c.id === chainId);
|
|
38
|
+
if (!targetChain) {
|
|
39
|
+
throw new Error(`Chain ${chainId} is not supported`);
|
|
40
|
+
}
|
|
41
|
+
try {
|
|
42
|
+
await switchChain(targetChain);
|
|
43
|
+
if (onChainChange) {
|
|
44
|
+
onChainChange(chainId);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
console.error('Error switching chain:', error);
|
|
49
|
+
throw error;
|
|
50
|
+
}
|
|
51
|
+
}, [supportedChains, switchChain, onChainChange]);
|
|
52
|
+
const value = {
|
|
53
|
+
activeChain,
|
|
54
|
+
supportedChains,
|
|
55
|
+
switchChain: handleSwitchChain,
|
|
56
|
+
isCorrectChain,
|
|
57
|
+
};
|
|
58
|
+
return React.createElement(ChainContext.Provider, { value: value }, children);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Hook to access chain context
|
|
62
|
+
*
|
|
63
|
+
* @returns {ChainContextValue} Chain state and utilities
|
|
64
|
+
* @throws {Error} If used outside ChainProvider
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* ```tsx
|
|
68
|
+
* import { useChain } from '@varity-labs/ui-kit';
|
|
69
|
+
*
|
|
70
|
+
* function MyComponent() {
|
|
71
|
+
* const { activeChain, switchChain, isCorrectChain } = useChain();
|
|
72
|
+
*
|
|
73
|
+
* if (!isCorrectChain) {
|
|
74
|
+
* return (
|
|
75
|
+
* <button onClick={() => switchChain(33529)}>
|
|
76
|
+
* Switch to Varity L3
|
|
77
|
+
* </button>
|
|
78
|
+
* );
|
|
79
|
+
* }
|
|
80
|
+
*
|
|
81
|
+
* return <p>Connected to: {activeChain?.name}</p>;
|
|
82
|
+
* }
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
export function useChain() {
|
|
86
|
+
const context = useContext(ChainContext);
|
|
87
|
+
if (!context) {
|
|
88
|
+
throw new Error('useChain must be used within ChainProvider');
|
|
89
|
+
}
|
|
90
|
+
return context;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=ChainContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChainContext.js","sourceRoot":"","sources":["../../src/providers/ChainContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,UAAU,EAAa,MAAM,OAAO,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAUnE,MAAM,YAAY,GAAG,aAAa,CAA2B,IAAI,CAAC,CAAC;AASnE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,QAAQ,EACR,eAAe,GAAG,gBAAgB,EAClC,YAAY,GAAG,aAAa,EAC5B,aAAa,GACM;IACnB,MAAM,WAAW,GAAG,oBAAoB,EAAE,CAAC;IAC3C,MAAM,WAAW,GAAG,0BAA0B,EAAE,CAAC;IAEjD,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACxC,IAAI,CAAC,WAAW;YAAE,OAAO,KAAK,CAAC;QAC/B,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,WAAW,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC,EAAE,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC,CAAC;IAEnC,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CACzC,KAAK,EAAE,OAAe,EAAE,EAAE;QACxB,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;QAClE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,SAAS,OAAO,mBAAmB,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,WAAW,CAAC,WAAW,CAAC,CAAC;YAC/B,IAAI,aAAa,EAAE,CAAC;gBAClB,aAAa,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;YAC/C,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,EACD,CAAC,eAAe,EAAE,WAAW,EAAE,aAAa,CAAC,CAC9C,CAAC;IAEF,MAAM,KAAK,GAAsB;QAC/B,WAAW;QACX,eAAe;QACf,WAAW,EAAE,iBAAiB;QAC9B,cAAc;KACf,CAAC;IAEF,OAAO,oBAAC,YAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,IAAG,QAAQ,CAAyB,CAAC;AACjF,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,QAAQ;IACtB,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IACzC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -1,41 +1,34 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
* Matches the shape of chains from @varity-labs/sdk without requiring thirdweb.
|
|
3
|
+
* Simple chain configuration type (Varity internal — no external dependency required)
|
|
5
4
|
*/
|
|
6
|
-
interface
|
|
5
|
+
export interface Chain {
|
|
7
6
|
id: number;
|
|
8
|
-
name?: string;
|
|
9
7
|
rpc: string;
|
|
8
|
+
name?: string;
|
|
10
9
|
testnet?: boolean;
|
|
11
10
|
}
|
|
12
11
|
export interface PrivyStackProps {
|
|
13
12
|
/**
|
|
14
|
-
* Your
|
|
15
|
-
*
|
|
16
|
-
* Optional - defaults to shared development credentials (VARITY_DEV_CREDENTIALS).
|
|
17
|
-
* For production, provide your own credentials.
|
|
13
|
+
* Your Varity auth app ID.
|
|
18
14
|
*
|
|
19
|
-
*
|
|
15
|
+
* Optional — defaults to shared development credentials (VARITY_DEV_CREDENTIALS).
|
|
16
|
+
* For production, `varitykit deploy` injects the correct value automatically.
|
|
17
|
+
* You never need to sign up for any external service.
|
|
20
18
|
*/
|
|
21
19
|
appId?: string;
|
|
22
20
|
/**
|
|
23
|
-
*
|
|
24
|
-
* @deprecated Pass appId only — auth is handled by Privy.
|
|
25
|
-
*/
|
|
26
|
-
thirdwebClientId?: string;
|
|
27
|
-
/**
|
|
28
|
-
* Chains to support. Pass chain objects from @varity-labs/sdk (e.g. varityL3Testnet).
|
|
21
|
+
* Chains to support
|
|
29
22
|
* @default [varityL3Testnet]
|
|
30
23
|
*/
|
|
31
|
-
chains?:
|
|
24
|
+
chains?: Chain[];
|
|
32
25
|
/**
|
|
33
26
|
* The children to render once providers are ready
|
|
34
27
|
*/
|
|
35
28
|
children: ReactNode;
|
|
36
29
|
/**
|
|
37
30
|
* Login methods to enable
|
|
38
|
-
* @default ['email', 'google'
|
|
31
|
+
* @default ['email', 'google']
|
|
39
32
|
*/
|
|
40
33
|
loginMethods?: Array<'email' | 'wallet' | 'google' | 'twitter' | 'discord' | 'github' | 'apple' | 'linkedin' | 'sms'>;
|
|
41
34
|
/**
|
|
@@ -47,7 +40,7 @@ export interface PrivyStackProps {
|
|
|
47
40
|
logo?: string;
|
|
48
41
|
};
|
|
49
42
|
/**
|
|
50
|
-
* Callback when
|
|
43
|
+
* Callback when user address changes
|
|
51
44
|
*/
|
|
52
45
|
onAddressChange?: (address: string | null) => void;
|
|
53
46
|
}
|
|
@@ -89,41 +82,34 @@ export interface PrivyStackProps {
|
|
|
89
82
|
* }
|
|
90
83
|
* ```
|
|
91
84
|
*
|
|
92
|
-
* @example Production setup
|
|
85
|
+
* @example Production setup (varitykit deploy injects appId automatically)
|
|
93
86
|
* ```tsx
|
|
94
87
|
* import { PrivyStack } from '@varity-labs/ui-kit';
|
|
95
88
|
*
|
|
96
89
|
* function App() {
|
|
97
90
|
* return (
|
|
98
|
-
* <PrivyStack
|
|
99
|
-
* appId={process.env.PRIVY_APP_ID}
|
|
100
|
-
* thirdwebClientId={process.env.THIRDWEB_CLIENT_ID}
|
|
101
|
-
* >
|
|
91
|
+
* <PrivyStack appId={process.env.NEXT_PUBLIC_VARITY_AUTH_ID}>
|
|
102
92
|
* <YourApp />
|
|
103
93
|
* </PrivyStack>
|
|
104
94
|
* );
|
|
105
95
|
* }
|
|
106
96
|
* ```
|
|
107
97
|
*
|
|
108
|
-
* @example With
|
|
98
|
+
* @example With appearance customization
|
|
109
99
|
* ```tsx
|
|
110
100
|
* import { PrivyStack } from '@varity-labs/ui-kit';
|
|
111
|
-
* import { varityL3Testnet, arbitrumSepolia } from '@varity-labs/sdk';
|
|
112
101
|
*
|
|
113
102
|
* function App() {
|
|
114
103
|
* return (
|
|
115
104
|
* <PrivyStack
|
|
116
|
-
*
|
|
117
|
-
* thirdwebClientId={process.env.THIRDWEB_CLIENT_ID}
|
|
118
|
-
* chains={[varityL3Testnet, arbitrumSepolia]}
|
|
119
|
-
* loginMethods={['email', 'google', 'wallet']}
|
|
105
|
+
* loginMethods={['email', 'google']}
|
|
120
106
|
* appearance={{
|
|
121
107
|
* theme: 'light',
|
|
122
108
|
* accentColor: '#2563EB',
|
|
123
109
|
* logo: '/logo.png'
|
|
124
110
|
* }}
|
|
125
111
|
* onAddressChange={(address) => {
|
|
126
|
-
* console.log('
|
|
112
|
+
* console.log('User address changed:', address);
|
|
127
113
|
* }}
|
|
128
114
|
* >
|
|
129
115
|
* <YourApp />
|
|
@@ -131,26 +117,7 @@ export interface PrivyStackProps {
|
|
|
131
117
|
* );
|
|
132
118
|
* }
|
|
133
119
|
* ```
|
|
134
|
-
*
|
|
135
|
-
* @example With wallet address tracking
|
|
136
|
-
* ```tsx
|
|
137
|
-
* <PrivyStack
|
|
138
|
-
* appId={process.env.PRIVY_APP_ID}
|
|
139
|
-
* thirdwebClientId={process.env.THIRDWEB_CLIENT_ID}
|
|
140
|
-
* onAddressChange={(address) => {
|
|
141
|
-
* if (address) {
|
|
142
|
-
* // User connected wallet
|
|
143
|
-
* localStorage.setItem('wallet_address', address);
|
|
144
|
-
* } else {
|
|
145
|
-
* // User disconnected
|
|
146
|
-
* localStorage.removeItem('wallet_address');
|
|
147
|
-
* }
|
|
148
|
-
* }}
|
|
149
|
-
* >
|
|
150
|
-
* <YourApp />
|
|
151
|
-
* </PrivyStack>
|
|
152
|
-
* ```
|
|
153
120
|
*/
|
|
154
|
-
export declare function PrivyStack({ appId,
|
|
121
|
+
export declare function PrivyStack({ appId, chains, children, loginMethods, appearance, onAddressChange, }: PrivyStackProps): JSX.Element;
|
|
155
122
|
export default PrivyStack;
|
|
156
123
|
//# sourceMappingURL=PrivyStack.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PrivyStack.d.ts","sourceRoot":"","sources":["../../src/providers/PrivyStack.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAOzC
|
|
1
|
+
{"version":3,"file":"PrivyStack.d.ts","sourceRoot":"","sources":["../../src/providers/PrivyStack.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAOzC;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAmDD,MAAM,WAAW,eAAe;IAC9B;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;IACjB;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IACpB;;;OAGG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,KAAK,CAAC,CAAC;IACtH;;OAEG;IACH,UAAU,CAAC,EAAE;QACX,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;QACzB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF;;OAEG;IACH,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CACpD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyEG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,MAAM,EACN,QAAQ,EACR,YAAkC,EAClC,UAGC,EACD,eAAe,GAChB,EAAE,eAAe,GAAG,GAAG,CAAC,OAAO,CAiE/B;AAED,eAAe,UAAU,CAAC"}
|
|
@@ -3,7 +3,7 @@ import { PrivyProvider } from '@privy-io/react-auth';
|
|
|
3
3
|
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
|
4
4
|
import { PrivyReadyGate } from '../components/Privy/PrivyReadyGate';
|
|
5
5
|
import { WalletSyncProvider } from './WalletSyncProvider';
|
|
6
|
-
import {
|
|
6
|
+
import { VARITY_DEV_CREDENTIALS } from '@varity-labs/sdk';
|
|
7
7
|
/**
|
|
8
8
|
* Create React Query client (memoized singleton)
|
|
9
9
|
*/
|
|
@@ -16,7 +16,7 @@ const queryClient = new QueryClient({
|
|
|
16
16
|
},
|
|
17
17
|
});
|
|
18
18
|
/**
|
|
19
|
-
* Convert
|
|
19
|
+
* Convert Varity Chain to Privy Chain format
|
|
20
20
|
*/
|
|
21
21
|
function toPrivyChain(chain) {
|
|
22
22
|
return {
|
|
@@ -24,9 +24,9 @@ function toPrivyChain(chain) {
|
|
|
24
24
|
name: chain.name || `Chain ${chain.id}`,
|
|
25
25
|
network: `chain-${chain.id}`,
|
|
26
26
|
nativeCurrency: {
|
|
27
|
-
name: '
|
|
28
|
-
symbol: '
|
|
29
|
-
decimals:
|
|
27
|
+
name: 'USDC',
|
|
28
|
+
symbol: 'USDC',
|
|
29
|
+
decimals: 6,
|
|
30
30
|
},
|
|
31
31
|
rpcUrls: {
|
|
32
32
|
default: { http: [chain.rpc] },
|
|
@@ -73,41 +73,34 @@ function toPrivyChain(chain) {
|
|
|
73
73
|
* }
|
|
74
74
|
* ```
|
|
75
75
|
*
|
|
76
|
-
* @example Production setup
|
|
76
|
+
* @example Production setup (varitykit deploy injects appId automatically)
|
|
77
77
|
* ```tsx
|
|
78
78
|
* import { PrivyStack } from '@varity-labs/ui-kit';
|
|
79
79
|
*
|
|
80
80
|
* function App() {
|
|
81
81
|
* return (
|
|
82
|
-
* <PrivyStack
|
|
83
|
-
* appId={process.env.PRIVY_APP_ID}
|
|
84
|
-
* thirdwebClientId={process.env.THIRDWEB_CLIENT_ID}
|
|
85
|
-
* >
|
|
82
|
+
* <PrivyStack appId={process.env.NEXT_PUBLIC_VARITY_AUTH_ID}>
|
|
86
83
|
* <YourApp />
|
|
87
84
|
* </PrivyStack>
|
|
88
85
|
* );
|
|
89
86
|
* }
|
|
90
87
|
* ```
|
|
91
88
|
*
|
|
92
|
-
* @example With
|
|
89
|
+
* @example With appearance customization
|
|
93
90
|
* ```tsx
|
|
94
91
|
* import { PrivyStack } from '@varity-labs/ui-kit';
|
|
95
|
-
* import { varityL3Testnet, arbitrumSepolia } from '@varity-labs/sdk';
|
|
96
92
|
*
|
|
97
93
|
* function App() {
|
|
98
94
|
* return (
|
|
99
95
|
* <PrivyStack
|
|
100
|
-
*
|
|
101
|
-
* thirdwebClientId={process.env.THIRDWEB_CLIENT_ID}
|
|
102
|
-
* chains={[varityL3Testnet, arbitrumSepolia]}
|
|
103
|
-
* loginMethods={['email', 'google', 'wallet']}
|
|
96
|
+
* loginMethods={['email', 'google']}
|
|
104
97
|
* appearance={{
|
|
105
98
|
* theme: 'light',
|
|
106
99
|
* accentColor: '#2563EB',
|
|
107
100
|
* logo: '/logo.png'
|
|
108
101
|
* }}
|
|
109
102
|
* onAddressChange={(address) => {
|
|
110
|
-
* console.log('
|
|
103
|
+
* console.log('User address changed:', address);
|
|
111
104
|
* }}
|
|
112
105
|
* >
|
|
113
106
|
* <YourApp />
|
|
@@ -115,34 +108,13 @@ function toPrivyChain(chain) {
|
|
|
115
108
|
* );
|
|
116
109
|
* }
|
|
117
110
|
* ```
|
|
118
|
-
*
|
|
119
|
-
* @example With wallet address tracking
|
|
120
|
-
* ```tsx
|
|
121
|
-
* <PrivyStack
|
|
122
|
-
* appId={process.env.PRIVY_APP_ID}
|
|
123
|
-
* thirdwebClientId={process.env.THIRDWEB_CLIENT_ID}
|
|
124
|
-
* onAddressChange={(address) => {
|
|
125
|
-
* if (address) {
|
|
126
|
-
* // User connected wallet
|
|
127
|
-
* localStorage.setItem('wallet_address', address);
|
|
128
|
-
* } else {
|
|
129
|
-
* // User disconnected
|
|
130
|
-
* localStorage.removeItem('wallet_address');
|
|
131
|
-
* }
|
|
132
|
-
* }}
|
|
133
|
-
* >
|
|
134
|
-
* <YourApp />
|
|
135
|
-
* </PrivyStack>
|
|
136
|
-
* ```
|
|
137
111
|
*/
|
|
138
|
-
export function PrivyStack({ appId,
|
|
112
|
+
export function PrivyStack({ appId, chains, children, loginMethods = ['email', 'google'], appearance = {
|
|
139
113
|
theme: 'light',
|
|
140
114
|
accentColor: '#2563EB',
|
|
141
115
|
}, onAddressChange, }) {
|
|
142
|
-
// Resolve
|
|
143
|
-
const
|
|
144
|
-
return resolveCredentials(appId || VARITY_DEV_CREDENTIALS.privy.appId, thirdwebClientId || VARITY_DEV_CREDENTIALS.thirdweb.clientId);
|
|
145
|
-
}, [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]);
|
|
146
118
|
// Use Varity default chain if none provided
|
|
147
119
|
const supportedChains = React.useMemo(() => {
|
|
148
120
|
if (chains && chains.length > 0) {
|
|
@@ -152,7 +124,7 @@ export function PrivyStack({ appId, thirdwebClientId, chains, children, loginMet
|
|
|
152
124
|
return [
|
|
153
125
|
{
|
|
154
126
|
id: 33529,
|
|
155
|
-
name: 'Varity
|
|
127
|
+
name: 'Varity Testnet',
|
|
156
128
|
network: 'varity-testnet',
|
|
157
129
|
nativeCurrency: {
|
|
158
130
|
name: 'USDC',
|
|
@@ -178,7 +150,7 @@ export function PrivyStack({ appId, thirdwebClientId, chains, children, loginMet
|
|
|
178
150
|
];
|
|
179
151
|
}, [chains]);
|
|
180
152
|
return (React.createElement(QueryClientProvider, { client: queryClient },
|
|
181
|
-
React.createElement(PrivyProvider, { appId:
|
|
153
|
+
React.createElement(PrivyProvider, { appId: resolvedAppId, config: {
|
|
182
154
|
loginMethods,
|
|
183
155
|
appearance: {
|
|
184
156
|
theme: appearance.theme || 'light',
|
|
@@ -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,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"PrivyStack.js","sourceRoot":"","sources":["../../src/providers/PrivyStack.tsx"],"names":[],"mappings":"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"}
|
|
@@ -8,8 +8,8 @@ export interface VarityDashboardProviderProps {
|
|
|
8
8
|
*/
|
|
9
9
|
privyAppId?: string;
|
|
10
10
|
/**
|
|
11
|
-
* Thirdweb Client ID (
|
|
12
|
-
*
|
|
11
|
+
* Thirdweb Client ID (from thirdweb Dashboard)
|
|
12
|
+
* Can also be set via NEXT_PUBLIC_THIRDWEB_CLIENT_ID environment variable
|
|
13
13
|
*/
|
|
14
14
|
thirdwebClientId?: string;
|
|
15
15
|
/**
|
|
@@ -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,EAAW,MAAM,OAAO,CAAC;AASvE,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;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,UAGC,EACD,YAA4C,EAC5C,WAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,aAAa,EAAE,aAAa,GAC7B,EAAE,4BAA4B,qBAgF9B;AAGD,OAAO,EAAE,aAAa,EAAE,CAAC;AACzB,YAAY,EAAE,eAAe,EAAE,CAAC;AAEhC,eAAe,uBAAuB,CAAC"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import React, { useState, useEffect } from 'react';
|
|
2
|
+
import React, { useState, useEffect, useMemo } 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';
|
|
6
8
|
import { http } from 'viem';
|
|
7
9
|
import { arbitrumSepolia, arbitrum } from 'viem/chains';
|
|
8
10
|
import { createConfig } from 'wagmi';
|
|
@@ -172,20 +174,40 @@ export function VarityDashboardProvider({ children, privyAppId, thirdwebClientId
|
|
|
172
174
|
}, loginMethods = ['email', 'google', 'wallet'], initTimeout = 10000, onAddressChange, onWalletSyncChange, errorBoundary: ErrorBoundary, }) {
|
|
173
175
|
// Get config from props or environment variables
|
|
174
176
|
const appId = privyAppId || process.env.NEXT_PUBLIC_PRIVY_APP_ID;
|
|
177
|
+
const clientId = thirdwebClientId || process.env.NEXT_PUBLIC_THIRDWEB_CLIENT_ID;
|
|
175
178
|
// Validate required config
|
|
176
179
|
const [configError, setConfigError] = useState(null);
|
|
177
180
|
useEffect(() => {
|
|
178
181
|
if (!appId) {
|
|
179
182
|
setConfigError('Privy App ID is required (pass privyAppId prop or set NEXT_PUBLIC_PRIVY_APP_ID)');
|
|
180
183
|
}
|
|
184
|
+
else if (!clientId) {
|
|
185
|
+
setConfigError('Thirdweb Client ID is required (pass thirdwebClientId prop or set NEXT_PUBLIC_THIRDWEB_CLIENT_ID)');
|
|
186
|
+
}
|
|
181
187
|
else {
|
|
182
188
|
setConfigError(null);
|
|
183
189
|
}
|
|
184
|
-
}, [appId]);
|
|
190
|
+
}, [appId, clientId]);
|
|
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]);
|
|
185
203
|
// Show config error
|
|
186
204
|
if (configError) {
|
|
187
205
|
return React.createElement(ConfigErrorScreen, { error: configError });
|
|
188
206
|
}
|
|
207
|
+
// Show thirdweb error
|
|
208
|
+
if (!thirdwebClient) {
|
|
209
|
+
return React.createElement(ConfigErrorScreen, { error: "Failed to initialize thirdweb client" });
|
|
210
|
+
}
|
|
189
211
|
const content = (React.createElement(PrivyProvider, { appId: appId, config: {
|
|
190
212
|
loginMethods,
|
|
191
213
|
appearance: {
|
|
@@ -203,7 +225,8 @@ export function VarityDashboardProvider({ children, privyAppId, thirdwebClientId
|
|
|
203
225
|
React.createElement(QueryClientProvider, { client: queryClient },
|
|
204
226
|
React.createElement(WagmiProvider, { config: wagmiConfig },
|
|
205
227
|
React.createElement(PrivyReadyGate, { logo: appearance.logo, initTimeout: initTimeout },
|
|
206
|
-
React.createElement(
|
|
228
|
+
React.createElement(ThirdwebProvider, null,
|
|
229
|
+
React.createElement(WalletSyncProvider, { onAddressChange: onAddressChange, onSyncStateChange: onWalletSyncChange }, children)))))));
|
|
207
230
|
// Wrap with error boundary if provided
|
|
208
231
|
if (ErrorBoundary) {
|
|
209
232
|
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,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"VarityDashboardProvider.js","sourceRoot":"","sources":["../../src/providers/VarityDashboardProvider.tsx"],"names":[],"mappings":"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"}
|