@shapeshiftoss/swap-widget 0.0.2

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 (157) hide show
  1. package/Dockerfile +87 -0
  2. package/README.md +519 -0
  3. package/dist/assets/PhArrowCircleDown-B305t-Sh.js +14 -0
  4. package/dist/assets/PhArrowClockwise-CJPxQhr_.js +14 -0
  5. package/dist/assets/PhArrowDown-C4hT9BVu.js +14 -0
  6. package/dist/assets/PhArrowLeft-Way4Cu-r.js +14 -0
  7. package/dist/assets/PhArrowRight-Cp5ZME0F.js +14 -0
  8. package/dist/assets/PhArrowSquareOut-NnrK69c5.js +14 -0
  9. package/dist/assets/PhArrowUp-Dph6j8rm.js +14 -0
  10. package/dist/assets/PhArrowUpRight-BpJjRRRh.js +14 -0
  11. package/dist/assets/PhArrowsClockwise-CFUT8X7R.js +14 -0
  12. package/dist/assets/PhArrowsDownUp-BjBI4ckC.js +14 -0
  13. package/dist/assets/PhArrowsLeftRight-CuLpbKRk.js +14 -0
  14. package/dist/assets/PhBank-Dchr4XQJ.js +14 -0
  15. package/dist/assets/PhBrowser-dUu2TrC1.js +14 -0
  16. package/dist/assets/PhCaretDown-78IuKU3V.js +14 -0
  17. package/dist/assets/PhCaretLeft-_aiyH7n1.js +14 -0
  18. package/dist/assets/PhCaretRight-8zJQEuDX.js +14 -0
  19. package/dist/assets/PhCaretUp-CiCxKWwN.js +14 -0
  20. package/dist/assets/PhCheck-CcADx8br.js +14 -0
  21. package/dist/assets/PhCircleHalf-BYzSzd2h.js +14 -0
  22. package/dist/assets/PhClock-UItiXeJq.js +14 -0
  23. package/dist/assets/PhCompass-CUy3uA7t.js +14 -0
  24. package/dist/assets/PhCopy-C-PDgSlZ.js +14 -0
  25. package/dist/assets/PhCreditCard-CWRaUT6F.js +14 -0
  26. package/dist/assets/PhCurrencyDollar-Cqla3AXT.js +14 -0
  27. package/dist/assets/PhDesktop-BBIPrYLl.js +14 -0
  28. package/dist/assets/PhDeviceMobile-BdsPaATg.js +14 -0
  29. package/dist/assets/PhDotsThree-BMXCQl-0.js +14 -0
  30. package/dist/assets/PhEnvelope-yUsis6yU.js +14 -0
  31. package/dist/assets/PhFunnelSimple-Ba7BbWTp.js +14 -0
  32. package/dist/assets/PhGlobe-DgLxBk5U.js +14 -0
  33. package/dist/assets/PhIdentificationCard-Czjmq9Z3.js +14 -0
  34. package/dist/assets/PhImage-BAJ_erz6.js +14 -0
  35. package/dist/assets/PhInfo-Cr4DhVUE.js +14 -0
  36. package/dist/assets/PhLightbulb-BX_7duTr.js +14 -0
  37. package/dist/assets/PhMagnifyingGlass-Mygfryvz.js +14 -0
  38. package/dist/assets/PhPaperPlaneRight-BeuCA660.js +14 -0
  39. package/dist/assets/PhPlus-BMjcHjsT.js +14 -0
  40. package/dist/assets/PhPower-CGffGmdb.js +14 -0
  41. package/dist/assets/PhPuzzlePiece-wm_GpVSi.js +14 -0
  42. package/dist/assets/PhQrCode-DRwRzXCH.js +14 -0
  43. package/dist/assets/PhQuestion-M09j2U0T.js +14 -0
  44. package/dist/assets/PhQuestionMark-BP9EMB6h.js +14 -0
  45. package/dist/assets/PhSealCheck-BfG80yKn.js +14 -0
  46. package/dist/assets/PhSignOut-C5YOWlPT.js +14 -0
  47. package/dist/assets/PhSpinner-BXooDYzU.js +14 -0
  48. package/dist/assets/PhTrash-Biq6rmmL.js +14 -0
  49. package/dist/assets/PhUser-CAgZSpGe.js +14 -0
  50. package/dist/assets/PhVault-l2PHF38a.js +14 -0
  51. package/dist/assets/PhWallet-w25D16It.js +14 -0
  52. package/dist/assets/PhWarning-DPEydIPw.js +14 -0
  53. package/dist/assets/PhWarningCircle-BqjT745H.js +14 -0
  54. package/dist/assets/PhX-s-SmVExa.js +14 -0
  55. package/dist/assets/SwapController-If0bFrNc.js +1 -0
  56. package/dist/assets/ccip-BBB7uCdL.js +1 -0
  57. package/dist/assets/ccip-CkkdfKKI.js +1 -0
  58. package/dist/assets/data-capture-D4gAy-Yc.js +242 -0
  59. package/dist/assets/email-B1AJehis.js +90 -0
  60. package/dist/assets/embedded-wallet-Q6DQopDk.js +410 -0
  61. package/dist/assets/features-B6JAPAFb.js +5 -0
  62. package/dist/assets/index-5jd8RPN9.js +7428 -0
  63. package/dist/assets/index-B4kNtSTk.js +1080 -0
  64. package/dist/assets/index-B753eAob.js +1 -0
  65. package/dist/assets/index-BZoLTv77.js +3 -0
  66. package/dist/assets/index-Bcw9UURX.js +3 -0
  67. package/dist/assets/index-BkrV-ahK.js +2 -0
  68. package/dist/assets/index-CRQzQ_up.js +9 -0
  69. package/dist/assets/index-CSW0Gt5y.js +132 -0
  70. package/dist/assets/index-CZ4jTIsk.js +138 -0
  71. package/dist/assets/index-Cwa8SB3h.js +61 -0
  72. package/dist/assets/index-DEwQgT4r.js +78 -0
  73. package/dist/assets/index-DVfQiQ1d.js +1 -0
  74. package/dist/assets/index-cV3UdaMs.css +1 -0
  75. package/dist/assets/index-hAmu622O.js +43 -0
  76. package/dist/assets/onramp-XcPNCLRU.js +422 -0
  77. package/dist/assets/pay-with-exchange-BeHt4OF4.js +280 -0
  78. package/dist/assets/property-C9JG5tag.js +27 -0
  79. package/dist/assets/receive-7ff4he2S.js +131 -0
  80. package/dist/assets/send-CkMBIRXT.js +554 -0
  81. package/dist/assets/socials-DmmxuLrP.js +250 -0
  82. package/dist/assets/swaps-IHAYRQ0x.js +1050 -0
  83. package/dist/assets/transactions-9Cxdk7o9.js +16 -0
  84. package/dist/assets/v4-BOvFkHkt.js +1 -0
  85. package/dist/assets/w3m-modal-kJzFnBfB.js +891 -0
  86. package/dist/assets/wallet-standard-Dv8LMoUB.js +1 -0
  87. package/dist/favicon.png +0 -0
  88. package/dist/favicon.svg +11 -0
  89. package/dist/icon-192x192.png +0 -0
  90. package/dist/icon-512x512.png +0 -0
  91. package/dist/index.html +33 -0
  92. package/index.html +32 -0
  93. package/package.json +59 -0
  94. package/public/favicon.png +0 -0
  95. package/public/favicon.svg +11 -0
  96. package/public/icon-192x192.png +0 -0
  97. package/public/icon-512x512.png +0 -0
  98. package/railway.toml +10 -0
  99. package/src/api/client.ts +95 -0
  100. package/src/components/AddressInputModal.css +173 -0
  101. package/src/components/AddressInputModal.tsx +250 -0
  102. package/src/components/ApprovalStep.tsx +92 -0
  103. package/src/components/ExecutionStep.tsx +27 -0
  104. package/src/components/InputStep.tsx +431 -0
  105. package/src/components/QuoteSelector.css +146 -0
  106. package/src/components/QuoteSelector.tsx +137 -0
  107. package/src/components/QuotesModal.css +250 -0
  108. package/src/components/QuotesModal.tsx +182 -0
  109. package/src/components/SettingsModal.css +145 -0
  110. package/src/components/SettingsModal.tsx +180 -0
  111. package/src/components/StatusStep.tsx +139 -0
  112. package/src/components/SwapWidget.css +713 -0
  113. package/src/components/SwapWidget.tsx +607 -0
  114. package/src/components/TokenSelectModal.css +438 -0
  115. package/src/components/TokenSelectModal.tsx +487 -0
  116. package/src/components/WalletProvider.tsx +92 -0
  117. package/src/config/appkit.ts +104 -0
  118. package/src/config/wagmi.ts +27 -0
  119. package/src/constants/chains.ts +72 -0
  120. package/src/constants/defaults.ts +28 -0
  121. package/src/constants/swappers.ts +48 -0
  122. package/src/constants/viemChains.ts +69 -0
  123. package/src/contexts/SwapWalletContext.tsx +25 -0
  124. package/src/demo/App.css +458 -0
  125. package/src/demo/App.tsx +481 -0
  126. package/src/demo/main.tsx +25 -0
  127. package/src/hooks/useAssets.ts +180 -0
  128. package/src/hooks/useBalances.ts +822 -0
  129. package/src/hooks/useBitcoinSigning.ts +276 -0
  130. package/src/hooks/useMarketData.ts +169 -0
  131. package/src/hooks/useSolanaSigning.ts +275 -0
  132. package/src/hooks/useStatusPolling.ts +137 -0
  133. package/src/hooks/useSwapApproval.ts +106 -0
  134. package/src/hooks/useSwapDisplayValues.ts +157 -0
  135. package/src/hooks/useSwapExecution.ts +199 -0
  136. package/src/hooks/useSwapHandlers.ts +119 -0
  137. package/src/hooks/useSwapQuote.ts +71 -0
  138. package/src/hooks/useSwapQuoting.ts +102 -0
  139. package/src/hooks/useSwapRates.ts +61 -0
  140. package/src/index.ts +43 -0
  141. package/src/machines/SwapMachineContext.ts +5 -0
  142. package/src/machines/__tests__/guards.test.ts +228 -0
  143. package/src/machines/__tests__/setup.test.ts +7 -0
  144. package/src/machines/__tests__/swapMachine.test.ts +544 -0
  145. package/src/machines/__tests__/types.test.ts +124 -0
  146. package/src/machines/guards.ts +33 -0
  147. package/src/machines/swapMachine.ts +288 -0
  148. package/src/machines/types.ts +54 -0
  149. package/src/services/transactionStatus.ts +322 -0
  150. package/src/types/index.ts +361 -0
  151. package/src/utils/addressValidation.ts +201 -0
  152. package/src/utils/redirect.ts +45 -0
  153. package/src/vite-env.d.ts +10 -0
  154. package/tsconfig.json +23 -0
  155. package/tsconfig.node.json +10 -0
  156. package/vite.config.ts +101 -0
  157. package/vitest.config.ts +18 -0
