@nexus-cross/connect-kit-react 1.0.0-beta.1

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.
Files changed (38) hide show
  1. package/README.md +258 -0
  2. package/dist/components/ConnectButton.d.ts +64 -0
  3. package/dist/components/ConnectButton.d.ts.map +1 -0
  4. package/dist/components/ConnectButton.js +257 -0
  5. package/dist/components/ConnectButton.js.map +1 -0
  6. package/dist/components/CrossConnectKitProvider.d.ts +15 -0
  7. package/dist/components/CrossConnectKitProvider.d.ts.map +1 -0
  8. package/dist/components/CrossConnectKitProvider.js +570 -0
  9. package/dist/components/CrossConnectKitProvider.js.map +1 -0
  10. package/dist/components/OtherWalletsModal.d.ts +20 -0
  11. package/dist/components/OtherWalletsModal.d.ts.map +1 -0
  12. package/dist/components/OtherWalletsModal.js +300 -0
  13. package/dist/components/OtherWalletsModal.js.map +1 -0
  14. package/dist/components/WalletInfoPopover.d.ts +7 -0
  15. package/dist/components/WalletInfoPopover.d.ts.map +1 -0
  16. package/dist/components/WalletInfoPopover.js +166 -0
  17. package/dist/components/WalletInfoPopover.js.map +1 -0
  18. package/dist/components/types.d.ts +23 -0
  19. package/dist/components/types.d.ts.map +1 -0
  20. package/dist/components/types.js +2 -0
  21. package/dist/components/types.js.map +1 -0
  22. package/dist/context/CrossConnectKitContext.d.ts +30 -0
  23. package/dist/context/CrossConnectKitContext.d.ts.map +1 -0
  24. package/dist/context/CrossConnectKitContext.js +10 -0
  25. package/dist/context/CrossConnectKitContext.js.map +1 -0
  26. package/dist/context/CrossConnectKitThemeContext.d.ts +41 -0
  27. package/dist/context/CrossConnectKitThemeContext.d.ts.map +1 -0
  28. package/dist/context/CrossConnectKitThemeContext.js +22 -0
  29. package/dist/context/CrossConnectKitThemeContext.js.map +1 -0
  30. package/dist/hooks/useCrossxEmbeddedInfo.d.ts +25 -0
  31. package/dist/hooks/useCrossxEmbeddedInfo.d.ts.map +1 -0
  32. package/dist/hooks/useCrossxEmbeddedInfo.js +71 -0
  33. package/dist/hooks/useCrossxEmbeddedInfo.js.map +1 -0
  34. package/dist/index.d.ts +20 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +10 -0
  37. package/dist/index.js.map +1 -0
  38. package/package.json +43 -0
