@shapeshiftoss/swap-widget 0.0.2 → 0.2.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 (158) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +18 -11
  3. package/package.json +77 -28
  4. package/Dockerfile +0 -87
  5. package/dist/assets/PhArrowCircleDown-B305t-Sh.js +0 -14
  6. package/dist/assets/PhArrowClockwise-CJPxQhr_.js +0 -14
  7. package/dist/assets/PhArrowDown-C4hT9BVu.js +0 -14
  8. package/dist/assets/PhArrowLeft-Way4Cu-r.js +0 -14
  9. package/dist/assets/PhArrowRight-Cp5ZME0F.js +0 -14
  10. package/dist/assets/PhArrowSquareOut-NnrK69c5.js +0 -14
  11. package/dist/assets/PhArrowUp-Dph6j8rm.js +0 -14
  12. package/dist/assets/PhArrowUpRight-BpJjRRRh.js +0 -14
  13. package/dist/assets/PhArrowsClockwise-CFUT8X7R.js +0 -14
  14. package/dist/assets/PhArrowsDownUp-BjBI4ckC.js +0 -14
  15. package/dist/assets/PhArrowsLeftRight-CuLpbKRk.js +0 -14
  16. package/dist/assets/PhBank-Dchr4XQJ.js +0 -14
  17. package/dist/assets/PhBrowser-dUu2TrC1.js +0 -14
  18. package/dist/assets/PhCaretDown-78IuKU3V.js +0 -14
  19. package/dist/assets/PhCaretLeft-_aiyH7n1.js +0 -14
  20. package/dist/assets/PhCaretRight-8zJQEuDX.js +0 -14
  21. package/dist/assets/PhCaretUp-CiCxKWwN.js +0 -14
  22. package/dist/assets/PhCheck-CcADx8br.js +0 -14
  23. package/dist/assets/PhCircleHalf-BYzSzd2h.js +0 -14
  24. package/dist/assets/PhClock-UItiXeJq.js +0 -14
  25. package/dist/assets/PhCompass-CUy3uA7t.js +0 -14
  26. package/dist/assets/PhCopy-C-PDgSlZ.js +0 -14
  27. package/dist/assets/PhCreditCard-CWRaUT6F.js +0 -14
  28. package/dist/assets/PhCurrencyDollar-Cqla3AXT.js +0 -14
  29. package/dist/assets/PhDesktop-BBIPrYLl.js +0 -14
  30. package/dist/assets/PhDeviceMobile-BdsPaATg.js +0 -14
  31. package/dist/assets/PhDotsThree-BMXCQl-0.js +0 -14
  32. package/dist/assets/PhEnvelope-yUsis6yU.js +0 -14
  33. package/dist/assets/PhFunnelSimple-Ba7BbWTp.js +0 -14
  34. package/dist/assets/PhGlobe-DgLxBk5U.js +0 -14
  35. package/dist/assets/PhIdentificationCard-Czjmq9Z3.js +0 -14
  36. package/dist/assets/PhImage-BAJ_erz6.js +0 -14
  37. package/dist/assets/PhInfo-Cr4DhVUE.js +0 -14
  38. package/dist/assets/PhLightbulb-BX_7duTr.js +0 -14
  39. package/dist/assets/PhMagnifyingGlass-Mygfryvz.js +0 -14
  40. package/dist/assets/PhPaperPlaneRight-BeuCA660.js +0 -14
  41. package/dist/assets/PhPlus-BMjcHjsT.js +0 -14
  42. package/dist/assets/PhPower-CGffGmdb.js +0 -14
  43. package/dist/assets/PhPuzzlePiece-wm_GpVSi.js +0 -14
  44. package/dist/assets/PhQrCode-DRwRzXCH.js +0 -14
  45. package/dist/assets/PhQuestion-M09j2U0T.js +0 -14
  46. package/dist/assets/PhQuestionMark-BP9EMB6h.js +0 -14
  47. package/dist/assets/PhSealCheck-BfG80yKn.js +0 -14
  48. package/dist/assets/PhSignOut-C5YOWlPT.js +0 -14
  49. package/dist/assets/PhSpinner-BXooDYzU.js +0 -14
  50. package/dist/assets/PhTrash-Biq6rmmL.js +0 -14
  51. package/dist/assets/PhUser-CAgZSpGe.js +0 -14
  52. package/dist/assets/PhVault-l2PHF38a.js +0 -14
  53. package/dist/assets/PhWallet-w25D16It.js +0 -14
  54. package/dist/assets/PhWarning-DPEydIPw.js +0 -14
  55. package/dist/assets/PhWarningCircle-BqjT745H.js +0 -14
  56. package/dist/assets/PhX-s-SmVExa.js +0 -14
  57. package/dist/assets/SwapController-If0bFrNc.js +0 -1
  58. package/dist/assets/ccip-BBB7uCdL.js +0 -1
  59. package/dist/assets/ccip-CkkdfKKI.js +0 -1
  60. package/dist/assets/data-capture-D4gAy-Yc.js +0 -242
  61. package/dist/assets/email-B1AJehis.js +0 -90
  62. package/dist/assets/embedded-wallet-Q6DQopDk.js +0 -410
  63. package/dist/assets/features-B6JAPAFb.js +0 -5
  64. package/dist/assets/index-5jd8RPN9.js +0 -7428
  65. package/dist/assets/index-B4kNtSTk.js +0 -1080
  66. package/dist/assets/index-B753eAob.js +0 -1
  67. package/dist/assets/index-BZoLTv77.js +0 -3
  68. package/dist/assets/index-Bcw9UURX.js +0 -3
  69. package/dist/assets/index-BkrV-ahK.js +0 -2
  70. package/dist/assets/index-CRQzQ_up.js +0 -9
  71. package/dist/assets/index-CSW0Gt5y.js +0 -132
  72. package/dist/assets/index-CZ4jTIsk.js +0 -138
  73. package/dist/assets/index-Cwa8SB3h.js +0 -61
  74. package/dist/assets/index-DEwQgT4r.js +0 -78
  75. package/dist/assets/index-DVfQiQ1d.js +0 -1
  76. package/dist/assets/index-cV3UdaMs.css +0 -1
  77. package/dist/assets/index-hAmu622O.js +0 -43
  78. package/dist/assets/onramp-XcPNCLRU.js +0 -422
  79. package/dist/assets/pay-with-exchange-BeHt4OF4.js +0 -280
  80. package/dist/assets/property-C9JG5tag.js +0 -27
  81. package/dist/assets/receive-7ff4he2S.js +0 -131
  82. package/dist/assets/send-CkMBIRXT.js +0 -554
  83. package/dist/assets/socials-DmmxuLrP.js +0 -250
  84. package/dist/assets/swaps-IHAYRQ0x.js +0 -1050
  85. package/dist/assets/transactions-9Cxdk7o9.js +0 -16
  86. package/dist/assets/v4-BOvFkHkt.js +0 -1
  87. package/dist/assets/w3m-modal-kJzFnBfB.js +0 -891
  88. package/dist/assets/wallet-standard-Dv8LMoUB.js +0 -1
  89. package/dist/favicon.png +0 -0
  90. package/dist/favicon.svg +0 -11
  91. package/dist/icon-192x192.png +0 -0
  92. package/dist/icon-512x512.png +0 -0
  93. package/dist/index.html +0 -33
  94. package/index.html +0 -32
  95. package/public/favicon.png +0 -0
  96. package/public/favicon.svg +0 -11
  97. package/public/icon-192x192.png +0 -0
  98. package/public/icon-512x512.png +0 -0
  99. package/railway.toml +0 -10
  100. package/src/api/client.ts +0 -95
  101. package/src/components/AddressInputModal.css +0 -173
  102. package/src/components/AddressInputModal.tsx +0 -250
  103. package/src/components/ApprovalStep.tsx +0 -92
  104. package/src/components/ExecutionStep.tsx +0 -27
  105. package/src/components/InputStep.tsx +0 -431
  106. package/src/components/QuoteSelector.css +0 -146
  107. package/src/components/QuoteSelector.tsx +0 -137
  108. package/src/components/QuotesModal.css +0 -250
  109. package/src/components/QuotesModal.tsx +0 -182
  110. package/src/components/SettingsModal.css +0 -145
  111. package/src/components/SettingsModal.tsx +0 -180
  112. package/src/components/StatusStep.tsx +0 -139
  113. package/src/components/SwapWidget.css +0 -713
  114. package/src/components/SwapWidget.tsx +0 -607
  115. package/src/components/TokenSelectModal.css +0 -438
  116. package/src/components/TokenSelectModal.tsx +0 -487
  117. package/src/components/WalletProvider.tsx +0 -92
  118. package/src/config/appkit.ts +0 -104
  119. package/src/config/wagmi.ts +0 -27
  120. package/src/constants/chains.ts +0 -72
  121. package/src/constants/defaults.ts +0 -28
  122. package/src/constants/swappers.ts +0 -48
  123. package/src/constants/viemChains.ts +0 -69
  124. package/src/contexts/SwapWalletContext.tsx +0 -25
  125. package/src/demo/App.css +0 -458
  126. package/src/demo/App.tsx +0 -481
  127. package/src/demo/main.tsx +0 -25
  128. package/src/hooks/useAssets.ts +0 -180
  129. package/src/hooks/useBalances.ts +0 -822
  130. package/src/hooks/useBitcoinSigning.ts +0 -276
  131. package/src/hooks/useMarketData.ts +0 -169
  132. package/src/hooks/useSolanaSigning.ts +0 -275
  133. package/src/hooks/useStatusPolling.ts +0 -137
  134. package/src/hooks/useSwapApproval.ts +0 -106
  135. package/src/hooks/useSwapDisplayValues.ts +0 -157
  136. package/src/hooks/useSwapExecution.ts +0 -199
  137. package/src/hooks/useSwapHandlers.ts +0 -119
  138. package/src/hooks/useSwapQuote.ts +0 -71
  139. package/src/hooks/useSwapQuoting.ts +0 -102
  140. package/src/hooks/useSwapRates.ts +0 -61
  141. package/src/index.ts +0 -43
  142. package/src/machines/SwapMachineContext.ts +0 -5
  143. package/src/machines/__tests__/guards.test.ts +0 -228
  144. package/src/machines/__tests__/setup.test.ts +0 -7
  145. package/src/machines/__tests__/swapMachine.test.ts +0 -544
  146. package/src/machines/__tests__/types.test.ts +0 -124
  147. package/src/machines/guards.ts +0 -33
  148. package/src/machines/swapMachine.ts +0 -288
  149. package/src/machines/types.ts +0 -54
  150. package/src/services/transactionStatus.ts +0 -322
  151. package/src/types/index.ts +0 -361
  152. package/src/utils/addressValidation.ts +0 -201
  153. package/src/utils/redirect.ts +0 -45
  154. package/src/vite-env.d.ts +0 -10
  155. package/tsconfig.json +0 -23
  156. package/tsconfig.node.json +0 -10
  157. package/vite.config.ts +0 -101
  158. package/vitest.config.ts +0 -18
