@shadow-corp/nearconnect 1.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.
Files changed (179) hide show
  1. package/README.md +546 -0
  2. package/build/InjectedWallet.d.ts +22 -0
  3. package/build/InjectedWallet.js +58 -0
  4. package/build/InjectedWallet.js.map +1 -0
  5. package/build/NearConnector.d.ts +151 -0
  6. package/build/NearConnector.js +536 -0
  7. package/build/NearConnector.js.map +1 -0
  8. package/build/ParentFrameWallet.d.ts +22 -0
  9. package/build/ParentFrameWallet.js +66 -0
  10. package/build/ParentFrameWallet.js.map +1 -0
  11. package/build/SandboxedWallet/code.d.ts +7 -0
  12. package/build/SandboxedWallet/code.js +324 -0
  13. package/build/SandboxedWallet/code.js.map +1 -0
  14. package/build/SandboxedWallet/executor.d.ts +23 -0
  15. package/build/SandboxedWallet/executor.js +338 -0
  16. package/build/SandboxedWallet/executor.js.map +1 -0
  17. package/build/SandboxedWallet/iframe.d.ts +18 -0
  18. package/build/SandboxedWallet/iframe.js +78 -0
  19. package/build/SandboxedWallet/iframe.js.map +1 -0
  20. package/build/SandboxedWallet/index.d.ts +24 -0
  21. package/build/SandboxedWallet/index.js +54 -0
  22. package/build/SandboxedWallet/index.js.map +1 -0
  23. package/build/actions/index.d.ts +3 -0
  24. package/build/actions/index.js +105 -0
  25. package/build/actions/index.js.map +1 -0
  26. package/build/actions/types.d.ts +76 -0
  27. package/build/actions/types.js +3 -0
  28. package/build/actions/types.js.map +1 -0
  29. package/build/connection/health.d.ts +213 -0
  30. package/build/connection/health.js +391 -0
  31. package/build/connection/health.js.map +1 -0
  32. package/build/connection/index.d.ts +4 -0
  33. package/build/connection/index.js +48 -0
  34. package/build/connection/index.js.map +1 -0
  35. package/build/connection/reconnect.d.ts +261 -0
  36. package/build/connection/reconnect.js +454 -0
  37. package/build/connection/reconnect.js.map +1 -0
  38. package/build/connection/retry.d.ts +187 -0
  39. package/build/connection/retry.js +427 -0
  40. package/build/connection/retry.js.map +1 -0
  41. package/build/connection/state.d.ts +222 -0
  42. package/build/connection/state.js +431 -0
  43. package/build/connection/state.js.map +1 -0
  44. package/build/errors.d.ts +177 -0
  45. package/build/errors.js +546 -0
  46. package/build/errors.js.map +1 -0
  47. package/build/hardware/errors.d.ts +36 -0
  48. package/build/hardware/errors.js +127 -0
  49. package/build/hardware/errors.js.map +1 -0
  50. package/build/hardware/index.d.ts +7 -0
  51. package/build/hardware/index.js +39 -0
  52. package/build/hardware/index.js.map +1 -0
  53. package/build/hardware/near-app.d.ts +95 -0
  54. package/build/hardware/near-app.js +291 -0
  55. package/build/hardware/near-app.js.map +1 -0
  56. package/build/hardware/transport.d.ts +94 -0
  57. package/build/hardware/transport.js +267 -0
  58. package/build/hardware/transport.js.map +1 -0
  59. package/build/hardware/types.d.ts +98 -0
  60. package/build/hardware/types.js +72 -0
  61. package/build/hardware/types.js.map +1 -0
  62. package/build/helpers/analytics.d.ts +191 -0
  63. package/build/helpers/analytics.js +304 -0
  64. package/build/helpers/analytics.js.map +1 -0
  65. package/build/helpers/base58.d.ts +6 -0
  66. package/build/helpers/base58.js +47 -0
  67. package/build/helpers/base58.js.map +1 -0
  68. package/build/helpers/events.d.ts +42 -0
  69. package/build/helpers/events.js +68 -0
  70. package/build/helpers/events.js.map +1 -0
  71. package/build/helpers/html.d.ts +8 -0
  72. package/build/helpers/html.js +30 -0
  73. package/build/helpers/html.js.map +1 -0
  74. package/build/helpers/indexdb.d.ts +14 -0
  75. package/build/helpers/indexdb.js +166 -0
  76. package/build/helpers/indexdb.js.map +1 -0
  77. package/build/helpers/manifest.d.ts +147 -0
  78. package/build/helpers/manifest.js +329 -0
  79. package/build/helpers/manifest.js.map +1 -0
  80. package/build/helpers/queue.d.ts +11 -0
  81. package/build/helpers/queue.js +48 -0
  82. package/build/helpers/queue.js.map +1 -0
  83. package/build/helpers/session.d.ts +119 -0
  84. package/build/helpers/session.js +289 -0
  85. package/build/helpers/session.js.map +1 -0
  86. package/build/helpers/simulation.d.ts +128 -0
  87. package/build/helpers/simulation.js +441 -0
  88. package/build/helpers/simulation.js.map +1 -0
  89. package/build/helpers/storage.d.ts +58 -0
  90. package/build/helpers/storage.js +190 -0
  91. package/build/helpers/storage.js.map +1 -0
  92. package/build/helpers/trust.d.ts +157 -0
  93. package/build/helpers/trust.js +340 -0
  94. package/build/helpers/trust.js.map +1 -0
  95. package/build/helpers/url.d.ts +1 -0
  96. package/build/helpers/url.js +13 -0
  97. package/build/helpers/url.js.map +1 -0
  98. package/build/helpers/uuid.d.ts +1 -0
  99. package/build/helpers/uuid.js +14 -0
  100. package/build/helpers/uuid.js.map +1 -0
  101. package/build/index.d.ts +21 -0
  102. package/build/index.js +167 -0
  103. package/build/index.js.map +1 -0
  104. package/build/popups/IframeWalletPopup.d.ts +16 -0
  105. package/build/popups/IframeWalletPopup.js +38 -0
  106. package/build/popups/IframeWalletPopup.js.map +1 -0
  107. package/build/popups/NearWalletsPopup.d.ts +25 -0
  108. package/build/popups/NearWalletsPopup.js +153 -0
  109. package/build/popups/NearWalletsPopup.js.map +1 -0
  110. package/build/popups/Popup.d.ts +22 -0
  111. package/build/popups/Popup.js +94 -0
  112. package/build/popups/Popup.js.map +1 -0
  113. package/build/popups/styles.d.ts +1 -0
  114. package/build/popups/styles.js +257 -0
  115. package/build/popups/styles.js.map +1 -0
  116. package/build/security/audit-log.d.ts +123 -0
  117. package/build/security/audit-log.js +268 -0
  118. package/build/security/audit-log.js.map +1 -0
  119. package/build/security/csp.d.ts +68 -0
  120. package/build/security/csp.js +328 -0
  121. package/build/security/csp.js.map +1 -0
  122. package/build/security/index.d.ts +10 -0
  123. package/build/security/index.js +42 -0
  124. package/build/security/index.js.map +1 -0
  125. package/build/security/origin-guard.d.ts +90 -0
  126. package/build/security/origin-guard.js +244 -0
  127. package/build/security/origin-guard.js.map +1 -0
  128. package/build/security/rate-limiter.d.ts +84 -0
  129. package/build/security/rate-limiter.js +212 -0
  130. package/build/security/rate-limiter.js.map +1 -0
  131. package/build/security/secure-storage.d.ts +77 -0
  132. package/build/security/secure-storage.js +242 -0
  133. package/build/security/secure-storage.js.map +1 -0
  134. package/build/security/transaction-guard.d.ts +71 -0
  135. package/build/security/transaction-guard.js +239 -0
  136. package/build/security/transaction-guard.js.map +1 -0
  137. package/build/types.d.ts +508 -0
  138. package/build/types.js +3 -0
  139. package/build/types.js.map +1 -0
  140. package/build/ui/AccountSwitcherModal.d.ts +53 -0
  141. package/build/ui/AccountSwitcherModal.js +239 -0
  142. package/build/ui/AccountSwitcherModal.js.map +1 -0
  143. package/build/ui/Modal.d.ts +84 -0
  144. package/build/ui/Modal.js +278 -0
  145. package/build/ui/Modal.js.map +1 -0
  146. package/build/ui/TransactionModal.d.ts +84 -0
  147. package/build/ui/TransactionModal.js +406 -0
  148. package/build/ui/TransactionModal.js.map +1 -0
  149. package/build/ui/WalletSelectorModal.d.ts +97 -0
  150. package/build/ui/WalletSelectorModal.js +481 -0
  151. package/build/ui/WalletSelectorModal.js.map +1 -0
  152. package/build/ui/icons.d.ts +19 -0
  153. package/build/ui/icons.js +65 -0
  154. package/build/ui/icons.js.map +1 -0
  155. package/build/ui/index.d.ts +10 -0
  156. package/build/ui/index.js +31 -0
  157. package/build/ui/index.js.map +1 -0
  158. package/build/ui/styles.d.ts +5 -0
  159. package/build/ui/styles.js +973 -0
  160. package/build/ui/styles.js.map +1 -0
  161. package/build/ui/theme.d.ts +133 -0
  162. package/build/ui/theme.js +204 -0
  163. package/build/ui/theme.js.map +1 -0
  164. package/build/wallets/external/index.d.ts +4 -0
  165. package/build/wallets/external/index.js +9 -0
  166. package/build/wallets/external/index.js.map +1 -0
  167. package/build/wallets/external/manager.d.ts +152 -0
  168. package/build/wallets/external/manager.js +586 -0
  169. package/build/wallets/external/manager.js.map +1 -0
  170. package/build/wallets/privileged/index.d.ts +5 -0
  171. package/build/wallets/privileged/index.js +12 -0
  172. package/build/wallets/privileged/index.js.map +1 -0
  173. package/build/wallets/privileged/ledger.d.ts +132 -0
  174. package/build/wallets/privileged/ledger.js +563 -0
  175. package/build/wallets/privileged/ledger.js.map +1 -0
  176. package/build/wallets/privileged/manager.d.ts +54 -0
  177. package/build/wallets/privileged/manager.js +174 -0
  178. package/build/wallets/privileged/manager.js.map +1 -0
  179. package/package.json +33 -0