@@ -0,0 +1,410 @@
1
+ import{O as Y,I as g,as as W,af as K,J as c,u as _,a2 as j,aD as G,a4 as d,G as w,y as R,z,D as B,F as l,r as N,k as h,aE as V,h as k,j as C,W as m,C as L,aF as q,aG as X,at as J,aH as v,n as D,aI as O,au as Q,E as I,S as Z,aJ as ee,R as te}from"./index-5jd8RPN9.js";const ie=Y`
2
+ div {
3
+ width: 100%;
4
+ }
5
+
6
+ [data-ready='false'] {
7
+ transform: scale(1.05);
8
+ }
9
+
10
+ @media (max-width: 430px) {
11
+ [data-ready='false'] {
12
+ transform: translateY(-50px);
13
+ }
14
+ }
15
+ `;var F=function(e,t,i,n){var r=arguments.length,o=r<3?t:n===null?n=Object.getOwnPropertyDescriptor(t,i):n,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(e,t,i,n);else for(var s=e.length-1;s>=0;s--)(a=e[s])&&(o=(r<3?a(o):r>3?a(t,i,o):a(t,i))||o);return r>3&&o&&Object.defineProperty(t,i,o),o};const P=600,M=360,oe=64;let E=class extends g{constructor(){super(),this.bodyObserver=void 0,this.unsubscribe=[],this.iframe=document.getElementById("w3m-iframe"),this.ready=!1,this.unsubscribe.push(W.subscribeKey("open",t=>{t||this.onHideIframe()}),W.subscribeKey("shake",t=>{t?this.iframe.style.animation="w3m-shake 500ms var(--apkt-easings-ease-out-power-2)":this.iframe.style.animation="none"}))}disconnectedCallback(){var t;this.onHideIframe(),this.unsubscribe.forEach(i=>i()),(t=this.bodyObserver)==null||t.unobserve(window.document.body)}async firstUpdated(){var i;await this.syncTheme(),this.iframe.style.display="block";const t=(i=this==null?void 0:this.renderRoot)==null?void 0:i.querySelector("div");this.bodyObserver=new ResizeObserver(n=>{var a,s;const r=(a=n==null?void 0:n[0])==null?void 0:a.contentBoxSize,o=(s=r==null?void 0:r[0])==null?void 0:s.inlineSize;this.iframe.style.height=`${P}px`,t.style.height=`${P}px`,K.state.enableEmbedded?this.updateFrameSizeForEmbeddedMode():o&&o<=430?(this.iframe.style.width="100%",this.iframe.style.left="0px",this.iframe.style.bottom="0px",this.iframe.style.top="unset",this.onShowIframe()):(this.iframe.style.width=`${M}px`,this.iframe.style.left=`calc(50% - ${M/2}px)`,this.iframe.style.top=`calc(50% - ${P/2}px + ${oe/2}px)`,this.iframe.style.bottom="unset",this.onShowIframe())}),this.bodyObserver.observe(window.document.body)}render(){return c`<div data-ready=${this.ready} id="w3m-frame-container"></div>`}onShowIframe(){const t=window.innerWidth<=430;this.ready=!0,this.iframe.style.animation=t?"w3m-iframe-zoom-in-mobile 200ms var(--apkt-easings-ease-out-power-2)":"w3m-iframe-zoom-in 200ms var(--apkt-easings-ease-out-power-2)"}onHideIframe(){this.iframe.style.display="none",this.iframe.style.animation="w3m-iframe-fade-out 200ms var(--apkt-easings-ease-out-power-2)"}async syncTheme(){const t=_.getAuthConnector();if(t){const i=j.getSnapshot().themeMode,n=j.getSnapshot().themeVariables;await t.provider.syncTheme({themeVariables:n,w3mThemeVariables:G(n,i)})}}async updateFrameSizeForEmbeddedMode(){var n;const t=(n=this==null?void 0:this.renderRoot)==null?void 0:n.querySelector("div");await new Promise(r=>{setTimeout(r,300)});const i=this.getBoundingClientRect();t.style.width="100%",this.iframe.style.left=`${i.left}px`,this.iframe.style.top=`${i.top}px`,this.iframe.style.width=`${i.width}px`,this.iframe.style.height=`${i.height}px`,this.onShowIframe()}};E.styles=ie;F([d()],E.prototype,"ready",void 0);E=F([w("w3m-approve-transaction-view")],E);const ne=R`
16
+ a {
17
+ border: none;
18
+ border-radius: ${({borderRadius:e})=>e[20]};
19
+ display: flex;
20
+ flex-direction: row;
21
+ align-items: center;
22
+ padding: ${({spacing:e})=>e[1]};
23
+ transition:
24
+ background-color ${({durations:e})=>e.lg}
25
+ ${({easings:e})=>e["ease-out-power-2"]},
26
+ box-shadow ${({durations:e})=>e.lg}
27
+ ${({easings:e})=>e["ease-out-power-2"]},
28
+ border ${({durations:e})=>e.lg} ${({easings:e})=>e["ease-out-power-2"]};
29
+ will-change: background-color, box-shadow, border;
30
+ }
31
+
32
+ /* -- Variants --------------------------------------------------------------- */
33
+ a[data-type='success'] {
34
+ background-color: ${({tokens:e})=>e.core.backgroundSuccess};
35
+ color: ${({tokens:e})=>e.core.textSuccess};
36
+ }
37
+
38
+ a[data-type='error'] {
39
+ background-color: ${({tokens:e})=>e.core.backgroundError};
40
+ color: ${({tokens:e})=>e.core.textError};
41
+ }
42
+
43
+ a[data-type='warning'] {
44
+ background-color: ${({tokens:e})=>e.core.backgroundWarning};
45
+ color: ${({tokens:e})=>e.core.textWarning};
46
+ }
47
+
48
+ /* -- Sizes --------------------------------------------------------------- */
49
+ a[data-size='sm'] {
50
+ height: 24px;
51
+ }
52
+
53
+ a[data-size='md'] {
54
+ height: 28px;
55
+ }
56
+
57
+ a[data-size='lg'] {
58
+ height: 32px;
59
+ }
60
+
61
+ a[data-size='sm'] > wui-image,
62
+ a[data-size='sm'] > wui-icon {
63
+ width: 16px;
64
+ height: 16px;
65
+ }
66
+
67
+ a[data-size='md'] > wui-image,
68
+ a[data-size='md'] > wui-icon {
69
+ width: 20px;
70
+ height: 20px;
71
+ }
72
+
73
+ a[data-size='lg'] > wui-image,
74
+ a[data-size='lg'] > wui-icon {
75
+ width: 24px;
76
+ height: 24px;
77
+ }
78
+
79
+ wui-text {
80
+ padding-left: ${({spacing:e})=>e[1]};
81
+ padding-right: ${({spacing:e})=>e[1]};
82
+ }
83
+
84
+ wui-image {
85
+ border-radius: ${({borderRadius:e})=>e[3]};
86
+ overflow: hidden;
87
+ user-drag: none;
88
+ user-select: none;
89
+ -moz-user-select: none;
90
+ -webkit-user-drag: none;
91
+ -webkit-user-select: none;
92
+ -ms-user-select: none;
93
+ }
94
+
95
+ /* -- States --------------------------------------------------------------- */
96
+ @media (hover: hover) and (pointer: fine) {
97
+ a[data-type='success']:not(:disabled):hover {
98
+ background-color: ${({tokens:e})=>e.theme.foregroundPrimary};
99
+ box-shadow: 0px 0px 0px 1px ${({tokens:e})=>e.core.borderSuccess};
100
+ }
101
+
102
+ a[data-type='error']:not(:disabled):hover {
103
+ background-color: ${({tokens:e})=>e.theme.foregroundPrimary};
104
+ box-shadow: 0px 0px 0px 1px ${({tokens:e})=>e.core.borderError};
105
+ }
106
+
107
+ a[data-type='warning']:not(:disabled):hover {
108
+ background-color: ${({tokens:e})=>e.theme.foregroundPrimary};
109
+ box-shadow: 0px 0px 0px 1px ${({tokens:e})=>e.core.borderWarning};
110
+ }
111
+ }
112
+
113
+ a[data-type='success']:not(:disabled):focus-visible {
114
+ box-shadow:
115
+ 0px 0px 0px 1px ${({tokens:e})=>e.core.backgroundAccentPrimary},
116
+ 0px 0px 0px 4px ${({tokens:e})=>e.core.foregroundAccent020};
117
+ }
118
+
119
+ a[data-type='error']:not(:disabled):focus-visible {
120
+ box-shadow:
121
+ 0px 0px 0px 1px ${({tokens:e})=>e.core.backgroundAccentPrimary},
122
+ 0px 0px 0px 4px ${({tokens:e})=>e.core.foregroundAccent020};
123
+ }
124
+
125
+ a[data-type='warning']:not(:disabled):focus-visible {
126
+ box-shadow:
127
+ 0px 0px 0px 1px ${({tokens:e})=>e.core.backgroundAccentPrimary},
128
+ 0px 0px 0px 4px ${({tokens:e})=>e.core.foregroundAccent020};
129
+ }
130
+
131
+ a:disabled {
132
+ opacity: 0.5;
133
+ }
134
+ `;var y=function(e,t,i,n){var r=arguments.length,o=r<3?t:n===null?n=Object.getOwnPropertyDescriptor(t,i):n,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(e,t,i,n);else for(var s=e.length-1;s>=0;s--)(a=e[s])&&(o=(r<3?a(o):r>3?a(t,i,o):a(t,i))||o);return r>3&&o&&Object.defineProperty(t,i,o),o};const re={sm:"md-regular",md:"lg-regular",lg:"lg-regular"},ae={success:"sealCheck",error:"warning",warning:"exclamationCircle"};let u=class extends g{constructor(){super(...arguments),this.type="success",this.size="md",this.imageSrc=void 0,this.disabled=!1,this.href="",this.text=void 0}render(){return c`
135
+ <a
136
+ rel="noreferrer"
137
+ target="_blank"
138
+ href=${this.href}
139
+ class=${this.disabled?"disabled":""}
140
+ data-type=${this.type}
141
+ data-size=${this.size}
142
+ >
143
+ ${this.imageTemplate()}
144
+ <wui-text variant=${re[this.size]} color="inherit">${this.text}</wui-text>
145
+ </a>
146
+ `}imageTemplate(){return this.imageSrc?c`<wui-image src=${this.imageSrc} size="inherit"></wui-image>`:c`<wui-icon
147
+ name=${ae[this.type]}
148
+ weight="fill"
149
+ color="inherit"
150
+ size="inherit"
151
+ class="image-icon"
152
+ ></wui-icon>`}};u.styles=[z,B,ne];y([l()],u.prototype,"type",void 0);y([l()],u.prototype,"size",void 0);y([l()],u.prototype,"imageSrc",void 0);y([l({type:Boolean})],u.prototype,"disabled",void 0);y([l()],u.prototype,"href",void 0);y([l()],u.prototype,"text",void 0);u=y([w("wui-semantic-chip")],u);var se=function(e,t,i,n){var r=arguments.length,o=r<3?t:n===null?n=Object.getOwnPropertyDescriptor(t,i):n,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(e,t,i,n);else for(var s=e.length-1;s>=0;s--)(a=e[s])&&(o=(r<3?a(o):r>3?a(t,i,o):a(t,i))||o);return r>3&&o&&Object.defineProperty(t,i,o),o};let H=class extends g{render(){return c`
153
+ <wui-flex flexDirection="column" alignItems="center" gap="5" padding="5">
154
+ <wui-text variant="md-regular" color="primary">Follow the instructions on</wui-text>
155
+ <wui-semantic-chip
156
+ icon="externalLink"
157
+ variant="fill"
158
+ text=${N.SECURE_SITE_DASHBOARD}
159
+ href=${N.SECURE_SITE_DASHBOARD}
160
+ imageSrc=${N.SECURE_SITE_FAVICON}
161
+ data-testid="w3m-secure-website-button"
162
+ >
163
+ </wui-semantic-chip>
164
+ <wui-text variant="sm-regular" color="secondary">
165
+ You will have to reconnect for security reasons
166
+ </wui-text>
167
+ </wui-flex>
168
+ `}};H=se([w("w3m-upgrade-wallet-view")],H);var A=function(e,t,i,n){var r=arguments.length,o=r<3?t:n===null?n=Object.getOwnPropertyDescriptor(t,i):n,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(e,t,i,n);else for(var s=e.length-1;s>=0;s--)(a=e[s])&&(o=(r<3?a(o):r>3?a(t,i,o):a(t,i))||o);return r>3&&o&&Object.defineProperty(t,i,o),o};let $=class extends g{constructor(){super(...arguments),this.loading=!1,this.switched=!1,this.text="",this.network=h.state.activeCaipNetwork}render(){return c`
169
+ <wui-flex flexDirection="column" gap="2" .padding=${["6","4","3","4"]}>
170
+ ${this.togglePreferredAccountTypeTemplate()} ${this.toggleSmartAccountVersionTemplate()}
171
+ </wui-flex>
172
+ `}toggleSmartAccountVersionTemplate(){return c`
173
+ <w3m-tooltip-trigger text="Changing the smart account version will reload the page">
174
+ <wui-list-item
175
+ icon=${this.isV6()?"arrowTop":"arrowBottom"}
176
+ ?rounded=${!0}
177
+ ?chevron=${!0}
178
+ data-testid="account-toggle-smart-account-version"
179
+ @click=${this.toggleSmartAccountVersion.bind(this)}
180
+ >
181
+ <wui-text variant="lg-regular" color="primary"
182
+ >Force Smart Account Version ${this.isV6()?"7":"6"}</wui-text
183
+ >
184
+ </wui-list-item>
185
+ </w3m-tooltip-trigger>
186
+ `}isV6(){return(V.get("dapp_smart_account_version")||"v6")==="v6"}toggleSmartAccountVersion(){var t;V.set("dapp_smart_account_version",this.isV6()?"v7":"v6"),typeof window<"u"&&((t=window==null?void 0:window.location)==null||t.reload())}togglePreferredAccountTypeTemplate(){var o;const t=(o=this.network)==null?void 0:o.chainNamespace,i=h.checkIfSmartAccountEnabled(),n=_.getConnectorId(t);return!_.getAuthConnector()||n!==k.CONNECTOR_ID.AUTH||!i?null:(this.switched||(this.text=C(t)===m.ACCOUNT_TYPES.SMART_ACCOUNT?"Switch to your EOA":"Switch to your Smart Account"),c`
187
+ <wui-list-item
188
+ icon="swapHorizontal"
189
+ ?rounded=${!0}
190
+ ?chevron=${!0}
191
+ ?loading=${this.loading}
192
+ @click=${this.changePreferredAccountType.bind(this)}
193
+ data-testid="account-toggle-preferred-account-type"
194
+ >
195
+ <wui-text variant="lg-regular" color="primary">${this.text}</wui-text>
196
+ </wui-list-item>
197
+ `)}async changePreferredAccountType(){var o;const t=(o=this.network)==null?void 0:o.chainNamespace,i=h.checkIfSmartAccountEnabled(),n=C(t)===m.ACCOUNT_TYPES.SMART_ACCOUNT||!i?m.ACCOUNT_TYPES.EOA:m.ACCOUNT_TYPES.SMART_ACCOUNT;_.getAuthConnector()&&(this.loading=!0,await L.setPreferredAccountType(n,t),this.text=n===m.ACCOUNT_TYPES.SMART_ACCOUNT?"Switch to your EOA":"Switch to your Smart Account",this.switched=!0,q.resetSend(),this.loading=!1,this.requestUpdate())}};A([d()],$.prototype,"loading",void 0);A([d()],$.prototype,"switched",void 0);A([d()],$.prototype,"text",void 0);A([d()],$.prototype,"network",void 0);$=A([w("w3m-smart-account-settings-view")],$);const ce=R`
198
+ :host {
199
+ width: 100%;
200
+ }
201
+
202
+ button {
203
+ width: 100%;
204
+ display: flex;
205
+ justify-content: space-between;
206
+ align-items: center;
207
+ background-color: ${({tokens:e})=>e.theme.foregroundPrimary};
208
+ border-radius: ${({borderRadius:e})=>e[4]};
209
+ padding: ${({spacing:e})=>e[4]};
210
+ }
211
+
212
+ .name {
213
+ max-width: 75%;
214
+ overflow: hidden;
215
+ text-overflow: ellipsis;
216
+ white-space: nowrap;
217
+ }
218
+
219
+ @media (hover: hover) and (pointer: fine) {
220
+ button:hover:enabled {
221
+ cursor: pointer;
222
+ background-color: ${({tokens:e})=>e.theme.foregroundSecondary};
223
+ border-radius: ${({borderRadius:e})=>e[6]};
224
+ }
225
+ }
226
+
227
+ button:disabled {
228
+ opacity: 0.5;
229
+ cursor: default;
230
+ }
231
+
232
+ button:focus-visible:enabled {
233
+ box-shadow: 0 0 0 4px ${({tokens:e})=>e.core.foregroundAccent040};
234
+ background-color: ${({tokens:e})=>e.theme.foregroundSecondary};
235
+ }
236
+ `;var T=function(e,t,i,n){var r=arguments.length,o=r<3?t:n===null?n=Object.getOwnPropertyDescriptor(t,i):n,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(e,t,i,n);else for(var s=e.length-1;s>=0;s--)(a=e[s])&&(o=(r<3?a(o):r>3?a(t,i,o):a(t,i))||o);return r>3&&o&&Object.defineProperty(t,i,o),o};let b=class extends g{constructor(){super(...arguments),this.name="",this.registered=!1,this.loading=!1,this.disabled=!1}render(){return c`
237
+ <button ?disabled=${this.disabled}>
238
+ <wui-text class="name" color="primary" variant="md-regular">${this.name}</wui-text>
239
+ ${this.templateRightContent()}
240
+ </button>
241
+ `}templateRightContent(){return this.loading?c`<wui-loading-spinner size="lg" color="primary"></wui-loading-spinner>`:this.registered?c`<wui-tag variant="info" size="sm">Registered</wui-tag>`:c`<wui-tag variant="success" size="sm">Available</wui-tag>`}};b.styles=[z,B,ce];T([l()],b.prototype,"name",void 0);T([l({type:Boolean})],b.prototype,"registered",void 0);T([l({type:Boolean})],b.prototype,"loading",void 0);T([l({type:Boolean})],b.prototype,"disabled",void 0);b=T([w("wui-account-name-suggestion-item")],b);const le=R`
242
+ :host {
243
+ position: relative;
244
+ width: 100%;
245
+ display: inline-block;
246
+ }
247
+
248
+ :host([disabled]) {
249
+ opacity: 0.5;
250
+ cursor: not-allowed;
251
+ }
252
+
253
+ .base-name {
254
+ position: absolute;
255
+ right: ${({spacing:e})=>e[4]};
256
+ top: 50%;
257
+ transform: translateY(-50%);
258
+ text-align: right;
259
+ padding: ${({spacing:e})=>e[1]};
260
+ background-color: ${({tokens:e})=>e.theme.foregroundSecondary};
261
+ border-radius: ${({borderRadius:e})=>e[1]};
262
+ }
263
+ `;var S=function(e,t,i,n){var r=arguments.length,o=r<3?t:n===null?n=Object.getOwnPropertyDescriptor(t,i):n,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(e,t,i,n);else for(var s=e.length-1;s>=0;s--)(a=e[s])&&(o=(r<3?a(o):r>3?a(t,i,o):a(t,i))||o);return r>3&&o&&Object.defineProperty(t,i,o),o};let f=class extends g{constructor(){super(...arguments),this.disabled=!1,this.loading=!1}render(){return c`
264
+ <wui-input-text
265
+ value=${X(this.value)}
266
+ ?disabled=${this.disabled}
267
+ .value=${this.value||""}
268
+ data-testid="wui-ens-input"
269
+ icon="search"
270
+ inputRightPadding="5xl"
271
+ .onKeyDown=${this.onKeyDown}
272
+ ></wui-input-text>
273
+ `}};f.styles=[z,le];S([l()],f.prototype,"errorMessage",void 0);S([l({type:Boolean})],f.prototype,"disabled",void 0);S([l()],f.prototype,"value",void 0);S([l({type:Boolean})],f.prototype,"loading",void 0);S([l({attribute:!1})],f.prototype,"onKeyDown",void 0);f=S([w("wui-ens-input")],f);const de=R`
274
+ wui-flex {
275
+ width: 100%;
276
+ }
277
+
278
+ .suggestion {
279
+ background-color: ${({tokens:e})=>e.theme.foregroundPrimary};
280
+ border-radius: ${({borderRadius:e})=>e[4]};
281
+ }
282
+
283
+ .suggestion:hover:not(:disabled) {
284
+ cursor: pointer;
285
+ border: none;
286
+ width: 100%;
287
+ display: flex;
288
+ justify-content: space-between;
289
+ align-items: center;
290
+ background-color: ${({tokens:e})=>e.theme.foregroundSecondary};
291
+ border-radius: ${({borderRadius:e})=>e[6]};
292
+ padding: ${({spacing:e})=>e[4]};
293
+ }
294
+
295
+ .suggestion:disabled {
296
+ opacity: 0.5;
297
+ cursor: default;
298
+ }
299
+
300
+ .suggestion:focus-visible:not(:disabled) {
301
+ box-shadow: 0 0 0 4px ${({tokens:e})=>e.core.foregroundAccent040};
302
+ background-color: ${({tokens:e})=>e.theme.foregroundSecondary};
303
+ }
304
+
305
+ .suggested-name {
306
+ max-width: 75%;
307
+ overflow: hidden;
308
+ text-overflow: ellipsis;
309
+ white-space: nowrap;
310
+ }
311
+
312
+ form {
313
+ width: 100%;
314
+ position: relative;
315
+ }
316
+
317
+ .input-submit-button,
318
+ .input-loading-spinner {
319
+ position: absolute;
320
+ top: 22px;
321
+ transform: translateY(-50%);
322
+ right: 10px;
323
+ }
324
+ `;var x=function(e,t,i,n){var r=arguments.length,o=r<3?t:n===null?n=Object.getOwnPropertyDescriptor(t,i):n,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(e,t,i,n);else for(var s=e.length-1;s>=0;s--)(a=e[s])&&(o=(r<3?a(o):r>3?a(t,i,o):a(t,i))||o);return r>3&&o&&Object.defineProperty(t,i,o),o};let p=class extends g{constructor(){var t;super(),this.formRef=J(),this.usubscribe=[],this.name="",this.error="",this.loading=v.state.loading,this.suggestions=v.state.suggestions,this.profileName=(t=h.getAccountData())==null?void 0:t.profileName,this.onDebouncedNameInputChange=D.debounce(i=>{i.length<4?this.error="Name must be at least 4 characters long":O.isValidReownName(i)?(this.error="",v.getSuggestions(i)):this.error="The value is not a valid username"}),this.usubscribe.push(v.subscribe(i=>{this.suggestions=i.suggestions,this.loading=i.loading}),h.subscribeChainProp("accountState",i=>{this.profileName=i==null?void 0:i.profileName,i!=null&&i.profileName&&(this.error="You already own a name")}))}firstUpdated(){var t;(t=this.formRef.value)==null||t.addEventListener("keydown",this.onEnterKey.bind(this))}disconnectedCallback(){var t;super.disconnectedCallback(),this.usubscribe.forEach(i=>i()),(t=this.formRef.value)==null||t.removeEventListener("keydown",this.onEnterKey.bind(this))}render(){return c`
325
+ <wui-flex
326
+ flexDirection="column"
327
+ alignItems="center"
328
+ gap="4"
329
+ .padding=${["1","3","4","3"]}
330
+ >
331
+ <form ${Q(this.formRef)} @submit=${this.onSubmitName.bind(this)}>
332
+ <wui-ens-input
333
+ @inputChange=${this.onNameInputChange.bind(this)}
334
+ .errorMessage=${this.error}
335
+ .value=${this.name}
336
+ .onKeyDown=${this.onKeyDown.bind(this)}
337
+ >
338
+ </wui-ens-input>
339
+ ${this.submitButtonTemplate()}
340
+ <input type="submit" hidden />
341
+ </form>
342
+ ${this.templateSuggestions()}
343
+ </wui-flex>
344
+ `}submitButtonTemplate(){const t=this.suggestions.find(n=>{var r,o;return((o=(r=n.name)==null?void 0:r.split("."))==null?void 0:o[0])===this.name&&n.registered});if(this.loading)return c`<wui-loading-spinner
345
+ class="input-loading-spinner"
346
+ color="secondary"
347
+ ></wui-loading-spinner>`;const i=`${this.name}${k.WC_NAME_SUFFIX}`;return c`
348
+ <wui-icon-link
349
+ ?disabled=${!!t}
350
+ class="input-submit-button"
351
+ size="sm"
352
+ icon="chevronRight"
353
+ iconColor=${t?"default":"accent-primary"}
354
+ @click=${()=>this.onSubmitName(i)}
355
+ >
356
+ </wui-icon-link>
357
+ `}onNameInputChange(t){const i=O.validateReownName(t.detail||"");this.name=i,this.onDebouncedNameInputChange(i)}onKeyDown(t){t.key.length===1&&!O.isValidReownName(t.key)&&t.preventDefault()}templateSuggestions(){return!this.name||this.name.length<4||this.error?null:c`<wui-flex flexDirection="column" gap="1" alignItems="center">
358
+ ${this.suggestions.map(t=>c`<wui-account-name-suggestion-item
359
+ name=${t.name}
360
+ ?registered=${t.registered}
361
+ ?loading=${this.loading}
362
+ ?disabled=${t.registered||this.loading}
363
+ data-testid="account-name-suggestion"
364
+ @click=${()=>this.onSubmitName(t.name)}
365
+ ></wui-account-name-suggestion-item>`)}
366
+ </wui-flex>`}isAllowedToSubmit(t){var r;const i=(r=t.split("."))==null?void 0:r[0],n=this.suggestions.find(o=>{var a,s;return((s=(a=o.name)==null?void 0:a.split("."))==null?void 0:s[0])===i&&o.registered});return!this.loading&&!this.error&&!this.profileName&&i&&v.validateName(i)&&!n}async onSubmitName(t){try{if(!this.isAllowedToSubmit(t))return;I.sendEvent({type:"track",event:"REGISTER_NAME_INITIATED",properties:{isSmartAccount:C(h.state.activeChain)===m.ACCOUNT_TYPES.SMART_ACCOUNT,ensName:t}}),await v.registerName(t),I.sendEvent({type:"track",event:"REGISTER_NAME_SUCCESS",properties:{isSmartAccount:C(h.state.activeChain)===m.ACCOUNT_TYPES.SMART_ACCOUNT,ensName:t}})}catch(i){Z.showError(i.message),I.sendEvent({type:"track",event:"REGISTER_NAME_ERROR",properties:{isSmartAccount:C(h.state.activeChain)===m.ACCOUNT_TYPES.SMART_ACCOUNT,ensName:t,error:D.parseError(i)}})}}onEnterKey(t){if(t.key==="Enter"&&this.name&&this.isAllowedToSubmit(this.name)){const i=`${this.name}${k.WC_NAME_SUFFIX}`;this.onSubmitName(i)}}};p.styles=de;x([l()],p.prototype,"errorMessage",void 0);x([d()],p.prototype,"name",void 0);x([d()],p.prototype,"error",void 0);x([d()],p.prototype,"loading",void 0);x([d()],p.prototype,"suggestions",void 0);x([d()],p.prototype,"profileName",void 0);p=x([w("w3m-register-account-name-view")],p);const ue=Y`
367
+ .continue-button-container {
368
+ width: 100%;
369
+ }
370
+ `;var pe=function(e,t,i,n){var r=arguments.length,o=r<3?t:n===null?n=Object.getOwnPropertyDescriptor(t,i):n,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(e,t,i,n);else for(var s=e.length-1;s>=0;s--)(a=e[s])&&(o=(r<3?a(o):r>3?a(t,i,o):a(t,i))||o);return r>3&&o&&Object.defineProperty(t,i,o),o};let U=class extends g{render(){return c`
371
+ <wui-flex
372
+ flexDirection="column"
373
+ alignItems="center"
374
+ gap="6"
375
+ .padding=${["0","0","4","0"]}
376
+ >
377
+ ${this.onboardingTemplate()} ${this.buttonsTemplate()}
378
+ <wui-link
379
+ @click=${()=>{D.openHref(ee.URLS.FAQ,"_blank")}}
380
+ >
381
+ Learn more
382
+ <wui-icon color="inherit" slot="iconRight" name="externalLink"></wui-icon>
383
+ </wui-link>
384
+ </wui-flex>
385
+ `}onboardingTemplate(){return c` <wui-flex
386
+ flexDirection="column"
387
+ gap="6"
388
+ alignItems="center"
389
+ .padding=${["0","6","0","6"]}
390
+ >
391
+ <wui-flex gap="3" alignItems="center" justifyContent="center">
392
+ <wui-icon-box size="xl" color="success" icon="checkmark"></wui-icon-box>
393
+ </wui-flex>
394
+ <wui-flex flexDirection="column" alignItems="center" gap="3">
395
+ <wui-text align="center" variant="md-medium" color="primary">
396
+ Account name chosen successfully
397
+ </wui-text>
398
+ <wui-text align="center" variant="md-regular" color="primary">
399
+ You can now fund your account and trade crypto
400
+ </wui-text>
401
+ </wui-flex>
402
+ </wui-flex>`}buttonsTemplate(){return c`<wui-flex
403
+ .padding=${["0","4","0","4"]}
404
+ gap="3"
405
+ class="continue-button-container"
406
+ >
407
+ <wui-button fullWidth size="lg" borderRadius="xs" @click=${this.redirectToAccount.bind(this)}
408
+ >Let's Go!
409
+ </wui-button>
410
+ </wui-flex>`}redirectToAccount(){te.replace("Account")}};U.styles=ue;U=pe([w("w3m-register-account-name-success-view")],U);export{E as W3mApproveTransactionView,U as W3mRegisterAccountNameSuccess,p as W3mRegisterAccountNameView,$ as W3mSmartAccountSettingsView,H as W3mUpgradeWalletView};
@@ -0,0 +1,5 @@
1
+ import{k as g,bh as S,ah as y,bi as A,h as k,ag as u,m as N,aw as m}from"./index-5jd8RPN9.js";class p{constructor(e){this.getNonce=e.getNonce}async createMessage(e){const t={accountAddress:e.accountAddress,chainId:e.chainId,version:"1",domain:typeof document>"u"?"Unknown Domain":document.location.host,uri:typeof document>"u"?"Unknown URI":document.location.href,resources:this.resources,nonce:await this.getNonce(e),issuedAt:this.stringifyDate(new Date),statement:void 0,expirationTime:void 0,notBefore:void 0};return Object.assign(t,{toString:()=>this.stringify(t)})}stringify(e){var n;const t=this.getNetworkName(e.chainId);return[`${e.domain} wants you to sign in with your ${t} account:`,e.accountAddress,e.statement?`
2
+ ${e.statement}
3
+ `:"",`URI: ${e.uri}`,`Version: ${e.version}`,`Chain ID: ${e.chainId}`,`Nonce: ${e.nonce}`,e.issuedAt&&`Issued At: ${e.issuedAt}`,e.expirationTime&&`Expiration Time: ${e.expirationTime}`,e.notBefore&&`Not Before: ${e.notBefore}`,e.requestId&&`Request ID: ${e.requestId}`,((n=e.resources)==null?void 0:n.length)&&e.resources.reduce((s,o)=>`${s}
4
+ - ${o}`,"Resources:")].filter(s=>typeof s=="string").join(`
5
+ `).trim()}getNetworkName(e){const t=g.getAllRequestedCaipNetworks();return S.getNetworkNameByCaipNetworkId(t,e)}stringifyDate(e){return e.toISOString()}}class E{constructor(e={}){this.otpUuid=null,this.listeners={sessionChanged:[]},this.localAuthStorageKey=e.localAuthStorageKey||y.SIWX_AUTH_TOKEN,this.localNonceStorageKey=e.localNonceStorageKey||y.SIWX_NONCE_TOKEN,this.required=e.required??!0,this.messenger=new p({getNonce:this.getNonce.bind(this)})}async createMessage(e){return this.messenger.createMessage(e)}async addSession(e){const t=await this.request({method:"POST",key:"authenticate",body:{data:e.data,message:e.message,signature:e.signature,clientId:this.getClientId(),walletInfo:this.getWalletInfo()},headers:["nonce","otp"]});this.setStorageToken(t.token,this.localAuthStorageKey),this.emit("sessionChanged",e),this.setAppKitAccountUser(I(t.token)),this.otpUuid=null}async getSessions(e,t){try{if(!this.getStorageToken(this.localAuthStorageKey))return[];const n=await this.request({method:"GET",key:"me",query:{},headers:["auth"]});if(!n)return[];const s=n.address.toLowerCase()===t.toLowerCase(),o=n.caip2Network===e;if(!s||!o)return[];const r={data:{accountAddress:n.address,chainId:n.caip2Network},message:"",signature:""};return this.emit("sessionChanged",r),this.setAppKitAccountUser(n),[r]}catch{return[]}}async revokeSession(e,t){return Promise.resolve(this.clearStorageTokens())}async setSessions(e){if(e.length===0)this.clearStorageTokens();else{const t=e.find(n=>{var s;return n.data.chainId===((s=A())==null?void 0:s.caipNetworkId)})||e[0];await this.addSession(t)}}getRequired(){return this.required}async getSessionAccount(){if(!this.getStorageToken(this.localAuthStorageKey))throw new Error("Not authenticated");return this.request({method:"GET",key:"me",body:void 0,query:{includeAppKitAccount:!0},headers:["auth"]})}async setSessionAccountMetadata(e=null){if(!this.getStorageToken(this.localAuthStorageKey))throw new Error("Not authenticated");return this.request({method:"PUT",key:"account-metadata",body:{metadata:e},headers:["auth"]})}on(e,t){return this.listeners[e].push(t),()=>{this.listeners[e]=this.listeners[e].filter(n=>n!==t)}}removeAllListeners(){Object.keys(this.listeners).forEach(t=>{this.listeners[t]=[]})}async requestEmailOtp({email:e,account:t}){const n=await this.request({method:"POST",key:"otp",body:{email:e,account:t}});return this.otpUuid=n.uuid,this.messenger.resources=[`email:${e}`],n}confirmEmailOtp({code:e}){return this.request({method:"PUT",key:"otp",body:{code:e},headers:["otp"]})}async request({method:e,key:t,query:n,body:s,headers:o}){var f;const{projectId:r,st:h,sv:w}=this.getSDKProperties(),a=new URL(`${k.W3M_API_URL}/auth/v1/${String(t)}`);a.searchParams.set("projectId",r),a.searchParams.set("st",h),a.searchParams.set("sv",w),n&&Object.entries(n).forEach(([i,l])=>a.searchParams.set(i,String(l)));const c=await fetch(a,{method:e,body:s?JSON.stringify(s):void 0,headers:Array.isArray(o)?o.reduce((i,l)=>{switch(l){case"nonce":i["x-nonce-jwt"]=`Bearer ${this.getStorageToken(this.localNonceStorageKey)}`;break;case"auth":i.Authorization=`Bearer ${this.getStorageToken(this.localAuthStorageKey)}`;break;case"otp":this.otpUuid&&(i["x-otp"]=this.otpUuid);break}return i},{}):void 0});if(!c.ok)throw new Error(await c.text());return(f=c.headers.get("content-type"))!=null&&f.includes("application/json")?c.json():null}getStorageToken(e){return u.getItem(e)}setStorageToken(e,t){u.setItem(t,e)}clearStorageTokens(){this.otpUuid=null,u.removeItem(this.localAuthStorageKey),u.removeItem(this.localNonceStorageKey),this.emit("sessionChanged",void 0)}async getNonce(){const{nonce:e,token:t}=await this.request({method:"GET",key:"nonce"});return this.setStorageToken(t,this.localNonceStorageKey),e}getClientId(){return N.state.clientId}getWalletInfo(){var o;const e=(o=g.getAccountData())==null?void 0:o.connectedWalletInfo;if(!e)return;if("social"in e&&"identifier"in e){const r=e.social,h=e.identifier;return{type:"social",social:r,identifier:h}}const{name:t,icon:n}=e;let s="unknown";switch(e.type){case"EXTERNAL":case"INJECTED":case"ANNOUNCED":s="extension";break;case"WALLET_CONNECT":s="walletconnect";break;default:s="unknown"}return{type:s,name:t,icon:n}}getSDKProperties(){return m._getSdkProperties()}emit(e,t){this.listeners[e].forEach(n=>n(t))}setAppKitAccountUser(e){const{email:t}=e;t&&Object.values(k.CHAIN).forEach(n=>{g.setAccountProp("user",{email:t},n)})}}function I(d){const e=d.split(".");if(e.length!==3)throw new Error("Invalid token");const t=e[1];if(typeof t!="string")throw new Error("Invalid token");const n=t.replace(/-/gu,"+").replace(/_/gu,"/"),s=n.padEnd(n.length+(4-n.length%4)%4,"=");return JSON.parse(atob(s))}export{E as ReownAuthentication,p as ReownAuthenticationMessenger};