signer-test-sdk-react 0.0.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 (70) hide show
  1. package/README.md +114 -0
  2. package/dist/src/AbstraxnProvider.d.ts +20 -0
  3. package/dist/src/AbstraxnProvider.js +2213 -0
  4. package/dist/src/AbstraxnProvider.js.map +1 -0
  5. package/dist/src/ConnectButton.css +217 -0
  6. package/dist/src/ConnectButton.d.ts +71 -0
  7. package/dist/src/ConnectButton.js +102 -0
  8. package/dist/src/ConnectButton.js.map +1 -0
  9. package/dist/src/ExternalWalletButtons.css +319 -0
  10. package/dist/src/ExternalWalletButtons.d.ts +56 -0
  11. package/dist/src/ExternalWalletButtons.js +245 -0
  12. package/dist/src/ExternalWalletButtons.js.map +1 -0
  13. package/dist/src/OnboardingUI.d.ts +63 -0
  14. package/dist/src/OnboardingUI.js +66 -0
  15. package/dist/src/OnboardingUI.js.map +1 -0
  16. package/dist/src/WalletModal.css +549 -0
  17. package/dist/src/WalletModal.d.ts +6 -0
  18. package/dist/src/WalletModal.js +89 -0
  19. package/dist/src/WalletModal.js.map +1 -0
  20. package/dist/src/components/OnboardingUI/OnboardingUI.css +727 -0
  21. package/dist/src/components/OnboardingUI/OnboardingUIReact.d.ts +15 -0
  22. package/dist/src/components/OnboardingUI/OnboardingUIReact.js +65 -0
  23. package/dist/src/components/OnboardingUI/OnboardingUIReact.js.map +1 -0
  24. package/dist/src/components/OnboardingUI/OnboardingUIWeb.d.ts +257 -0
  25. package/dist/src/components/OnboardingUI/OnboardingUIWeb.js +3454 -0
  26. package/dist/src/components/OnboardingUI/OnboardingUIWeb.js.map +1 -0
  27. package/dist/src/components/OnboardingUI/components/EmailForm.d.ts +16 -0
  28. package/dist/src/components/OnboardingUI/components/EmailForm.js +19 -0
  29. package/dist/src/components/OnboardingUI/components/EmailForm.js.map +1 -0
  30. package/dist/src/components/OnboardingUI/components/Modal.d.ts +15 -0
  31. package/dist/src/components/OnboardingUI/components/Modal.js +68 -0
  32. package/dist/src/components/OnboardingUI/components/Modal.js.map +1 -0
  33. package/dist/src/components/OnboardingUI/components/OtpForm.d.ts +19 -0
  34. package/dist/src/components/OnboardingUI/components/OtpForm.js +58 -0
  35. package/dist/src/components/OnboardingUI/components/OtpForm.js.map +1 -0
  36. package/dist/src/components/OnboardingUI/components/PasskeyButton.d.ts +14 -0
  37. package/dist/src/components/OnboardingUI/components/PasskeyButton.js +22 -0
  38. package/dist/src/components/OnboardingUI/components/PasskeyButton.js.map +1 -0
  39. package/dist/src/components/OnboardingUI/components/SocialButtons.d.ts +15 -0
  40. package/dist/src/components/OnboardingUI/components/SocialButtons.js +15 -0
  41. package/dist/src/components/OnboardingUI/components/SocialButtons.js.map +1 -0
  42. package/dist/src/components/OnboardingUI/components/index.d.ts +13 -0
  43. package/dist/src/components/OnboardingUI/components/index.js +9 -0
  44. package/dist/src/components/OnboardingUI/components/index.js.map +1 -0
  45. package/dist/src/components/OnboardingUI/hooks/index.d.ts +7 -0
  46. package/dist/src/components/OnboardingUI/hooks/index.js +6 -0
  47. package/dist/src/components/OnboardingUI/hooks/index.js.map +1 -0
  48. package/dist/src/components/OnboardingUI/hooks/useAuthMethods.d.ts +11 -0
  49. package/dist/src/components/OnboardingUI/hooks/useAuthMethods.js +146 -0
  50. package/dist/src/components/OnboardingUI/hooks/useAuthMethods.js.map +1 -0
  51. package/dist/src/components/OnboardingUI/hooks/useOnboarding.d.ts +21 -0
  52. package/dist/src/components/OnboardingUI/hooks/useOnboarding.js +135 -0
  53. package/dist/src/components/OnboardingUI/hooks/useOnboarding.js.map +1 -0
  54. package/dist/src/components/OnboardingUI/index.d.ts +12 -0
  55. package/dist/src/components/OnboardingUI/index.js +15 -0
  56. package/dist/src/components/OnboardingUI/index.js.map +1 -0
  57. package/dist/src/hooks.d.ts +204 -0
  58. package/dist/src/hooks.js +394 -0
  59. package/dist/src/hooks.js.map +1 -0
  60. package/dist/src/index.d.ts +14 -0
  61. package/dist/src/index.js +11 -0
  62. package/dist/src/index.js.map +1 -0
  63. package/dist/src/types.d.ts +181 -0
  64. package/dist/src/types.js +2 -0
  65. package/dist/src/types.js.map +1 -0
  66. package/dist/src/wagmiConfig.d.ts +147 -0
  67. package/dist/src/wagmiConfig.js +81 -0
  68. package/dist/src/wagmiConfig.js.map +1 -0
  69. package/dist/tsconfig.tsbuildinfo +1 -0
  70. package/package.json +68 -0