@@ -0,0 +1,570 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
3
+ import { WagmiProvider, useAccount, useConnect, useDisconnect } from 'wagmi';
4
+ import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
5
+ import { clearWalletSessionStorage, onOpenOtherWallets, pickInitialState, resolveCurrentWallet, } from '@nexus-cross/connect-kit-wagmi';
6
+ import { buildThemeCssText, resolveThemeMode, } from '@nexus-cross/connect-kit-core';
7
+ import { CrossConnectKitContext } from '../context/CrossConnectKitContext.js';
8
+ import { CrossConnectKitThemeContext, } from '../context/CrossConnectKitThemeContext.js';
9
+ import { OtherWalletsModal } from './OtherWalletsModal.js';
10
+ const queryClient = new QueryClient();
11
+ const INTENT_STORAGE_KEY = 'crossx-kit:last-wallet-intent';
12
+ /**
13
+ * True when the thrown error is the crossy-sdk embedded connector's
14
+ * deliberate handoff to another wallet. Those surfaces look like
15
+ * UserRejectedRequestError with a cause message "User requested external
16
+ * wallet connection" — they are flow control, not real failures.
17
+ */
18
+ function isExternalWalletHandoff(err) {
19
+ const messages = [];
20
+ let cur = err;
21
+ let depth = 0;
22
+ while (cur && depth < 5) {
23
+ const obj = cur;
24
+ if (typeof obj.message === 'string')
25
+ messages.push(obj.message);
26
+ cur = obj.cause;
27
+ depth += 1;
28
+ }
29
+ return messages.some((m) => /external wallet connection/i.test(m));
30
+ }
31
+ function readIntent() {
32
+ if (typeof window === 'undefined')
33
+ return null;
34
+ try {
35
+ return window.localStorage.getItem(INTENT_STORAGE_KEY) ?? null;
36
+ }
37
+ catch {
38
+ return null;
39
+ }
40
+ }
41
+ function writeIntent(walletId) {
42
+ if (typeof window === 'undefined')
43
+ return;
44
+ try {
45
+ if (walletId)
46
+ window.localStorage.setItem(INTENT_STORAGE_KEY, walletId);
47
+ else
48
+ window.localStorage.removeItem(INTENT_STORAGE_KEY);
49
+ }
50
+ catch {
51
+ /* storage unavailable (private mode, quota) — intent falls back to in-memory only */
52
+ }
53
+ }
54
+ function readActiveProvider(storageKey, fallback) {
55
+ if (typeof window === 'undefined')
56
+ return fallback;
57
+ try {
58
+ const v = window.localStorage.getItem(storageKey);
59
+ return v === 'cross' || v === 'reown' ? v : fallback;
60
+ }
61
+ catch {
62
+ return fallback;
63
+ }
64
+ }
65
+ function writeActiveProvider(storageKey, value) {
66
+ if (typeof window === 'undefined')
67
+ return;
68
+ try {
69
+ window.localStorage.setItem(storageKey, value);
70
+ }
71
+ catch {
72
+ /* storage unavailable — falls back to in-memory only */
73
+ }
74
+ }
75
+ function CrossConnectKitInner({ children, config, activeProvider, onRequestProviderSwap, pendingConnectWalletId, clearPending, themeMode, themeTokens, }) {
76
+ const [otherWalletsOpen, setOtherWalletsOpen] = useState(false);
77
+ const [lastIntent, setLastIntent] = useState(() => readIntent());
78
+ const { isConnected, isConnecting, isReconnecting, connector: activeConnector, } = useAccount();
79
+ const { connectors, connectAsync } = useConnect();
80
+ const { disconnectAsync: wagmiDisconnectAsync } = useDisconnect();
81
+ const { kitConfig, connectorRegistry, crossProvider, reownProvider } = config;
82
+ const activeAdapter = activeProvider === 'cross' ? crossProvider : reownProvider;
83
+ const currentWallet = useMemo(() => {
84
+ if (!isConnected || !activeConnector)
85
+ return null;
86
+ return resolveCurrentWallet(connectorRegistry, activeConnector.id, lastIntent);
87
+ }, [isConnected, activeConnector, connectorRegistry, lastIntent]);
88
+ const availableWallets = useMemo(() => connectorRegistry.entries.filter((e) => e.type !== 'embedded'), [connectorRegistry]);
89
+ useEffect(() => {
90
+ return onOpenOtherWallets(() => setOtherWalletsOpen(true));
91
+ }, []);
92
+ // When OtherWalletsModal opens on top of the crossy-sdk-js login
93
+ // modal, the SDK is supposed to dismiss its own overlay in response to
94
+ // the `CROSSxError: User requested external wallet connection` thrown
95
+ // from `signIn`. A race between our modal mount and the SDK's cleanup
96
+ // occasionally leaves the login overlay lingering in the DOM — remove
97
+ // it defensively so the user doesn't see two stacked modals.
98
+ //
99
+ // The SDK mounts every overlay under the shared id `__crossx-confirm-
100
+ // overlay` (see BrowserConfirmationAdapter.ts). Removing it here also
101
+ // aborts the SDK Promise, but the flow is already cancelling anyway.
102
+ useEffect(() => {
103
+ if (!otherWalletsOpen)
104
+ return;
105
+ if (typeof document === 'undefined')
106
+ return;
107
+ // Defer a tick so the SDK's own close path runs first when it's
108
+ // going to. Only remove if the overlay is still there afterwards.
109
+ const timer = setTimeout(() => {
110
+ document
111
+ .querySelectorAll('#__crossx-confirm-overlay')
112
+ .forEach((el) => el.remove());
113
+ }, 50);
114
+ return () => clearTimeout(timer);
115
+ }, [otherWalletsOpen]);
116
+ const isConnectedRef = useRef(isConnected);
117
+ const prevConnectedRef = useRef(isConnected);
118
+ isConnectedRef.current = isConnected;
119
+ // Diagnostic: surface the provider / account state inside CrossConnectKitInner
120
+ // so the user can see in browser devtools which config is mounted and
121
+ // what wagmi reports. Cheap to keep on — fires only on state change.
122
+ useEffect(() => {
123
+ console.debug('[crossx-kit] state', {
124
+ activeProvider,
125
+ isConnected,
126
+ isConnecting,
127
+ isReconnecting,
128
+ activeConnectorId: activeConnector?.id,
129
+ currentWallet,
130
+ lastIntent,
131
+ });
132
+ }, [
133
+ activeProvider,
134
+ isConnected,
135
+ isConnecting,
136
+ isReconnecting,
137
+ activeConnector?.id,
138
+ currentWallet,
139
+ lastIntent,
140
+ ]);
141
+ // Auto-close the adapter's native modal once wagmi reports a
142
+ // connection. AppKit's QR-only views (e.g. ConnectingWalletConnectBasic)
143
+ // don't always dismiss themselves when the session is established —
144
+ // explicitly close on the rising edge of `isConnected` so the modal
145
+ // doesn't linger over the connected UI.
146
+ useEffect(() => {
147
+ if (isConnected && !prevConnectedRef.current) {
148
+ activeAdapter?.closeModal?.({ kitConfig });
149
+ }
150
+ prevConnectedRef.current = isConnected;
151
+ }, [isConnected, activeAdapter, kitConfig]);
152
+ const findConnector = useCallback((connectorId) => connectors.find((c) => c.id === connectorId), [connectors]);
153
+ // Push `themeMode` / `themeTokens` changes into the embedded crossy-sdk
154
+ // at runtime. The SDK owns a live confirmation modal adapter whose
155
+ // palette is frozen at `crossxConnector(...)` construction, so without
156
+ // this effect the DApp's `setThemeMode(...)` only affects our CSS
157
+ // variables — the SDK's next signature / login modal would still open
158
+ // in the stale palette. `provider.sdk.applyTheme` is crossy-sdk 2.0's
159
+ // public runtime API (see `CROSSxSDK.applyTheme`).
160
+ useEffect(() => {
161
+ const embeddedEntry = connectorRegistry.getEntry('cross_embedded');
162
+ if (!embeddedEntry)
163
+ return;
164
+ const crossx = findConnector(embeddedEntry.connectorId);
165
+ if (!crossx)
166
+ return;
167
+ let cancelled = false;
168
+ void (async () => {
169
+ try {
170
+ const provider = (await crossx.getProvider());
171
+ if (cancelled)
172
+ return;
173
+ provider?.sdk?.applyTheme?.(themeMode, themeTokens ?? undefined);
174
+ }
175
+ catch (err) {
176
+ console.debug('[crossx-kit] applyTheme skipped:', err);
177
+ }
178
+ })();
179
+ return () => {
180
+ cancelled = true;
181
+ };
182
+ }, [connectorRegistry, findConnector, themeMode, themeTokens]);
183
+ const recordIntent = useCallback((walletId) => {
184
+ setLastIntent(walletId);
185
+ writeIntent(walletId);
186
+ }, []);
187
+ const clearIntent = useCallback(() => {
188
+ setLastIntent(null);
189
+ writeIntent(null);
190
+ }, []);
191
+ // Watch the adapter's native modal. When the user dismisses it without
192
+ // completing pairing, wagmi is still "not connected" and any in-flight
193
+ // connectAsync (e.g. cross_wallet's UniversalConnector waiting for a
194
+ // QR scan) is left dangling. Force a clean disconnect so the
195
+ // "Connecting…" state doesn't stick and lastIntent doesn't poison the
196
+ // next attempt.
197
+ useEffect(() => {
198
+ if (!activeAdapter?.subscribeModalState)
199
+ return;
200
+ let sawOpen = false;
201
+ return activeAdapter.subscribeModalState({ kitConfig }, (open) => {
202
+ if (open) {
203
+ sawOpen = true;
204
+ return;
205
+ }
206
+ if (!sawOpen)
207
+ return;
208
+ sawOpen = false;
209
+ // Defer so a pair completing at the moment of dismissal can flip
210
+ // wagmi `isConnected` before we decide the user cancelled.
211
+ setTimeout(() => {
212
+ if (isConnectedRef.current)
213
+ return;
214
+ void (async () => {
215
+ try {
216
+ await wagmiDisconnectAsync();
217
+ }
218
+ catch {
219
+ /* already-disconnected is fine */
220
+ }
221
+ clearIntent();
222
+ })();
223
+ }, 250);
224
+ });
225
+ }, [activeAdapter, kitConfig, wagmiDisconnectAsync, clearIntent]);
226
+ const runConnect = useCallback(async (walletId) => {
227
+ console.debug('[crossx-kit] runConnect enter', {
228
+ walletId,
229
+ activeProvider,
230
+ isConnected,
231
+ activeConnectorId: activeConnector?.id,
232
+ });
233
+ const entry = connectorRegistry.getEntry(walletId);
234
+ if (!entry) {
235
+ console.error(`[crossx-kit] Unknown walletId: "${walletId}"`);
236
+ return;
237
+ }
238
+ if (entry.providerKind !== activeProvider) {
239
+ console.debug('[crossx-kit] provider swap needed', {
240
+ from: activeProvider,
241
+ to: entry.providerKind,
242
+ walletId,
243
+ });
244
+ recordIntent(walletId);
245
+ try {
246
+ await wagmiDisconnectAsync();
247
+ }
248
+ catch {
249
+ /* noop */
250
+ }
251
+ await new Promise((resolve) => setTimeout(resolve, 0));
252
+ onRequestProviderSwap(entry.providerKind, walletId);
253
+ return;
254
+ }
255
+ recordIntent(walletId);
256
+ if (activeAdapter?.beforeConnect) {
257
+ try {
258
+ const result = await activeAdapter.beforeConnect({ kitConfig }, walletId);
259
+ console.debug('[crossx-kit] beforeConnect result', { walletId, result });
260
+ if (result === 'handled')
261
+ return;
262
+ }
263
+ catch (err) {
264
+ console.warn(`[crossx-kit] adapter.beforeConnect threw for "${walletId}":`, err);
265
+ }
266
+ }
267
+ const primary = findConnector(entry.connectorId);
268
+ console.debug('[crossx-kit] findConnector', {
269
+ lookupId: entry.connectorId,
270
+ found: primary?.id,
271
+ availableIds: connectors.map((c) => c.id),
272
+ });
273
+ if (!primary) {
274
+ console.error(`[crossx-kit] Connector "${entry.connectorId}" not found on provider ` +
275
+ `"${entry.providerKind}". Available: ${connectors.map((c) => c.id).join(', ')}`);
276
+ clearIntent();
277
+ return;
278
+ }
279
+ try {
280
+ console.debug('[crossx-kit] connectAsync start', { connectorId: primary.id });
281
+ const result = await connectAsync({ connector: primary });
282
+ console.debug('[crossx-kit] connectAsync resolved', {
283
+ accountsLen: result.accounts.length,
284
+ chainId: result.chainId,
285
+ });
286
+ return;
287
+ }
288
+ catch (err) {
289
+ const handoff = isExternalWalletHandoff(err);
290
+ if (!handoff) {
291
+ console.error(`[crossx-kit] connectAsync error for "${walletId}":`, err);
292
+ try {
293
+ await wagmiDisconnectAsync();
294
+ }
295
+ catch {
296
+ /* ignore */
297
+ }
298
+ }
299
+ if (!entry.fallbackConnectorId) {
300
+ clearIntent();
301
+ return;
302
+ }
303
+ }
304
+ if (entry.fallbackConnectorId) {
305
+ const fallback = findConnector(entry.fallbackConnectorId);
306
+ if (fallback) {
307
+ try {
308
+ await connectAsync({ connector: fallback });
309
+ }
310
+ catch (err) {
311
+ console.error(`[crossx-kit] Fallback connect failed for "${walletId}":`, err);
312
+ try {
313
+ await wagmiDisconnectAsync();
314
+ }
315
+ catch {
316
+ /* ignore */
317
+ }
318
+ clearIntent();
319
+ }
320
+ }
321
+ else {
322
+ clearIntent();
323
+ }
324
+ }
325
+ }, [
326
+ connectorRegistry,
327
+ connectors,
328
+ findConnector,
329
+ connectAsync,
330
+ wagmiDisconnectAsync,
331
+ recordIntent,
332
+ clearIntent,
333
+ activeAdapter,
334
+ activeProvider,
335
+ kitConfig,
336
+ onRequestProviderSwap,
337
+ ]);
338
+ // After a provider swap, pendingConnectWalletId is set and the
339
+ // WagmiProvider has just remounted with the new config. Fire the
340
+ // connect for that wallet now that the hooks point at the right
341
+ // config.
342
+ useEffect(() => {
343
+ if (!pendingConnectWalletId)
344
+ return;
345
+ const wallet = pendingConnectWalletId;
346
+ clearPending();
347
+ void runConnect(wallet);
348
+ // We intentionally only depend on the pending id and active provider —
349
+ // runConnect has its own deps but refetching here would re-trigger
350
+ // connects on unrelated state changes.
351
+ // eslint-disable-next-line react-hooks/exhaustive-deps
352
+ }, [pendingConnectWalletId, activeProvider]);
353
+ const connectWallet = useCallback(async () => {
354
+ const embeddedEntry = connectorRegistry.getEntry('cross_embedded');
355
+ if (embeddedEntry) {
356
+ await runConnect('cross_embedded');
357
+ }
358
+ else {
359
+ setOtherWalletsOpen(true);
360
+ }
361
+ }, [connectorRegistry, runConnect]);
362
+ const disconnect = useCallback(async () => {
363
+ try {
364
+ await wagmiDisconnectAsync();
365
+ }
366
+ catch (err) {
367
+ console.error('[crossx-kit] wagmi disconnect error:', err);
368
+ }
369
+ if (activeAdapter?.teardown) {
370
+ try {
371
+ await activeAdapter.teardown({ kitConfig });
372
+ }
373
+ catch (err) {
374
+ console.error('[crossx-kit] adapter teardown error:', err);
375
+ }
376
+ }
377
+ clearWalletSessionStorage();
378
+ clearIntent();
379
+ }, [wagmiDisconnectAsync, activeAdapter, kitConfig, clearIntent]);
380
+ const selectWallet = useCallback(async () => {
381
+ const embeddedEntry = connectorRegistry.getEntry('cross_embedded');
382
+ if (!embeddedEntry)
383
+ return null;
384
+ const crossx = findConnector(embeddedEntry.connectorId);
385
+ if (!crossx)
386
+ return null;
387
+ try {
388
+ const provider = (await crossx.getProvider());
389
+ const sdk = provider?.sdk;
390
+ if (!sdk?.selectWallet)
391
+ return null;
392
+ const result = await sdk.selectWallet(sdk.currentAddress ?? undefined);
393
+ if (result?.address && provider.notifyAccountsChanged) {
394
+ provider.notifyAccountsChanged([result.address]);
395
+ }
396
+ return result;
397
+ }
398
+ catch {
399
+ return null;
400
+ }
401
+ }, [connectorRegistry, findConnector]);
402
+ const contextValue = useMemo(() => ({
403
+ kitConfig,
404
+ connectorRegistry,
405
+ availableWallets,
406
+ connect: runConnect,
407
+ connectWallet,
408
+ disconnect,
409
+ selectWallet,
410
+ currentWallet,
411
+ openOtherWallets: () => setOtherWalletsOpen(true),
412
+ closeOtherWallets: () => setOtherWalletsOpen(false),
413
+ otherWalletsOpen,
414
+ }), [
415
+ kitConfig,
416
+ connectorRegistry,
417
+ availableWallets,
418
+ runConnect,
419
+ connectWallet,
420
+ disconnect,
421
+ selectWallet,
422
+ currentWallet,
423
+ otherWalletsOpen,
424
+ ]);
425
+ return (_jsxs(CrossConnectKitContext.Provider, { value: contextValue, children: [children, _jsx(OtherWalletsModal, { open: otherWalletsOpen, onClose: () => setOtherWalletsOpen(false), onSelect: runConnect })] }));
426
+ }
427
+ /**
428
+ * Patterns that are benign tear-down noise from the WalletConnect
429
+ * universal provider: a WebSocket closes while a subscribe request is
430
+ * mid-flight (most commonly when WagmiProvider remounts during a
431
+ * provider swap). They surface as uncaught promise rejections because
432
+ * WC's internal EventEmitter throws into the void — silence them so
433
+ * consumers' error tooling stays clean. Actual connection failures
434
+ * still surface through wagmi's connectAsync error path.
435
+ */
436
+ const WC_BENIGN_ERROR_PATTERNS = [
437
+ /Connection interrupted while trying to subscribe/i,
438
+ /No matching key\. subscription:/i,
439
+ // Session proposal TTL expired without a wallet accepting (default
440
+ // 5 min). The modal already surfaces its own "expired" UI — the
441
+ // secondary rejection on the shared emitter is just noise.
442
+ /Proposal expired/i,
443
+ ];
444
+ function isBenignWcError(reason) {
445
+ const msg = reason?.message;
446
+ if (typeof msg !== 'string')
447
+ return false;
448
+ return WC_BENIGN_ERROR_PATTERNS.some((p) => p.test(msg));
449
+ }
450
+ export function CrossConnectKitProvider({ children, config, initialState }) {
451
+ const [activeProvider, setActiveProviderState] = useState(() => readActiveProvider(config.activeProviderStorageKey, config.defaultProvider));
452
+ const [pendingConnectWalletId, setPendingConnectWalletId] = useState(null);
453
+ const swapInFlight = useRef(false);
454
+ // ── Theme state ───────────────────────────────────────────────────
455
+ // Resolve the initial mode from `kitConfig.theme` (+ `autoDetectTheme`)
456
+ // and expose runtime overrides via the ThemeContext. `modeOverride` /
457
+ // `tokensOverride === null` means "use the value from the config".
458
+ const { kitConfig } = config;
459
+ const [modeOverride, setModeOverride] = useState(null);
460
+ const [tokensOverride, setTokensOverride] = useState(null);
461
+ // Bumped on `prefers-color-scheme` change so `configMode` re-resolves.
462
+ const [osThemeTick, setOsThemeTick] = useState(0);
463
+ const configMode = useMemo(() => resolveThemeMode(kitConfig.theme, kitConfig.autoDetectTheme),
464
+ // `osThemeTick` is intentionally part of the dep list — it is the
465
+ // signal we're allowed to re-consult `prefers-color-scheme`.
466
+ // eslint-disable-next-line react-hooks/exhaustive-deps
467
+ [kitConfig.theme, kitConfig.autoDetectTheme, osThemeTick]);
468
+ const activeMode = modeOverride ?? configMode;
469
+ const activeTokens = tokensOverride ?? kitConfig.themeTokens;
470
+ // Follow OS `prefers-color-scheme` when `autoDetectTheme` is on and
471
+ // the DApp hasn't called `setThemeMode` manually.
472
+ useEffect(() => {
473
+ if (!kitConfig.autoDetectTheme)
474
+ return;
475
+ if (modeOverride)
476
+ return;
477
+ if (typeof window === 'undefined' || !window.matchMedia)
478
+ return;
479
+ const mql = window.matchMedia('(prefers-color-scheme: dark)');
480
+ const handler = () => setOsThemeTick((n) => n + 1);
481
+ try {
482
+ mql.addEventListener('change', handler);
483
+ return () => mql.removeEventListener('change', handler);
484
+ }
485
+ catch {
486
+ // Legacy Safari (< 14) fallback.
487
+ mql.addListener(handler);
488
+ return () => mql.removeListener(handler);
489
+ }
490
+ }, [kitConfig.autoDetectTheme, modeOverride]);
491
+ // Tag the documentElement so the emitted CSS rules
492
+ // (`[data-cck-theme="dark"] { --cck-... }`) are active, and mirror
493
+ // onto `data-theme` which dapp-ui component stylesheets already key on.
494
+ useEffect(() => {
495
+ if (typeof document === 'undefined')
496
+ return;
497
+ const root = document.documentElement;
498
+ const prevCkit = root.getAttribute('data-cck-theme');
499
+ const prevTheme = root.getAttribute('data-theme');
500
+ root.setAttribute('data-cck-theme', activeMode);
501
+ // Only set `data-theme` if the host page hasn't already claimed it —
502
+ // many apps manage their own global theme toggle via that attribute.
503
+ if (!prevTheme) {
504
+ root.setAttribute('data-theme', activeMode);
505
+ }
506
+ return () => {
507
+ if (prevCkit == null)
508
+ root.removeAttribute('data-cck-theme');
509
+ else
510
+ root.setAttribute('data-cck-theme', prevCkit);
511
+ if (prevTheme == null)
512
+ root.removeAttribute('data-theme');
513
+ };
514
+ }, [activeMode]);
515
+ // Build the CSS once per token change. Both `light` and `dark` blocks
516
+ // are emitted so toggling `data-cck-theme` is an instant, style-only
517
+ // switch — no layout thrash, no style tag churn.
518
+ const themeCss = useMemo(() => buildThemeCssText(activeTokens), [activeTokens]);
519
+ const themeContextValue = useMemo(() => ({
520
+ mode: activeMode,
521
+ tokens: activeTokens,
522
+ setThemeMode: (mode) => setModeOverride(mode),
523
+ setThemeTokens: (tokens) => setTokensOverride(tokens),
524
+ }), [activeMode, activeTokens]);
525
+ useEffect(() => {
526
+ if (typeof window === 'undefined')
527
+ return;
528
+ const handler = (event) => {
529
+ if (isBenignWcError(event.reason)) {
530
+ event.preventDefault();
531
+ }
532
+ };
533
+ window.addEventListener('unhandledrejection', handler);
534
+ return () => window.removeEventListener('unhandledrejection', handler);
535
+ }, []);
536
+ const requestProviderSwap = useCallback((kind, walletId) => {
537
+ if (swapInFlight.current)
538
+ return;
539
+ swapInFlight.current = true;
540
+ setPendingConnectWalletId(walletId);
541
+ setActiveProviderState(kind);
542
+ writeActiveProvider(config.activeProviderStorageKey, kind);
543
+ // Clear the lock after this microtask so subsequent user actions
544
+ // (post-remount) can swap again if needed.
545
+ queueMicrotask(() => {
546
+ swapInFlight.current = false;
547
+ });
548
+ }, [config.activeProviderStorageKey]);
549
+ const clearPending = useCallback(() => setPendingConnectWalletId(null), []);
550
+ // Pick the wagmi config + matching hydration slice for the active side.
551
+ const wagmiConfig = activeProvider === 'cross' ? config.crossWagmiConfig : config.reownWagmiConfig;
552
+ const initial = pickInitialState(initialState, activeProvider);
553
+ if (!wagmiConfig) {
554
+ // The DApp requested an active provider that isn't configured —
555
+ // fall through to the other side rather than crash.
556
+ const fallback = activeProvider === 'cross' ? config.reownWagmiConfig : config.crossWagmiConfig;
557
+ if (!fallback) {
558
+ throw new Error('[crossx-kit] createCrossxConfig returned no wagmi Config for either side');
559
+ }
560
+ const otherKind = activeProvider === 'cross' ? 'reown' : 'cross';
561
+ // Schedule a state fix for next render.
562
+ queueMicrotask(() => setActiveProviderState(otherKind));
563
+ }
564
+ const effectiveConfig = wagmiConfig ??
565
+ (activeProvider === 'cross'
566
+ ? config.reownWagmiConfig
567
+ : config.crossWagmiConfig);
568
+ return (_jsxs(CrossConnectKitThemeContext.Provider, { value: themeContextValue, children: [_jsx("style", { "data-cross-connect-kit-theme": "", children: themeCss }), _jsx(WagmiProvider, { config: effectiveConfig, initialState: initial, children: _jsx(QueryClientProvider, { client: queryClient, children: _jsx(CrossConnectKitInner, { config: config, activeProvider: activeProvider, onRequestProviderSwap: requestProviderSwap, pendingConnectWalletId: pendingConnectWalletId, clearPending: clearPending, themeMode: activeMode, themeTokens: activeTokens, children: children }) }) }, activeProvider)] }));
569
+ }
570
+ //# sourceMappingURL=CrossConnectKitProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CrossConnectKitProvider.js","sourceRoot":"","sources":["../../src/components/CrossConnectKitProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAkB,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAMzE,OAAO,EACL,yBAAyB,EACzB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,gCAAgC,CAAC;AAMxC,OAAO,EACL,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,sBAAsB,EAAoC,MAAM,sCAAsC,CAAC;AAChH,OAAO,EACL,2BAA2B,GAE5B,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAc3D,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAEtC,MAAM,kBAAkB,GAAG,+BAA+B,CAAC;AAE3D;;;;;GAKG;AACH,SAAS,uBAAuB,CAAC,GAAY;IAC3C,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,GAAG,GAAY,GAAG,CAAC;IACvB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OAAO,GAAG,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,GAA4C,CAAC;QACzD,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAChE,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC;QAChB,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,UAAU;IACjB,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAC/C,IAAI,CAAC;QACH,OAAQ,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,kBAAkB,CAAqB,IAAI,IAAI,CAAC;IACtF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,QAAyB;IAC5C,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO;IAC1C,IAAI,CAAC;QACH,IAAI,QAAQ;YAAE,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;;YACnE,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,qFAAqF;IACvF,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CACzB,UAAkB,EAClB,QAAsB;IAEtB,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,QAAQ,CAAC;IACnD,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAClD,OAAO,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,UAAkB,EAAE,KAAmB;IAClE,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO;IAC1C,IAAI,CAAC;QACH,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,wDAAwD;IAC1D,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,EAC5B,QAAQ,EACR,MAAM,EACN,cAAc,EACd,qBAAqB,EACrB,sBAAsB,EACtB,YAAY,EACZ,SAAS,EACT,WAAW,GAUZ;IACC,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAkB,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;IAElF,MAAM,EACJ,WAAW,EACX,YAAY,EACZ,cAAc,EACd,SAAS,EAAE,eAAe,GAC3B,GAAG,UAAU,EAAE,CAAC;IACjB,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,UAAU,EAAE,CAAC;IAClD,MAAM,EAAE,eAAe,EAAE,oBAAoB,EAAE,GAAG,aAAa,EAAE,CAAC;IAElE,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;IAE9E,MAAM,aAAa,GAAG,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC;IAEjF,MAAM,aAAa,GAAG,OAAO,CAAkB,GAAG,EAAE;QAClD,IAAI,CAAC,WAAW,IAAI,CAAC,eAAe;YAAE,OAAO,IAAI,CAAC;QAClD,OAAO,oBAAoB,CAAC,iBAAiB,EAAE,eAAe,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IACjF,CAAC,EAAE,CAAC,WAAW,EAAE,eAAe,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAC,CAAC;IAElE,MAAM,gBAAgB,GAAG,OAAO,CAC9B,GAAG,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,EACpE,CAAC,iBAAiB,CAAC,CACpB,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,kBAAkB,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7D,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,iEAAiE;IACjE,uEAAuE;IACvE,sEAAsE;IACtE,sEAAsE;IACtE,sEAAsE;IACtE,6DAA6D;IAC7D,EAAE;IACF,sEAAsE;IACtE,sEAAsE;IACtE,qEAAqE;IACrE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,gBAAgB;YAAE,OAAO;QAC9B,IAAI,OAAO,QAAQ,KAAK,WAAW;YAAE,OAAO;QAC5C,gEAAgE;QAChE,kEAAkE;QAClE,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,QAAQ;iBACL,gBAAgB,CAAC,2BAA2B,CAAC;iBAC7C,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;QAClC,CAAC,EAAE,EAAE,CAAC,CAAC;QACP,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEvB,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;IAC7C,cAAc,CAAC,OAAO,GAAG,WAAW,CAAC;IAErC,+EAA+E;IAC/E,sEAAsE;IACtE,qEAAqE;IACrE,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE;YAClC,cAAc;YACd,WAAW;YACX,YAAY;YACZ,cAAc;YACd,iBAAiB,EAAE,eAAe,EAAE,EAAE;YACtC,aAAa;YACb,UAAU;SACX,CAAC,CAAC;IACL,CAAC,EAAE;QACD,cAAc;QACd,WAAW;QACX,YAAY;QACZ,cAAc;QACd,eAAe,EAAE,EAAE;QACnB,aAAa;QACb,UAAU;KACX,CAAC,CAAC;IAEH,6DAA6D;IAC7D,yEAAyE;IACzE,oEAAoE;IACpE,oEAAoE;IACpE,wCAAwC;IACxC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,WAAW,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC7C,aAAa,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;QAC7C,CAAC;QACD,gBAAgB,CAAC,OAAO,GAAG,WAAW,CAAC;IACzC,CAAC,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC;IAE5C,MAAM,aAAa,GAAG,WAAW,CAC/B,CAAC,WAAmB,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,WAAW,CAAC,EACrE,CAAC,UAAU,CAAC,CACb,CAAC;IAEF,wEAAwE;IACxE,mEAAmE;IACnE,uEAAuE;IACvE,kEAAkE;IAClE,sEAAsE;IACtE,sEAAsE;IACtE,mDAAmD;IACnD,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,aAAa,GAAG,iBAAiB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QACnE,IAAI,CAAC,aAAa;YAAE,OAAO;QAC3B,MAAM,MAAM,GAAG,aAAa,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,WAAW,EAAE,CAO3C,CAAC;gBACF,IAAI,SAAS;oBAAE,OAAO;gBACtB,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,SAAS,EAAE,WAAW,IAAI,SAAS,CAAC,CAAC;YACnE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,GAAG,CAAC,CAAC;YACzD,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QACL,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,iBAAiB,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IAE/D,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,QAAkB,EAAE,EAAE;QACtD,aAAa,CAAC,QAAQ,CAAC,CAAC;QACxB,WAAW,CAAC,QAAQ,CAAC,CAAC;IACxB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;QACnC,aAAa,CAAC,IAAI,CAAC,CAAC;QACpB,WAAW,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,uEAAuE;IACvE,uEAAuE;IACvE,qEAAqE;IACrE,6DAA6D;IAC7D,sEAAsE;IACtE,gBAAgB;IAChB,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,aAAa,EAAE,mBAAmB;YAAE,OAAO;QAChD,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,OAAO,aAAa,CAAC,mBAAmB,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE;YAC/D,IAAI,IAAI,EAAE,CAAC;gBACT,OAAO,GAAG,IAAI,CAAC;gBACf,OAAO;YACT,CAAC;YACD,IAAI,CAAC,OAAO;gBAAE,OAAO;YACrB,OAAO,GAAG,KAAK,CAAC;YAChB,iEAAiE;YACjE,2DAA2D;YAC3D,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,cAAc,CAAC,OAAO;oBAAE,OAAO;gBACnC,KAAK,CAAC,KAAK,IAAI,EAAE;oBACf,IAAI,CAAC;wBACH,MAAM,oBAAoB,EAAE,CAAC;oBAC/B,CAAC;oBAAC,MAAM,CAAC;wBACP,kCAAkC;oBACpC,CAAC;oBACD,WAAW,EAAE,CAAC;gBAChB,CAAC,CAAC,EAAE,CAAC;YACP,CAAC,EAAE,GAAG,CAAC,CAAC;QACV,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,aAAa,EAAE,SAAS,EAAE,oBAAoB,EAAE,WAAW,CAAC,CAAC,CAAC;IAElE,MAAM,UAAU,GAAG,WAAW,CAC5B,KAAK,EAAE,QAAkB,EAAE,EAAE;QAC3B,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE;YAC7C,QAAQ;YACR,cAAc;YACd,WAAW;YACX,iBAAiB,EAAE,eAAe,EAAE,EAAE;SACvC,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,mCAAmC,QAAQ,GAAG,CAAC,CAAC;YAC9D,OAAO;QACT,CAAC;QAED,IAAI,KAAK,CAAC,YAAY,KAAK,cAAc,EAAE,CAAC;YAC1C,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE;gBACjD,IAAI,EAAE,cAAc;gBACpB,EAAE,EAAE,KAAK,CAAC,YAAY;gBACtB,QAAQ;aACT,CAAC,CAAC;YACH,YAAY,CAAC,QAAQ,CAAC,CAAC;YACvB,IAAI,CAAC;gBACH,MAAM,oBAAoB,EAAE,CAAC;YAC/B,CAAC;YAAC,MAAM,CAAC;gBACP,UAAU;YACZ,CAAC;YACD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7D,qBAAqB,CAAC,KAAK,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YACpD,OAAO;QACT,CAAC;QAED,YAAY,CAAC,QAAQ,CAAC,CAAC;QAEvB,IAAI,aAAa,EAAE,aAAa,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,EAAE,QAAQ,CAAC,CAAC;gBAC1E,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;gBACzE,IAAI,MAAM,KAAK,SAAS;oBAAE,OAAO;YACnC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC,iDAAiD,QAAQ,IAAI,EAAE,GAAG,CAAC,CAAC;YACnF,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACjD,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE;YAC1C,QAAQ,EAAE,KAAK,CAAC,WAAW;YAC3B,KAAK,EAAE,OAAO,EAAE,EAAE;YAClB,YAAY,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1C,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CACX,2BAA2B,KAAK,CAAC,WAAW,0BAA0B;gBACpE,IAAI,KAAK,CAAC,YAAY,iBAAiB,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAClF,CAAC;YACF,WAAW,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9E,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;YAC1D,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE;gBAClD,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;gBACnC,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC;YAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,wCAAwC,QAAQ,IAAI,EAAE,GAAG,CAAC,CAAC;gBACzE,IAAI,CAAC;oBACH,MAAM,oBAAoB,EAAE,CAAC;gBAC/B,CAAC;gBAAC,MAAM,CAAC;oBACP,YAAY;gBACd,CAAC;YACH,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC;gBAC/B,WAAW,EAAE,CAAC;gBACd,OAAO;YACT,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,mBAAmB,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;YAC1D,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,CAAC;oBACH,MAAM,YAAY,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC9C,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO,CAAC,KAAK,CAAC,6CAA6C,QAAQ,IAAI,EAAE,GAAG,CAAC,CAAC;oBAC9E,IAAI,CAAC;wBACH,MAAM,oBAAoB,EAAE,CAAC;oBAC/B,CAAC;oBAAC,MAAM,CAAC;wBACP,YAAY;oBACd,CAAC;oBACD,WAAW,EAAE,CAAC;gBAChB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,WAAW,EAAE,CAAC;YAChB,CAAC;QACH,CAAC;IACH,CAAC,EACD;QACE,iBAAiB;QACjB,UAAU;QACV,aAAa;QACb,YAAY;QACZ,oBAAoB;QACpB,YAAY;QACZ,WAAW;QACX,aAAa;QACb,cAAc;QACd,SAAS;QACT,qBAAqB;KACtB,CACF,CAAC;IAEF,+DAA+D;IAC/D,iEAAiE;IACjE,gEAAgE;IAChE,UAAU;IACV,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,sBAAsB;YAAE,OAAO;QACpC,MAAM,MAAM,GAAG,sBAAsB,CAAC;QACtC,YAAY,EAAE,CAAC;QACf,KAAK,UAAU,CAAC,MAAM,CAAC,CAAC;QACxB,uEAAuE;QACvE,mEAAmE;QACnE,uCAAuC;QACvC,uDAAuD;IACzD,CAAC,EAAE,CAAC,sBAAsB,EAAE,cAAc,CAAC,CAAC,CAAC;IAE7C,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAC3C,MAAM,aAAa,GAAG,iBAAiB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QACnE,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,UAAU,CAAC,gBAAgB,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,EAAE,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC,CAAC;IAEpC,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACxC,IAAI,CAAC;YACH,MAAM,oBAAoB,EAAE,CAAC;QAC/B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,GAAG,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,aAAa,EAAE,QAAQ,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,aAAa,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;YAC9C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,GAAG,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QAED,yBAAyB,EAAE,CAAC;QAC5B,WAAW,EAAE,CAAC;IAChB,CAAC,EAAE,CAAC,oBAAoB,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IAElE,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAC1C,MAAM,aAAa,GAAG,iBAAiB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QACnE,IAAI,CAAC,aAAa;YAAE,OAAO,IAAI,CAAC;QAEhC,MAAM,MAAM,GAAG,aAAa,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAEzB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,WAAW,EAAE,CAQ3C,CAAC;YACF,MAAM,GAAG,GAAG,QAAQ,EAAE,GAAG,CAAC;YAC1B,IAAI,CAAC,GAAG,EAAE,YAAY;gBAAE,OAAO,IAAI,CAAC;YAEpC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,IAAI,SAAS,CAAC,CAAC;YACvE,IAAI,MAAM,EAAE,OAAO,IAAI,QAAQ,CAAC,qBAAqB,EAAE,CAAC;gBACtD,QAAQ,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;YACnD,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,EAAE,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC,CAAC;IAEvC,MAAM,YAAY,GAAG,OAAO,CAC1B,GAAG,EAAE,CAAC,CAAC;QACL,SAAS;QACT,iBAAiB;QACjB,gBAAgB;QAChB,OAAO,EAAE,UAAU;QACnB,aAAa;QACb,UAAU;QACV,YAAY;QACZ,aAAa;QACb,gBAAgB,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;QACjD,iBAAiB,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC;QACnD,gBAAgB;KACjB,CAAC,EACF;QACE,SAAS;QACT,iBAAiB;QACjB,gBAAgB;QAChB,UAAU;QACV,aAAa;QACb,UAAU;QACV,YAAY;QACZ,aAAa;QACb,gBAAgB;KACjB,CACF,CAAC;IAEF,OAAO,CACL,MAAC,sBAAsB,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,aACjD,QAAQ,EACT,KAAC,iBAAiB,IAChB,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,EACzC,QAAQ,EAAE,UAAU,GACpB,IAC8B,CACnC,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,wBAAwB,GAAsB;IAClD,mDAAmD;IACnD,kCAAkC;IAClC,mEAAmE;IACnE,gEAAgE;IAChE,2DAA2D;IAC3D,mBAAmB;CACpB,CAAC;AAEF,SAAS,eAAe,CAAC,MAAe;IACtC,MAAM,GAAG,GAAI,MAA2C,EAAE,OAAO,CAAC;IAClE,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC1C,OAAO,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAgC;IACtG,MAAM,CAAC,cAAc,EAAE,sBAAsB,CAAC,GAAG,QAAQ,CAAe,GAAG,EAAE,CAC3E,kBAAkB,CAAC,MAAM,CAAC,wBAAwB,EAAE,MAAM,CAAC,eAAe,CAAC,CAC5E,CAAC;IACF,MAAM,CAAC,sBAAsB,EAAE,yBAAyB,CAAC,GAAG,QAAQ,CAAkB,IAAI,CAAC,CAAC;IAC5F,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAEnC,qEAAqE;IACrE,wEAAwE;IACxE,sEAAsE;IACtE,mEAAmE;IACnE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IAC7B,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAmB,IAAI,CAAC,CAAC;IACzE,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAqB,IAAI,CAAC,CAAC;IAC/E,uEAAuE;IACvE,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAElD,MAAM,UAAU,GAAG,OAAO,CACxB,GAAG,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,eAAe,CAAC;IAClE,kEAAkE;IAClE,6DAA6D;IAC7D,uDAAuD;IACvD,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,eAAe,EAAE,WAAW,CAAC,CAC1D,CAAC;IACF,MAAM,UAAU,GAAc,YAAY,IAAI,UAAU,CAAC;IACzD,MAAM,YAAY,GAChB,cAAc,IAAI,SAAS,CAAC,WAAW,CAAC;IAE1C,oEAAoE;IACpE,kDAAkD;IAClD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,SAAS,CAAC,eAAe;YAAE,OAAO;QACvC,IAAI,YAAY;YAAE,OAAO;QACzB,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,UAAU;YAAE,OAAO;QAChE,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC;YACH,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACxC,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC1D,CAAC;QAAC,MAAM,CAAC;YACP,iCAAiC;YACjC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACzB,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC;IAE9C,mDAAmD;IACnD,mEAAmE;IACnE,wEAAwE;IACxE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,QAAQ,KAAK,WAAW;YAAE,OAAO;QAC5C,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;QAClD,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;QAChD,qEAAqE;QACrE,qEAAqE;QACrE,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,GAAG,EAAE;YACV,IAAI,QAAQ,IAAI,IAAI;gBAAE,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;;gBACxD,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;YACnD,IAAI,SAAS,IAAI,IAAI;gBAAE,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QAC5D,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,sEAAsE;IACtE,qEAAqE;IACrE,iDAAiD;IACjD,MAAM,QAAQ,GAAG,OAAO,CACtB,GAAG,EAAE,CAAC,iBAAiB,CAAC,YAAY,CAAC,EACrC,CAAC,YAAY,CAAC,CACf,CAAC;IAEF,MAAM,iBAAiB,GAAG,OAAO,CAC/B,GAAG,EAAE,CAAC,CAAC;QACL,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,YAAY;QACpB,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;QAC7C,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC;KACtD,CAAC,EACF,CAAC,UAAU,EAAE,YAAY,CAAC,CAC3B,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO;QAC1C,MAAM,OAAO,GAAG,CAAC,KAA4B,EAAE,EAAE;YAC/C,IAAI,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;gBAClC,KAAK,CAAC,cAAc,EAAE,CAAC;YACzB,CAAC;QACH,CAAC,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;QACvD,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,mBAAmB,GAAG,WAAW,CACrC,CAAC,IAAkB,EAAE,QAAkB,EAAE,EAAE;QACzC,IAAI,YAAY,CAAC,OAAO;YAAE,OAAO;QACjC,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC;QAC5B,yBAAyB,CAAC,QAAQ,CAAC,CAAC;QACpC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC7B,mBAAmB,CAAC,MAAM,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;QAC3D,iEAAiE;QACjE,2CAA2C;QAC3C,cAAc,CAAC,GAAG,EAAE;YAClB,YAAY,CAAC,OAAO,GAAG,KAAK,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC,EACD,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAClC,CAAC;IAEF,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAE5E,wEAAwE;IACxE,MAAM,WAAW,GACf,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC;IACjF,MAAM,OAAO,GAAG,gBAAgB,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IAE/D,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,gEAAgE;QAChE,oDAAoD;QACpD,MAAM,QAAQ,GACZ,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC;QACjF,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CACb,0EAA0E,CAC3E,CAAC;QACJ,CAAC;QACD,MAAM,SAAS,GAAiB,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QAC/E,wCAAwC;QACxC,cAAc,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,eAAe,GACnB,WAAW;QACX,CAAC,cAAc,KAAK,OAAO;YACzB,CAAC,CAAE,MAAM,CAAC,gBAAgE;YAC1E,CAAC,CAAE,MAAM,CAAC,gBAAgE,CAAC,CAAC;IAEhF,OAAO,CACL,MAAC,2BAA2B,CAAC,QAAQ,IAAC,KAAK,EAAE,iBAAiB,aAQ5D,gDAAoC,EAAE,YAAE,QAAQ,GAAS,EAMzD,KAAC,aAAa,IAEZ,MAAM,EAAE,eAAe,EACvB,YAAY,EAAE,OAAO,YAErB,KAAC,mBAAmB,IAAC,MAAM,EAAE,WAAW,YACtC,KAAC,oBAAoB,IACnB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,cAAc,EAC9B,qBAAqB,EAAE,mBAAmB,EAC1C,sBAAsB,EAAE,sBAAsB,EAC9C,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,UAAU,EACrB,WAAW,EAAE,YAAY,YAExB,QAAQ,GACY,GACH,IAhBjB,cAAc,CAiBL,IACqB,CACxC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { WalletId } from '@nexus-cross/connect-kit-core';
2
+ export interface OtherWalletsModalProps {
3
+ open: boolean;
4
+ onClose: () => void;
5
+ onSelect: (walletId: WalletId) => Promise<void>;
6
+ /** Override the modal title. Default: "Connect Wallet". */
7
+ title?: string;
8
+ /** Override the modal description. */
9
+ description?: string;
10
+ /** Override the troubleshooting tip list entirely. */
11
+ troubleshootingTips?: readonly string[];
12
+ }
13
+ /**
14
+ * Wallet selector modal. Port of posa's `ConnectWalletModal` backed by
15
+ * `ConnectorRegistry` — wallet order, icons, and descriptive copy match
16
+ * posa; DApps can override via `walletGuides` passed to
17
+ * `createCrossxConfig` and via modal props.
18
+ */
19
+ export declare function OtherWalletsModal({ open, onClose, onSelect, title, description, troubleshootingTips, }: OtherWalletsModalProps): import("react/jsx-runtime").JSX.Element | null;
20
+ //# sourceMappingURL=OtherWalletsModal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OtherWalletsModal.d.ts","sourceRoot":"","sources":["../../src/components/OtherWalletsModal.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAG9D,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sDAAsD;IACtD,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAYD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,KAAwB,EACxB,WAAiC,EACjC,mBAAkD,GACnD,EAAE,sBAAsB,kDAkKxB"}