@openzeppelin/ui-react 1.1.0 → 2.0.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.
@@ -1,497 +0,0 @@
1
- import * as react0 from "react";
2
- import React, { ReactNode } from "react";
3
- import { BaseComponentProps, Connector, ContractAdapter, EcosystemSpecificReactHooks, EcosystemWalletComponents, NativeConfigLoader, NetworkConfig, UiKitConfiguration } from "@openzeppelin/ui-types";
4
- import * as react_jsx_runtime0 from "react/jsx-runtime";
5
-
6
- //#region src/hooks/AdapterContext.d.ts
7
- /**
8
- * Registry type that maps network IDs to their corresponding adapter instances
9
- * This is the core data structure for the singleton pattern
10
- */
11
- interface AdapterRegistry {
12
- [networkId: string]: ContractAdapter;
13
- }
14
- /**
15
- * Context value interface defining what's provided through the context
16
- * The main functionality is getAdapterForNetwork which either returns
17
- * an existing adapter or initiates loading of a new one
18
- */
19
- interface AdapterContextValue {
20
- getAdapterForNetwork: (networkConfig: NetworkConfig | null) => {
21
- adapter: ContractAdapter | null;
22
- isLoading: boolean;
23
- };
24
- }
25
- /**
26
- * The React Context that provides adapter registry access throughout the app
27
- * Components can access this through the useAdapterContext hook
28
- */
29
- declare const AdapterContext: react0.Context<AdapterContextValue | null>;
30
- //# sourceMappingURL=AdapterContext.d.ts.map
31
- //#endregion
32
- //#region src/hooks/AdapterProvider.d.ts
33
- interface AdapterProviderProps {
34
- children: ReactNode;
35
- /** Function to resolve/create an adapter instance for a given NetworkConfig. */
36
- resolveAdapter: (networkConfig: NetworkConfig) => Promise<ContractAdapter>;
37
- }
38
- /**
39
- * Provider component that manages adapter instances centrally
40
- * to avoid creating multiple instances of the same adapter.
41
- *
42
- * This component:
43
- * 1. Maintains a registry of adapter instances by network ID
44
- * 2. Tracks loading states for adapters being initialized
45
- * 3. Provides a function to get or load adapters for specific networks
46
- * 4. Ensures adapter instances are reused when possible
47
- */
48
- declare function AdapterProvider({
49
- children,
50
- resolveAdapter
51
- }: AdapterProviderProps): react_jsx_runtime0.JSX.Element;
52
- //# sourceMappingURL=AdapterProvider.d.ts.map
53
- //#endregion
54
- //#region src/hooks/WalletStateContext.d.ts
55
- interface WalletStateContextValue {
56
- activeNetworkId: string | null;
57
- setActiveNetworkId: (networkId: string | null) => void;
58
- activeNetworkConfig: NetworkConfig | null;
59
- activeAdapter: ContractAdapter | null;
60
- isAdapterLoading: boolean;
61
- walletFacadeHooks: EcosystemSpecificReactHooks | null;
62
- reconfigureActiveAdapterUiKit: (uiKitConfig?: Partial<UiKitConfiguration>) => void;
63
- }
64
- declare const WalletStateContext: React.Context<WalletStateContextValue | undefined>;
65
- /**
66
- * Hook to access wallet state from WalletStateProvider.
67
- * @throws Error if used outside of WalletStateProvider
68
- */
69
- declare function useWalletState(): WalletStateContextValue;
70
- //# sourceMappingURL=WalletStateContext.d.ts.map
71
- //#endregion
72
- //#region src/hooks/WalletStateProvider.d.ts
73
- interface WalletStateProviderProps {
74
- children: ReactNode;
75
- /** Optional initial network ID to set as active when the provider mounts. */
76
- initialNetworkId?: string | null;
77
- /** Function to retrieve a NetworkConfig object by its ID. */
78
- getNetworkConfigById: (networkId: string) => Promise<NetworkConfig | null | undefined> | NetworkConfig | null | undefined;
79
- /**
80
- * Optional generic function to load configuration modules by relative path.
81
- * The adapter is responsible for constructing the conventional path (e.g., './config/wallet/[kitName].config').
82
- * @param relativePath The conventional relative path to the configuration module.
83
- * @returns A Promise resolving to the configuration object (expected to have a default export) or null.
84
- */
85
- loadConfigModule?: NativeConfigLoader;
86
- }
87
- /**
88
- * @name WalletStateProvider
89
- * @description This provider is a central piece of the application's state management for wallet and network interactions.
90
- * It is responsible for:
91
- * 1. Managing the globally selected active network ID (`activeNetworkId`).
92
- * 2. Deriving the full `NetworkConfig` object (`activeNetworkConfig`) for the active network.
93
- * 3. Fetching and providing the corresponding `ContractAdapter` instance (`activeAdapter`) for the active network,
94
- * leveraging the `AdapterProvider` to ensure adapter singletons.
95
- * 4. Storing and providing the `EcosystemSpecificReactHooks` (`walletFacadeHooks`) from the active adapter.
96
- * 5. Rendering the adapter-specific UI context provider (e.g., WagmiProvider for EVM) around its children,
97
- * which is essential for the facade hooks to function correctly.
98
- * 6. Providing a function (`setActiveNetworkId`) to change the globally active network.
99
- *
100
- * Consumers use the `useWalletState()` hook to access this global state.
101
- * It should be placed high in the component tree, inside an `<AdapterProvider>`.
102
- */
103
- declare function WalletStateProvider({
104
- children,
105
- initialNetworkId,
106
- getNetworkConfigById,
107
- loadConfigModule
108
- }: WalletStateProviderProps): react_jsx_runtime0.JSX.Element;
109
- //# sourceMappingURL=WalletStateProvider.d.ts.map
110
- //#endregion
111
- //#region src/hooks/AnalyticsContext.d.ts
112
- /**
113
- * Analytics context value interface.
114
- * Provides access to analytics functionality throughout the React component tree.
115
- */
116
- interface AnalyticsContextValue {
117
- /** Google Analytics tag ID */
118
- tagId?: string;
119
- /**
120
- * Check if analytics is enabled via feature flag.
121
- * Returns fresh state on each call to handle dynamic feature flag changes.
122
- */
123
- isEnabled: () => boolean;
124
- /** Initialize analytics with optional tag ID override */
125
- initialize: (tagIdOverride?: string) => void;
126
- /**
127
- * Track a generic event with custom parameters.
128
- * Use this for app-specific events.
129
- *
130
- * @example
131
- * ```typescript
132
- * trackEvent('button_clicked', { button_name: 'submit' });
133
- * ```
134
- */
135
- trackEvent: (eventName: string, parameters: Record<string, string | number>) => void;
136
- /**
137
- * Track page view event.
138
- *
139
- * @example
140
- * ```typescript
141
- * trackPageView('Dashboard', '/dashboard');
142
- * ```
143
- */
144
- trackPageView: (pageName: string, pagePath: string) => void;
145
- /**
146
- * Track network selection event.
147
- *
148
- * @example
149
- * ```typescript
150
- * trackNetworkSelection('ethereum-mainnet', 'evm');
151
- * ```
152
- */
153
- trackNetworkSelection: (networkId: string, ecosystem: string) => void;
154
- }
155
- /**
156
- * Analytics context for providing analytics functionality to React components.
157
- * Must be used within an AnalyticsProvider.
158
- */
159
- declare const AnalyticsContext: react0.Context<AnalyticsContextValue | null>;
160
- /**
161
- * Internal hook to access analytics context.
162
- * Throws an error if used outside of an AnalyticsProvider.
163
- *
164
- * @internal
165
- * @throws Error if used outside of AnalyticsProvider
166
- */
167
- //#endregion
168
- //#region src/hooks/AnalyticsProvider.d.ts
169
- /**
170
- * Props for the AnalyticsProvider component
171
- */
172
- interface AnalyticsProviderProps {
173
- /** Google Analytics tag ID (e.g., 'G-XXXXXXXXXX') */
174
- tagId?: string;
175
- /** Whether to automatically initialize analytics on mount (default: true) */
176
- autoInit?: boolean;
177
- /** Child components */
178
- children: ReactNode;
179
- }
180
- /**
181
- * Analytics Provider component.
182
- * Provides analytics functionality throughout the React component tree.
183
- *
184
- * @example
185
- * ```tsx
186
- * function App() {
187
- * return (
188
- * <AnalyticsProvider tagId={import.meta.env.VITE_GA_TAG_ID} autoInit={true}>
189
- * <YourApp />
190
- * </AnalyticsProvider>
191
- * );
192
- * }
193
- * ```
194
- */
195
- declare const AnalyticsProvider: React.FC<AnalyticsProviderProps>;
196
- //# sourceMappingURL=AnalyticsProvider.d.ts.map
197
-
198
- //#endregion
199
- //#region src/hooks/useAnalytics.d.ts
200
- /**
201
- * Custom hook for accessing analytics functionality.
202
- *
203
- * This hook provides a convenient interface for tracking user interactions
204
- * throughout the application. It must be used within an AnalyticsProvider.
205
- *
206
- * For app-specific tracking methods, create a wrapper hook that uses this
207
- * hook and adds your custom tracking functions.
208
- *
209
- * @example
210
- * ```tsx
211
- * // Basic usage
212
- * function MyComponent() {
213
- * const { trackEvent, trackPageView, isEnabled } = useAnalytics();
214
- *
215
- * const handleClick = () => {
216
- * trackEvent('button_clicked', { button_name: 'submit' });
217
- * };
218
- *
219
- * return (
220
- * <div>
221
- * Analytics enabled: {isEnabled().toString()}
222
- * <button onClick={handleClick}>Submit</button>
223
- * </div>
224
- * );
225
- * }
226
- * ```
227
- *
228
- * @example
229
- * ```tsx
230
- * // Creating app-specific wrapper hook
231
- * function useMyAppAnalytics() {
232
- * const analytics = useAnalytics();
233
- *
234
- * return {
235
- * ...analytics,
236
- * trackFormSubmit: (formName: string) => {
237
- * analytics.trackEvent('form_submitted', { form_name: formName });
238
- * },
239
- * };
240
- * }
241
- * ```
242
- *
243
- * @returns Analytics context with tracking methods and state
244
- * @throws Error if used outside of AnalyticsProvider
245
- */
246
- declare const useAnalytics: () => AnalyticsContextValue;
247
- //# sourceMappingURL=useAnalytics.d.ts.map
248
- //#endregion
249
- //#region src/hooks/useAdapterContext.d.ts
250
- /**
251
- * Hook to access the adapter context
252
- *
253
- * This hook provides access to the getAdapterForNetwork function which
254
- * retrieves or creates adapter instances from the singleton registry.
255
- *
256
- * Components should typically use useConfiguredAdapterSingleton instead
257
- * of this hook directly, as it handles React state update timing properly.
258
- *
259
- * @throws Error if used outside of an AdapterProvider context
260
- * @returns The adapter context value
261
- */
262
- declare function useAdapterContext(): AdapterContextValue;
263
- //# sourceMappingURL=useAdapterContext.d.ts.map
264
-
265
- //#endregion
266
- //#region src/hooks/useWalletComponents.d.ts
267
- /**
268
- * Hook that provides direct access to wallet UI components from the active adapter.
269
- *
270
- * Use this hook when you need full control over the layout and composition of
271
- * wallet components. For standard layouts, prefer using `WalletConnectionUI`
272
- * with its props forwarding capabilities.
273
- *
274
- * @returns The wallet components object, or null if no adapter is active or
275
- * the adapter doesn't provide wallet components.
276
- *
277
- * @example
278
- * ```tsx
279
- * import { useWalletComponents } from '@openzeppelin/ui-react';
280
- *
281
- * function CustomWalletSection() {
282
- * const walletComponents = useWalletComponents();
283
- *
284
- * if (!walletComponents) {
285
- * return <p>Loading wallet...</p>;
286
- * }
287
- *
288
- * const { ConnectButton, NetworkSwitcher, AccountDisplay } = walletComponents;
289
- *
290
- * return (
291
- * <div className="flex flex-col gap-4">
292
- * {ConnectButton && (
293
- * <ConnectButton
294
- * size="xl"
295
- * variant="outline"
296
- * fullWidth
297
- * className="font-semibold"
298
- * />
299
- * )}
300
- * <div className="flex gap-2">
301
- * {NetworkSwitcher && <NetworkSwitcher size="sm" />}
302
- * {AccountDisplay && <AccountDisplay size="sm" />}
303
- * </div>
304
- * </div>
305
- * );
306
- * }
307
- * ```
308
- */
309
- declare function useWalletComponents(): EcosystemWalletComponents | null;
310
- //# sourceMappingURL=useWalletComponents.d.ts.map
311
- //#endregion
312
- //#region src/hooks/useDerivedAccountStatus.d.ts
313
- interface DerivedAccountStatus {
314
- isConnected: boolean;
315
- address?: string;
316
- chainId?: number;
317
- }
318
- /**
319
- * A custom hook that consumes useWalletState to get the walletFacadeHooks,
320
- * then calls the useAccount facade hook (if available) and returns a structured,
321
- * safely-accessed account status (isConnected, address, chainId).
322
- * Provides default values if the hook or its properties are unavailable.
323
- */
324
- declare function useDerivedAccountStatus(): DerivedAccountStatus;
325
- //# sourceMappingURL=useDerivedAccountStatus.d.ts.map
326
- //#endregion
327
- //#region src/hooks/useDerivedSwitchChainStatus.d.ts
328
- interface DerivedSwitchChainStatus {
329
- /** Function to initiate a network switch. Undefined if not available. */
330
- switchChain?: (args: {
331
- chainId: number;
332
- }) => void;
333
- /** True if a network switch is currently in progress. */
334
- isSwitching: boolean;
335
- /** Error object if the last switch attempt failed, otherwise null. */
336
- error: Error | null;
337
- }
338
- /**
339
- * A custom hook that consumes `useWalletState` to get `walletFacadeHooks`,
340
- * then calls the `useSwitchChain` facade hook (if available) and returns a structured,
341
- * safely-accessed status and control function for network switching.
342
- * Provides default values if the hook or its properties are unavailable.
343
- */
344
- declare function useDerivedSwitchChainStatus(): DerivedSwitchChainStatus;
345
- //# sourceMappingURL=useDerivedSwitchChainStatus.d.ts.map
346
- //#endregion
347
- //#region src/hooks/useDerivedChainInfo.d.ts
348
- interface DerivedChainInfo {
349
- /** The current chain ID reported by the wallet's active connection, if available. */
350
- currentChainId?: number;
351
- /** Array of chains configured in the underlying wallet library (e.g., wagmi). Type is any[] for generic compatibility. */
352
- availableChains: unknown[];
353
- }
354
- /**
355
- * A custom hook that consumes `useWalletState` to get `walletFacadeHooks`,
356
- * then calls the `useChainId` and `useChains` facade hooks (if available)
357
- * and returns a structured object with this information.
358
- * Provides default values if the hooks or their properties are unavailable.
359
- */
360
- declare function useDerivedChainInfo(): DerivedChainInfo;
361
- //# sourceMappingURL=useDerivedChainInfo.d.ts.map
362
- //#endregion
363
- //#region src/hooks/useDerivedConnectStatus.d.ts
364
- interface DerivedConnectStatus {
365
- /** Function to initiate a connection, usually takes a connector. Undefined if not available. */
366
- connect?: (args?: {
367
- connector?: Connector;
368
- }) => void;
369
- /** Array of available connectors. Type is any[] for broad compatibility until Connector type is fully generic here. */
370
- connectors: Connector[];
371
- /** True if a connection attempt is in progress. */
372
- isConnecting: boolean;
373
- /** Error object if the last connection attempt failed, otherwise null. */
374
- error: Error | null;
375
- /** The connector a connection is pending for, if any. */
376
- pendingConnector?: Connector;
377
- }
378
- /**
379
- * A custom hook that consumes `useWalletState` to get `walletFacadeHooks`,
380
- * then calls the `useConnect` facade hook (if available) and returns a structured,
381
- * safely-accessed status and control functions for wallet connection.
382
- */
383
- declare function useDerivedConnectStatus(): DerivedConnectStatus;
384
- //# sourceMappingURL=useDerivedConnectStatus.d.ts.map
385
- //#endregion
386
- //#region src/hooks/useDerivedDisconnect.d.ts
387
- interface DerivedDisconnectStatus {
388
- /** Function to initiate disconnection. Undefined if not available. */
389
- disconnect?: () => void | Promise<void>;
390
- /** True if a disconnection attempt is in progress (if hook provides this). */
391
- isDisconnecting: boolean;
392
- /** Error object if the last disconnection attempt failed (if hook provides this). */
393
- error: Error | null;
394
- }
395
- /**
396
- * A custom hook that consumes `useWalletState` to get `walletFacadeHooks`,
397
- * then calls the `useDisconnect` facade hook (if available) and returns a structured,
398
- * safely-accessed status and control function for wallet disconnection.
399
- */
400
- declare function useDerivedDisconnect(): DerivedDisconnectStatus;
401
- //# sourceMappingURL=useDerivedDisconnect.d.ts.map
402
- //#endregion
403
- //#region src/hooks/useWalletReconnectionHandler.d.ts
404
- /**
405
- * Hook that detects wallet reconnection and re-queues network switch if needed.
406
- *
407
- * When a user disconnects their wallet and then reconnects in the same session,
408
- * the wallet may connect to a different chain than what's selected in the app.
409
- * This hook detects that scenario and invokes a callback to re-queue the network switch.
410
- *
411
- * @param selectedNetworkConfigId - Currently selected network in the app
412
- * @param selectedAdapter - Currently active adapter instance
413
- * @param networkToSwitchTo - Current network switch queue state (null if no switch pending)
414
- * @param onRequeueSwitch - Callback invoked when a network switch should be re-queued
415
- */
416
- declare function useWalletReconnectionHandler(selectedNetworkConfigId: string | null, selectedAdapter: ContractAdapter | null, networkToSwitchTo: string | null, onRequeueSwitch: (networkId: string) => void): void;
417
- //# sourceMappingURL=useWalletReconnectionHandler.d.ts.map
418
- //#endregion
419
- //#region src/components/WalletConnectionHeader.d.ts
420
- /**
421
- * Component that renders the wallet connection UI.
422
- * Uses useWalletState to get its data.
423
- */
424
- declare const WalletConnectionHeader: React.FC;
425
- //# sourceMappingURL=WalletConnectionHeader.d.ts.map
426
- //#endregion
427
- //#region src/components/WalletConnectionUI.d.ts
428
- /**
429
- * Props for the WalletConnectionUI component.
430
- */
431
- interface WalletConnectionUIProps {
432
- /** Additional CSS classes to apply to the wrapper container */
433
- className?: string;
434
- /** Props forwarded to the ConnectButton component */
435
- connectButtonProps?: BaseComponentProps;
436
- /** Props forwarded to the AccountDisplay component */
437
- accountDisplayProps?: BaseComponentProps;
438
- /** Props forwarded to the NetworkSwitcher component */
439
- networkSwitcherProps?: BaseComponentProps;
440
- }
441
- /**
442
- * Component that displays wallet connection UI components
443
- * provided by the active adapter.
444
- *
445
- * @example
446
- * ```tsx
447
- * // Basic usage
448
- * <WalletConnectionUI />
449
- *
450
- * // With custom styling for the connect button
451
- * <WalletConnectionUI
452
- * connectButtonProps={{ size: "lg", variant: "outline", fullWidth: true }}
453
- * />
454
- *
455
- * // Customizing all components
456
- * <WalletConnectionUI
457
- * connectButtonProps={{ size: "lg" }}
458
- * accountDisplayProps={{ size: "lg" }}
459
- * networkSwitcherProps={{ size: "lg" }}
460
- * />
461
- * ```
462
- */
463
- declare const WalletConnectionUI: React.FC<WalletConnectionUIProps>;
464
- //# sourceMappingURL=WalletConnectionUI.d.ts.map
465
- //#endregion
466
- //#region src/components/NetworkSwitchManager.d.ts
467
- /**
468
- * Props for the NetworkSwitchManager component.
469
- */
470
- interface NetworkSwitchManagerProps {
471
- /** The adapter instance for the target network */
472
- adapter: ContractAdapter;
473
- /** The network ID we want to switch to */
474
- targetNetworkId: string;
475
- /** Callback when network switch completes (success or error) */
476
- onNetworkSwitchComplete?: () => void;
477
- }
478
- /**
479
- * Component that handles wallet network switching based on the selected network.
480
- *
481
- * This component manages the lifecycle of network switching operations,
482
- * coordinating between the wallet's current chain state and the target network.
483
- * It's designed to be used in any application that needs seamless wallet network switching.
484
- *
485
- * Features:
486
- * - Automatically initiates network switch when mounted with a target network
487
- * - Handles EVM chain switching gracefully
488
- * - No-ops for non-EVM networks that don't support chain switching
489
- * - Tracks switch attempts to prevent duplicate operations
490
- * - Provides completion callback for parent components to handle state cleanup
491
- */
492
- declare const NetworkSwitchManager: React.FC<NetworkSwitchManagerProps>;
493
- //# sourceMappingURL=NetworkSwitchManager.d.ts.map
494
-
495
- //#endregion
496
- export { AdapterContext, type AdapterContextValue, AdapterProvider, type AdapterProviderProps, type AdapterRegistry, AnalyticsContext, type AnalyticsContextValue, AnalyticsProvider, type AnalyticsProviderProps, type DerivedAccountStatus, type DerivedChainInfo, type DerivedConnectStatus, type DerivedDisconnectStatus, type DerivedSwitchChainStatus, NetworkSwitchManager, type NetworkSwitchManagerProps, WalletConnectionHeader, WalletConnectionUI, type WalletConnectionUIProps, WalletStateContext, type WalletStateContextValue, WalletStateProvider, type WalletStateProviderProps, useAdapterContext, useAnalytics, useDerivedAccountStatus, useDerivedChainInfo, useDerivedConnectStatus, useDerivedDisconnect, useDerivedSwitchChainStatus, useWalletComponents, useWalletReconnectionHandler, useWalletState };
497
- //# sourceMappingURL=index-BlmRKpng.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-BlmRKpng.d.cts","names":[],"sources":["../src/hooks/AdapterContext.tsx","../src/hooks/AdapterProvider.tsx","../src/hooks/WalletStateContext.ts","../src/hooks/WalletStateProvider.tsx","../src/hooks/AnalyticsContext.tsx","../src/hooks/AnalyticsProvider.tsx","../src/hooks/useAnalytics.ts","../src/hooks/useAdapterContext.ts","../src/hooks/useWalletComponents.ts","../src/hooks/useDerivedAccountStatus.ts","../src/hooks/useDerivedSwitchChainStatus.ts","../src/hooks/useDerivedChainInfo.ts","../src/hooks/useDerivedConnectStatus.ts","../src/hooks/useDerivedDisconnect.ts","../src/hooks/useWalletReconnectionHandler.ts","../src/components/WalletConnectionHeader.tsx","../src/components/WalletConnectionUI.tsx","../src/components/NetworkSwitchManager.tsx"],"sourcesContent":[],"mappings":"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"}