@@ -0,0 +1,481 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WalletSelectorModal = void 0;
4
+ const Modal_1 = require("./Modal");
5
+ const icons_1 = require("./icons");
6
+ /**
7
+ * Wallet selector modal component
8
+ */
9
+ class WalletSelectorModal extends Modal_1.Modal {
10
+ selectorOptions;
11
+ state;
12
+ constructor(options) {
13
+ super(options);
14
+ this.selectorOptions = {
15
+ ...this.options,
16
+ wallets: options.wallets,
17
+ recentWalletIds: options.recentWalletIds ?? [],
18
+ showSearch: options.showSearch ?? true,
19
+ showHelp: options.showHelp ?? true,
20
+ groupByCategory: options.groupByCategory ?? false,
21
+ onSelect: options.onSelect,
22
+ onAddDebugWallet: options.onAddDebugWallet ?? (async () => ({})),
23
+ onRemoveDebugWallet: options.onRemoveDebugWallet ?? (async () => { }),
24
+ };
25
+ // Process wallets
26
+ const processedWallets = this.processWallets(options.wallets);
27
+ this.state = {
28
+ view: "list",
29
+ wallets: processedWallets,
30
+ filteredWallets: processedWallets,
31
+ searchQuery: "",
32
+ selectedWallet: null,
33
+ error: null,
34
+ };
35
+ }
36
+ /**
37
+ * Process wallets with categories and metadata
38
+ */
39
+ processWallets(wallets) {
40
+ return wallets.map((wallet) => ({
41
+ ...wallet,
42
+ category: this.categorizeWallet(wallet),
43
+ isRecent: this.selectorOptions.recentWalletIds.includes(wallet.id),
44
+ }));
45
+ }
46
+ /**
47
+ * Categorize wallet by type
48
+ */
49
+ categorizeWallet(wallet) {
50
+ if (wallet.type === "privileged")
51
+ return "hardware";
52
+ if (wallet.platform?.chrome || wallet.platform?.firefox || wallet.platform?.edge)
53
+ return "browser";
54
+ if (wallet.platform?.ios || wallet.platform?.android)
55
+ return "mobile";
56
+ return "other";
57
+ }
58
+ /**
59
+ * Filter wallets by search query
60
+ */
61
+ filterWallets(query) {
62
+ if (!query.trim())
63
+ return this.state.wallets;
64
+ const lowerQuery = query.toLowerCase();
65
+ return this.state.wallets.filter((wallet) => wallet.name.toLowerCase().includes(lowerQuery) ||
66
+ wallet.description.toLowerCase().includes(lowerQuery));
67
+ }
68
+ /**
69
+ * Group wallets by category
70
+ */
71
+ groupWallets(wallets) {
72
+ const groups = new Map();
73
+ // Recent wallets first
74
+ const recentWallets = wallets.filter((w) => w.isRecent);
75
+ if (recentWallets.length > 0) {
76
+ groups.set("recent", recentWallets);
77
+ }
78
+ // Then by category
79
+ const categories = ["browser", "mobile", "hardware", "other"];
80
+ for (const category of categories) {
81
+ const categoryWallets = wallets.filter((w) => w.category === category && !w.isRecent);
82
+ if (categoryWallets.length > 0) {
83
+ groups.set(category, categoryWallets);
84
+ }
85
+ }
86
+ return groups;
87
+ }
88
+ /**
89
+ * Get category display name
90
+ */
91
+ getCategoryName(category) {
92
+ const names = {
93
+ recent: "Recent",
94
+ browser: "Browser Extension",
95
+ mobile: "Mobile",
96
+ hardware: "Hardware",
97
+ other: "Other",
98
+ };
99
+ return names[category];
100
+ }
101
+ render() {
102
+ return `
103
+ <div class="nc-modal-overlay">
104
+ <div class="nc-modal">
105
+ ${this.renderHeader()}
106
+ ${this.renderBody()}
107
+ ${this.renderFooter()}
108
+ </div>
109
+ </div>
110
+ `;
111
+ }
112
+ renderHeader() {
113
+ const { view } = this.state;
114
+ let title = "Connect Wallet";
115
+ let showBack = false;
116
+ let showClose = true;
117
+ if (view === "connecting") {
118
+ title = "Connecting...";
119
+ }
120
+ else if (view === "error") {
121
+ title = "Connection Failed";
122
+ }
123
+ else if (view === "help") {
124
+ title = "What is a Wallet?";
125
+ showBack = true;
126
+ }
127
+ else if (view === "settings") {
128
+ title = "Developer Settings";
129
+ showBack = true;
130
+ }
131
+ return `
132
+ <div class="nc-header">
133
+ ${showBack ? `<button class="nc-header-btn nc-header-btn--back" aria-label="Go back">${icons_1.icons.back}</button>` : ""}
134
+ <h2 class="nc-header-title">${title}</h2>
135
+ ${showClose ? `<button class="nc-header-btn nc-header-btn--close" aria-label="Close">${icons_1.icons.close}</button>` : ""}
136
+ </div>
137
+ `;
138
+ }
139
+ renderBody() {
140
+ switch (this.state.view) {
141
+ case "list":
142
+ return this.renderWalletList();
143
+ case "connecting":
144
+ return this.renderConnecting();
145
+ case "error":
146
+ return this.renderError();
147
+ case "help":
148
+ return this.renderHelp();
149
+ case "settings":
150
+ return this.renderSettings();
151
+ default:
152
+ return this.renderWalletList();
153
+ }
154
+ }
155
+ renderWalletList() {
156
+ const { filteredWallets, searchQuery } = this.state;
157
+ const { showSearch, groupByCategory } = this.selectorOptions;
158
+ let content = "";
159
+ // Search input
160
+ if (showSearch) {
161
+ content += `
162
+ <input
163
+ type="text"
164
+ class="nc-search"
165
+ placeholder="Search wallets..."
166
+ value="${searchQuery}"
167
+ aria-label="Search wallets"
168
+ />
169
+ `;
170
+ }
171
+ if (filteredWallets.length === 0) {
172
+ content += `
173
+ <div class="nc-empty">
174
+ <p class="nc-empty-title">No wallets found</p>
175
+ <p class="nc-empty-message">Try a different search term</p>
176
+ </div>
177
+ `;
178
+ }
179
+ else if (groupByCategory) {
180
+ const groups = this.groupWallets(filteredWallets);
181
+ groups.forEach((wallets, category) => {
182
+ content += `
183
+ <div class="nc-wallet-group">
184
+ <div class="nc-wallet-group-title">${this.getCategoryName(category)}</div>
185
+ <div class="nc-wallet-list">
186
+ ${wallets.map((w) => this.renderWalletItem(w)).join("")}
187
+ </div>
188
+ </div>
189
+ `;
190
+ });
191
+ }
192
+ else {
193
+ content += `
194
+ <div class="nc-wallet-list">
195
+ ${filteredWallets.map((w) => this.renderWalletItem(w)).join("")}
196
+ </div>
197
+ `;
198
+ }
199
+ return `<div class="nc-body">${content}</div>`;
200
+ }
201
+ renderWalletItem(wallet) {
202
+ const badges = [];
203
+ if (wallet.isRecent)
204
+ badges.push('<span class="nc-badge nc-badge--recent">Recent</span>');
205
+ if (wallet.isInstalled)
206
+ badges.push('<span class="nc-badge nc-badge--installed">Installed</span>');
207
+ if (wallet.debug)
208
+ badges.push('<span class="nc-badge">Debug</span>');
209
+ return `
210
+ <button
211
+ class="nc-wallet-item"
212
+ data-wallet-id="${wallet.id}"
213
+ aria-label="Connect to ${wallet.name}"
214
+ >
215
+ <img class="nc-wallet-icon" src="${wallet.icon}" alt="" loading="lazy" />
216
+ <div class="nc-wallet-info">
217
+ <span class="nc-wallet-name">${wallet.name}</span>
218
+ <span class="nc-wallet-desc">${wallet.description || this.getWalletHost(wallet.website)}</span>
219
+ </div>
220
+ ${badges.length > 0 ? `<div class="nc-wallet-badges">${badges.join("")}</div>` : ""}
221
+ </button>
222
+ `;
223
+ }
224
+ getWalletHost(url) {
225
+ try {
226
+ return new URL(url).hostname;
227
+ }
228
+ catch {
229
+ return "";
230
+ }
231
+ }
232
+ renderConnecting() {
233
+ const wallet = this.state.selectedWallet;
234
+ if (!wallet)
235
+ return "";
236
+ return `
237
+ <div class="nc-body">
238
+ <div class="nc-connecting">
239
+ <img class="nc-connecting-icon" src="${wallet.icon}" alt="${wallet.name}" />
240
+ <p class="nc-connecting-title">Connecting to ${wallet.name}</p>
241
+ <p class="nc-connecting-message">
242
+ Approve the connection request in your wallet
243
+ </p>
244
+ <button class="nc-btn nc-btn--secondary" data-action="cancel">
245
+ Cancel
246
+ </button>
247
+ </div>
248
+ </div>
249
+ `;
250
+ }
251
+ renderError() {
252
+ const { error } = this.state;
253
+ if (!error)
254
+ return "";
255
+ return `
256
+ <div class="nc-body">
257
+ <div class="nc-error">
258
+ <div class="nc-error-icon">${icons_1.icons.error}</div>
259
+ <p class="nc-error-title">${error.title}</p>
260
+ <p class="nc-error-message">${error.message}</p>
261
+ <div class="nc-error-actions">
262
+ <button class="nc-btn nc-btn--secondary" data-action="back">
263
+ Try Again
264
+ </button>
265
+ <button class="nc-btn nc-btn--primary" data-action="different-wallet">
266
+ Use Different Wallet
267
+ </button>
268
+ </div>
269
+ </div>
270
+ </div>
271
+ `;
272
+ }
273
+ renderHelp() {
274
+ return `
275
+ <div class="nc-body">
276
+ <div class="nc-help">
277
+ <div class="nc-help-item">
278
+ <div class="nc-help-icon">${icons_1.icons.wallet}</div>
279
+ <div class="nc-help-content">
280
+ <p class="nc-help-title">A Home for Your Digital Assets</p>
281
+ <p class="nc-help-desc">
282
+ Wallets are used to send, receive, store, and display digital assets like NEAR tokens and NFTs.
283
+ </p>
284
+ </div>
285
+ </div>
286
+ <div class="nc-help-item">
287
+ <div class="nc-help-icon">${icons_1.icons.shield}</div>
288
+ <div class="nc-help-content">
289
+ <p class="nc-help-title">A New Way to Sign In</p>
290
+ <p class="nc-help-desc">
291
+ Instead of creating new accounts and passwords, just connect your wallet to sign in.
292
+ </p>
293
+ </div>
294
+ </div>
295
+ </div>
296
+ <a
297
+ class="nc-btn nc-btn--primary"
298
+ href="${this.theme.branding.getWalletUrl}"
299
+ target="_blank"
300
+ rel="noopener noreferrer"
301
+ >
302
+ Get a Wallet ${icons_1.icons.external}
303
+ </a>
304
+ </div>
305
+ `;
306
+ }
307
+ renderSettings() {
308
+ const debugManifest = JSON.stringify({
309
+ id: "custom-wallet",
310
+ name: "Custom Wallet",
311
+ icon: "https://example.com/icon.png",
312
+ description: "Custom wallet description",
313
+ website: "https://example.com",
314
+ version: "1.0.0",
315
+ executor: "https://example.com/executor.js",
316
+ type: "sandbox",
317
+ features: {
318
+ signMessage: true,
319
+ signAndSendTransaction: true,
320
+ },
321
+ permissions: {
322
+ storage: true,
323
+ },
324
+ }, null, 2);
325
+ return `
326
+ <div class="nc-body">
327
+ <p style="color: var(--nc-color-text-muted); font-size: var(--nc-font-size-sm); margin-bottom: var(--nc-spacing-md);">
328
+ Add a custom wallet manifest for development testing.
329
+ </p>
330
+ <textarea
331
+ id="debug-manifest"
332
+ class="nc-search"
333
+ style="height: 200px; font-family: var(--nc-font-family-mono); font-size: var(--nc-font-size-xs);"
334
+ placeholder="Paste wallet manifest JSON..."
335
+ >${debugManifest}</textarea>
336
+ <button class="nc-btn nc-btn--primary" data-action="add-debug-wallet" style="margin-top: var(--nc-spacing-md); width: 100%;">
337
+ Add Wallet
338
+ </button>
339
+ </div>
340
+ `;
341
+ }
342
+ renderFooter() {
343
+ const { branding } = this.theme;
344
+ const { showHelp } = this.selectorOptions;
345
+ const { view } = this.state;
346
+ // Hide footer on help/settings views
347
+ if (view === "help" || view === "settings")
348
+ return "";
349
+ return `
350
+ <div class="nc-footer">
351
+ <div class="nc-footer-branding">
352
+ ${branding.logo ? `<img class="nc-footer-logo" src="${branding.logo}" alt="" />` : ""}
353
+ <span class="nc-footer-name">${branding.name}</span>
354
+ </div>
355
+ <div style="display: flex; gap: var(--nc-spacing-md);">
356
+ ${showHelp ? `<button class="nc-footer-link" data-action="help">What is a wallet?</button>` : ""}
357
+ <button class="nc-footer-link" data-action="settings">${icons_1.icons.settings}</button>
358
+ </div>
359
+ </div>
360
+ `;
361
+ }
362
+ setupHandlers() {
363
+ super.setupHandlers();
364
+ // Search input
365
+ const searchInput = this.root.querySelector(".nc-search");
366
+ if (searchInput && this.state.view === "list") {
367
+ this.addListener(searchInput, "input", () => {
368
+ this.state.searchQuery = searchInput.value;
369
+ this.state.filteredWallets = this.filterWallets(searchInput.value);
370
+ this.update();
371
+ // Restore focus to search input
372
+ const newInput = this.root.querySelector(".nc-search");
373
+ newInput?.focus();
374
+ newInput?.setSelectionRange(searchInput.value.length, searchInput.value.length);
375
+ });
376
+ }
377
+ // Wallet items
378
+ this.root.querySelectorAll(".nc-wallet-item").forEach((item) => {
379
+ this.addListener(item, "click", () => {
380
+ const walletId = item.getAttribute("data-wallet-id");
381
+ if (walletId) {
382
+ this.selectWallet(walletId);
383
+ }
384
+ });
385
+ });
386
+ // Back button
387
+ const backBtn = this.root.querySelector(".nc-header-btn--back");
388
+ if (backBtn) {
389
+ this.addListener(backBtn, "click", () => {
390
+ this.state.view = "list";
391
+ this.state.error = null;
392
+ this.update();
393
+ });
394
+ }
395
+ // Action buttons
396
+ this.root.querySelectorAll("[data-action]").forEach((btn) => {
397
+ this.addListener(btn, "click", () => {
398
+ const action = btn.getAttribute("data-action");
399
+ this.handleAction(action);
400
+ });
401
+ });
402
+ }
403
+ async selectWallet(walletId) {
404
+ const wallet = this.state.wallets.find((w) => w.id === walletId);
405
+ if (!wallet)
406
+ return;
407
+ this.state.selectedWallet = wallet;
408
+ this.state.view = "connecting";
409
+ this.update();
410
+ try {
411
+ this.selectorOptions.onSelect(walletId);
412
+ // The parent component handles the actual connection
413
+ // and will close the modal on success or call showError on failure
414
+ }
415
+ catch (error) {
416
+ this.showError("Connection Failed", error instanceof Error ? error.message : "Failed to connect to wallet");
417
+ }
418
+ }
419
+ handleAction(action) {
420
+ switch (action) {
421
+ case "help":
422
+ this.state.view = "help";
423
+ this.update();
424
+ break;
425
+ case "settings":
426
+ this.state.view = "settings";
427
+ this.update();
428
+ break;
429
+ case "back":
430
+ case "different-wallet":
431
+ this.state.view = "list";
432
+ this.state.error = null;
433
+ this.update();
434
+ break;
435
+ case "cancel":
436
+ this.state.view = "list";
437
+ this.state.selectedWallet = null;
438
+ this.update();
439
+ break;
440
+ case "add-debug-wallet":
441
+ this.addDebugWallet();
442
+ break;
443
+ }
444
+ }
445
+ async addDebugWallet() {
446
+ const textarea = this.root.querySelector("#debug-manifest");
447
+ if (!textarea)
448
+ return;
449
+ try {
450
+ const manifest = await this.selectorOptions.onAddDebugWallet(textarea.value);
451
+ this.state.wallets = [{ ...manifest, category: "other" }, ...this.state.wallets];
452
+ this.state.filteredWallets = this.state.wallets;
453
+ this.state.view = "list";
454
+ this.update();
455
+ }
456
+ catch (error) {
457
+ alert(`Failed to add wallet: ${error instanceof Error ? error.message : "Unknown error"}`);
458
+ }
459
+ }
460
+ /**
461
+ * Show error state
462
+ */
463
+ showError(title, message) {
464
+ this.state.view = "error";
465
+ this.state.error = { title, message };
466
+ this.update();
467
+ }
468
+ /**
469
+ * Show connecting state for a wallet
470
+ */
471
+ showConnecting(walletId) {
472
+ const wallet = this.state.wallets.find((w) => w.id === walletId);
473
+ if (wallet) {
474
+ this.state.selectedWallet = wallet;
475
+ this.state.view = "connecting";
476
+ this.update();
477
+ }
478
+ }
479
+ }
480
+ exports.WalletSelectorModal = WalletSelectorModal;
481
+ //# sourceMappingURL=WalletSelectorModal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WalletSelectorModal.js","sourceRoot":"","sources":["../../src/ui/WalletSelectorModal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * SVG icons for UI components
3
+ */
4
+ export declare const icons: {
5
+ close: string;
6
+ back: string;
7
+ settings: string;
8
+ search: string;
9
+ wallet: string;
10
+ help: string;
11
+ error: string;
12
+ success: string;
13
+ external: string;
14
+ refresh: string;
15
+ shield: string;
16
+ download: string;
17
+ check: string;
18
+ };
19
+ export type IconName = keyof typeof icons;
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ /**
3
+ * SVG icons for UI components
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.icons = void 0;
7
+ exports.icons = {
8
+ close: `<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
9
+ <path d="M18 6L6 18" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
10
+ <path d="M6 6L18 18" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
11
+ </svg>`,
12
+ back: `<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
13
+ <path d="M15 18L9 12L15 6" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
14
+ </svg>`,
15
+ settings: `<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
16
+ <circle cx="12" cy="12" r="2" fill="currentColor"/>
17
+ <circle cx="19" cy="12" r="2" fill="currentColor"/>
18
+ <circle cx="5" cy="12" r="2" fill="currentColor"/>
19
+ </svg>`,
20
+ search: `<svg width="20" height="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
21
+ <circle cx="11" cy="11" r="8" stroke="currentColor" stroke-width="2"/>
22
+ <path d="M21 21L16.65 16.65" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
23
+ </svg>`,
24
+ wallet: `<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
25
+ <rect x="2" y="6" width="20" height="14" rx="2" stroke="currentColor" stroke-width="2"/>
26
+ <path d="M22 10H18C16.8954 10 16 10.8954 16 12V12C16 13.1046 16.8954 14 18 14H22" stroke="currentColor" stroke-width="2"/>
27
+ <path d="M6 6V5C6 3.89543 6.89543 3 8 3H16C17.1046 3 18 3.89543 18 5V6" stroke="currentColor" stroke-width="2"/>
28
+ </svg>`,
29
+ help: `<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
30
+ <circle cx="12" cy="12" r="10" stroke="currentColor" stroke-width="2"/>
31
+ <path d="M9.09 9C9.3251 8.33167 9.78915 7.76811 10.4 7.40913C11.0108 7.05016 11.7289 6.91894 12.4272 7.03871C13.1255 7.15849 13.7588 7.52152 14.2151 8.06353C14.6713 8.60553 14.9211 9.29152 14.92 10C14.92 12 11.92 13 11.92 13" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
32
+ <circle cx="12" cy="17" r="1" fill="currentColor"/>
33
+ </svg>`,
34
+ error: `<svg width="48" height="48" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
35
+ <circle cx="12" cy="12" r="10" stroke="currentColor" stroke-width="2"/>
36
+ <path d="M12 8V12" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
37
+ <circle cx="12" cy="16" r="1" fill="currentColor"/>
38
+ </svg>`,
39
+ success: `<svg width="48" height="48" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
40
+ <circle cx="12" cy="12" r="10" stroke="currentColor" stroke-width="2"/>
41
+ <path d="M8 12L11 15L16 9" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
42
+ </svg>`,
43
+ external: `<svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
44
+ <path d="M18 13V19C18 20.1046 17.1046 21 16 21H5C3.89543 21 3 20.1046 3 19V8C3 6.89543 3.89543 6 5 6H11" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
45
+ <path d="M15 3H21V9" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
46
+ <path d="M10 14L21 3" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
47
+ </svg>`,
48
+ refresh: `<svg width="20" height="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
49
+ <path d="M23 4V10H17" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
50
+ <path d="M1 20V14H7" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
51
+ <path d="M3.51 9C4.01717 7.56678 4.87913 6.2854 6.01547 5.27542C7.1518 4.26543 8.52547 3.55976 10.0083 3.22426C11.4911 2.88875 13.0348 2.93434 14.4952 3.35677C15.9556 3.77921 17.2853 4.56471 18.36 5.64L23 10M1 14L5.64 18.36C6.71475 19.4353 8.04437 20.2208 9.50481 20.6432C10.9652 21.0657 12.5089 21.1112 13.9917 20.7757C15.4745 20.4402 16.8482 19.7346 17.9845 18.7246C19.1209 17.7146 19.9828 16.4332 20.49 15" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
52
+ </svg>`,
53
+ shield: `<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
54
+ <path d="M12 22C12 22 20 18 20 12V5L12 2L4 5V12C4 18 12 22 12 22Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
55
+ </svg>`,
56
+ download: `<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
57
+ <path d="M21 15V19C21 20.1046 20.1046 21 19 21H5C3.89543 21 3 20.1046 3 19V15" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
58
+ <path d="M7 10L12 15L17 10" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
59
+ <path d="M12 15V3" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
60
+ </svg>`,
61
+ check: `<svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
62
+ <path d="M20 6L9 17L4 12" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
63
+ </svg>`,
64
+ };
65
+ //# sourceMappingURL=icons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icons.js","sourceRoot":"","sources":["../../src/ui/icons.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEU,QAAA,KAAK,GAAG;IACnB,KAAK,EAAE;;;SAGA;IAEP,IAAI,EAAE;;SAEC;IAEP,QAAQ,EAAE;;;;SAIH;IAEP,MAAM,EAAE;;;SAGD;IAEP,MAAM,EAAE;;;;SAID;IAEP,IAAI,EAAE;;;;SAIC;IAEP,KAAK,EAAE;;;;SAIA;IAEP,OAAO,EAAE;;;SAGF;IAEP,QAAQ,EAAE;;;;SAIH;IAEP,OAAO,EAAE;;;;SAIF;IAEP,MAAM,EAAE;;SAED;IAEP,QAAQ,EAAE;;;;SAIH;IAEP,KAAK,EAAE;;SAEA;CACR,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Pre-built UI components for NEAR Connect
3
+ */
4
+ export { type ThemeMode, type ThemeColors, type ThemeTypography, type ThemeSpacing, type ThemeBorderRadius, type ThemeAnimation, type ThemeBranding, type Theme, type ThemeOverrides, createDarkTheme, createLightTheme, mergeTheme, getSystemTheme, themeToCssVars, darkTheme, lightTheme, } from "./theme";
5
+ export { icons, type IconName } from "./icons";
6
+ export { generateStyles } from "./styles";
7
+ export { Modal, type ModalOptions } from "./Modal";
8
+ export { WalletSelectorModal, type WalletSelectorOptions, type WalletUIInfo, type WalletCategory, } from "./WalletSelectorModal";
9
+ export { TransactionModal, type TransactionModalOptions } from "./TransactionModal";
10
+ export { AccountSwitcherModal, type AccountSwitcherOptions, type AccountUIInfo } from "./AccountSwitcherModal";
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ /**
3
+ * Pre-built UI components for NEAR Connect
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.AccountSwitcherModal = exports.TransactionModal = exports.WalletSelectorModal = exports.Modal = exports.generateStyles = exports.icons = exports.lightTheme = exports.darkTheme = exports.themeToCssVars = exports.getSystemTheme = exports.mergeTheme = exports.createLightTheme = exports.createDarkTheme = void 0;
7
+ // Theme system
8
+ var theme_1 = require("./theme");
9
+ Object.defineProperty(exports, "createDarkTheme", { enumerable: true, get: function () { return theme_1.createDarkTheme; } });
10
+ Object.defineProperty(exports, "createLightTheme", { enumerable: true, get: function () { return theme_1.createLightTheme; } });
11
+ Object.defineProperty(exports, "mergeTheme", { enumerable: true, get: function () { return theme_1.mergeTheme; } });
12
+ Object.defineProperty(exports, "getSystemTheme", { enumerable: true, get: function () { return theme_1.getSystemTheme; } });
13
+ Object.defineProperty(exports, "themeToCssVars", { enumerable: true, get: function () { return theme_1.themeToCssVars; } });
14
+ Object.defineProperty(exports, "darkTheme", { enumerable: true, get: function () { return theme_1.darkTheme; } });
15
+ Object.defineProperty(exports, "lightTheme", { enumerable: true, get: function () { return theme_1.lightTheme; } });
16
+ // Icons
17
+ var icons_1 = require("./icons");
18
+ Object.defineProperty(exports, "icons", { enumerable: true, get: function () { return icons_1.icons; } });
19
+ // Styles
20
+ var styles_1 = require("./styles");
21
+ Object.defineProperty(exports, "generateStyles", { enumerable: true, get: function () { return styles_1.generateStyles; } });
22
+ // Modal components
23
+ var Modal_1 = require("./Modal");
24
+ Object.defineProperty(exports, "Modal", { enumerable: true, get: function () { return Modal_1.Modal; } });
25
+ var WalletSelectorModal_1 = require("./WalletSelectorModal");
26
+ Object.defineProperty(exports, "WalletSelectorModal", { enumerable: true, get: function () { return WalletSelectorModal_1.WalletSelectorModal; } });
27
+ var TransactionModal_1 = require("./TransactionModal");
28
+ Object.defineProperty(exports, "TransactionModal", { enumerable: true, get: function () { return TransactionModal_1.TransactionModal; } });
29
+ var AccountSwitcherModal_1 = require("./AccountSwitcherModal");
30
+ Object.defineProperty(exports, "AccountSwitcherModal", { enumerable: true, get: function () { return AccountSwitcherModal_1.AccountSwitcherModal; } });
31
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,eAAe;AACf,iCAiBiB;AAPf,wGAAA,eAAe,OAAA;AACf,yGAAA,gBAAgB,OAAA;AAChB,mGAAA,UAAU,OAAA;AACV,uGAAA,cAAc,OAAA;AACd,uGAAA,cAAc,OAAA;AACd,kGAAA,SAAS,OAAA;AACT,mGAAA,UAAU,OAAA;AAGZ,QAAQ;AACR,iCAA+C;AAAtC,8FAAA,KAAK,OAAA;AAEd,SAAS;AACT,mCAA0C;AAAjC,wGAAA,cAAc,OAAA;AAEvB,mBAAmB;AACnB,iCAAmD;AAA1C,8FAAA,KAAK,OAAA;AACd,6DAK+B;AAJ7B,0HAAA,mBAAmB,OAAA;AAKrB,uDAAoF;AAA3E,oHAAA,gBAAgB,OAAA;AACzB,+DAA+G;AAAtG,4HAAA,oBAAoB,OAAA"}
@@ -0,0 +1,5 @@
1
+ import { Theme } from "./theme";
2
+ /**
3
+ * Generate CSS for the UI components
4
+ */
5
+ export declare function generateStyles(id: string, theme: Theme): string;