@@ -0,0 +1,63 @@
1
+ import type { OnboardingUIConfig } from 'signer-test-sdk-core';
2
+ export interface OnboardingUIComponentProps {
3
+ /**
4
+ * Configuration for the onboarding UI
5
+ */
6
+ config?: Partial<OnboardingUIConfig>;
7
+ /**
8
+ * Custom container element or selector
9
+ * If not provided, component will render inline
10
+ * @deprecated - Not used in React implementation, kept for backward compatibility
11
+ */
12
+ container?: HTMLElement | string;
13
+ /**
14
+ * Show as modal (overlay)
15
+ * @default false (renders inline)
16
+ */
17
+ modal?: boolean;
18
+ }
19
+ export interface OnboardingUIComponentRef {
20
+ /**
21
+ * Show the onboarding UI
22
+ */
23
+ show: () => void;
24
+ /**
25
+ * Hide the onboarding UI
26
+ */
27
+ hide: () => void;
28
+ /**
29
+ * Reset to login form
30
+ */
31
+ reset: () => void;
32
+ }
33
+ /**
34
+ * OnboardingUI Component
35
+ * Pure React implementation - no DOM manipulation
36
+ *
37
+ * Automatically uses config from AbstraxnProvider if no config prop is provided.
38
+ * Component config prop will override provider config for specific properties.
39
+ *
40
+ * @example
41
+ * ```tsx
42
+ * import { AbstraxnProvider, OnboardingUI } from '@abstraxn/signer-react';
43
+ *
44
+ * function App() {
45
+ * return (
46
+ * <AbstraxnProvider
47
+ * config={{
48
+ * apiKey: 'your-api-key',
49
+ * ui: {
50
+ * theme: 'light',
51
+ * logo: 'https://example.com/logo.png',
52
+ * onboardTitle: 'Sign in',
53
+ * }
54
+ * }}
55
+ * >
56
+ * <OnboardingUI />
57
+ * <OnboardingUI config={{ theme: 'dark' }} modal />
58
+ * </AbstraxnProvider>
59
+ * );
60
+ * }
61
+ * ```
62
+ */
63
+ export declare const OnboardingUIComponent: import("react").ForwardRefExoticComponent<OnboardingUIComponentProps & import("react").RefAttributes<OnboardingUIComponentRef>>;
@@ -0,0 +1,66 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * OnboardingUI Component - React wrapper
4
+ * Now uses Pure React components instead of vanilla JS DOM manipulation
5
+ */
6
+ import { forwardRef, useImperativeHandle } from 'react';
7
+ import { OnboardingUIReact } from './components/OnboardingUI/OnboardingUIReact';
8
+ import { useAbstraxnWallet } from './hooks';
9
+ /**
10
+ * OnboardingUI Component
11
+ * Pure React implementation - no DOM manipulation
12
+ *
13
+ * Automatically uses config from AbstraxnProvider if no config prop is provided.
14
+ * Component config prop will override provider config for specific properties.
15
+ *
16
+ * @example
17
+ * ```tsx
18
+ * import { AbstraxnProvider, OnboardingUI } from '@abstraxn/signer-react';
19
+ *
20
+ * function App() {
21
+ * return (
22
+ * <AbstraxnProvider
23
+ * config={{
24
+ * apiKey: 'your-api-key',
25
+ * ui: {
26
+ * theme: 'light',
27
+ * logo: 'https://example.com/logo.png',
28
+ * onboardTitle: 'Sign in',
29
+ * }
30
+ * }}
31
+ * >
32
+ * <OnboardingUI />
33
+ * <OnboardingUI config={{ theme: 'dark' }} modal />
34
+ * </AbstraxnProvider>
35
+ * );
36
+ * }
37
+ * ```
38
+ */
39
+ export const OnboardingUIComponent = forwardRef(({ config, modal = false }, ref) => {
40
+ const contextValue = useAbstraxnWallet();
41
+ const { uiConfig: providerUIConfig, availableConnectors } = contextValue;
42
+ const externalWalletsEnabled = availableConnectors && availableConnectors.length > 0;
43
+ // Merge provider config with component config (component config takes precedence)
44
+ const mergedConfig = {
45
+ ...providerUIConfig,
46
+ ...config, // Component config overrides provider config
47
+ };
48
+ // Expose methods via ref (for backward compatibility)
49
+ useImperativeHandle(ref, () => ({
50
+ show: () => {
51
+ // Modal is controlled by the modal prop, so this is a no-op
52
+ // In the future, we could add state management here
53
+ },
54
+ hide: () => {
55
+ // Modal is controlled by the modal prop, so this is a no-op
56
+ // In the future, we could add state management here
57
+ },
58
+ reset: () => {
59
+ // Reset is handled internally by the component
60
+ // In the future, we could expose this via a ref
61
+ },
62
+ }));
63
+ return (_jsx(OnboardingUIReact, { config: mergedConfig, modal: modal, externalWalletsEnabled: externalWalletsEnabled, availableConnectors: availableConnectors || [] }));
64
+ });
65
+ OnboardingUIComponent.displayName = 'OnboardingUIComponent';
66
+ //# sourceMappingURL=OnboardingUI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OnboardingUI.js","sourceRoot":"","sources":["../../src/OnboardingUI.tsx"],"names":[],"mappings":";AAAA;;;GAGG;AACH,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAwC5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,UAAU,CAC7C,CAAC,EAAE,MAAM,EAAE,KAAK,GAAG,KAAK,EAA8B,EAAE,GAAG,EAAE,EAAE;IAC7D,MAAM,YAAY,GAAG,iBAAiB,EAAE,CAAC;IACzC,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,GAAG,YAAY,CAAC;IACzE,MAAM,sBAAsB,GAAG,mBAAmB,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC;IAErF,kFAAkF;IAClF,MAAM,YAAY,GAAgC;QAChD,GAAG,gBAAgB;QACnB,GAAG,MAAM,EAAE,6CAA6C;KACzD,CAAC;IAEF,sDAAsD;IACtD,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,GAAG,EAAE;YACT,4DAA4D;YAC5D,oDAAoD;QACtD,CAAC;QACD,IAAI,EAAE,GAAG,EAAE;YACT,4DAA4D;YAC5D,oDAAoD;QACtD,CAAC;QACD,KAAK,EAAE,GAAG,EAAE;YACV,+CAA+C;YAC/C,gDAAgD;QAClD,CAAC;KACF,CAAC,CAAC,CAAC;IAEJ,OAAO,CACL,KAAC,iBAAiB,IAChB,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,KAAK,EACZ,sBAAsB,EAAE,sBAAsB,EAC9C,mBAAmB,EAAE,mBAAmB,IAAI,EAAE,GAC9C,CACH,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,qBAAqB,CAAC,WAAW,GAAG,uBAAuB,CAAC"}
@@ -0,0 +1,549 @@
1
+ /* Wallet Modal Styles */
2
+ .wallet-modal-overlay {
3
+ position: fixed;
4
+ top: 0;
5
+ left: 0;
6
+ right: 0;
7
+ bottom: 0;
8
+ display: flex;
9
+ align-items: center;
10
+ justify-content: center;
11
+ z-index: 10000;
12
+ animation: fadeIn 0.2s ease-out;
13
+ }
14
+
15
+ /* Dark Theme (Default) */
16
+ .wallet-modal-overlay.wallet-modal-theme-dark {
17
+ background: rgba(0, 0, 0, 0.5);
18
+ }
19
+
20
+ /* Light Theme */
21
+ .wallet-modal-overlay.wallet-modal-theme-light {
22
+ background: rgba(0, 0, 0, 0.3);
23
+ }
24
+
25
+ .wallet-modal-content {
26
+ border-radius: 16px;
27
+ width: 90%;
28
+ max-width: 400px;
29
+ max-height: 90vh;
30
+ overflow-y: auto;
31
+ padding: 24px;
32
+ animation: slideUp 0.3s ease-out;
33
+ display: flex;
34
+ flex-direction: column;
35
+ gap: 20px;
36
+ }
37
+
38
+ /* Dark Theme Content */
39
+ .wallet-modal-content.wallet-modal-theme-dark {
40
+ background: #1a1a1a;
41
+ box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.5), 0 10px 10px -5px rgba(0, 0, 0, 0.2);
42
+ }
43
+
44
+ /* Light Theme Content */
45
+ .wallet-modal-content.wallet-modal-theme-light {
46
+ background: #ffffff;
47
+ box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
48
+ border: 1px solid #e5e7eb;
49
+ }
50
+
51
+ @keyframes fadeIn {
52
+ from {
53
+ opacity: 0;
54
+ }
55
+ to {
56
+ opacity: 1;
57
+ }
58
+ }
59
+
60
+ @keyframes slideUp {
61
+ from {
62
+ transform: translateY(20px);
63
+ opacity: 0;
64
+ }
65
+ to {
66
+ transform: translateY(0);
67
+ opacity: 1;
68
+ }
69
+ }
70
+
71
+ /* Header */
72
+ .wallet-modal-header {
73
+ display: flex;
74
+ align-items: flex-start;
75
+ justify-content: space-between;
76
+ margin-bottom: 8px;
77
+ }
78
+
79
+ .wallet-modal-user-info {
80
+ display: flex;
81
+ align-items: center;
82
+ gap: 12px;
83
+ flex: 1;
84
+ }
85
+
86
+ .wallet-modal-avatar {
87
+ width: 48px;
88
+ height: 48px;
89
+ border-radius: 50%;
90
+ background: linear-gradient(135deg, #9333ea 0%, #7e22ce 100%);
91
+ display: flex;
92
+ align-items: center;
93
+ justify-content: center;
94
+ position: relative;
95
+ flex-shrink: 0;
96
+ }
97
+
98
+ .wallet-modal-avatar-icon {
99
+ width: 32px;
100
+ height: 32px;
101
+ background: white;
102
+ border-radius: 50%;
103
+ display: flex;
104
+ align-items: center;
105
+ justify-content: center;
106
+ position: absolute;
107
+ bottom: -2px;
108
+ right: -2px;
109
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
110
+ }
111
+
112
+ .wallet-modal-user-details {
113
+ display: flex;
114
+ flex-direction: column;
115
+ gap: 4px;
116
+ flex: 1;
117
+ min-width: 0;
118
+ }
119
+
120
+ .wallet-modal-address {
121
+ font-size: 16px;
122
+ font-weight: 600;
123
+ display: flex;
124
+ align-items: center;
125
+ gap: 8px;
126
+ cursor: pointer;
127
+ transition: opacity 0.2s;
128
+ font-family: 'SF Mono', 'Monaco', 'Inconsolata', 'Roboto Mono', 'Courier New', monospace;
129
+ }
130
+
131
+ .wallet-modal-theme-dark .wallet-modal-address {
132
+ color: #ffffff;
133
+ }
134
+
135
+ .wallet-modal-theme-light .wallet-modal-address {
136
+ color: #111827;
137
+ }
138
+
139
+ .wallet-modal-address:hover {
140
+ opacity: 0.8;
141
+ }
142
+
143
+ .wallet-modal-copy-icon {
144
+ flex-shrink: 0;
145
+ transition: color 0.2s;
146
+ }
147
+
148
+ .wallet-modal-theme-dark .wallet-modal-copy-icon {
149
+ color: #9ca3af;
150
+ }
151
+
152
+ .wallet-modal-theme-light .wallet-modal-copy-icon {
153
+ color: #6b7280;
154
+ }
155
+
156
+ .wallet-modal-theme-dark .wallet-modal-address:hover .wallet-modal-copy-icon {
157
+ color: #ffffff;
158
+ }
159
+
160
+ .wallet-modal-theme-light .wallet-modal-address:hover .wallet-modal-copy-icon {
161
+ color: #111827;
162
+ }
163
+
164
+ .wallet-modal-email {
165
+ font-size: 14px;
166
+ overflow: hidden;
167
+ text-overflow: ellipsis;
168
+ white-space: nowrap;
169
+ }
170
+
171
+ .wallet-modal-theme-dark .wallet-modal-email {
172
+ color: #9ca3af;
173
+ }
174
+
175
+ .wallet-modal-theme-light .wallet-modal-email {
176
+ color: #6b7280;
177
+ }
178
+
179
+ .wallet-modal-close {
180
+ background: transparent;
181
+ border: none;
182
+ cursor: pointer;
183
+ padding: 8px;
184
+ display: flex;
185
+ align-items: center;
186
+ justify-content: center;
187
+ border-radius: 8px;
188
+ transition: all 0.2s;
189
+ flex-shrink: 0;
190
+ width: 40px;
191
+ height: 40px;
192
+ }
193
+
194
+ .wallet-modal-theme-dark .wallet-modal-close {
195
+ color: #9ca3af;
196
+ }
197
+
198
+ .wallet-modal-theme-light .wallet-modal-close {
199
+ color: #6b7280;
200
+ }
201
+
202
+ .wallet-modal-theme-dark .wallet-modal-close:hover {
203
+ background: #2a2a2a;
204
+ color: #ffffff;
205
+ }
206
+
207
+ .wallet-modal-theme-light .wallet-modal-close:hover {
208
+ background: #f3f4f6;
209
+ color: #111827;
210
+ }
211
+
212
+ /* Action Buttons */
213
+ .wallet-modal-actions {
214
+ display: grid;
215
+ grid-template-columns: repeat(3, 1fr);
216
+ gap: 12px;
217
+ margin-top: 8px;
218
+ }
219
+
220
+ .wallet-modal-action-btn {
221
+ border-radius: 12px;
222
+ padding: 16px;
223
+ display: flex;
224
+ flex-direction: column;
225
+ align-items: center;
226
+ gap: 8px;
227
+ cursor: pointer;
228
+ transition: all 0.2s;
229
+ font-size: 14px;
230
+ font-weight: 500;
231
+ border: 1px solid;
232
+ }
233
+
234
+ .wallet-modal-theme-dark .wallet-modal-action-btn {
235
+ background: #2a2a2a;
236
+ border-color: #3a3a3a;
237
+ color: #ffffff;
238
+ }
239
+
240
+ .wallet-modal-theme-light .wallet-modal-action-btn {
241
+ background: #f9fafb;
242
+ border-color: #e5e7eb;
243
+ color: #111827;
244
+ }
245
+
246
+ .wallet-modal-theme-dark .wallet-modal-action-btn:hover {
247
+ background: #3a3a3a;
248
+ border-color: #4a4a4a;
249
+ transform: translateY(-2px);
250
+ }
251
+
252
+ .wallet-modal-theme-light .wallet-modal-action-btn:hover {
253
+ background: #f3f4f6;
254
+ border-color: #d1d5db;
255
+ transform: translateY(-2px);
256
+ }
257
+
258
+ .wallet-modal-action-btn svg {
259
+ color: #9333ea;
260
+ }
261
+
262
+ /* Asset Display */
263
+ .wallet-modal-asset {
264
+ border-radius: 12px;
265
+ padding: 16px;
266
+ display: flex;
267
+ align-items: center;
268
+ justify-content: space-between;
269
+ cursor: pointer;
270
+ transition: all 0.2s;
271
+ margin-top: 8px;
272
+ border: 1px solid;
273
+ }
274
+
275
+ .wallet-modal-theme-dark .wallet-modal-asset {
276
+ background: #2a2a2a;
277
+ border-color: #3a3a3a;
278
+ }
279
+
280
+ .wallet-modal-theme-light .wallet-modal-asset {
281
+ background: #f9fafb;
282
+ border-color: #e5e7eb;
283
+ }
284
+
285
+ .wallet-modal-theme-dark .wallet-modal-asset:hover {
286
+ background: #3a3a3a;
287
+ border-color: #4a4a4a;
288
+ }
289
+
290
+ .wallet-modal-theme-light .wallet-modal-asset:hover {
291
+ background: #f3f4f6;
292
+ border-color: #d1d5db;
293
+ }
294
+
295
+ .wallet-modal-asset-info {
296
+ display: flex;
297
+ align-items: center;
298
+ gap: 12px;
299
+ flex: 1;
300
+ }
301
+
302
+ .wallet-modal-asset-icon {
303
+ width: 40px;
304
+ height: 40px;
305
+ border-radius: 50%;
306
+ background: linear-gradient(135deg, #627eea 0%, #4c6ef5 100%);
307
+ display: flex;
308
+ align-items: center;
309
+ justify-content: center;
310
+ color: white;
311
+ flex-shrink: 0;
312
+ }
313
+
314
+ .wallet-modal-asset-details {
315
+ display: flex;
316
+ flex-direction: column;
317
+ gap: 4px;
318
+ flex: 1;
319
+ min-width: 0;
320
+ }
321
+
322
+ .wallet-modal-asset-name {
323
+ font-size: 16px;
324
+ font-weight: 600;
325
+ }
326
+
327
+ .wallet-modal-theme-dark .wallet-modal-asset-name {
328
+ color: #ffffff;
329
+ }
330
+
331
+ .wallet-modal-theme-light .wallet-modal-asset-name {
332
+ color: #111827;
333
+ }
334
+
335
+ .wallet-modal-asset-balance {
336
+ font-size: 14px;
337
+ display: flex;
338
+ align-items: center;
339
+ gap: 8px;
340
+ }
341
+
342
+ .wallet-modal-theme-dark .wallet-modal-asset-balance {
343
+ color: #9ca3af;
344
+ }
345
+
346
+ .wallet-modal-theme-light .wallet-modal-asset-balance {
347
+ color: #6b7280;
348
+ }
349
+
350
+ .wallet-modal-asset-status {
351
+ width: 8px;
352
+ height: 8px;
353
+ border-radius: 50%;
354
+ background: #10b981;
355
+ flex-shrink: 0;
356
+ }
357
+
358
+ .wallet-modal-asset-arrow {
359
+ flex-shrink: 0;
360
+ }
361
+
362
+ .wallet-modal-theme-dark .wallet-modal-asset-arrow {
363
+ color: #9ca3af;
364
+ }
365
+
366
+ .wallet-modal-theme-light .wallet-modal-asset-arrow {
367
+ color: #6b7280;
368
+ }
369
+
370
+ /* Navigation Menu */
371
+ .wallet-modal-menu {
372
+ display: flex;
373
+ flex-direction: column;
374
+ gap: 4px;
375
+ margin-top: 8px;
376
+ }
377
+
378
+ .wallet-modal-menu-item {
379
+ background: transparent;
380
+ border: none;
381
+ border-radius: 12px;
382
+ padding: 14px 16px;
383
+ display: flex;
384
+ align-items: center;
385
+ gap: 12px;
386
+ cursor: pointer;
387
+ transition: all 0.2s;
388
+ font-size: 15px;
389
+ font-weight: 500;
390
+ text-align: left;
391
+ width: 100%;
392
+ }
393
+
394
+ .wallet-modal-theme-dark .wallet-modal-menu-item {
395
+ color: #ffffff;
396
+ }
397
+
398
+ .wallet-modal-theme-light .wallet-modal-menu-item {
399
+ color: #111827;
400
+ }
401
+
402
+ .wallet-modal-theme-dark .wallet-modal-menu-item:hover {
403
+ background: #2a2a2a;
404
+ }
405
+
406
+ .wallet-modal-theme-light .wallet-modal-menu-item:hover {
407
+ background: #f3f4f6;
408
+ }
409
+
410
+ .wallet-modal-menu-item svg {
411
+ flex-shrink: 0;
412
+ }
413
+
414
+ .wallet-modal-theme-dark .wallet-modal-menu-item svg {
415
+ color: #9ca3af;
416
+ }
417
+
418
+ .wallet-modal-theme-light .wallet-modal-menu-item svg {
419
+ color: #6b7280;
420
+ }
421
+
422
+ .wallet-modal-menu-item:hover svg {
423
+ color: #9333ea;
424
+ }
425
+
426
+ /* Divider */
427
+ .wallet-modal-divider {
428
+ height: 1px;
429
+ margin: 8px 0;
430
+ }
431
+
432
+ .wallet-modal-theme-dark .wallet-modal-divider {
433
+ background: #3a3a3a;
434
+ }
435
+
436
+ .wallet-modal-theme-light .wallet-modal-divider {
437
+ background: #e5e7eb;
438
+ }
439
+
440
+ /* External Wallets Section */
441
+ .wallet-modal-external-wallets {
442
+ display: flex;
443
+ flex-direction: column;
444
+ gap: 12px;
445
+ margin-top: 8px;
446
+ }
447
+
448
+ .wallet-modal-external-wallets-label {
449
+ font-size: 14px;
450
+ font-weight: 500;
451
+ margin-bottom: 4px;
452
+ }
453
+
454
+ .wallet-modal-theme-dark .wallet-modal-external-wallets-label {
455
+ color: #9ca3af;
456
+ }
457
+
458
+ .wallet-modal-theme-light .wallet-modal-external-wallets-label {
459
+ color: #6b7280;
460
+ }
461
+
462
+ /* Disconnect Button */
463
+ .wallet-modal-disconnect {
464
+ background: transparent;
465
+ border-radius: 12px;
466
+ padding: 14px 16px;
467
+ display: flex;
468
+ align-items: center;
469
+ gap: 12px;
470
+ color: #ef4444;
471
+ cursor: pointer;
472
+ transition: all 0.2s;
473
+ font-size: 15px;
474
+ font-weight: 500;
475
+ width: 100%;
476
+ margin-top: 8px;
477
+ border: 1px solid;
478
+ }
479
+
480
+ .wallet-modal-theme-dark .wallet-modal-disconnect {
481
+ border-color: #3a3a3a;
482
+ }
483
+
484
+ .wallet-modal-theme-light .wallet-modal-disconnect {
485
+ border-color: #e5e7eb;
486
+ }
487
+
488
+ .wallet-modal-theme-dark .wallet-modal-disconnect:hover {
489
+ background: #2a1a1a;
490
+ border-color: #ef4444;
491
+ }
492
+
493
+ .wallet-modal-theme-light .wallet-modal-disconnect:hover {
494
+ background: #fef2f2;
495
+ border-color: #ef4444;
496
+ }
497
+
498
+ .wallet-modal-disconnect svg {
499
+ flex-shrink: 0;
500
+ }
501
+
502
+ /* Scrollbar Styling */
503
+ .wallet-modal-content::-webkit-scrollbar {
504
+ width: 8px;
505
+ }
506
+
507
+ .wallet-modal-theme-dark .wallet-modal-content::-webkit-scrollbar-track {
508
+ background: #1a1a1a;
509
+ border-radius: 4px;
510
+ }
511
+
512
+ .wallet-modal-theme-light .wallet-modal-content::-webkit-scrollbar-track {
513
+ background: #ffffff;
514
+ border-radius: 4px;
515
+ }
516
+
517
+ .wallet-modal-theme-dark .wallet-modal-content::-webkit-scrollbar-thumb {
518
+ background: #3a3a3a;
519
+ border-radius: 4px;
520
+ }
521
+
522
+ .wallet-modal-theme-light .wallet-modal-content::-webkit-scrollbar-thumb {
523
+ background: #d1d5db;
524
+ border-radius: 4px;
525
+ }
526
+
527
+ .wallet-modal-theme-dark .wallet-modal-content::-webkit-scrollbar-thumb:hover {
528
+ background: #4a4a4a;
529
+ }
530
+
531
+ .wallet-modal-theme-light .wallet-modal-content::-webkit-scrollbar-thumb:hover {
532
+ background: #9ca3af;
533
+ }
534
+
535
+ /* Responsive */
536
+ @media (max-width: 480px) {
537
+ .wallet-modal-content {
538
+ width: 100%;
539
+ max-width: 100%;
540
+ border-radius: 16px 16px 0 0;
541
+ max-height: 95vh;
542
+ padding: 20px;
543
+ }
544
+
545
+ .wallet-modal-overlay {
546
+ align-items: flex-end;
547
+ }
548
+ }
549
+
@@ -0,0 +1,6 @@
1
+ import './WalletModal.css';
2
+ export interface WalletModalProps {
3
+ isOpen: boolean;
4
+ onClose: () => void;
5
+ }
6
+ export declare function WalletModal({ isOpen, onClose }: WalletModalProps): import("react/jsx-runtime").JSX.Element | null;