@@ -1,438 +0,0 @@
1
- .ssw-modal-backdrop {
2
- position: fixed;
3
- inset: 0;
4
- background: rgba(0, 0, 0, 0.6);
5
- backdrop-filter: blur(4px);
6
- display: flex;
7
- align-items: center;
8
- justify-content: center;
9
- z-index: 1000;
10
- padding: 16px;
11
- animation: ssw-fade-in 0.15s ease;
12
- }
13
-
14
- @keyframes ssw-fade-in {
15
- from {
16
- opacity: 0;
17
- }
18
- to {
19
- opacity: 1;
20
- }
21
- }
22
-
23
- .ssw-modal {
24
- background: var(--ssw-bg-secondary);
25
- border-radius: var(--ssw-radius-lg);
26
- width: 100%;
27
- max-width: 680px;
28
- max-height: 80vh;
29
- display: flex;
30
- flex-direction: column;
31
- overflow: hidden;
32
- box-shadow: 0 24px 48px rgba(0, 0, 0, 0.2);
33
- animation: ssw-slide-up 0.2s ease;
34
- }
35
-
36
- @keyframes ssw-slide-up {
37
- from {
38
- opacity: 0;
39
- transform: translateY(10px);
40
- }
41
- to {
42
- opacity: 1;
43
- transform: translateY(0);
44
- }
45
- }
46
-
47
- .ssw-modal-header {
48
- display: flex;
49
- align-items: center;
50
- justify-content: space-between;
51
- padding: 20px 24px;
52
- border-bottom: 1px solid var(--ssw-border);
53
- }
54
-
55
- .ssw-modal-title {
56
- font-size: 18px;
57
- font-weight: 600;
58
- color: var(--ssw-text-primary);
59
- margin: 0;
60
- }
61
-
62
- .ssw-modal-close {
63
- background: none;
64
- border: none;
65
- padding: 8px;
66
- cursor: pointer;
67
- color: var(--ssw-text-secondary);
68
- border-radius: var(--ssw-radius-xs);
69
- transition: all 0.15s ease;
70
- }
71
-
72
- .ssw-modal-close:hover {
73
- background: var(--ssw-bg-hover);
74
- color: var(--ssw-text-primary);
75
- }
76
-
77
- .ssw-modal-content {
78
- display: flex;
79
- flex: 1;
80
- min-height: 0;
81
- }
82
-
83
- .ssw-chain-sidebar {
84
- width: 200px;
85
- border-right: 1px solid var(--ssw-border);
86
- display: flex;
87
- flex-direction: column;
88
- background: var(--ssw-bg-tertiary);
89
- }
90
-
91
- .ssw-search-wrapper {
92
- position: relative;
93
- padding: 16px;
94
- }
95
-
96
- .ssw-search-icon {
97
- position: absolute;
98
- left: 28px;
99
- top: 50%;
100
- transform: translateY(-50%);
101
- color: var(--ssw-text-muted);
102
- pointer-events: none;
103
- }
104
-
105
- .ssw-chain-search,
106
- .ssw-token-search {
107
- width: 100%;
108
- padding: 10px 12px 10px 36px;
109
- border: 1px solid var(--ssw-border);
110
- border-radius: var(--ssw-radius-sm);
111
- background: var(--ssw-bg-input);
112
- color: var(--ssw-text-primary);
113
- font-size: 14px;
114
- outline: none;
115
- transition: border-color 0.15s ease;
116
- }
117
-
118
- .ssw-chain-search:focus,
119
- .ssw-token-search:focus {
120
- border-color: var(--ssw-accent);
121
- }
122
-
123
- .ssw-chain-search::placeholder,
124
- .ssw-token-search::placeholder {
125
- color: var(--ssw-text-muted);
126
- }
127
-
128
- .ssw-chain-list {
129
- flex: 1;
130
- overflow-y: auto;
131
- padding: 0 8px 16px;
132
- scrollbar-width: thin;
133
- scrollbar-color: var(--ssw-border) transparent;
134
- min-height: 300px;
135
- }
136
-
137
- .ssw-chain-list::-webkit-scrollbar {
138
- width: 6px;
139
- }
140
-
141
- .ssw-chain-list::-webkit-scrollbar-track {
142
- background: transparent;
143
- }
144
-
145
- .ssw-chain-list::-webkit-scrollbar-thumb {
146
- background: var(--ssw-border);
147
- border-radius: 3px;
148
- }
149
-
150
- .ssw-chain-list::-webkit-scrollbar-thumb:hover {
151
- background: var(--ssw-border-hover);
152
- }
153
-
154
- .ssw-chain-item {
155
- display: flex;
156
- align-items: center;
157
- gap: 10px;
158
- width: 100%;
159
- padding: 10px 12px;
160
- border: none;
161
- background: none;
162
- border-radius: var(--ssw-radius-sm);
163
- cursor: pointer;
164
- transition: background 0.15s ease;
165
- text-align: left;
166
- }
167
-
168
- .ssw-chain-item:hover {
169
- background: var(--ssw-bg-hover);
170
- }
171
-
172
- .ssw-chain-item.ssw-selected {
173
- background: var(--ssw-accent-light);
174
- }
175
-
176
- .ssw-chain-icon,
177
- .ssw-chain-icon-placeholder,
178
- .ssw-chain-icon-multi {
179
- width: 28px;
180
- height: 28px;
181
- border-radius: var(--ssw-radius-xs);
182
- flex-shrink: 0;
183
- }
184
-
185
- .ssw-chain-icon {
186
- object-fit: contain;
187
- }
188
-
189
- .ssw-chain-icon-placeholder {
190
- display: flex;
191
- align-items: center;
192
- justify-content: center;
193
- font-size: 12px;
194
- font-weight: 600;
195
- color: white;
196
- }
197
-
198
- .ssw-chain-icon-multi {
199
- display: flex;
200
- align-items: center;
201
- justify-content: center;
202
- background: var(--ssw-bg-hover);
203
- font-size: 14px;
204
- }
205
-
206
- .ssw-chain-name {
207
- font-size: 14px;
208
- font-weight: 500;
209
- color: var(--ssw-text-primary);
210
- white-space: nowrap;
211
- overflow: hidden;
212
- text-overflow: ellipsis;
213
- }
214
-
215
- .ssw-token-panel {
216
- flex: 1;
217
- display: flex;
218
- flex-direction: column;
219
- min-width: 0;
220
- }
221
-
222
- .ssw-token-list {
223
- flex: 1;
224
- overflow-y: auto;
225
- padding: 0 16px 16px;
226
- scrollbar-width: thin;
227
- scrollbar-color: var(--ssw-border) transparent;
228
- }
229
-
230
- .ssw-token-list::-webkit-scrollbar {
231
- width: 6px;
232
- }
233
-
234
- .ssw-token-list::-webkit-scrollbar-track {
235
- background: transparent;
236
- }
237
-
238
- .ssw-token-list::-webkit-scrollbar-thumb {
239
- background: var(--ssw-border);
240
- border-radius: 3px;
241
- }
242
-
243
- .ssw-token-list::-webkit-scrollbar-thumb:hover {
244
- background: var(--ssw-border-hover);
245
- }
246
-
247
- .ssw-token-item {
248
- display: flex;
249
- align-items: center;
250
- gap: 12px;
251
- width: 100%;
252
- padding: 12px;
253
- border: none;
254
- background: none;
255
- border-radius: var(--ssw-radius-sm);
256
- cursor: pointer;
257
- transition: background 0.15s ease;
258
- text-align: left;
259
- animation: ssw-token-fade-in 0.2s ease backwards;
260
- }
261
-
262
- @keyframes ssw-token-fade-in {
263
- from {
264
- opacity: 0;
265
- transform: translateY(4px);
266
- }
267
- to {
268
- opacity: 1;
269
- transform: translateY(0);
270
- }
271
- }
272
-
273
- .ssw-token-item:hover {
274
- background: var(--ssw-bg-hover);
275
- }
276
-
277
- .ssw-token-icon-wrapper {
278
- position: relative;
279
- width: 40px;
280
- height: 40px;
281
- flex-shrink: 0;
282
- }
283
-
284
- .ssw-token-icon,
285
- .ssw-token-icon-placeholder {
286
- width: 40px;
287
- height: 40px;
288
- border-radius: 50%;
289
- }
290
-
291
- .ssw-token-icon {
292
- object-fit: contain;
293
- }
294
-
295
- .ssw-token-icon-placeholder {
296
- display: flex;
297
- align-items: center;
298
- justify-content: center;
299
- font-size: 16px;
300
- font-weight: 600;
301
- color: white;
302
- }
303
-
304
- .ssw-token-chain-badge {
305
- position: absolute;
306
- bottom: -2px;
307
- right: -2px;
308
- width: 16px;
309
- height: 16px;
310
- border-radius: var(--ssw-radius-2xs);
311
- border: 2px solid var(--ssw-bg-secondary);
312
- background: var(--ssw-bg-secondary);
313
- }
314
-
315
- .ssw-token-info {
316
- display: flex;
317
- flex-direction: column;
318
- gap: 2px;
319
- min-width: 0;
320
- }
321
-
322
- .ssw-token-symbol {
323
- font-size: 15px;
324
- font-weight: 600;
325
- color: var(--ssw-text-primary);
326
- }
327
-
328
- .ssw-token-name {
329
- font-size: 13px;
330
- color: var(--ssw-text-secondary);
331
- white-space: nowrap;
332
- overflow: hidden;
333
- text-overflow: ellipsis;
334
- }
335
-
336
- .ssw-token-right {
337
- margin-left: auto;
338
- display: flex;
339
- flex-direction: column;
340
- align-items: flex-end;
341
- gap: 2px;
342
- flex-shrink: 0;
343
- }
344
-
345
- .ssw-token-fiat-value {
346
- font-size: 14px;
347
- font-weight: 500;
348
- color: var(--ssw-text-primary);
349
- }
350
-
351
- .ssw-token-balance {
352
- font-size: 13px;
353
- font-weight: 400;
354
- color: var(--ssw-text-secondary);
355
- }
356
-
357
- .ssw-token-balance-skeleton {
358
- width: 60px;
359
- height: 14px;
360
- border-radius: var(--ssw-radius-2xs);
361
- background: linear-gradient(
362
- 90deg,
363
- var(--ssw-bg-hover) 25%,
364
- var(--ssw-border) 50%,
365
- var(--ssw-bg-hover) 75%
366
- );
367
- background-size: 200% 100%;
368
- animation: ssw-skeleton-shimmer 1.5s infinite;
369
- flex-shrink: 0;
370
- }
371
-
372
- @keyframes ssw-skeleton-shimmer {
373
- 0% {
374
- background-position: 200% 0;
375
- }
376
- 100% {
377
- background-position: -200% 0;
378
- }
379
- }
380
-
381
- .ssw-loading,
382
- .ssw-empty {
383
- display: flex;
384
- flex-direction: column;
385
- align-items: center;
386
- justify-content: center;
387
- gap: 12px;
388
- padding: 48px 24px;
389
- color: var(--ssw-text-secondary);
390
- font-size: 14px;
391
- }
392
-
393
- .ssw-spinner {
394
- width: 24px;
395
- height: 24px;
396
- border: 2px solid var(--ssw-border);
397
- border-top-color: var(--ssw-accent);
398
- border-radius: 50%;
399
- animation: ssw-spin 0.8s linear infinite;
400
- }
401
-
402
- @keyframes ssw-spin {
403
- to {
404
- transform: rotate(360deg);
405
- }
406
- }
407
-
408
- @media (max-width: 600px) {
409
- .ssw-modal {
410
- max-height: 90vh;
411
- }
412
-
413
- .ssw-modal-content {
414
- flex-direction: column;
415
- }
416
-
417
- .ssw-chain-sidebar {
418
- width: 100%;
419
- border-right: none;
420
- border-bottom: 1px solid var(--ssw-border);
421
- max-height: 200px;
422
- }
423
-
424
- .ssw-chain-list {
425
- display: flex;
426
- flex-wrap: wrap;
427
- gap: 8px;
428
- padding: 0 16px 16px;
429
- }
430
-
431
- .ssw-chain-item {
432
- padding: 8px 12px;
433
- }
434
-
435
- .ssw-chain-name {
436
- font-size: 13px;
437
- }
438
- }