@xswap-link/sdk 0.15.1 → 0.15.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.
- package/.eslintrc.json +1 -0
- package/CHANGELOG.md +10 -0
- package/README.md +22 -4
- package/dist/index.d.mts +47 -1
- package/dist/index.d.ts +47 -1
- package/dist/index.global.js +89 -89
- package/dist/index.js +1018 -766
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +911 -659
- package/dist/index.mjs.map +1 -1
- package/example/index.html +12 -0
- package/example/package.json +24 -0
- package/example/pnpm-lock.yaml +1164 -0
- package/example/src/App.tsx +421 -0
- package/example/src/main.tsx +8 -0
- package/example/vite.config.ts +9 -0
- package/package.json +1 -1
- package/src/components/Swap/SwapView/ConfirmationView/TxOverview/index.tsx +12 -7
- package/src/components/Swap/SwapView/ConfirmationView/TxProgress/index.tsx +136 -0
- package/src/components/Swap/SwapView/ConfirmationView/TxResult/index.tsx +89 -8
- package/src/components/Swap/SwapView/ConfirmationView/index.tsx +19 -4
- package/src/components/Swap/SwapView/FeesPanel/Fees/index.tsx +11 -5
- package/src/context/SwapProvider.tsx +22 -7
- package/src/context/TxUIWrapper.tsx +34 -3
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useCrossChainDelivery.ts +143 -0
- package/src/models/Route.ts +13 -0
- package/src/models/TransactionDelivery.ts +40 -0
- package/src/models/index.ts +1 -0
- package/src/services/api.ts +23 -0
package/dist/index.js
CHANGED
|
@@ -17415,7 +17415,7 @@ var sortChains = (chains, disabledChainIds) => [...chains].map((chain) => ({
|
|
|
17415
17415
|
var import_client = require("react-dom/client");
|
|
17416
17416
|
|
|
17417
17417
|
// src/components/global.css
|
|
17418
|
-
var global_default = `/* ! tailwindcss v3.4.4 | MIT License | https://tailwindcss.com */*,::before,::after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}::before,::after{--tw-content:''}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:var(--font-family,'Satoshi',Tahoma,Verdana,ui-sans-serif);font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type='button']),input:where([type='reset']),input:where([type='submit']){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type='search']{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder, textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role="button"]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,::before,::after{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x:;--tw-pan-y:;--tw-pinch-zoom:;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position:;--tw-gradient-via-position:;--tw-gradient-to-position:;--tw-ordinal:;--tw-slashed-zero:;--tw-numeric-figure:;--tw-numeric-spacing:;--tw-numeric-fraction:;--tw-ring-inset:;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246/0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur:;--tw-brightness:;--tw-contrast:;--tw-grayscale:;--tw-hue-rotate:;--tw-invert:;--tw-saturate:;--tw-sepia:;--tw-drop-shadow:;--tw-backdrop-blur:;--tw-backdrop-brightness:;--tw-backdrop-contrast:;--tw-backdrop-grayscale:;--tw-backdrop-hue-rotate:;--tw-backdrop-invert:;--tw-backdrop-opacity:;--tw-backdrop-saturate:;--tw-backdrop-sepia:;--tw-contain-size:;--tw-contain-layout:;--tw-contain-paint:;--tw-contain-style:}::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x:;--tw-pan-y:;--tw-pinch-zoom:;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position:;--tw-gradient-via-position:;--tw-gradient-to-position:;--tw-ordinal:;--tw-slashed-zero:;--tw-numeric-figure:;--tw-numeric-spacing:;--tw-numeric-fraction:;--tw-ring-inset:;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246/0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur:;--tw-brightness:;--tw-contrast:;--tw-grayscale:;--tw-hue-rotate:;--tw-invert:;--tw-saturate:;--tw-sepia:;--tw-drop-shadow:;--tw-backdrop-blur:;--tw-backdrop-brightness:;--tw-backdrop-contrast:;--tw-backdrop-grayscale:;--tw-backdrop-hue-rotate:;--tw-backdrop-invert:;--tw-backdrop-opacity:;--tw-backdrop-saturate:;--tw-backdrop-sepia:;--tw-contain-size:;--tw-contain-layout:;--tw-contain-paint:;--tw-contain-style:}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.gradient-sections-separator-container{background-image:linear-gradient(to right,var(--tw-gradient-stops));--tw-gradient-from:transparent var(--tw-gradient-from-position);--tw-gradient-to:rgb(0 0 0/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to);--tw-gradient-to:rgb(255 255 255/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),color-mix(in srgb,var(--bg-tertiary) calc(0.1 * 100%),transparent) var(--tw-gradient-via-position),var(--tw-gradient-to);--tw-gradient-to:transparent var(--tw-gradient-to-position)}.x-border{border-width:1px;border-style:solid;border-color:color-mix(in srgb,var(--text-primary) calc(var(--tw-border-opacity) * 100%),transparent);--tw-border-opacity:0.1}.swap-panel-gradient-border{position:relative}.swap-panel-gradient-border::before,.swap-panel-gradient-border::after{content:"";position:absolute;inset:0;border-radius:inherit;padding:1px;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}.swap-panel-gradient-border::before{background:linear-gradient(90deg,color-mix(in srgb,var(--text-primary) 2.5%,transparent),color-mix(in srgb,var(--text-primary) 5%,transparent))}.swap-panel-gradient-border::after{background:linear-gradient(90deg,color-mix(in srgb,var(--text-primary) 5%,transparent),color-mix(in srgb,var(--text-primary) 7.5%,transparent));opacity:0;transition:opacity 0.15s ease}.swap-panel-gradient-border:hover::after{opacity:1}.network-dropdown-surface{background:linear-gradient(90deg,color-mix(in srgb,var(--bg-primary) 20%,transparent) 0%,color-mix(in srgb,var(--bg-primary) 20%,transparent) 100%),linear-gradient(180deg,color-mix(in srgb,var(--bg-tertiary) 4%,transparent) 0%,color-mix(in srgb,var(--bg-tertiary) 2%,transparent) 49.5%,color-mix(in srgb,var(--bg-tertiary) 4%,transparent) 100%),var(--bg-secondary)}.network-dropdown-row:hover,.network-dropdown-row-active{background:linear-gradient(90deg,transparent 0%,color-mix(in srgb,var(--bg-tertiary) 0.5%,transparent) 15%,color-mix(in srgb,var(--bg-tertiary) 2.5%,transparent) 50%,color-mix(in srgb,var(--bg-tertiary) 0.5%,transparent) 85%,transparent 100%)}.tx-modal-glow-success{background:radial-gradient(120% 60% at 0% 0%,rgba(76,175,80,0.25) 0%,transparent 45%)}.tx-modal-glow-error{background:radial-gradient(120% 60% at 0% 0%,rgba(244,67,54,0.25) 0%,transparent 45%)}.btn{position:relative;z-index:1;margin:0px;-webkit-appearance:none;-moz-appearance:none;appearance:none;white-space:nowrap;border-style:none;background-color:transparent;font-size:0.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.btn:hover{cursor:pointer}.btn-disabled{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity));opacity:0.5}.btn-disabled:hover{cursor:not-allowed}.btn--full-width{width:100%}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.invisible{visibility:hidden}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0px}.inset-x-0{left:0px;right:0px}.-right-2{right:-0.5rem}.bottom-0{bottom:0px}.bottom-5{bottom:1.25rem}.left-0{left:0px}.left-1\\/2{left:50%}.right-0{right:0px}.right-2{right:0.5rem}.top-0{top:0px}.top-\\[calc\\(100\\%\\+8px\\)\\]{top:calc(100% + 8px)}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\\[1\\]{z-index:1}.m-0{margin:0px}.mx-0{margin-left:0px;margin-right:0px}.mx-1{margin-left:0.25rem;margin-right:0.25rem}.mx-1\\.5{margin-left:0.375rem;margin-right:0.375rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:0.25rem;margin-bottom:0.25rem}.my-5{margin-top:1.25rem;margin-bottom:1.25rem}.-mr-1{margin-right:-0.25rem}.-mr-1\\.5{margin-right:-0.375rem}.-mr-2{margin-right:-0.5rem}.mb-1{margin-bottom:0.25rem}.mb-2{margin-bottom:0.5rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.ml-1{margin-left:0.25rem}.ml-1\\.5{margin-left:0.375rem}.mr-1{margin-right:0.25rem}.mr-2{margin-right:0.5rem}.mt-2{margin-top:0.5rem}.box-border{box-sizing:border-box}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.h-0{height:0px}.h-0\\.5{height:0.125rem}.h-1{height:0.25rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-3{height:0.75rem}.h-3\\.5{height:0.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\\[11px\\]{height:11px}.h-\\[12px\\]{height:12px}.h-\\[14px\\]{height:14px}.h-\\[16px\\]{height:16px}.h-\\[18px\\]{height:18px}.h-\\[20px\\]{height:20px}.h-\\[214px\\]{height:214px}.h-\\[32px\\]{height:32px}.h-\\[34px\\]{height:34px}.h-\\[72px\\]{height:72px}.h-\\[85vh\\]{height:85vh}.h-full{height:100%}.h-px{height:1px}.max-h-full{max-height:100%}.min-h-0{min-height:0px}.min-h-11{min-height:2.75rem}.min-h-6{min-height:1.5rem}.min-h-\\[320px\\]{min-height:320px}.min-h-\\[43px\\]{min-height:43px}.min-h-\\[532px\\]{min-height:532px}.w-0{width:0px}.w-0\\.5{width:0.125rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-20{width:5rem}.w-3{width:0.75rem}.w-3\\.5{width:0.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\\[100px\\]{width:100px}.w-\\[11px\\]{width:11px}.w-\\[14px\\]{width:14px}.w-\\[150px\\]{width:150px}.w-\\[18px\\]{width:18px}.w-\\[296px\\]{width:296px}.w-\\[34px\\]{width:34px}.w-\\[48px\\]{width:48px}.w-\\[60px\\]{width:60px}.w-\\[80px\\]{width:80px}.w-full{width:100%}.w-x_modal{width:var(--modal-width)}.min-w-0{min-width:0px}.min-w-10{min-width:2.5rem}.min-w-9{min-width:2.25rem}.min-w-\\[108px\\]{min-width:108px}.min-w-\\[340px\\]{min-width:340px}.min-w-x_modal{min-width:var(--modal-width,340px)}.max-w-80{max-width:20rem}.max-w-\\[120px\\]{max-width:120px}.max-w-\\[500px\\]{max-width:500px}.max-w-\\[var\\(--modal-width\\2c 588px\\)\\]{max-width:var(--modal-width,588px)}.max-w-x_modal{max-width:var(--modal-width,620px)}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.grow-0{flex-grow:0}.-translate-x-1\\/2{--tw-translate-x:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-full{--tw-translate-x:-100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\\/2{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-full{--tw-translate-y:-100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-5{--tw-translate-x:1.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(0.4,0,0.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin-slow{animation:spin 3s linear infinite}.\\!cursor-not-allowed{cursor:not-allowed !important}.cursor-help{cursor:help}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.resize{resize:both}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0px}.gap-0\\.5{gap:0.125rem}.gap-1{gap:0.25rem}.gap-1\\.5{gap:0.375rem}.gap-2{gap:0.5rem}.gap-2\\.5{gap:0.625rem}.gap-3{gap:0.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-x-1{-moz-column-gap:0.25rem;column-gap:0.25rem}.gap-y-2{row-gap:0.5rem}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.text-nowrap{text-wrap:nowrap}.\\!rounded-\\[10px\\]{border-radius:10px !important}.rounded{border-radius:0.25rem}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-\\[10px\\]{border-radius:10px}.rounded-\\[32px\\]{border-radius:32px}.rounded-\\[4px\\]{border-radius:4px}.rounded-\\[inherit\\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:0.5rem}.rounded-md{border-radius:0.375rem}.rounded-xl{border-radius:0.75rem}.rounded-b-none{border-bottom-right-radius:0px;border-bottom-left-radius:0px}.rounded-t-\\[24px\\]{border-top-left-radius:24px;border-top-right-radius:24px}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-solid{border-style:solid}.border-none{border-style:none}.border-t_bg_secondary{--tw-border-opacity:1;border-color:color-mix(in srgb,var(--bg-secondary) calc(var(--tw-border-opacity) * 100%),transparent)}.border-t_error_dark{--tw-border-opacity:1;border-color:color-mix(in srgb,var(--error-dark) calc(var(--tw-border-opacity) * 100%),transparent)}.border-t_main_accent_dark{--tw-border-opacity:1;border-color:color-mix(in srgb,var(--main-accent-dark) calc(var(--tw-border-opacity) * 100%),transparent)}.border-t_main_accent_light{--tw-border-opacity:1;border-color:color-mix(in srgb,var(--main-accent-light) calc(var(--tw-border-opacity) * 100%),transparent)}.border-t_main_accent_light\\/60{border-color:color-mix(in srgb,var(--main-accent-light) calc(0.6 * 100%),transparent)}.border-t_success_dark{--tw-border-opacity:1;border-color:color-mix(in srgb,var(--success-dark) calc(var(--tw-border-opacity) * 100%),transparent)}.border-t_text_primary{--tw-border-opacity:1;border-color:color-mix(in srgb,var(--text-primary) calc(var(--tw-border-opacity) * 100%),transparent)}.border-t_warning_dark{--tw-border-opacity:1;border-color:color-mix(in srgb,var(--warning-dark) calc(var(--tw-border-opacity) * 100%),transparent)}.border-x_alert{--tw-border-opacity:1;border-color:rgb(255 183 77/var(--tw-border-opacity))}.border-opacity-10{--tw-border-opacity:0.1}.border-opacity-20{--tw-border-opacity:0.2}.border-opacity-5{--tw-border-opacity:0.05}.border-opacity-50{--tw-border-opacity:0.5}.\\!bg-t_bg_tertiary{--tw-bg-opacity:1 !important;background-color:color-mix(in srgb,var(--bg-tertiary) calc(var(--tw-bg-opacity) * 100%),transparent) !important}.bg-\\[rgba\\(0\\2c 0\\2c 0\\2c 0\\.8\\)\\]{background-color:rgba(0,0,0,0.8)}.bg-\\[rgba\\(2\\2c 2\\2c 2\\2c 0\\.8\\)\\]{background-color:rgba(2,2,2,0.8)}.bg-\\[rgba\\(40\\2c 40\\2c 40\\2c 0\\.15\\)\\]{background-color:rgba(40,40,40,0.15)}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity))}.bg-t_bg_primary{--tw-bg-opacity:1;background-color:color-mix(in srgb,var(--bg-primary) calc(var(--tw-bg-opacity) * 100%),transparent)}.bg-t_bg_secondary{--tw-bg-opacity:1;background-color:color-mix(in srgb,var(--bg-secondary) calc(var(--tw-bg-opacity) * 100%),transparent)}.bg-t_bg_tertiary{--tw-bg-opacity:1;background-color:color-mix(in srgb,var(--bg-tertiary) calc(var(--tw-bg-opacity) * 100%),transparent)}.bg-t_button_pr_off_bg{--tw-bg-opacity:1;background-color:color-mix(in srgb,var(--button-pr-off-bg) calc(var(--tw-bg-opacity) * 100%),transparent)}.bg-t_text_green{--tw-bg-opacity:1;background-color:color-mix(in srgb,var(--text-green) calc(var(--tw-bg-opacity) * 100%),transparent)}.bg-t_text_orange{--tw-bg-opacity:1;background-color:color-mix(in srgb,var(--text-orange) calc(var(--tw-bg-opacity) * 100%),transparent)}.bg-t_text_primary{--tw-bg-opacity:1;background-color:color-mix(in srgb,var(--text-primary) calc(var(--tw-bg-opacity) * 100%),transparent)}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.\\!bg-opacity-10{--tw-bg-opacity:0.1 !important}.bg-opacity-10{--tw-bg-opacity:0.1}.bg-opacity-15{--tw-bg-opacity:0.15}.bg-opacity-5{--tw-bg-opacity:0.05}.bg-opacity-50{--tw-bg-opacity:0.5}.bg-opacity-75{--tw-bg-opacity:0.75}.bg-opacity-80{--tw-bg-opacity:0.8}.bg-opacity-\\[0\\.02\\]{--tw-bg-opacity:0.02}.bg-opacity-\\[0\\.03\\]{--tw-bg-opacity:0.03}.bg-opacity-\\[0\\.04\\]{--tw-bg-opacity:0.04}.bg-opacity-\\[0\\.07\\]{--tw-bg-opacity:0.07}.bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.bg-gradient-to-t{background-image:linear-gradient(to top,var(--tw-gradient-stops))}.from-t_bg_primary\\/\\[0\\.65\\]{--tw-gradient-from:color-mix(in srgb,var(--bg-primary) calc(0.65 * 100%),transparent) var(--tw-gradient-from-position);--tw-gradient-to:rgb(255 255 255/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-t_bg_secondary\\/50{--tw-gradient-from:color-mix(in srgb,var(--bg-secondary) calc(0.5 * 100%),transparent) var(--tw-gradient-from-position);--tw-gradient-to:rgb(255 255 255/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-t_bg_secondary\\/65{--tw-gradient-from:color-mix(in srgb,var(--bg-secondary) calc(0.65 * 100%),transparent) var(--tw-gradient-from-position);--tw-gradient-to:rgb(255 255 255/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-t_bg_tertiary\\/0{--tw-gradient-from:color-mix(in srgb,var(--bg-tertiary) calc(0 * 100%),transparent) var(--tw-gradient-from-position);--tw-gradient-to:rgb(255 255 255/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-t_bg_tertiary\\/10{--tw-gradient-from:color-mix(in srgb,var(--bg-tertiary) calc(0.1 * 100%),transparent) var(--tw-gradient-from-position);--tw-gradient-to:rgb(255 255 255/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-t_bg_tertiary\\/5{--tw-gradient-from:color-mix(in srgb,var(--bg-tertiary) calc(0.05 * 100%),transparent) var(--tw-gradient-from-position);--tw-gradient-to:rgb(255 255 255/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-t_bg_tertiary\\/\\[0\\.01\\]{--tw-gradient-from:color-mix(in srgb,var(--bg-tertiary) calc(0.01 * 100%),transparent) var(--tw-gradient-from-position);--tw-gradient-to:rgb(255 255 255/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-t_bg_tertiary\\/\\[0\\.02\\]{--tw-gradient-from:color-mix(in srgb,var(--bg-tertiary) calc(0.02 * 100%),transparent) var(--tw-gradient-from-position);--tw-gradient-to:rgb(255 255 255/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-t_bg_tertiary\\/\\[0\\.03\\]{--tw-gradient-from:color-mix(in srgb,var(--bg-tertiary) calc(0.03 * 100%),transparent) var(--tw-gradient-from-position);--tw-gradient-to:rgb(255 255 255/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-t_error_dark\\/15{--tw-gradient-from:color-mix(in srgb,var(--error-dark) calc(0.15 * 100%),transparent) var(--tw-gradient-from-position);--tw-gradient-to:rgb(255 255 255/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-t_main_accent_light{--tw-gradient-from:color-mix(in srgb,var(--main-accent-light) calc(1 * 100%),transparent) var(--tw-gradient-from-position);--tw-gradient-to:color-mix(in srgb,var(--main-accent-light) calc(0 * 100%),transparent) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-t_main_accent_light\\/10{--tw-gradient-from:color-mix(in srgb,var(--main-accent-light) calc(0.1 * 100%),transparent) var(--tw-gradient-from-position);--tw-gradient-to:rgb(255 255 255/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-t_main_accent_light\\/20{--tw-gradient-from:color-mix(in srgb,var(--main-accent-light) calc(0.2 * 100%),transparent) var(--tw-gradient-from-position);--tw-gradient-to:rgb(255 255 255/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-t_main_accent_light\\/25{--tw-gradient-from:color-mix(in srgb,var(--main-accent-light) calc(0.25 * 100%),transparent) var(--tw-gradient-from-position);--tw-gradient-to:rgb(255 255 255/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-t_success_light\\/20{--tw-gradient-from:color-mix(in srgb,var(--success-light) calc(0.2 * 100%),transparent) var(--tw-gradient-from-position);--tw-gradient-to:rgb(255 255 255/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-t_warning_dark\\/15{--tw-gradient-from:color-mix(in srgb,var(--warning-dark) calc(0.15 * 100%),transparent) var(--tw-gradient-from-position);--tw-gradient-to:rgb(255 255 255/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-transparent{--tw-gradient-from:transparent var(--tw-gradient-from-position);--tw-gradient-to:rgb(0 0 0/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-x_blue_light{--tw-gradient-from:rgba(54,129,198,1) var(--tw-gradient-from-position);--tw-gradient-to:rgba(54,129,198,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-x_blue_light\\/25{--tw-gradient-from:rgba(54,129,198,0.25) var(--tw-gradient-from-position);--tw-gradient-to:rgba(54,129,198,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-50\\%{--tw-gradient-from-position:50%}.via-t_bg_tertiary\\/5{--tw-gradient-to:rgb(255 255 255/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),color-mix(in srgb,var(--bg-tertiary) calc(0.05 * 100%),transparent) var(--tw-gradient-via-position),var(--tw-gradient-to)}.to-t_bg_secondary\\/0{--tw-gradient-to:color-mix(in srgb,var(--bg-secondary) calc(0 * 100%),transparent) var(--tw-gradient-to-position)}.to-t_bg_secondary\\/15{--tw-gradient-to:color-mix(in srgb,var(--bg-secondary) calc(0.15 * 100%),transparent) var(--tw-gradient-to-position)}.to-t_bg_secondary\\/50{--tw-gradient-to:color-mix(in srgb,var(--bg-secondary) calc(0.5 * 100%),transparent) var(--tw-gradient-to-position)}.to-t_bg_tertiary\\/0{--tw-gradient-to:color-mix(in srgb,var(--bg-tertiary) calc(0 * 100%),transparent) var(--tw-gradient-to-position)}.to-t_bg_tertiary\\/5{--tw-gradient-to:color-mix(in srgb,var(--bg-tertiary) calc(0.05 * 100%),transparent) var(--tw-gradient-to-position)}.to-t_bg_tertiary\\/\\[0\\.01\\]{--tw-gradient-to:color-mix(in srgb,var(--bg-tertiary) calc(0.01 * 100%),transparent) var(--tw-gradient-to-position)}.to-t_bg_tertiary\\/\\[0\\.02\\]{--tw-gradient-to:color-mix(in srgb,var(--bg-tertiary) calc(0.02 * 100%),transparent) var(--tw-gradient-to-position)}.to-t_bg_tertiary\\/\\[0\\.03\\]{--tw-gradient-to:color-mix(in srgb,var(--bg-tertiary) calc(0.03 * 100%),transparent) var(--tw-gradient-to-position)}.to-t_bg_tertiary\\/\\[0\\.08\\]{--tw-gradient-to:color-mix(in srgb,var(--bg-tertiary) calc(0.08 * 100%),transparent) var(--tw-gradient-to-position)}.to-t_main_accent_dark{--tw-gradient-to:color-mix(in srgb,var(--main-accent-dark) calc(1 * 100%),transparent) var(--tw-gradient-to-position)}.to-t_main_accent_dark\\/10{--tw-gradient-to:color-mix(in srgb,var(--main-accent-dark) calc(0.1 * 100%),transparent) var(--tw-gradient-to-position)}.to-t_main_accent_dark\\/20{--tw-gradient-to:color-mix(in srgb,var(--main-accent-dark) calc(0.2 * 100%),transparent) var(--tw-gradient-to-position)}.to-t_main_accent_dark\\/25{--tw-gradient-to:color-mix(in srgb,var(--main-accent-dark) calc(0.25 * 100%),transparent) var(--tw-gradient-to-position)}.to-t_success_dark\\/20{--tw-gradient-to:color-mix(in srgb,var(--success-dark) calc(0.2 * 100%),transparent) var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to:transparent var(--tw-gradient-to-position)}.to-x_blue_dark{--tw-gradient-to:rgba(43,74,157,1) var(--tw-gradient-to-position)}.to-x_blue_dark\\/25{--tw-gradient-to:rgba(43,74,157,0.25) var(--tw-gradient-to-position)}.fill-t_success_dark{fill:color-mix(in srgb,var(--success-dark) calc(1 * 100%),transparent)}.fill-t_text_primary{fill:color-mix(in srgb,var(--text-primary) calc(1 * 100%),transparent)}.fill-white{fill:#fff}.p-0{padding:0px}.p-0\\.5{padding:0.125rem}.p-1{padding:0.25rem}.p-2{padding:0.5rem}.p-3{padding:0.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-\\[14px\\]{padding:14px}.p-\\[15px\\]{padding:15px}.\\!py-3{padding-top:0.75rem !important;padding-bottom:0.75rem !important}.px-0{padding-left:0px;padding-right:0px}.px-2{padding-left:0.5rem;padding-right:0.5rem}.px-2\\.5{padding-left:0.625rem;padding-right:0.625rem}.px-3{padding-left:0.75rem;padding-right:0.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0{padding-top:0px;padding-bottom:0px}.py-0\\.5{padding-top:0.125rem;padding-bottom:0.125rem}.py-1{padding-top:0.25rem;padding-bottom:0.25rem}.py-2{padding-top:0.5rem;padding-bottom:0.5rem}.py-3{padding-top:0.75rem;padding-bottom:0.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.pb-1{padding-bottom:0.25rem}.pb-2{padding-bottom:0.5rem}.pb-3{padding-bottom:0.75rem}.pb-4{padding-bottom:1rem}.pl-4{padding-left:1rem}.pl-9{padding-left:2.25rem}.pr-1{padding-right:0.25rem}.pt-2{padding-top:0.5rem}.pt-2\\.5{padding-top:0.625rem}.pt-3{padding-top:0.75rem}.pt-\\[10px\\]{padding-top:10px}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.\\!text-sm{font-size:0.875rem !important;line-height:1.25rem !important}.text-2xl{font-size:1.5rem;line-height:2rem}.text-\\[10px\\]{font-size:10px}.text-\\[12px\\]{font-size:12px}.text-\\[15px\\]{font-size:15px}.text-\\[16px\\]{font-size:16px}.text-base{font-size:1rem;line-height:1.5rem}.text-sm{font-size:0.875rem;line-height:1.25rem}.text-xs{font-size:0.75rem;line-height:1rem}.\\!font-medium{font-weight:500 !important}.font-medium{font-weight:500}.leading-10{line-height:2.5rem}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-8{line-height:2rem}.leading-\\[0px\\]{line-height:0px}.leading-\\[14px\\]{line-height:14px}.leading-\\[18px\\]{line-height:18px}.tracking-\\[0\\.015em\\]{letter-spacing:0.015em}.tracking-\\[0\\.01em\\]{letter-spacing:0.01em}.tracking-\\[0\\.032em\\]{letter-spacing:0.032em}.tracking-\\[0\\.08em\\]{letter-spacing:0.08em}.\\!text-t_button_pr_text{--tw-text-opacity:1 !important;color:color-mix(in srgb,var(--button-pr-text) calc(var(--tw-text-opacity) * 100%),transparent) !important}.text-\\[\\#6AE89B\\]{--tw-text-opacity:1;color:rgb(106 232 155/var(--tw-text-opacity))}.text-\\[\\#D77F02\\]{--tw-text-opacity:1;color:rgb(215 127 2/var(--tw-text-opacity))}.text-\\[\\#F44336\\]{--tw-text-opacity:1;color:rgb(244 67 54/var(--tw-text-opacity))}.text-\\[\\#F46F28\\]{--tw-text-opacity:1;color:rgb(244 111 40/var(--tw-text-opacity))}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.text-t_button_pr_off_text{--tw-text-opacity:1;color:color-mix(in srgb,var(--button-pr-off-text) calc(var(--tw-text-opacity) * 100%),transparent)}.text-t_button_pr_text{--tw-text-opacity:1;color:color-mix(in srgb,var(--button-pr-text) calc(var(--tw-text-opacity) * 100%),transparent)}.text-t_success_light{--tw-text-opacity:1;color:color-mix(in srgb,var(--success-light) calc(var(--tw-text-opacity) * 100%),transparent)}.text-t_text_green{--tw-text-opacity:1;color:color-mix(in srgb,var(--text-green) calc(var(--tw-text-opacity) * 100%),transparent)}.text-t_text_orange{--tw-text-opacity:1;color:color-mix(in srgb,var(--text-orange) calc(var(--tw-text-opacity) * 100%),transparent)}.text-t_text_primary{--tw-text-opacity:1;color:color-mix(in srgb,var(--text-primary) calc(var(--tw-text-opacity) * 100%),transparent)}.text-t_text_red{--tw-text-opacity:1;color:color-mix(in srgb,var(--text-red) calc(var(--tw-text-opacity) * 100%),transparent)}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-x_alert_light{--tw-text-opacity:1;color:rgb(255 226 183/var(--tw-text-opacity))}.\\!text-opacity-50{--tw-text-opacity:0.5 !important}.text-opacity-10{--tw-text-opacity:0.1}.text-opacity-25{--tw-text-opacity:0.25}.text-opacity-30{--tw-text-opacity:0.3}.text-opacity-40{--tw-text-opacity:0.4}.text-opacity-50{--tw-text-opacity:0.5}.text-opacity-60{--tw-text-opacity:0.6}.text-opacity-70{--tw-text-opacity:0.7}.text-opacity-75{--tw-text-opacity:0.75}.text-opacity-80{--tw-text-opacity:0.8}.no-underline{text-decoration-line:none}.opacity-25{opacity:0.25}.opacity-40{opacity:0.4}.opacity-50{opacity:0.5}.opacity-60{opacity:0.6}.shadow{--tw-shadow:0 1px 3px 0 rgb(0 0 0/0.1),0 1px 2px -1px rgb(0 0 0/0.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\\[0_0_6px_rgba\\(255\\2c 0\\2c 0\\2c 0\\.5\\)\\]{--tw-shadow:0 0 6px rgba(255,0,0,0.5);--tw-shadow-colored:0 0 6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\\[0_0_6px_rgba\\(255\\2c 165\\2c 0\\2c 0\\.5\\)\\]{--tw-shadow:0 0 6px rgba(255,165,0,0.5);--tw-shadow-colored:0 0 6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgb(0 0 0/0.1),0 4px 6px -4px rgb(0 0 0/0.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgb(0 0 0/0.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-\\[12px\\]{--tw-backdrop-blur:blur(12px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-\\[24px\\]{--tw-backdrop-blur:blur(24px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-\\[32px\\]{--tw-backdrop-blur:blur(32px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-\\[48px\\]{--tw-backdrop-blur:blur(48px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-filter{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition-\\[filter\\]{transition-property:filter;transition-timing-function:cubic-bezier(0.4,0,0.2,1);transition-duration:150ms}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(0.4,0,0.2,1);transition-duration:150ms}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(0.4,0,0.2,1);transition-duration:150ms}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(0.4,0,0.2,1);transition-duration:150ms}:host{color:white;line-height:1.5rem;font-size:1rem;*{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--bg-tertiary) 15%,transparent) var(--bg-primary)}*::-webkit-scrollbar{width:4px}*::-webkit-scrollbar-track{background:var(--bg-primary);border-radius:4px}*::-webkit-scrollbar-thumb{background-color:color-mix(in srgb,var(--bg-tertiary) 15%,transparent);border-radius:4px}}.SnackbarContainer-top,.notistack-SnackbarContainer{top:100px !important}.placeholder\\:text-t_text_primary::-moz-placeholder{--tw-text-opacity:1;color:color-mix(in srgb,var(--text-primary) calc(var(--tw-text-opacity) * 100%),transparent)}.placeholder\\:text-t_text_primary::placeholder{--tw-text-opacity:1;color:color-mix(in srgb,var(--text-primary) calc(var(--tw-text-opacity) * 100%),transparent)}.placeholder\\:text-opacity-40::-moz-placeholder{--tw-text-opacity:0.4}.placeholder\\:text-opacity-40::placeholder{--tw-text-opacity:0.4}.placeholder\\:text-opacity-50::-moz-placeholder{--tw-text-opacity:0.5}.placeholder\\:text-opacity-50::placeholder{--tw-text-opacity:0.5}.hover\\:bg-t_bg_tertiary:hover{--tw-bg-opacity:1;background-color:color-mix(in srgb,var(--bg-tertiary) calc(var(--tw-bg-opacity) * 100%),transparent)}.hover\\:bg-opacity-10:hover{--tw-bg-opacity:0.1}.hover\\:from-t_bg_tertiary\\/10:hover{--tw-gradient-from:color-mix(in srgb,var(--bg-tertiary) calc(0.1 * 100%),transparent) var(--tw-gradient-from-position);--tw-gradient-to:rgb(255 255 255/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.hover\\:from-t_main_accent_light\\/40:hover{--tw-gradient-from:color-mix(in srgb,var(--main-accent-light) calc(0.4 * 100%),transparent) var(--tw-gradient-from-position);--tw-gradient-to:rgb(255 255 255/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.hover\\:to-t_bg_tertiary\\/10:hover{--tw-gradient-to:color-mix(in srgb,var(--bg-tertiary) calc(0.1 * 100%),transparent) var(--tw-gradient-to-position)}.hover\\:to-t_main_accent_dark\\/40:hover{--tw-gradient-to:color-mix(in srgb,var(--main-accent-dark) calc(0.4 * 100%),transparent) var(--tw-gradient-to-position)}.hover\\:fill-t_main_accent_light:hover{fill:color-mix(in srgb,var(--main-accent-light) calc(1 * 100%),transparent)}.hover\\:text-opacity-50:hover{--tw-text-opacity:0.5}.hover\\:opacity-80:hover{opacity:0.8}.hover\\:brightness-105:hover{--tw-brightness:brightness(1.05);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.group:hover .group-hover\\:flex{display:flex}.group:hover .group-hover\\:hidden{display:none}@media (min-width:640px){.sm\\:invisible{visibility:hidden}.sm\\:absolute{position:absolute}.sm\\:z-\\[1\\]{z-index:1}.sm\\:z-\\[2\\]{z-index:2}.sm\\:block{display:block}.sm\\:inline{display:inline}.sm\\:hidden{display:none}.sm\\:h-\\[600px\\]{height:600px}.sm\\:h-full{height:100%}.sm\\:w-\\[72px\\]{width:72px}.sm\\:max-w-\\[636px\\]{max-width:636px}.sm\\:justify-start{justify-content:flex-start}.sm\\:justify-center{justify-content:center}.sm\\:rounded-\\[32px\\]{border-radius:32px}.sm\\:rounded-none{border-radius:0px}.sm\\:border{border-width:1px}.sm\\:border-0{border-width:0px}.sm\\:bg-transparent{background-color:transparent}.sm\\:bg-none{background-image:none}.sm\\:p-0{padding:0px}.sm\\:p-4{padding:1rem}.sm\\:p-8{padding:2rem}.sm\\:px-6{padding-left:1.5rem;padding-right:1.5rem}}.\\[\\&_svg\\]\\:h-4 svg{height:1rem}.\\[\\&_svg\\]\\:h-5 svg{height:1.25rem}.\\[\\&_svg\\]\\:w-4 svg{width:1rem}.\\[\\&_svg\\]\\:w-auto svg{width:auto}
|
|
17418
|
+
var global_default = `/* ! tailwindcss v3.4.4 | MIT License | https://tailwindcss.com */*,::before,::after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}::before,::after{--tw-content:''}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:var(--font-family,'Satoshi',Tahoma,Verdana,ui-sans-serif);font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type='button']),input:where([type='reset']),input:where([type='submit']){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type='search']{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder, textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role="button"]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,::before,::after{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x:;--tw-pan-y:;--tw-pinch-zoom:;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position:;--tw-gradient-via-position:;--tw-gradient-to-position:;--tw-ordinal:;--tw-slashed-zero:;--tw-numeric-figure:;--tw-numeric-spacing:;--tw-numeric-fraction:;--tw-ring-inset:;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246/0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur:;--tw-brightness:;--tw-contrast:;--tw-grayscale:;--tw-hue-rotate:;--tw-invert:;--tw-saturate:;--tw-sepia:;--tw-drop-shadow:;--tw-backdrop-blur:;--tw-backdrop-brightness:;--tw-backdrop-contrast:;--tw-backdrop-grayscale:;--tw-backdrop-hue-rotate:;--tw-backdrop-invert:;--tw-backdrop-opacity:;--tw-backdrop-saturate:;--tw-backdrop-sepia:;--tw-contain-size:;--tw-contain-layout:;--tw-contain-paint:;--tw-contain-style:}::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x:;--tw-pan-y:;--tw-pinch-zoom:;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position:;--tw-gradient-via-position:;--tw-gradient-to-position:;--tw-ordinal:;--tw-slashed-zero:;--tw-numeric-figure:;--tw-numeric-spacing:;--tw-numeric-fraction:;--tw-ring-inset:;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246/0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur:;--tw-brightness:;--tw-contrast:;--tw-grayscale:;--tw-hue-rotate:;--tw-invert:;--tw-saturate:;--tw-sepia:;--tw-drop-shadow:;--tw-backdrop-blur:;--tw-backdrop-brightness:;--tw-backdrop-contrast:;--tw-backdrop-grayscale:;--tw-backdrop-hue-rotate:;--tw-backdrop-invert:;--tw-backdrop-opacity:;--tw-backdrop-saturate:;--tw-backdrop-sepia:;--tw-contain-size:;--tw-contain-layout:;--tw-contain-paint:;--tw-contain-style:}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.gradient-sections-separator-container{background-image:linear-gradient(to right,var(--tw-gradient-stops));--tw-gradient-from:transparent var(--tw-gradient-from-position);--tw-gradient-to:rgb(0 0 0/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to);--tw-gradient-to:rgb(255 255 255/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),color-mix(in srgb,var(--bg-tertiary) calc(0.1 * 100%),transparent) var(--tw-gradient-via-position),var(--tw-gradient-to);--tw-gradient-to:transparent var(--tw-gradient-to-position)}.x-border{border-width:1px;border-style:solid;border-color:color-mix(in srgb,var(--text-primary) calc(var(--tw-border-opacity) * 100%),transparent);--tw-border-opacity:0.1}.swap-panel-gradient-border{position:relative}.swap-panel-gradient-border::before,.swap-panel-gradient-border::after{content:"";position:absolute;inset:0;border-radius:inherit;padding:1px;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}.swap-panel-gradient-border::before{background:linear-gradient(90deg,color-mix(in srgb,var(--text-primary) 2.5%,transparent),color-mix(in srgb,var(--text-primary) 5%,transparent))}.swap-panel-gradient-border::after{background:linear-gradient(90deg,color-mix(in srgb,var(--text-primary) 5%,transparent),color-mix(in srgb,var(--text-primary) 7.5%,transparent));opacity:0;transition:opacity 0.15s ease}.swap-panel-gradient-border:hover::after{opacity:1}.network-dropdown-surface{background:linear-gradient(90deg,color-mix(in srgb,var(--bg-primary) 20%,transparent) 0%,color-mix(in srgb,var(--bg-primary) 20%,transparent) 100%),linear-gradient(180deg,color-mix(in srgb,var(--bg-tertiary) 4%,transparent) 0%,color-mix(in srgb,var(--bg-tertiary) 2%,transparent) 49.5%,color-mix(in srgb,var(--bg-tertiary) 4%,transparent) 100%),var(--bg-secondary)}.network-dropdown-row:hover,.network-dropdown-row-active{background:linear-gradient(90deg,transparent 0%,color-mix(in srgb,var(--bg-tertiary) 0.5%,transparent) 15%,color-mix(in srgb,var(--bg-tertiary) 2.5%,transparent) 50%,color-mix(in srgb,var(--bg-tertiary) 0.5%,transparent) 85%,transparent 100%)}.tx-modal-glow-success{background:radial-gradient(120% 60% at 0% 0%,rgba(76,175,80,0.25) 0%,transparent 45%)}.tx-modal-glow-error{background:radial-gradient(120% 60% at 0% 0%,rgba(244,67,54,0.25) 0%,transparent 45%)}.btn{position:relative;z-index:1;margin:0px;-webkit-appearance:none;-moz-appearance:none;appearance:none;white-space:nowrap;border-style:none;background-color:transparent;font-size:0.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.btn:hover{cursor:pointer}.btn-disabled{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity));opacity:0.5}.btn-disabled:hover{cursor:not-allowed}.btn--full-width{width:100%}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.invisible{visibility:hidden}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0px}.inset-x-0{left:0px;right:0px}.-right-2{right:-0.5rem}.bottom-0{bottom:0px}.bottom-5{bottom:1.25rem}.left-0{left:0px}.left-1\\/2{left:50%}.right-0{right:0px}.right-2{right:0.5rem}.top-0{top:0px}.top-\\[calc\\(100\\%\\+8px\\)\\]{top:calc(100% + 8px)}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\\[1\\]{z-index:1}.m-0{margin:0px}.mx-0{margin-left:0px;margin-right:0px}.mx-1{margin-left:0.25rem;margin-right:0.25rem}.mx-1\\.5{margin-left:0.375rem;margin-right:0.375rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:0.25rem;margin-bottom:0.25rem}.my-5{margin-top:1.25rem;margin-bottom:1.25rem}.-mr-1{margin-right:-0.25rem}.-mr-1\\.5{margin-right:-0.375rem}.-mr-2{margin-right:-0.5rem}.mb-1{margin-bottom:0.25rem}.mb-2{margin-bottom:0.5rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.ml-1{margin-left:0.25rem}.ml-1\\.5{margin-left:0.375rem}.mr-1{margin-right:0.25rem}.mr-2{margin-right:0.5rem}.mt-2{margin-top:0.5rem}.box-border{box-sizing:border-box}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.h-0{height:0px}.h-0\\.5{height:0.125rem}.h-1{height:0.25rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-3{height:0.75rem}.h-3\\.5{height:0.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\\[11px\\]{height:11px}.h-\\[12px\\]{height:12px}.h-\\[14px\\]{height:14px}.h-\\[16px\\]{height:16px}.h-\\[18px\\]{height:18px}.h-\\[20px\\]{height:20px}.h-\\[214px\\]{height:214px}.h-\\[32px\\]{height:32px}.h-\\[34px\\]{height:34px}.h-\\[72px\\]{height:72px}.h-\\[85vh\\]{height:85vh}.h-full{height:100%}.h-px{height:1px}.max-h-full{max-height:100%}.min-h-0{min-height:0px}.min-h-11{min-height:2.75rem}.min-h-6{min-height:1.5rem}.min-h-\\[320px\\]{min-height:320px}.min-h-\\[43px\\]{min-height:43px}.min-h-\\[532px\\]{min-height:532px}.w-0{width:0px}.w-0\\.5{width:0.125rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-20{width:5rem}.w-3{width:0.75rem}.w-3\\.5{width:0.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\\[100px\\]{width:100px}.w-\\[11px\\]{width:11px}.w-\\[14px\\]{width:14px}.w-\\[150px\\]{width:150px}.w-\\[18px\\]{width:18px}.w-\\[296px\\]{width:296px}.w-\\[34px\\]{width:34px}.w-\\[48px\\]{width:48px}.w-\\[60px\\]{width:60px}.w-\\[80px\\]{width:80px}.w-full{width:100%}.w-x_modal{width:var(--modal-width)}.min-w-0{min-width:0px}.min-w-10{min-width:2.5rem}.min-w-9{min-width:2.25rem}.min-w-\\[108px\\]{min-width:108px}.min-w-\\[340px\\]{min-width:340px}.min-w-x_modal{min-width:var(--modal-width,340px)}.max-w-80{max-width:20rem}.max-w-\\[120px\\]{max-width:120px}.max-w-\\[500px\\]{max-width:500px}.max-w-\\[var\\(--modal-width\\2c 588px\\)\\]{max-width:var(--modal-width,588px)}.max-w-x_modal{max-width:var(--modal-width,620px)}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.grow-0{flex-grow:0}.-translate-x-1\\/2{--tw-translate-x:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-full{--tw-translate-x:-100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\\/2{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-full{--tw-translate-y:-100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-5{--tw-translate-x:1.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(0.4,0,0.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin-slow{animation:spin 3s linear infinite}.\\!cursor-not-allowed{cursor:not-allowed !important}.cursor-help{cursor:help}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.resize{resize:both}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0px}.gap-0\\.5{gap:0.125rem}.gap-1{gap:0.25rem}.gap-1\\.5{gap:0.375rem}.gap-2{gap:0.5rem}.gap-2\\.5{gap:0.625rem}.gap-3{gap:0.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-x-1{-moz-column-gap:0.25rem;column-gap:0.25rem}.gap-y-2{row-gap:0.5rem}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.text-nowrap{text-wrap:nowrap}.\\!rounded-\\[10px\\]{border-radius:10px !important}.rounded{border-radius:0.25rem}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-\\[10px\\]{border-radius:10px}.rounded-\\[32px\\]{border-radius:32px}.rounded-\\[4px\\]{border-radius:4px}.rounded-\\[inherit\\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:0.5rem}.rounded-md{border-radius:0.375rem}.rounded-xl{border-radius:0.75rem}.rounded-b-none{border-bottom-right-radius:0px;border-bottom-left-radius:0px}.rounded-t-\\[24px\\]{border-top-left-radius:24px;border-top-right-radius:24px}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-solid{border-style:solid}.border-none{border-style:none}.border-t_bg_secondary{--tw-border-opacity:1;border-color:color-mix(in srgb,var(--bg-secondary) calc(var(--tw-border-opacity) * 100%),transparent)}.border-t_error_dark{--tw-border-opacity:1;border-color:color-mix(in srgb,var(--error-dark) calc(var(--tw-border-opacity) * 100%),transparent)}.border-t_main_accent_dark{--tw-border-opacity:1;border-color:color-mix(in srgb,var(--main-accent-dark) calc(var(--tw-border-opacity) * 100%),transparent)}.border-t_main_accent_light{--tw-border-opacity:1;border-color:color-mix(in srgb,var(--main-accent-light) calc(var(--tw-border-opacity) * 100%),transparent)}.border-t_main_accent_light\\/60{border-color:color-mix(in srgb,var(--main-accent-light) calc(0.6 * 100%),transparent)}.border-t_success_dark{--tw-border-opacity:1;border-color:color-mix(in srgb,var(--success-dark) calc(var(--tw-border-opacity) * 100%),transparent)}.border-t_text_primary{--tw-border-opacity:1;border-color:color-mix(in srgb,var(--text-primary) calc(var(--tw-border-opacity) * 100%),transparent)}.border-t_warning_dark{--tw-border-opacity:1;border-color:color-mix(in srgb,var(--warning-dark) calc(var(--tw-border-opacity) * 100%),transparent)}.border-x_alert{--tw-border-opacity:1;border-color:rgb(255 183 77/var(--tw-border-opacity))}.border-opacity-10{--tw-border-opacity:0.1}.border-opacity-20{--tw-border-opacity:0.2}.border-opacity-5{--tw-border-opacity:0.05}.border-opacity-50{--tw-border-opacity:0.5}.\\!bg-t_bg_tertiary{--tw-bg-opacity:1 !important;background-color:color-mix(in srgb,var(--bg-tertiary) calc(var(--tw-bg-opacity) * 100%),transparent) !important}.bg-\\[rgba\\(0\\2c 0\\2c 0\\2c 0\\.8\\)\\]{background-color:rgba(0,0,0,0.8)}.bg-\\[rgba\\(2\\2c 2\\2c 2\\2c 0\\.8\\)\\]{background-color:rgba(2,2,2,0.8)}.bg-\\[rgba\\(40\\2c 40\\2c 40\\2c 0\\.15\\)\\]{background-color:rgba(40,40,40,0.15)}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity))}.bg-t_bg_primary{--tw-bg-opacity:1;background-color:color-mix(in srgb,var(--bg-primary) calc(var(--tw-bg-opacity) * 100%),transparent)}.bg-t_bg_secondary{--tw-bg-opacity:1;background-color:color-mix(in srgb,var(--bg-secondary) calc(var(--tw-bg-opacity) * 100%),transparent)}.bg-t_bg_tertiary{--tw-bg-opacity:1;background-color:color-mix(in srgb,var(--bg-tertiary) calc(var(--tw-bg-opacity) * 100%),transparent)}.bg-t_button_pr_off_bg{--tw-bg-opacity:1;background-color:color-mix(in srgb,var(--button-pr-off-bg) calc(var(--tw-bg-opacity) * 100%),transparent)}.bg-t_text_green{--tw-bg-opacity:1;background-color:color-mix(in srgb,var(--text-green) calc(var(--tw-bg-opacity) * 100%),transparent)}.bg-t_text_orange{--tw-bg-opacity:1;background-color:color-mix(in srgb,var(--text-orange) calc(var(--tw-bg-opacity) * 100%),transparent)}.bg-t_text_primary{--tw-bg-opacity:1;background-color:color-mix(in srgb,var(--text-primary) calc(var(--tw-bg-opacity) * 100%),transparent)}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.\\!bg-opacity-10{--tw-bg-opacity:0.1 !important}.bg-opacity-10{--tw-bg-opacity:0.1}.bg-opacity-15{--tw-bg-opacity:0.15}.bg-opacity-5{--tw-bg-opacity:0.05}.bg-opacity-50{--tw-bg-opacity:0.5}.bg-opacity-75{--tw-bg-opacity:0.75}.bg-opacity-80{--tw-bg-opacity:0.8}.bg-opacity-\\[0\\.02\\]{--tw-bg-opacity:0.02}.bg-opacity-\\[0\\.03\\]{--tw-bg-opacity:0.03}.bg-opacity-\\[0\\.04\\]{--tw-bg-opacity:0.04}.bg-opacity-\\[0\\.07\\]{--tw-bg-opacity:0.07}.bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.bg-gradient-to-t{background-image:linear-gradient(to top,var(--tw-gradient-stops))}.from-t_bg_primary\\/\\[0\\.65\\]{--tw-gradient-from:color-mix(in srgb,var(--bg-primary) calc(0.65 * 100%),transparent) var(--tw-gradient-from-position);--tw-gradient-to:rgb(255 255 255/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-t_bg_secondary\\/50{--tw-gradient-from:color-mix(in srgb,var(--bg-secondary) calc(0.5 * 100%),transparent) var(--tw-gradient-from-position);--tw-gradient-to:rgb(255 255 255/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-t_bg_secondary\\/65{--tw-gradient-from:color-mix(in srgb,var(--bg-secondary) calc(0.65 * 100%),transparent) var(--tw-gradient-from-position);--tw-gradient-to:rgb(255 255 255/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-t_bg_tertiary\\/0{--tw-gradient-from:color-mix(in srgb,var(--bg-tertiary) calc(0 * 100%),transparent) var(--tw-gradient-from-position);--tw-gradient-to:rgb(255 255 255/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-t_bg_tertiary\\/10{--tw-gradient-from:color-mix(in srgb,var(--bg-tertiary) calc(0.1 * 100%),transparent) var(--tw-gradient-from-position);--tw-gradient-to:rgb(255 255 255/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-t_bg_tertiary\\/5{--tw-gradient-from:color-mix(in srgb,var(--bg-tertiary) calc(0.05 * 100%),transparent) var(--tw-gradient-from-position);--tw-gradient-to:rgb(255 255 255/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-t_bg_tertiary\\/\\[0\\.01\\]{--tw-gradient-from:color-mix(in srgb,var(--bg-tertiary) calc(0.01 * 100%),transparent) var(--tw-gradient-from-position);--tw-gradient-to:rgb(255 255 255/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-t_bg_tertiary\\/\\[0\\.02\\]{--tw-gradient-from:color-mix(in srgb,var(--bg-tertiary) calc(0.02 * 100%),transparent) var(--tw-gradient-from-position);--tw-gradient-to:rgb(255 255 255/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-t_bg_tertiary\\/\\[0\\.03\\]{--tw-gradient-from:color-mix(in srgb,var(--bg-tertiary) calc(0.03 * 100%),transparent) var(--tw-gradient-from-position);--tw-gradient-to:rgb(255 255 255/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-t_error_dark\\/15{--tw-gradient-from:color-mix(in srgb,var(--error-dark) calc(0.15 * 100%),transparent) var(--tw-gradient-from-position);--tw-gradient-to:rgb(255 255 255/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-t_main_accent_light{--tw-gradient-from:color-mix(in srgb,var(--main-accent-light) calc(1 * 100%),transparent) var(--tw-gradient-from-position);--tw-gradient-to:color-mix(in srgb,var(--main-accent-light) calc(0 * 100%),transparent) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-t_main_accent_light\\/10{--tw-gradient-from:color-mix(in srgb,var(--main-accent-light) calc(0.1 * 100%),transparent) var(--tw-gradient-from-position);--tw-gradient-to:rgb(255 255 255/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-t_main_accent_light\\/20{--tw-gradient-from:color-mix(in srgb,var(--main-accent-light) calc(0.2 * 100%),transparent) var(--tw-gradient-from-position);--tw-gradient-to:rgb(255 255 255/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-t_main_accent_light\\/25{--tw-gradient-from:color-mix(in srgb,var(--main-accent-light) calc(0.25 * 100%),transparent) var(--tw-gradient-from-position);--tw-gradient-to:rgb(255 255 255/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-t_success_light\\/20{--tw-gradient-from:color-mix(in srgb,var(--success-light) calc(0.2 * 100%),transparent) var(--tw-gradient-from-position);--tw-gradient-to:rgb(255 255 255/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-t_warning_dark\\/15{--tw-gradient-from:color-mix(in srgb,var(--warning-dark) calc(0.15 * 100%),transparent) var(--tw-gradient-from-position);--tw-gradient-to:rgb(255 255 255/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-transparent{--tw-gradient-from:transparent var(--tw-gradient-from-position);--tw-gradient-to:rgb(0 0 0/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-x_blue_light{--tw-gradient-from:rgba(54,129,198,1) var(--tw-gradient-from-position);--tw-gradient-to:rgba(54,129,198,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-x_blue_light\\/25{--tw-gradient-from:rgba(54,129,198,0.25) var(--tw-gradient-from-position);--tw-gradient-to:rgba(54,129,198,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-50\\%{--tw-gradient-from-position:50%}.via-t_bg_tertiary\\/5{--tw-gradient-to:rgb(255 255 255/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),color-mix(in srgb,var(--bg-tertiary) calc(0.05 * 100%),transparent) var(--tw-gradient-via-position),var(--tw-gradient-to)}.to-t_bg_secondary\\/0{--tw-gradient-to:color-mix(in srgb,var(--bg-secondary) calc(0 * 100%),transparent) var(--tw-gradient-to-position)}.to-t_bg_secondary\\/15{--tw-gradient-to:color-mix(in srgb,var(--bg-secondary) calc(0.15 * 100%),transparent) var(--tw-gradient-to-position)}.to-t_bg_secondary\\/50{--tw-gradient-to:color-mix(in srgb,var(--bg-secondary) calc(0.5 * 100%),transparent) var(--tw-gradient-to-position)}.to-t_bg_tertiary\\/0{--tw-gradient-to:color-mix(in srgb,var(--bg-tertiary) calc(0 * 100%),transparent) var(--tw-gradient-to-position)}.to-t_bg_tertiary\\/5{--tw-gradient-to:color-mix(in srgb,var(--bg-tertiary) calc(0.05 * 100%),transparent) var(--tw-gradient-to-position)}.to-t_bg_tertiary\\/\\[0\\.01\\]{--tw-gradient-to:color-mix(in srgb,var(--bg-tertiary) calc(0.01 * 100%),transparent) var(--tw-gradient-to-position)}.to-t_bg_tertiary\\/\\[0\\.02\\]{--tw-gradient-to:color-mix(in srgb,var(--bg-tertiary) calc(0.02 * 100%),transparent) var(--tw-gradient-to-position)}.to-t_bg_tertiary\\/\\[0\\.03\\]{--tw-gradient-to:color-mix(in srgb,var(--bg-tertiary) calc(0.03 * 100%),transparent) var(--tw-gradient-to-position)}.to-t_bg_tertiary\\/\\[0\\.08\\]{--tw-gradient-to:color-mix(in srgb,var(--bg-tertiary) calc(0.08 * 100%),transparent) var(--tw-gradient-to-position)}.to-t_main_accent_dark{--tw-gradient-to:color-mix(in srgb,var(--main-accent-dark) calc(1 * 100%),transparent) var(--tw-gradient-to-position)}.to-t_main_accent_dark\\/10{--tw-gradient-to:color-mix(in srgb,var(--main-accent-dark) calc(0.1 * 100%),transparent) var(--tw-gradient-to-position)}.to-t_main_accent_dark\\/20{--tw-gradient-to:color-mix(in srgb,var(--main-accent-dark) calc(0.2 * 100%),transparent) var(--tw-gradient-to-position)}.to-t_main_accent_dark\\/25{--tw-gradient-to:color-mix(in srgb,var(--main-accent-dark) calc(0.25 * 100%),transparent) var(--tw-gradient-to-position)}.to-t_success_dark\\/20{--tw-gradient-to:color-mix(in srgb,var(--success-dark) calc(0.2 * 100%),transparent) var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to:transparent var(--tw-gradient-to-position)}.to-x_blue_dark{--tw-gradient-to:rgba(43,74,157,1) var(--tw-gradient-to-position)}.to-x_blue_dark\\/25{--tw-gradient-to:rgba(43,74,157,0.25) var(--tw-gradient-to-position)}.fill-t_success_dark{fill:color-mix(in srgb,var(--success-dark) calc(1 * 100%),transparent)}.fill-t_text_primary{fill:color-mix(in srgb,var(--text-primary) calc(1 * 100%),transparent)}.fill-white{fill:#fff}.p-0{padding:0px}.p-0\\.5{padding:0.125rem}.p-1{padding:0.25rem}.p-2{padding:0.5rem}.p-3{padding:0.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-\\[14px\\]{padding:14px}.p-\\[15px\\]{padding:15px}.\\!py-3{padding-top:0.75rem !important;padding-bottom:0.75rem !important}.px-0{padding-left:0px;padding-right:0px}.px-2{padding-left:0.5rem;padding-right:0.5rem}.px-2\\.5{padding-left:0.625rem;padding-right:0.625rem}.px-3{padding-left:0.75rem;padding-right:0.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0{padding-top:0px;padding-bottom:0px}.py-0\\.5{padding-top:0.125rem;padding-bottom:0.125rem}.py-1{padding-top:0.25rem;padding-bottom:0.25rem}.py-2{padding-top:0.5rem;padding-bottom:0.5rem}.py-3{padding-top:0.75rem;padding-bottom:0.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.pb-1{padding-bottom:0.25rem}.pb-2{padding-bottom:0.5rem}.pb-3{padding-bottom:0.75rem}.pb-4{padding-bottom:1rem}.pl-4{padding-left:1rem}.pl-9{padding-left:2.25rem}.pr-1{padding-right:0.25rem}.pt-2{padding-top:0.5rem}.pt-2\\.5{padding-top:0.625rem}.pt-3{padding-top:0.75rem}.pt-\\[10px\\]{padding-top:10px}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.\\!text-sm{font-size:0.875rem !important;line-height:1.25rem !important}.text-2xl{font-size:1.5rem;line-height:2rem}.text-\\[10px\\]{font-size:10px}.text-\\[12px\\]{font-size:12px}.text-\\[15px\\]{font-size:15px}.text-\\[16px\\]{font-size:16px}.text-base{font-size:1rem;line-height:1.5rem}.text-sm{font-size:0.875rem;line-height:1.25rem}.text-xs{font-size:0.75rem;line-height:1rem}.\\!font-medium{font-weight:500 !important}.font-medium{font-weight:500}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-10{line-height:2.5rem}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-8{line-height:2rem}.leading-\\[0px\\]{line-height:0px}.leading-\\[14px\\]{line-height:14px}.leading-\\[18px\\]{line-height:18px}.tracking-\\[0\\.015em\\]{letter-spacing:0.015em}.tracking-\\[0\\.01em\\]{letter-spacing:0.01em}.tracking-\\[0\\.032em\\]{letter-spacing:0.032em}.tracking-\\[0\\.08em\\]{letter-spacing:0.08em}.\\!text-t_button_pr_text{--tw-text-opacity:1 !important;color:color-mix(in srgb,var(--button-pr-text) calc(var(--tw-text-opacity) * 100%),transparent) !important}.text-\\[\\#6AE89B\\]{--tw-text-opacity:1;color:rgb(106 232 155/var(--tw-text-opacity))}.text-\\[\\#D77F02\\]{--tw-text-opacity:1;color:rgb(215 127 2/var(--tw-text-opacity))}.text-\\[\\#F44336\\]{--tw-text-opacity:1;color:rgb(244 67 54/var(--tw-text-opacity))}.text-\\[\\#F46F28\\]{--tw-text-opacity:1;color:rgb(244 111 40/var(--tw-text-opacity))}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.text-t_button_pr_off_text{--tw-text-opacity:1;color:color-mix(in srgb,var(--button-pr-off-text) calc(var(--tw-text-opacity) * 100%),transparent)}.text-t_button_pr_text{--tw-text-opacity:1;color:color-mix(in srgb,var(--button-pr-text) calc(var(--tw-text-opacity) * 100%),transparent)}.text-t_success_light{--tw-text-opacity:1;color:color-mix(in srgb,var(--success-light) calc(var(--tw-text-opacity) * 100%),transparent)}.text-t_text_green{--tw-text-opacity:1;color:color-mix(in srgb,var(--text-green) calc(var(--tw-text-opacity) * 100%),transparent)}.text-t_text_orange{--tw-text-opacity:1;color:color-mix(in srgb,var(--text-orange) calc(var(--tw-text-opacity) * 100%),transparent)}.text-t_text_primary{--tw-text-opacity:1;color:color-mix(in srgb,var(--text-primary) calc(var(--tw-text-opacity) * 100%),transparent)}.text-t_text_red{--tw-text-opacity:1;color:color-mix(in srgb,var(--text-red) calc(var(--tw-text-opacity) * 100%),transparent)}.text-t_warning_light{--tw-text-opacity:1;color:color-mix(in srgb,var(--warning-light) calc(var(--tw-text-opacity) * 100%),transparent)}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-x_alert_light{--tw-text-opacity:1;color:rgb(255 226 183/var(--tw-text-opacity))}.\\!text-opacity-50{--tw-text-opacity:0.5 !important}.text-opacity-10{--tw-text-opacity:0.1}.text-opacity-25{--tw-text-opacity:0.25}.text-opacity-30{--tw-text-opacity:0.3}.text-opacity-40{--tw-text-opacity:0.4}.text-opacity-50{--tw-text-opacity:0.5}.text-opacity-60{--tw-text-opacity:0.6}.text-opacity-70{--tw-text-opacity:0.7}.text-opacity-75{--tw-text-opacity:0.75}.text-opacity-80{--tw-text-opacity:0.8}.no-underline{text-decoration-line:none}.opacity-25{opacity:0.25}.opacity-40{opacity:0.4}.opacity-50{opacity:0.5}.opacity-60{opacity:0.6}.shadow{--tw-shadow:0 1px 3px 0 rgb(0 0 0/0.1),0 1px 2px -1px rgb(0 0 0/0.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\\[0_0_6px_rgba\\(255\\2c 0\\2c 0\\2c 0\\.5\\)\\]{--tw-shadow:0 0 6px rgba(255,0,0,0.5);--tw-shadow-colored:0 0 6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\\[0_0_6px_rgba\\(255\\2c 165\\2c 0\\2c 0\\.5\\)\\]{--tw-shadow:0 0 6px rgba(255,165,0,0.5);--tw-shadow-colored:0 0 6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgb(0 0 0/0.1),0 4px 6px -4px rgb(0 0 0/0.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgb(0 0 0/0.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-\\[12px\\]{--tw-backdrop-blur:blur(12px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-\\[24px\\]{--tw-backdrop-blur:blur(24px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-\\[32px\\]{--tw-backdrop-blur:blur(32px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-\\[48px\\]{--tw-backdrop-blur:blur(48px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-filter{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition-\\[filter\\]{transition-property:filter;transition-timing-function:cubic-bezier(0.4,0,0.2,1);transition-duration:150ms}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(0.4,0,0.2,1);transition-duration:150ms}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(0.4,0,0.2,1);transition-duration:150ms}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(0.4,0,0.2,1);transition-duration:150ms}:host{color:white;line-height:1.5rem;font-size:1rem;*{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--bg-tertiary) 15%,transparent) var(--bg-primary)}*::-webkit-scrollbar{width:4px}*::-webkit-scrollbar-track{background:var(--bg-primary);border-radius:4px}*::-webkit-scrollbar-thumb{background-color:color-mix(in srgb,var(--bg-tertiary) 15%,transparent);border-radius:4px}}.SnackbarContainer-top,.notistack-SnackbarContainer{top:100px !important}.placeholder\\:text-t_text_primary::-moz-placeholder{--tw-text-opacity:1;color:color-mix(in srgb,var(--text-primary) calc(var(--tw-text-opacity) * 100%),transparent)}.placeholder\\:text-t_text_primary::placeholder{--tw-text-opacity:1;color:color-mix(in srgb,var(--text-primary) calc(var(--tw-text-opacity) * 100%),transparent)}.placeholder\\:text-opacity-40::-moz-placeholder{--tw-text-opacity:0.4}.placeholder\\:text-opacity-40::placeholder{--tw-text-opacity:0.4}.placeholder\\:text-opacity-50::-moz-placeholder{--tw-text-opacity:0.5}.placeholder\\:text-opacity-50::placeholder{--tw-text-opacity:0.5}.hover\\:bg-t_bg_tertiary:hover{--tw-bg-opacity:1;background-color:color-mix(in srgb,var(--bg-tertiary) calc(var(--tw-bg-opacity) * 100%),transparent)}.hover\\:bg-opacity-10:hover{--tw-bg-opacity:0.1}.hover\\:from-t_bg_tertiary\\/10:hover{--tw-gradient-from:color-mix(in srgb,var(--bg-tertiary) calc(0.1 * 100%),transparent) var(--tw-gradient-from-position);--tw-gradient-to:rgb(255 255 255/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.hover\\:from-t_main_accent_light\\/40:hover{--tw-gradient-from:color-mix(in srgb,var(--main-accent-light) calc(0.4 * 100%),transparent) var(--tw-gradient-from-position);--tw-gradient-to:rgb(255 255 255/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.hover\\:to-t_bg_tertiary\\/10:hover{--tw-gradient-to:color-mix(in srgb,var(--bg-tertiary) calc(0.1 * 100%),transparent) var(--tw-gradient-to-position)}.hover\\:to-t_main_accent_dark\\/40:hover{--tw-gradient-to:color-mix(in srgb,var(--main-accent-dark) calc(0.4 * 100%),transparent) var(--tw-gradient-to-position)}.hover\\:fill-t_main_accent_light:hover{fill:color-mix(in srgb,var(--main-accent-light) calc(1 * 100%),transparent)}.hover\\:text-opacity-50:hover{--tw-text-opacity:0.5}.hover\\:opacity-80:hover{opacity:0.8}.hover\\:brightness-105:hover{--tw-brightness:brightness(1.05);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.group:hover .group-hover\\:flex{display:flex}.group:hover .group-hover\\:hidden{display:none}@media (min-width:640px){.sm\\:invisible{visibility:hidden}.sm\\:absolute{position:absolute}.sm\\:z-\\[1\\]{z-index:1}.sm\\:z-\\[2\\]{z-index:2}.sm\\:block{display:block}.sm\\:inline{display:inline}.sm\\:hidden{display:none}.sm\\:h-\\[600px\\]{height:600px}.sm\\:h-full{height:100%}.sm\\:w-\\[72px\\]{width:72px}.sm\\:max-w-\\[636px\\]{max-width:636px}.sm\\:justify-start{justify-content:flex-start}.sm\\:justify-center{justify-content:center}.sm\\:rounded-\\[32px\\]{border-radius:32px}.sm\\:rounded-none{border-radius:0px}.sm\\:border{border-width:1px}.sm\\:border-0{border-width:0px}.sm\\:bg-transparent{background-color:transparent}.sm\\:bg-none{background-image:none}.sm\\:p-0{padding:0px}.sm\\:p-4{padding:1rem}.sm\\:p-8{padding:2rem}.sm\\:px-6{padding-left:1.5rem;padding-right:1.5rem}}.\\[\\&_svg\\]\\:h-4 svg{height:1rem}.\\[\\&_svg\\]\\:h-5 svg{height:1.25rem}.\\[\\&_svg\\]\\:w-4 svg{width:1rem}.\\[\\&_svg\\]\\:w-auto svg{width:auto}
|
|
17419
17419
|
`;
|
|
17420
17420
|
|
|
17421
17421
|
// src/fonts/Satoshi-Regular.woff2
|
|
@@ -17577,6 +17577,14 @@ async function getBalances(payload) {
|
|
|
17577
17577
|
})}`
|
|
17578
17578
|
);
|
|
17579
17579
|
}
|
|
17580
|
+
async function getTransactionStatus(payload, abortSignal) {
|
|
17581
|
+
return _sendRequest(
|
|
17582
|
+
`/getTransactionStatus?${new URLSearchParams({
|
|
17583
|
+
data: JSON.stringify(payload)
|
|
17584
|
+
})}`,
|
|
17585
|
+
{ signal: abortSignal }
|
|
17586
|
+
);
|
|
17587
|
+
}
|
|
17580
17588
|
async function getTxStatus(payload) {
|
|
17581
17589
|
return await _sendRequest(
|
|
17582
17590
|
`/getTxStatus?${new URLSearchParams({
|
|
@@ -18681,14 +18689,96 @@ var useEvmContractApi_default = useEvmContractApi;
|
|
|
18681
18689
|
// src/hooks/useBatchQuery.ts
|
|
18682
18690
|
var import_react8 = require("react");
|
|
18683
18691
|
|
|
18684
|
-
// src/hooks/
|
|
18692
|
+
// src/hooks/useCrossChainDelivery.ts
|
|
18685
18693
|
var import_react9 = require("react");
|
|
18694
|
+
var TERMINAL_STATUSES = [
|
|
18695
|
+
"DONE",
|
|
18696
|
+
"PARTIALLY_FAILED",
|
|
18697
|
+
"FAILED"
|
|
18698
|
+
];
|
|
18699
|
+
var POLL_INTERVAL_MS = 4e3;
|
|
18700
|
+
var SLOW_POLL_INTERVAL_MS = 15e3;
|
|
18701
|
+
var SLOW_POLL_AFTER_MS = 3 * 60 * 1e3;
|
|
18702
|
+
var useCrossChainDelivery = ({
|
|
18703
|
+
enabled,
|
|
18704
|
+
chainId,
|
|
18705
|
+
txHash,
|
|
18706
|
+
walletAddress
|
|
18707
|
+
}) => {
|
|
18708
|
+
const [response, setResponse] = (0, import_react9.useState)();
|
|
18709
|
+
const [startedAt, setStartedAt] = (0, import_react9.useState)();
|
|
18710
|
+
const active = enabled && !!chainId && !!txHash;
|
|
18711
|
+
(0, import_react9.useEffect)(() => {
|
|
18712
|
+
if (!active) {
|
|
18713
|
+
setResponse(void 0);
|
|
18714
|
+
setStartedAt(void 0);
|
|
18715
|
+
return;
|
|
18716
|
+
}
|
|
18717
|
+
let cancelled = false;
|
|
18718
|
+
let timer;
|
|
18719
|
+
const controller = new AbortController();
|
|
18720
|
+
const startTime = Date.now();
|
|
18721
|
+
setResponse(void 0);
|
|
18722
|
+
setStartedAt(startTime);
|
|
18723
|
+
const poll2 = async () => {
|
|
18724
|
+
try {
|
|
18725
|
+
const next = await getTransactionStatus(
|
|
18726
|
+
{
|
|
18727
|
+
chainId,
|
|
18728
|
+
txHash,
|
|
18729
|
+
walletAddress
|
|
18730
|
+
},
|
|
18731
|
+
controller.signal
|
|
18732
|
+
);
|
|
18733
|
+
if (cancelled) {
|
|
18734
|
+
return;
|
|
18735
|
+
}
|
|
18736
|
+
setResponse(next);
|
|
18737
|
+
if (TERMINAL_STATUSES.includes(next.status)) {
|
|
18738
|
+
return;
|
|
18739
|
+
}
|
|
18740
|
+
} catch (err) {
|
|
18741
|
+
if (cancelled) {
|
|
18742
|
+
return;
|
|
18743
|
+
}
|
|
18744
|
+
console.warn("Failed to read cross-chain delivery status:", err);
|
|
18745
|
+
}
|
|
18746
|
+
timer = setTimeout(
|
|
18747
|
+
poll2,
|
|
18748
|
+
Date.now() - startTime > SLOW_POLL_AFTER_MS ? SLOW_POLL_INTERVAL_MS : POLL_INTERVAL_MS
|
|
18749
|
+
);
|
|
18750
|
+
};
|
|
18751
|
+
poll2();
|
|
18752
|
+
return () => {
|
|
18753
|
+
cancelled = true;
|
|
18754
|
+
if (timer) {
|
|
18755
|
+
clearTimeout(timer);
|
|
18756
|
+
}
|
|
18757
|
+
controller.abort();
|
|
18758
|
+
};
|
|
18759
|
+
}, [active, chainId, txHash, walletAddress]);
|
|
18760
|
+
const status = response?.status;
|
|
18761
|
+
const isSettled = !!status && TERMINAL_STATUSES.includes(status);
|
|
18762
|
+
return {
|
|
18763
|
+
status,
|
|
18764
|
+
response,
|
|
18765
|
+
isPolling: active && !isSettled,
|
|
18766
|
+
isSettled,
|
|
18767
|
+
isDelivered: status === "DONE",
|
|
18768
|
+
isPartiallyFailed: status === "PARTIALLY_FAILED",
|
|
18769
|
+
isFailed: status === "FAILED",
|
|
18770
|
+
startedAt
|
|
18771
|
+
};
|
|
18772
|
+
};
|
|
18773
|
+
|
|
18774
|
+
// src/hooks/useDebounce.tsx
|
|
18775
|
+
var import_react10 = require("react");
|
|
18686
18776
|
var useDebounce = ({
|
|
18687
18777
|
delayMs,
|
|
18688
18778
|
instantExecution
|
|
18689
18779
|
}) => {
|
|
18690
|
-
const timerRef = (0,
|
|
18691
|
-
const debounce = (0,
|
|
18780
|
+
const timerRef = (0, import_react10.useRef)(null);
|
|
18781
|
+
const debounce = (0, import_react10.useCallback)(
|
|
18692
18782
|
(callback) => {
|
|
18693
18783
|
if (timerRef.current) {
|
|
18694
18784
|
clearTimeout(timerRef.current);
|
|
@@ -18705,7 +18795,7 @@ var useDebounce = ({
|
|
|
18705
18795
|
};
|
|
18706
18796
|
|
|
18707
18797
|
// src/hooks/useXPower.ts
|
|
18708
|
-
var
|
|
18798
|
+
var import_react11 = require("react");
|
|
18709
18799
|
var iface = new ethers_exports.utils.Interface(StakingStableAPRAbi);
|
|
18710
18800
|
|
|
18711
18801
|
// src/services/solana/jupiter/extract-swap-data.ts
|
|
@@ -20475,9 +20565,9 @@ function extractMintDecimals(accountInfosMap, mint) {
|
|
|
20475
20565
|
// src/context/HistoryProvider.tsx
|
|
20476
20566
|
var import_bignumber21 = __toESM(require("bignumber.js"));
|
|
20477
20567
|
var import_notistack2 = require("notistack");
|
|
20478
|
-
var
|
|
20568
|
+
var import_react12 = require("react");
|
|
20479
20569
|
var import_jsx_runtime74 = require("react/jsx-runtime");
|
|
20480
|
-
var HistoryContext = (0,
|
|
20570
|
+
var HistoryContext = (0, import_react12.createContext)(
|
|
20481
20571
|
{}
|
|
20482
20572
|
);
|
|
20483
20573
|
var PENDING_TXS_LOCAL_STORAGE_KEY = "pending_transactions";
|
|
@@ -20521,15 +20611,15 @@ var HistoryProvider = ({ children }) => {
|
|
|
20521
20611
|
const { evm, solana } = useWallet();
|
|
20522
20612
|
const { address } = evm;
|
|
20523
20613
|
const { address: solanaAddress } = solana;
|
|
20524
|
-
const [solanaHistory, setSolanaHistory] = (0,
|
|
20525
|
-
const [history, setHistory] = (0,
|
|
20526
|
-
const [historyLoadedOnce, setHistoryLoadedOnce] = (0,
|
|
20527
|
-
const [solanaHistoryLoadedOnce, setSolanaHistoryLoadedOnce] = (0,
|
|
20614
|
+
const [solanaHistory, setSolanaHistory] = (0, import_react12.useState)([]);
|
|
20615
|
+
const [history, setHistory] = (0, import_react12.useState)([]);
|
|
20616
|
+
const [historyLoadedOnce, setHistoryLoadedOnce] = (0, import_react12.useState)(false);
|
|
20617
|
+
const [solanaHistoryLoadedOnce, setSolanaHistoryLoadedOnce] = (0, import_react12.useState)(false);
|
|
20528
20618
|
const { enqueueSnackbar, closeSnackbar } = (0, import_notistack2.useSnackbar)();
|
|
20529
20619
|
const { debounce: getHistoryDebounce } = useDebounce({
|
|
20530
20620
|
delayMs: 600
|
|
20531
20621
|
});
|
|
20532
|
-
(0,
|
|
20622
|
+
(0, import_react12.useEffect)(() => {
|
|
20533
20623
|
if (!isServer) {
|
|
20534
20624
|
localStorage.removeItem("transactions-history");
|
|
20535
20625
|
}
|
|
@@ -20569,7 +20659,7 @@ var HistoryProvider = ({ children }) => {
|
|
|
20569
20659
|
setSolanaHistoryLoadedOnce(true);
|
|
20570
20660
|
}
|
|
20571
20661
|
};
|
|
20572
|
-
(0,
|
|
20662
|
+
(0, import_react12.useEffect)(() => {
|
|
20573
20663
|
if (solanaAddress) {
|
|
20574
20664
|
fetchSolanaHistory();
|
|
20575
20665
|
} else {
|
|
@@ -20577,7 +20667,7 @@ var HistoryProvider = ({ children }) => {
|
|
|
20577
20667
|
setSolanaHistoryLoadedOnce(true);
|
|
20578
20668
|
}
|
|
20579
20669
|
}, [solanaAddress]);
|
|
20580
|
-
const fetchHistory = (0,
|
|
20670
|
+
const fetchHistory = (0, import_react12.useCallback)(async () => {
|
|
20581
20671
|
try {
|
|
20582
20672
|
if (!address) {
|
|
20583
20673
|
return;
|
|
@@ -20674,7 +20764,7 @@ var HistoryProvider = ({ children }) => {
|
|
|
20674
20764
|
setHistoryLoadedOnce(true);
|
|
20675
20765
|
}
|
|
20676
20766
|
}, [address, enqueueSnackbar]);
|
|
20677
|
-
(0,
|
|
20767
|
+
(0, import_react12.useEffect)(() => {
|
|
20678
20768
|
if (!historyLoadedOnce) {
|
|
20679
20769
|
getHistoryDebounce(fetchHistory);
|
|
20680
20770
|
}
|
|
@@ -20683,7 +20773,7 @@ var HistoryProvider = ({ children }) => {
|
|
|
20683
20773
|
}, 6e4);
|
|
20684
20774
|
return () => clearInterval(timer);
|
|
20685
20775
|
}, [address, fetchHistory, getHistoryDebounce, historyLoadedOnce]);
|
|
20686
|
-
const addTransactionToLocalHistory = (0,
|
|
20776
|
+
const addTransactionToLocalHistory = (0, import_react12.useCallback)(
|
|
20687
20777
|
(transaction, userAddress) => {
|
|
20688
20778
|
setHistory((prevHistory) => {
|
|
20689
20779
|
const clearedPrevHistory = prevHistory.filter(
|
|
@@ -20699,7 +20789,7 @@ var HistoryProvider = ({ children }) => {
|
|
|
20699
20789
|
},
|
|
20700
20790
|
[]
|
|
20701
20791
|
);
|
|
20702
|
-
const showSnackbarForDoneTx = (0,
|
|
20792
|
+
const showSnackbarForDoneTx = (0, import_react12.useCallback)(
|
|
20703
20793
|
(messageId) => {
|
|
20704
20794
|
enqueueSnackbar(
|
|
20705
20795
|
/* @__PURE__ */ (0, import_jsx_runtime74.jsx)(
|
|
@@ -20736,7 +20826,7 @@ var HistoryProvider = ({ children }) => {
|
|
|
20736
20826
|
},
|
|
20737
20827
|
[closeSnackbar, enqueueSnackbar]
|
|
20738
20828
|
);
|
|
20739
|
-
const updateTransactionInLocalHistory = (0,
|
|
20829
|
+
const updateTransactionInLocalHistory = (0, import_react12.useCallback)(
|
|
20740
20830
|
(transaction, userAddress) => {
|
|
20741
20831
|
setHistory((prevHistory) => {
|
|
20742
20832
|
const newHistory = prevHistory.map(
|
|
@@ -20761,13 +20851,13 @@ var HistoryProvider = ({ children }) => {
|
|
|
20761
20851
|
},
|
|
20762
20852
|
[showSnackbarForDoneTx]
|
|
20763
20853
|
);
|
|
20764
|
-
(0,
|
|
20854
|
+
(0, import_react12.useEffect)(() => {
|
|
20765
20855
|
setHistoryLoadedOnce(false);
|
|
20766
20856
|
setSolanaHistoryLoadedOnce(false);
|
|
20767
20857
|
setHistory([]);
|
|
20768
20858
|
setSolanaHistory([]);
|
|
20769
20859
|
}, [address, solanaAddress]);
|
|
20770
|
-
const state = (0,
|
|
20860
|
+
const state = (0, import_react12.useMemo)(
|
|
20771
20861
|
() => ({
|
|
20772
20862
|
history,
|
|
20773
20863
|
addTransactionToLocalHistory,
|
|
@@ -20788,7 +20878,7 @@ var HistoryProvider = ({ children }) => {
|
|
|
20788
20878
|
return /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(HistoryContext.Provider, { value: state, children });
|
|
20789
20879
|
};
|
|
20790
20880
|
function useHistory() {
|
|
20791
|
-
return (0,
|
|
20881
|
+
return (0, import_react12.useContext)(HistoryContext);
|
|
20792
20882
|
}
|
|
20793
20883
|
|
|
20794
20884
|
// src/utils/tokens.ts
|
|
@@ -20834,7 +20924,7 @@ var addCustomTokensToChains = (chains) => {
|
|
|
20834
20924
|
|
|
20835
20925
|
// src/context/SwapProvider.tsx
|
|
20836
20926
|
var import_bignumber22 = __toESM(require("bignumber.js"));
|
|
20837
|
-
var
|
|
20927
|
+
var import_react13 = require("react");
|
|
20838
20928
|
|
|
20839
20929
|
// src/utils/validation.ts
|
|
20840
20930
|
var getDefaultSwapSourceChain = ({
|
|
@@ -21194,7 +21284,7 @@ var init2 = {
|
|
|
21194
21284
|
dstChainOptions: [],
|
|
21195
21285
|
addTokenToChainIfNotExists: functionNotImplemented
|
|
21196
21286
|
};
|
|
21197
|
-
var swapContext = (0,
|
|
21287
|
+
var swapContext = (0, import_react13.createContext)(init2);
|
|
21198
21288
|
var SwapProvider = ({
|
|
21199
21289
|
children,
|
|
21200
21290
|
integrationConfig,
|
|
@@ -21204,80 +21294,80 @@ var SwapProvider = ({
|
|
|
21204
21294
|
const { evm, solana } = useWallet();
|
|
21205
21295
|
const { address: evmAddress, chainId: walletChainId } = evm;
|
|
21206
21296
|
const { address: solanaAddress } = solana;
|
|
21207
|
-
const [isInitialStateSet, setIsInitialStateSet] = (0,
|
|
21208
|
-
const [tab, setTab] = (0,
|
|
21209
|
-
const [error, setError] = (0,
|
|
21210
|
-
const [activePicker, setActivePicker] = (0,
|
|
21211
|
-
const [expressDelivery, setExpressDelivery] = (0,
|
|
21212
|
-
const [slippage, setSlippage] = (0,
|
|
21213
|
-
const [infiniteApproval, setInfiniteApproval] = (0,
|
|
21297
|
+
const [isInitialStateSet, setIsInitialStateSet] = (0, import_react13.useState)(false);
|
|
21298
|
+
const [tab, setTab] = (0, import_react13.useState)(init2.tab);
|
|
21299
|
+
const [error, setError] = (0, import_react13.useState)(init2.error);
|
|
21300
|
+
const [activePicker, setActivePicker] = (0, import_react13.useState)(init2.activePicker);
|
|
21301
|
+
const [expressDelivery, setExpressDelivery] = (0, import_react13.useState)(init2.expressDelivery);
|
|
21302
|
+
const [slippage, setSlippage] = (0, import_react13.useState)(init2.slippage);
|
|
21303
|
+
const [infiniteApproval, setInfiniteApproval] = (0, import_react13.useState)(
|
|
21214
21304
|
init2.infiniteApproval
|
|
21215
21305
|
);
|
|
21216
|
-
const [srcChain, setSrcChain] = (0,
|
|
21217
|
-
const [dstChain, setDstChain] = (0,
|
|
21218
|
-
const [feeToken, setFeeToken] = (0,
|
|
21219
|
-
const [srcToken, setSrcToken] = (0,
|
|
21220
|
-
const [dstToken, setDstToken] = (0,
|
|
21221
|
-
const [tokenPrices, setTokenPrices] = (0,
|
|
21222
|
-
const [tokenBalances, setTokenBalances] = (0,
|
|
21223
|
-
const [customTokensVersion, setCustomTokensVersion] = (0,
|
|
21224
|
-
const [bridgeTokens, setBridgeTokens] = (0,
|
|
21225
|
-
const [srcValue, setSrcValue] = (0,
|
|
21226
|
-
const [srcTokenBalanceWei, setSrcTokenBalanceWei] = (0,
|
|
21306
|
+
const [srcChain, setSrcChain] = (0, import_react13.useState)(init2.srcChain);
|
|
21307
|
+
const [dstChain, setDstChain] = (0, import_react13.useState)(init2.dstChain);
|
|
21308
|
+
const [feeToken, setFeeToken] = (0, import_react13.useState)(init2.feeToken);
|
|
21309
|
+
const [srcToken, setSrcToken] = (0, import_react13.useState)(init2.srcToken);
|
|
21310
|
+
const [dstToken, setDstToken] = (0, import_react13.useState)(init2.dstToken);
|
|
21311
|
+
const [tokenPrices, setTokenPrices] = (0, import_react13.useState)(init2.tokenPrices);
|
|
21312
|
+
const [tokenBalances, setTokenBalances] = (0, import_react13.useState)({});
|
|
21313
|
+
const [customTokensVersion, setCustomTokensVersion] = (0, import_react13.useState)(0);
|
|
21314
|
+
const [bridgeTokens, setBridgeTokens] = (0, import_react13.useState)([]);
|
|
21315
|
+
const [srcValue, setSrcValue] = (0, import_react13.useState)(init2.srcValue);
|
|
21316
|
+
const [srcTokenBalanceWei, setSrcTokenBalanceWei] = (0, import_react13.useState)(
|
|
21227
21317
|
init2.srcTokenBalanceWei
|
|
21228
21318
|
);
|
|
21229
|
-
const [srcChainTokensOptions, setSrcChainTokensOptions] = (0,
|
|
21319
|
+
const [srcChainTokensOptions, setSrcChainTokensOptions] = (0, import_react13.useState)(
|
|
21230
21320
|
init2.srcChainTokensOptions
|
|
21231
21321
|
);
|
|
21232
|
-
const [dstChainTokensOptions, setDstChainTokensOptions] = (0,
|
|
21322
|
+
const [dstChainTokensOptions, setDstChainTokensOptions] = (0, import_react13.useState)(
|
|
21233
21323
|
init2.dstChainTokensOptions
|
|
21234
21324
|
);
|
|
21235
|
-
const [srcChainOtherTokensOptions, setSrcChainOtherTokensOptions] = (0,
|
|
21325
|
+
const [srcChainOtherTokensOptions, setSrcChainOtherTokensOptions] = (0, import_react13.useState)(
|
|
21236
21326
|
init2.srcChainOtherTokensOptions
|
|
21237
21327
|
);
|
|
21238
|
-
const [dstChainOtherTokensOptions, setDstChainOtherTokensOptions] = (0,
|
|
21328
|
+
const [dstChainOtherTokensOptions, setDstChainOtherTokensOptions] = (0, import_react13.useState)(
|
|
21239
21329
|
init2.dstChainOtherTokensOptions
|
|
21240
21330
|
);
|
|
21241
|
-
const [srcChainOptions, setSrcChainOptions] = (0,
|
|
21242
|
-
const [dstChainOptions, setDstChainOptions] = (0,
|
|
21243
|
-
const [isFetchingBalance, setIsFetchingBalance] = (0,
|
|
21331
|
+
const [srcChainOptions, setSrcChainOptions] = (0, import_react13.useState)([]);
|
|
21332
|
+
const [dstChainOptions, setDstChainOptions] = (0, import_react13.useState)([]);
|
|
21333
|
+
const [isFetchingBalance, setIsFetchingBalance] = (0, import_react13.useState)(
|
|
21244
21334
|
init2.isFetchingBalance
|
|
21245
21335
|
);
|
|
21246
|
-
const [isFetchingBalances, setIsFetchingBalances] = (0,
|
|
21336
|
+
const [isFetchingBalances, setIsFetchingBalances] = (0, import_react13.useState)(
|
|
21247
21337
|
init2.isFetchingBalances
|
|
21248
21338
|
);
|
|
21249
|
-
const [isFetchingRoute, setFetchingRoute] = (0,
|
|
21250
|
-
const [route, setRoute] = (0,
|
|
21251
|
-
const routeAbortController = (0,
|
|
21252
|
-
const refreshSelectedTokenBalanceNonce = (0,
|
|
21253
|
-
const prevWalletAddresses = (0,
|
|
21254
|
-
const prevFollowedWalletChainId = (0,
|
|
21255
|
-
const initPending = (0,
|
|
21256
|
-
const modeSwitchReinit = (0,
|
|
21257
|
-
const srcTokenLocked = (0,
|
|
21339
|
+
const [isFetchingRoute, setFetchingRoute] = (0, import_react13.useState)(init2.isFetchingRoute);
|
|
21340
|
+
const [route, setRoute] = (0, import_react13.useState)(init2.route);
|
|
21341
|
+
const routeAbortController = (0, import_react13.useRef)(null);
|
|
21342
|
+
const refreshSelectedTokenBalanceNonce = (0, import_react13.useRef)(crypto.randomUUID());
|
|
21343
|
+
const prevWalletAddresses = (0, import_react13.useRef)(void 0);
|
|
21344
|
+
const prevFollowedWalletChainId = (0, import_react13.useRef)(void 0);
|
|
21345
|
+
const initPending = (0, import_react13.useRef)(false);
|
|
21346
|
+
const modeSwitchReinit = (0, import_react13.useRef)(false);
|
|
21347
|
+
const srcTokenLocked = (0, import_react13.useMemo)(
|
|
21258
21348
|
() => !!integrationConfig?.srcTokenLocked,
|
|
21259
21349
|
[integrationConfig?.srcTokenLocked]
|
|
21260
21350
|
);
|
|
21261
|
-
const dstTokenLocked = (0,
|
|
21351
|
+
const dstTokenLocked = (0, import_react13.useMemo)(
|
|
21262
21352
|
() => !!integrationConfig?.dstTokenLocked,
|
|
21263
21353
|
[integrationConfig?.dstTokenLocked]
|
|
21264
21354
|
);
|
|
21265
|
-
const dstChainLocked = (0,
|
|
21355
|
+
const dstChainLocked = (0, import_react13.useMemo)(
|
|
21266
21356
|
() => !!integrationConfig?.dstChainLocked,
|
|
21267
21357
|
[integrationConfig?.dstChainLocked]
|
|
21268
21358
|
);
|
|
21269
|
-
const srcChainLocked = (0,
|
|
21359
|
+
const srcChainLocked = (0, import_react13.useMemo)(
|
|
21270
21360
|
() => !!integrationConfig?.srcChainLocked,
|
|
21271
21361
|
[integrationConfig?.srcChainLocked]
|
|
21272
21362
|
);
|
|
21273
|
-
const bridgeUI = (0,
|
|
21363
|
+
const bridgeUI = (0, import_react13.useMemo)(
|
|
21274
21364
|
() => !!integrationConfig.bridge,
|
|
21275
21365
|
[integrationConfig.bridge]
|
|
21276
21366
|
);
|
|
21277
|
-
const hasOnConnectWalletCallback = (0,
|
|
21367
|
+
const hasOnConnectWalletCallback = (0, import_react13.useMemo)(() => {
|
|
21278
21368
|
return !!(integrationConfig.onConnectWallet || window.xPayOnConnectWallet);
|
|
21279
21369
|
}, [integrationConfig.onConnectWallet]);
|
|
21280
|
-
const supportedTokens = (0,
|
|
21370
|
+
const supportedTokens = (0, import_react13.useMemo)(() => {
|
|
21281
21371
|
const customTokens = !isServer ? JSON.parse(localStorage.getItem("custom-tokens") || "{}") : {};
|
|
21282
21372
|
const chainIdToTokenAddressToData = {};
|
|
21283
21373
|
supportedChains.forEach((chain) => {
|
|
@@ -21288,7 +21378,7 @@ var SwapProvider = ({
|
|
|
21288
21378
|
});
|
|
21289
21379
|
return deepMergeObjects(chainIdToTokenAddressToData, customTokens);
|
|
21290
21380
|
}, [supportedChains, customTokensVersion]);
|
|
21291
|
-
const chainToTokenOptionsMap = (0,
|
|
21381
|
+
const chainToTokenOptionsMap = (0, import_react13.useMemo)(() => {
|
|
21292
21382
|
const tempChainToTokenOptionsMap = {};
|
|
21293
21383
|
Object.entries(supportedTokens).forEach(([chainId, chainData]) => {
|
|
21294
21384
|
tempChainToTokenOptionsMap[chainId] = Object.entries(chainData).filter(([, tokenData]) => tokenData.supported).sort(([, tokenDataA], [, tokenDataB]) => {
|
|
@@ -21302,7 +21392,7 @@ var SwapProvider = ({
|
|
|
21302
21392
|
});
|
|
21303
21393
|
return tempChainToTokenOptionsMap;
|
|
21304
21394
|
}, [supportedTokens]);
|
|
21305
|
-
const bridgeTokensDictionary = (0,
|
|
21395
|
+
const bridgeTokensDictionary = (0, import_react13.useMemo)(() => {
|
|
21306
21396
|
if (!bridgeTokens || bridgeTokens.length === 0) return null;
|
|
21307
21397
|
const dictionary = {};
|
|
21308
21398
|
const addMapping = (chainIdFrom, tokenAddressFrom, chainIdTo, tokenAddressTo) => {
|
|
@@ -21328,20 +21418,20 @@ var SwapProvider = ({
|
|
|
21328
21418
|
}
|
|
21329
21419
|
return Object.keys(dictionary).length > 0 ? dictionary : null;
|
|
21330
21420
|
}, [bridgeTokens]);
|
|
21331
|
-
const srcValueUsd = (0,
|
|
21421
|
+
const srcValueUsd = (0, import_react13.useMemo)(() => {
|
|
21332
21422
|
if (srcToken && srcChain && tokenPrices && tokenPrices[srcChain.chainId] && tokenPrices[srcChain.chainId]?.[srcToken.address]) {
|
|
21333
21423
|
return (Number(srcValue) * Number(tokenPrices[srcChain.chainId]?.[srcToken.address])).toFixed(2);
|
|
21334
21424
|
}
|
|
21335
21425
|
return null;
|
|
21336
21426
|
}, [tokenPrices, srcToken, srcValue, srcChain]);
|
|
21337
|
-
const srcValueWei = (0,
|
|
21427
|
+
const srcValueWei = (0, import_react13.useMemo)(
|
|
21338
21428
|
() => humanReadableToWei({
|
|
21339
21429
|
amount: srcValue,
|
|
21340
21430
|
decimals: srcToken?.decimals || 18
|
|
21341
21431
|
}),
|
|
21342
21432
|
[srcToken?.decimals, srcValue]
|
|
21343
21433
|
);
|
|
21344
|
-
const dstValue = (0,
|
|
21434
|
+
const dstValue = (0, import_react13.useMemo)(
|
|
21345
21435
|
() => weiToHumanReadable({
|
|
21346
21436
|
amount: route?.estAmountOut || "0",
|
|
21347
21437
|
// TODO include fees.xSwapFee.tokenFee
|
|
@@ -21351,20 +21441,20 @@ var SwapProvider = ({
|
|
|
21351
21441
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
21352
21442
|
[route]
|
|
21353
21443
|
);
|
|
21354
|
-
const dstValueWei = (0,
|
|
21444
|
+
const dstValueWei = (0, import_react13.useMemo)(
|
|
21355
21445
|
() => humanReadableToWei({
|
|
21356
21446
|
amount: dstValue,
|
|
21357
21447
|
decimals: dstToken?.decimals || 18
|
|
21358
21448
|
}),
|
|
21359
21449
|
[dstToken?.decimals, dstValue]
|
|
21360
21450
|
);
|
|
21361
|
-
const dstValueUsd = (0,
|
|
21451
|
+
const dstValueUsd = (0, import_react13.useMemo)(() => {
|
|
21362
21452
|
if (dstToken && dstChain && tokenPrices && tokenPrices[dstChain?.chainId] && tokenPrices[dstChain?.chainId]?.[dstToken.address]) {
|
|
21363
21453
|
return (Number(dstValue) * Number(tokenPrices[dstChain?.chainId]?.[dstToken.address])).toFixed(2);
|
|
21364
21454
|
}
|
|
21365
21455
|
return null;
|
|
21366
21456
|
}, [tokenPrices, dstToken, dstValue, dstChain]);
|
|
21367
|
-
const dstValueMin = (0,
|
|
21457
|
+
const dstValueMin = (0, import_react13.useMemo)(
|
|
21368
21458
|
() => weiToHumanReadable({
|
|
21369
21459
|
amount: route?.minAmountOut || "0",
|
|
21370
21460
|
decimals: dstToken?.decimals || 18,
|
|
@@ -21373,15 +21463,20 @@ var SwapProvider = ({
|
|
|
21373
21463
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
21374
21464
|
[route]
|
|
21375
21465
|
);
|
|
21376
|
-
const isExpressDeliveryActive = (0,
|
|
21377
|
-
|
|
21378
|
-
|
|
21379
|
-
|
|
21380
|
-
|
|
21466
|
+
const isExpressDeliveryActive = (0, import_react13.useMemo)(() => {
|
|
21467
|
+
if (!route) {
|
|
21468
|
+
return false;
|
|
21469
|
+
}
|
|
21470
|
+
if (typeof route.expressDelivery === "boolean") {
|
|
21471
|
+
return route.expressDelivery;
|
|
21472
|
+
}
|
|
21473
|
+
return expressDelivery && BigNumber.from(route.xSwapFees?.expressDeliveryFee || "0").gt("0");
|
|
21474
|
+
}, [expressDelivery, route]);
|
|
21475
|
+
const isAsyncDataLoaded = (0, import_react13.useMemo)(
|
|
21381
21476
|
() => supportedChains.length > 0 && bridgeTokens.length > 0,
|
|
21382
21477
|
[supportedChains, bridgeTokens]
|
|
21383
21478
|
);
|
|
21384
|
-
const srcTokenBalanceInfo = (0,
|
|
21479
|
+
const srcTokenBalanceInfo = (0, import_react13.useMemo)(() => {
|
|
21385
21480
|
if (!srcToken || !srcTokenBalanceWei || !evmAddress && !solanaAddress) {
|
|
21386
21481
|
return "";
|
|
21387
21482
|
}
|
|
@@ -21402,7 +21497,7 @@ var SwapProvider = ({
|
|
|
21402
21497
|
precisionFractionalPlaces: 5
|
|
21403
21498
|
});
|
|
21404
21499
|
}, [evmAddress, solanaAddress, srcToken, srcTokenBalanceWei]);
|
|
21405
|
-
const getTokenOptions = (0,
|
|
21500
|
+
const getTokenOptions = (0, import_react13.useCallback)(
|
|
21406
21501
|
(chainId) => {
|
|
21407
21502
|
if (!chainId) {
|
|
21408
21503
|
return [];
|
|
@@ -21422,7 +21517,7 @@ var SwapProvider = ({
|
|
|
21422
21517
|
},
|
|
21423
21518
|
[bridgeTokensDictionary, bridgeUI, chainToTokenOptionsMap]
|
|
21424
21519
|
);
|
|
21425
|
-
const quoteRoute = (0,
|
|
21520
|
+
const quoteRoute = (0, import_react13.useCallback)(async () => {
|
|
21426
21521
|
if (!srcChain || !dstChain || !srcToken || !dstToken || !srcValueWei || safeBigNumberFrom(srcValueWei).eq(0) || bridgeUI && !bridgeTokensDictionary || bridgeUI && srcChain.ecosystem !== "evm" /* EVM */) {
|
|
21427
21522
|
setRoute(void 0);
|
|
21428
21523
|
return;
|
|
@@ -21510,7 +21605,7 @@ var SwapProvider = ({
|
|
|
21510
21605
|
srcToken,
|
|
21511
21606
|
srcValueWei
|
|
21512
21607
|
]);
|
|
21513
|
-
const refreshBalance = (0,
|
|
21608
|
+
const refreshBalance = (0, import_react13.useCallback)(
|
|
21514
21609
|
async (options) => {
|
|
21515
21610
|
if (!evmAddress && !solanaAddress || !srcChain?.publicRpcUrls[0] || !srcToken || !srcToken?.address) {
|
|
21516
21611
|
refreshSelectedTokenBalanceNonce.current = crypto.randomUUID();
|
|
@@ -21585,20 +21680,20 @@ var SwapProvider = ({
|
|
|
21585
21680
|
},
|
|
21586
21681
|
[evmAddress, solanaAddress, srcChain, srcToken, tokenBalances]
|
|
21587
21682
|
);
|
|
21588
|
-
const findTokenDataByAddressAndChain = (0,
|
|
21683
|
+
const findTokenDataByAddressAndChain = (0, import_react13.useCallback)(
|
|
21589
21684
|
(tokenAddress, chainId) => {
|
|
21590
21685
|
return supportedTokens[chainId]?.[tokenAddress];
|
|
21591
21686
|
},
|
|
21592
21687
|
[supportedTokens]
|
|
21593
21688
|
);
|
|
21594
|
-
const onConnectWallet = (0,
|
|
21689
|
+
const onConnectWallet = (0, import_react13.useCallback)(() => {
|
|
21595
21690
|
if (integrationConfig.onConnectWallet) {
|
|
21596
21691
|
integrationConfig.onConnectWallet();
|
|
21597
21692
|
} else if (window.xPayOnConnectWallet) {
|
|
21598
21693
|
window.xPayOnConnectWallet();
|
|
21599
21694
|
}
|
|
21600
21695
|
}, [integrationConfig]);
|
|
21601
|
-
const addTokenToChainIfNotExists = (0,
|
|
21696
|
+
const addTokenToChainIfNotExists = (0, import_react13.useCallback)(
|
|
21602
21697
|
(chainId, token) => {
|
|
21603
21698
|
const chain = supportedChains.find((chain2) => chain2.chainId === chainId);
|
|
21604
21699
|
if (!chain) return chain;
|
|
@@ -21614,7 +21709,7 @@ var SwapProvider = ({
|
|
|
21614
21709
|
},
|
|
21615
21710
|
[supportedChains]
|
|
21616
21711
|
);
|
|
21617
|
-
(0,
|
|
21712
|
+
(0, import_react13.useEffect)(() => {
|
|
21618
21713
|
if (supportedChains.length > 0) {
|
|
21619
21714
|
const chainIds = supportedChains.map((chain) => chain.chainId);
|
|
21620
21715
|
getPrices({ chainId: chainIds }).then((prices) => {
|
|
@@ -21622,22 +21717,22 @@ var SwapProvider = ({
|
|
|
21622
21717
|
});
|
|
21623
21718
|
}
|
|
21624
21719
|
}, [supportedChains]);
|
|
21625
|
-
(0,
|
|
21720
|
+
(0, import_react13.useEffect)(() => {
|
|
21626
21721
|
(async () => {
|
|
21627
21722
|
const data = await getBridgeTokens();
|
|
21628
21723
|
setBridgeTokens(data);
|
|
21629
21724
|
})();
|
|
21630
21725
|
}, []);
|
|
21631
|
-
(0,
|
|
21726
|
+
(0, import_react13.useEffect)(() => {
|
|
21632
21727
|
quoteRoute();
|
|
21633
21728
|
}, [quoteRoute]);
|
|
21634
|
-
(0,
|
|
21729
|
+
(0, import_react13.useEffect)(() => {
|
|
21635
21730
|
const walletAddresses = `${evmAddress ?? ""}:${solanaAddress ?? ""}`;
|
|
21636
21731
|
const walletChanged = prevWalletAddresses.current !== void 0 && prevWalletAddresses.current !== walletAddresses;
|
|
21637
21732
|
prevWalletAddresses.current = walletAddresses;
|
|
21638
21733
|
refreshBalance(walletChanged ? { forceRpc: true } : void 0);
|
|
21639
21734
|
}, [refreshBalance, evmAddress, solanaAddress]);
|
|
21640
|
-
(0,
|
|
21735
|
+
(0, import_react13.useEffect)(() => {
|
|
21641
21736
|
let isCancelled = false;
|
|
21642
21737
|
if ((evmAddress || solanaAddress) && supportedChains.length > 0) {
|
|
21643
21738
|
setIsFetchingBalances(true);
|
|
@@ -21656,7 +21751,7 @@ var SwapProvider = ({
|
|
|
21656
21751
|
isCancelled = true;
|
|
21657
21752
|
};
|
|
21658
21753
|
}, [evmAddress, solanaAddress, supportedChains.length, customTokensVersion]);
|
|
21659
|
-
(0,
|
|
21754
|
+
(0, import_react13.useEffect)(() => {
|
|
21660
21755
|
if (srcChain?.chainId === "mainnet-beta") {
|
|
21661
21756
|
setFeeToken(
|
|
21662
21757
|
srcChain?.tokens.find(
|
|
@@ -21671,7 +21766,7 @@ var SwapProvider = ({
|
|
|
21671
21766
|
);
|
|
21672
21767
|
}
|
|
21673
21768
|
}, [srcChain]);
|
|
21674
|
-
(0,
|
|
21769
|
+
(0, import_react13.useEffect)(() => {
|
|
21675
21770
|
(async () => {
|
|
21676
21771
|
const isSingleChainSelected = dstChain?.chainId === srcChain?.chainId;
|
|
21677
21772
|
const srcTokenOptions = getTokenOptions(
|
|
@@ -21740,7 +21835,7 @@ var SwapProvider = ({
|
|
|
21740
21835
|
dstToken?.symbol,
|
|
21741
21836
|
tokenBalances
|
|
21742
21837
|
]);
|
|
21743
|
-
(0,
|
|
21838
|
+
(0, import_react13.useEffect)(() => {
|
|
21744
21839
|
const baseChains = supportedChains.filter(
|
|
21745
21840
|
({ web3Environment, swapSupported, bridgeSupported }) => web3Environment === "mainnet" /* MAINNET */ && (bridgeUI && bridgeSupported || !bridgeUI && swapSupported)
|
|
21746
21841
|
);
|
|
@@ -21795,7 +21890,7 @@ var SwapProvider = ({
|
|
|
21795
21890
|
dstToken,
|
|
21796
21891
|
bridgeTokensDictionary
|
|
21797
21892
|
]);
|
|
21798
|
-
(0,
|
|
21893
|
+
(0, import_react13.useEffect)(() => {
|
|
21799
21894
|
const prevWalletChainId = prevFollowedWalletChainId.current;
|
|
21800
21895
|
prevFollowedWalletChainId.current = walletChainId;
|
|
21801
21896
|
if (!walletChainId || !prevWalletChainId || prevWalletChainId === walletChainId || !isInitialStateSet || integrationConfig?.srcChainId || bridgeUI) {
|
|
@@ -21814,7 +21909,7 @@ var SwapProvider = ({
|
|
|
21814
21909
|
integrationConfig?.srcChainId,
|
|
21815
21910
|
bridgeUI
|
|
21816
21911
|
]);
|
|
21817
|
-
(0,
|
|
21912
|
+
(0, import_react13.useEffect)(() => {
|
|
21818
21913
|
if (!isInitialStateSet) {
|
|
21819
21914
|
return;
|
|
21820
21915
|
}
|
|
@@ -21830,7 +21925,7 @@ var SwapProvider = ({
|
|
|
21830
21925
|
setDstChain(void 0);
|
|
21831
21926
|
setIsInitialStateSet(false);
|
|
21832
21927
|
}, [bridgeUI]);
|
|
21833
|
-
(0,
|
|
21928
|
+
(0, import_react13.useEffect)(() => {
|
|
21834
21929
|
if (isInitialStateSet || !supportedChains || supportedChains.length === 0 || !bridgeTokensDictionary) {
|
|
21835
21930
|
return;
|
|
21836
21931
|
}
|
|
@@ -21895,7 +21990,7 @@ var SwapProvider = ({
|
|
|
21895
21990
|
isInitialStateSet,
|
|
21896
21991
|
bridgeTokensDictionary
|
|
21897
21992
|
]);
|
|
21898
|
-
(0,
|
|
21993
|
+
(0, import_react13.useEffect)(() => {
|
|
21899
21994
|
if (!bridgeTokensDictionary || supportedChains.length === 0 || !isInitialStateSet || // A bridgeUI-change reset is in flight: this closure still holds the
|
|
21900
21995
|
// previous mode's route, so mapping it against the new mode would
|
|
21901
21996
|
// resurrect it. The re-init applies the new mode's defaults instead.
|
|
@@ -21931,7 +22026,7 @@ var SwapProvider = ({
|
|
|
21931
22026
|
bridgeTokensDictionary,
|
|
21932
22027
|
isInitialStateSet
|
|
21933
22028
|
]);
|
|
21934
|
-
(0,
|
|
22029
|
+
(0, import_react13.useEffect)(() => {
|
|
21935
22030
|
if (!isInitialStateSet || initPending.current) {
|
|
21936
22031
|
return;
|
|
21937
22032
|
}
|
|
@@ -21941,7 +22036,7 @@ var SwapProvider = ({
|
|
|
21941
22036
|
window.xPayOnDstChainChange(dstChain?.chainId);
|
|
21942
22037
|
}
|
|
21943
22038
|
}, [integrationConfig.onDstChainChange, dstChain]);
|
|
21944
|
-
(0,
|
|
22039
|
+
(0, import_react13.useEffect)(() => {
|
|
21945
22040
|
if (!isInitialStateSet || initPending.current) {
|
|
21946
22041
|
return;
|
|
21947
22042
|
}
|
|
@@ -21952,7 +22047,7 @@ var SwapProvider = ({
|
|
|
21952
22047
|
window.xPayOnDstTokenChange(token);
|
|
21953
22048
|
}
|
|
21954
22049
|
}, [integrationConfig.onDstTokenChange, dstToken]);
|
|
21955
|
-
(0,
|
|
22050
|
+
(0, import_react13.useEffect)(() => {
|
|
21956
22051
|
if (!isInitialStateSet || initPending.current) {
|
|
21957
22052
|
return;
|
|
21958
22053
|
}
|
|
@@ -21962,7 +22057,7 @@ var SwapProvider = ({
|
|
|
21962
22057
|
window.xPayOnSrcChainChange(srcChain?.chainId);
|
|
21963
22058
|
}
|
|
21964
22059
|
}, [integrationConfig.onSrcChainChange, srcChain]);
|
|
21965
|
-
(0,
|
|
22060
|
+
(0, import_react13.useEffect)(() => {
|
|
21966
22061
|
if (!isInitialStateSet || initPending.current) {
|
|
21967
22062
|
return;
|
|
21968
22063
|
}
|
|
@@ -22044,16 +22139,16 @@ var SwapProvider = ({
|
|
|
22044
22139
|
);
|
|
22045
22140
|
};
|
|
22046
22141
|
var useSwapContext = () => {
|
|
22047
|
-
return (0,
|
|
22142
|
+
return (0, import_react13.useContext)(swapContext);
|
|
22048
22143
|
};
|
|
22049
22144
|
|
|
22050
22145
|
// src/context/TransactionProvider.tsx
|
|
22051
22146
|
var import_web36 = require("@solana/web3.js");
|
|
22052
|
-
var
|
|
22147
|
+
var import_react14 = require("react");
|
|
22053
22148
|
var import_jsx_runtime76 = require("react/jsx-runtime");
|
|
22054
|
-
var TransactionContext = (0,
|
|
22149
|
+
var TransactionContext = (0, import_react14.createContext)({});
|
|
22055
22150
|
var TransactionProvider = ({ children }) => {
|
|
22056
|
-
const evmTransactionExecutor = (0,
|
|
22151
|
+
const evmTransactionExecutor = (0, import_react14.useCallback)(
|
|
22057
22152
|
async ({ executeTransaction, handlers }) => {
|
|
22058
22153
|
try {
|
|
22059
22154
|
const tx = await executeTransaction();
|
|
@@ -22070,11 +22165,11 @@ var TransactionProvider = ({ children }) => {
|
|
|
22070
22165
|
},
|
|
22071
22166
|
[]
|
|
22072
22167
|
);
|
|
22073
|
-
const customConnection = (0,
|
|
22168
|
+
const customConnection = (0, import_react14.useMemo)(
|
|
22074
22169
|
() => new import_web36.Connection(SOLANA_MAINNET_RPC_URL, "confirmed"),
|
|
22075
22170
|
[]
|
|
22076
22171
|
);
|
|
22077
|
-
const solanaTransactionExecutor = (0,
|
|
22172
|
+
const solanaTransactionExecutor = (0, import_react14.useCallback)(
|
|
22078
22173
|
async ({ executeTransaction, handlers }) => {
|
|
22079
22174
|
try {
|
|
22080
22175
|
const signedTransaction = await executeTransaction();
|
|
@@ -22113,7 +22208,7 @@ var TransactionProvider = ({ children }) => {
|
|
|
22113
22208
|
},
|
|
22114
22209
|
[customConnection]
|
|
22115
22210
|
);
|
|
22116
|
-
const enqueueTransaction = (0,
|
|
22211
|
+
const enqueueTransaction = (0, import_react14.useCallback)(
|
|
22117
22212
|
({
|
|
22118
22213
|
executeTransaction,
|
|
22119
22214
|
handlers,
|
|
@@ -22135,7 +22230,7 @@ var TransactionProvider = ({ children }) => {
|
|
|
22135
22230
|
},
|
|
22136
22231
|
[evmTransactionExecutor, solanaTransactionExecutor]
|
|
22137
22232
|
);
|
|
22138
|
-
const state = (0,
|
|
22233
|
+
const state = (0, import_react14.useMemo)(
|
|
22139
22234
|
() => ({
|
|
22140
22235
|
enqueueTransaction
|
|
22141
22236
|
}),
|
|
@@ -22144,15 +22239,15 @@ var TransactionProvider = ({ children }) => {
|
|
|
22144
22239
|
return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(TransactionContext.Provider, { value: state, children });
|
|
22145
22240
|
};
|
|
22146
22241
|
function useTransaction() {
|
|
22147
|
-
return (0,
|
|
22242
|
+
return (0, import_react14.useContext)(TransactionContext);
|
|
22148
22243
|
}
|
|
22149
22244
|
|
|
22150
22245
|
// src/hooks/networkManagement/useNetworks.ts
|
|
22151
|
-
var
|
|
22246
|
+
var import_react16 = require("react");
|
|
22152
22247
|
var import_wagmi4 = require("wagmi");
|
|
22153
22248
|
|
|
22154
22249
|
// src/hooks/networkManagement/clientToSigner.tsx
|
|
22155
|
-
var
|
|
22250
|
+
var import_react15 = require("react");
|
|
22156
22251
|
var import_wagmi3 = require("wagmi");
|
|
22157
22252
|
function clientToSigner(client) {
|
|
22158
22253
|
const { account, transport } = client;
|
|
@@ -22162,18 +22257,18 @@ function clientToSigner(client) {
|
|
|
22162
22257
|
}
|
|
22163
22258
|
async function useEthersSigner({ chainId } = {}) {
|
|
22164
22259
|
const { data: client } = (0, import_wagmi3.useConnectorClient)({ chainId });
|
|
22165
|
-
return (0,
|
|
22260
|
+
return (0, import_react15.useMemo)(() => client ? clientToSigner(client) : void 0, [client]);
|
|
22166
22261
|
}
|
|
22167
22262
|
|
|
22168
22263
|
// src/hooks/networkManagement/useNetworks.ts
|
|
22169
22264
|
var useNetworks = () => {
|
|
22170
|
-
const [signer, setSigner] = (0,
|
|
22265
|
+
const [signer, setSigner] = (0, import_react16.useState)();
|
|
22171
22266
|
const ethersSigner = useEthersSigner();
|
|
22172
|
-
(0,
|
|
22267
|
+
(0, import_react16.useEffect)(() => {
|
|
22173
22268
|
ethersSigner.then((signer2) => setSigner(signer2));
|
|
22174
22269
|
}, [ethersSigner]);
|
|
22175
22270
|
const account = (0, import_wagmi4.useAccount)();
|
|
22176
|
-
const evm = (0,
|
|
22271
|
+
const evm = (0, import_react16.useMemo)(
|
|
22177
22272
|
() => ({
|
|
22178
22273
|
networkName: "EVM",
|
|
22179
22274
|
chainId: account.chainId?.toString() || DEFAULT_SOURCE_CHAIN_ID,
|
|
@@ -22190,10 +22285,10 @@ var useNetworks = () => {
|
|
|
22190
22285
|
var useNetworks_default = useNetworks;
|
|
22191
22286
|
|
|
22192
22287
|
// src/components/Swap/SwapView/ConfirmationView/TxOverview/index.tsx
|
|
22193
|
-
var
|
|
22288
|
+
var import_react20 = require("react");
|
|
22194
22289
|
|
|
22195
22290
|
// src/components/Swap/SwapView/FeesPanel/index.tsx
|
|
22196
|
-
var
|
|
22291
|
+
var import_react17 = require("react");
|
|
22197
22292
|
|
|
22198
22293
|
// src/components/Swap/SwapView/FeesPanel/DeliveryInfo/index.tsx
|
|
22199
22294
|
var import_jsx_runtime77 = require("react/jsx-runtime");
|
|
@@ -22223,7 +22318,10 @@ var import_jsx_runtime79 = require("react/jsx-runtime");
|
|
|
22223
22318
|
var Fees = ({
|
|
22224
22319
|
solanaBridgeFee
|
|
22225
22320
|
}) => {
|
|
22226
|
-
const { route, slippage, feeToken, dstToken
|
|
22321
|
+
const { route, slippage, feeToken, dstToken } = useSwapContext();
|
|
22322
|
+
const expressDeliveryFee = safeBigNumberFrom(
|
|
22323
|
+
route?.xSwapFees.expressDeliveryFee || "0"
|
|
22324
|
+
);
|
|
22227
22325
|
const fees = [
|
|
22228
22326
|
{
|
|
22229
22327
|
name: "CCIP Fee: ",
|
|
@@ -22241,11 +22339,11 @@ var Fees = ({
|
|
|
22241
22339
|
precisionFractionalPlaces: 5
|
|
22242
22340
|
}) || 0} ${feeToken?.symbol || ""}`
|
|
22243
22341
|
},
|
|
22244
|
-
...
|
|
22342
|
+
...expressDeliveryFee.gt(0) ? [
|
|
22245
22343
|
{
|
|
22246
22344
|
name: "Express delivery Fee: ",
|
|
22247
22345
|
value: `${weiToHumanReadable({
|
|
22248
|
-
amount:
|
|
22346
|
+
amount: expressDeliveryFee.toString(),
|
|
22249
22347
|
decimals: feeToken?.decimals || 18,
|
|
22250
22348
|
precisionFractionalPlaces: 5
|
|
22251
22349
|
}) || 0} ${feeToken?.symbol || ""}`
|
|
@@ -24372,9 +24470,9 @@ var import_anchor7 = require("@coral-xyz/anchor");
|
|
|
24372
24470
|
var import_wallet_adapter_react3 = require("@solana/wallet-adapter-react");
|
|
24373
24471
|
var import_jsx_runtime80 = require("react/jsx-runtime");
|
|
24374
24472
|
var FeesPanel = () => {
|
|
24375
|
-
const [expanded, setExpanded] = (0,
|
|
24376
|
-
const [isFetchingSolanaFee, setIsFetchingSolanaFee] = (0,
|
|
24377
|
-
const [solanaBridgeFee, setSolanaBridgeFee] = (0,
|
|
24473
|
+
const [expanded, setExpanded] = (0, import_react17.useState)(false);
|
|
24474
|
+
const [isFetchingSolanaFee, setIsFetchingSolanaFee] = (0, import_react17.useState)(false);
|
|
24475
|
+
const [solanaBridgeFee, setSolanaBridgeFee] = (0, import_react17.useState)(null);
|
|
24378
24476
|
const {
|
|
24379
24477
|
route,
|
|
24380
24478
|
feeToken,
|
|
@@ -24391,7 +24489,7 @@ var FeesPanel = () => {
|
|
|
24391
24489
|
evm: { address: evmAddress }
|
|
24392
24490
|
}
|
|
24393
24491
|
} = useNetworks_default();
|
|
24394
|
-
(0,
|
|
24492
|
+
(0, import_react17.useEffect)(() => {
|
|
24395
24493
|
const fetchSolanaBridgeFee = async () => {
|
|
24396
24494
|
if (bridgeUI && srcChain?.ecosystem === "solana" /* SOLANA */ && dstChain?.ccipChainId && srcToken && srcValueWei && publicKey9 && evmAddress) {
|
|
24397
24495
|
try {
|
|
@@ -24473,7 +24571,7 @@ var FeesPanel = () => {
|
|
|
24473
24571
|
evmAddress,
|
|
24474
24572
|
srcToken
|
|
24475
24573
|
]);
|
|
24476
|
-
const totalFee = (0,
|
|
24574
|
+
const totalFee = (0, import_react17.useMemo)(() => {
|
|
24477
24575
|
if (!route) {
|
|
24478
24576
|
return "0";
|
|
24479
24577
|
}
|
|
@@ -24517,7 +24615,7 @@ var FeesPanel = () => {
|
|
|
24517
24615
|
};
|
|
24518
24616
|
|
|
24519
24617
|
// src/components/Swap/SwapView/ConfirmationView/TokenTiles/index.tsx
|
|
24520
|
-
var
|
|
24618
|
+
var import_react18 = require("react");
|
|
24521
24619
|
var import_jsx_runtime81 = require("react/jsx-runtime");
|
|
24522
24620
|
var TokenTile = ({ type }) => {
|
|
24523
24621
|
const {
|
|
@@ -24531,7 +24629,7 @@ var TokenTile = ({ type }) => {
|
|
|
24531
24629
|
} = useSwapContext();
|
|
24532
24630
|
const token = type === "source" ? srcToken : dstToken;
|
|
24533
24631
|
const chain = type === "source" ? srcChain : dstChain;
|
|
24534
|
-
const value = (0,
|
|
24632
|
+
const value = (0, import_react18.useMemo)(() => {
|
|
24535
24633
|
if (type === "destination" && bridgeUI && srcChain?.ecosystem === "solana" /* SOLANA */) {
|
|
24536
24634
|
return srcValue;
|
|
24537
24635
|
}
|
|
@@ -24581,11 +24679,11 @@ var Header = ({ onCloseClick }) => {
|
|
|
24581
24679
|
};
|
|
24582
24680
|
|
|
24583
24681
|
// src/components/Swap/SwapView/ConfirmationView/TxOverview/Steps/index.tsx
|
|
24584
|
-
var
|
|
24682
|
+
var import_react19 = require("react");
|
|
24585
24683
|
var import_jsx_runtime83 = require("react/jsx-runtime");
|
|
24586
24684
|
var Steps = () => {
|
|
24587
24685
|
const { txStatus, txNeedsApproval, txMsg } = useTxUIWrapper();
|
|
24588
|
-
const items = (0,
|
|
24686
|
+
const items = (0, import_react19.useMemo)(() => {
|
|
24589
24687
|
const approvalActive = txStatus === 1 /* SIGNING_APPROVAL */ || txStatus === 2 /* CONFIRMING_APPROVAL */;
|
|
24590
24688
|
const txActive = txStatus === 3 /* SIGNING_TX */ || txStatus === 4 /* CONFIRMING_TX */;
|
|
24591
24689
|
return [
|
|
@@ -24605,7 +24703,7 @@ var Steps = () => {
|
|
|
24605
24703
|
}
|
|
24606
24704
|
];
|
|
24607
24705
|
}, [txMsg, txNeedsApproval, txStatus]);
|
|
24608
|
-
const filteredItems = (0,
|
|
24706
|
+
const filteredItems = (0, import_react19.useMemo)(
|
|
24609
24707
|
() => items.filter(({ show }) => show),
|
|
24610
24708
|
[items]
|
|
24611
24709
|
);
|
|
@@ -24654,7 +24752,8 @@ var TxOverview = ({ onCloseClick }) => {
|
|
|
24654
24752
|
dstValueWei,
|
|
24655
24753
|
route,
|
|
24656
24754
|
refreshBalance,
|
|
24657
|
-
bridgeUI
|
|
24755
|
+
bridgeUI,
|
|
24756
|
+
isExpressDeliveryActive
|
|
24658
24757
|
} = useSwapContext();
|
|
24659
24758
|
const {
|
|
24660
24759
|
txStatus,
|
|
@@ -24671,7 +24770,7 @@ var TxOverview = ({ onCloseClick }) => {
|
|
|
24671
24770
|
} = useNetworks_default();
|
|
24672
24771
|
const { publicKey: publicKey9, signTransaction } = (0, import_wallet_adapter_react4.useWallet)();
|
|
24673
24772
|
const evmContractApi = useEvmContractApi();
|
|
24674
|
-
const trackTransaction = (0,
|
|
24773
|
+
const trackTransaction = (0, import_react20.useCallback)(
|
|
24675
24774
|
async (txReceipt) => {
|
|
24676
24775
|
if (!srcChain || !dstChain || !srcToken || !dstToken || !route) {
|
|
24677
24776
|
return;
|
|
@@ -24685,7 +24784,10 @@ var TxOverview = ({ onCloseClick }) => {
|
|
|
24685
24784
|
tokenAddress: srcToken.address,
|
|
24686
24785
|
tokenOutAddress: dstToken?.address,
|
|
24687
24786
|
tokenOutAmount: dstValueWei,
|
|
24688
|
-
|
|
24787
|
+
// Read the speed off the quote, never off the express-delivery fee: a fast
|
|
24788
|
+
// CCTP transfer pays Circle out of the bridged USDC and charges no express
|
|
24789
|
+
// fee, so the fee test used to promise 30 minutes for a 30-second transfer.
|
|
24790
|
+
estimatedDeliveryTimestamp: isExpressDeliveryActive ? Date.now() + EXPRESS_DELIVERY_TIME : Date.now() + (crosschainEstimationTimes?.[srcChain?.chainId]?.[dstChain?.chainId] || FALLBACK_CROSSCHAIN_ESTIMATION_TIME),
|
|
24689
24791
|
status: "IN_PROGRESS"
|
|
24690
24792
|
};
|
|
24691
24793
|
if (srcChain.chainId === dstChain.chainId) {
|
|
@@ -24752,10 +24854,11 @@ var TxOverview = ({ onCloseClick }) => {
|
|
|
24752
24854
|
srcValueWei,
|
|
24753
24855
|
dstValueWei,
|
|
24754
24856
|
supportedChains,
|
|
24755
|
-
route
|
|
24857
|
+
route,
|
|
24858
|
+
isExpressDeliveryActive
|
|
24756
24859
|
]
|
|
24757
24860
|
);
|
|
24758
|
-
const enqueueSwapTx = (0,
|
|
24861
|
+
const enqueueSwapTx = (0, import_react20.useCallback)(async () => {
|
|
24759
24862
|
if (srcToken) {
|
|
24760
24863
|
if (route && route.ecosystem === "evm" /* EVM */) {
|
|
24761
24864
|
const enqueueSwap = ({ afterApproval = false } = {}) => {
|
|
@@ -25083,20 +25186,54 @@ async function checkAndDelegateTokenAuthority(connection, publicKey9, tokenMint,
|
|
|
25083
25186
|
}
|
|
25084
25187
|
}
|
|
25085
25188
|
|
|
25086
|
-
// src/components/Swap/SwapView/ConfirmationView/
|
|
25189
|
+
// src/components/Swap/SwapView/ConfirmationView/TxProgress/index.tsx
|
|
25190
|
+
var import_react21 = require("react");
|
|
25087
25191
|
var import_jsx_runtime85 = require("react/jsx-runtime");
|
|
25088
|
-
var
|
|
25089
|
-
|
|
25090
|
-
const
|
|
25192
|
+
var FAST_DELIVERY_GRACE_MS = 2 * 60 * 1e3;
|
|
25193
|
+
var formatElapsed = (ms) => {
|
|
25194
|
+
const totalSeconds = Math.floor(ms / 1e3);
|
|
25195
|
+
const minutes = Math.floor(totalSeconds / 60);
|
|
25196
|
+
const seconds = totalSeconds % 60;
|
|
25197
|
+
return `${minutes}:${seconds.toString().padStart(2, "0")}`;
|
|
25198
|
+
};
|
|
25199
|
+
var TxProgress = ({ onCloseClick, delivery }) => {
|
|
25200
|
+
const { srcChain, dstChain, isExpressDeliveryActive } = useSwapContext();
|
|
25201
|
+
const { txExplorerUrl } = useTxUIWrapper();
|
|
25202
|
+
const [now, setNow] = (0, import_react21.useState)(() => Date.now());
|
|
25203
|
+
(0, import_react21.useEffect)(() => {
|
|
25204
|
+
const ticker = setInterval(() => setNow(Date.now()), 1e3);
|
|
25205
|
+
return () => clearInterval(ticker);
|
|
25206
|
+
}, []);
|
|
25207
|
+
const elapsedMs = delivery.startedAt ? Math.max(0, now - delivery.startedAt) : 0;
|
|
25208
|
+
const isExpress = delivery.response?.expressDelivery ?? isExpressDeliveryActive;
|
|
25209
|
+
const estimatedMs = (0, import_react21.useMemo)(
|
|
25210
|
+
() => srcChain && dstChain && crosschainEstimationTimes?.[srcChain.chainId]?.[dstChain.chainId] || FALLBACK_CROSSCHAIN_ESTIMATION_TIME,
|
|
25211
|
+
[srcChain, dstChain]
|
|
25212
|
+
);
|
|
25213
|
+
const isSlow = elapsedMs > (isExpress ? FAST_DELIVERY_GRACE_MS : estimatedMs);
|
|
25214
|
+
const note = isSlow ? "This is taking longer than usual. Nothing is lost \u2014 the transfer is still on its way." : isExpress ? "Fast delivery is on: funds usually arrive within a minute." : `Funds can take up to ${Math.round(
|
|
25215
|
+
estimatedMs / 6e4
|
|
25216
|
+
)} minutes to arrive on ${dstChain?.displayName || "the destination chain"}.`;
|
|
25091
25217
|
return /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("div", { className: "flex flex-col gap-8 text-t_text_primary", children: [
|
|
25092
25218
|
/* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("div", { className: "flex flex-col gap-2", children: [
|
|
25093
|
-
/* @__PURE__ */ (0, import_jsx_runtime85.
|
|
25094
|
-
|
|
25095
|
-
|
|
25219
|
+
/* @__PURE__ */ (0, import_jsx_runtime85.jsx)("div", { className: "text-2xl font-medium leading-8 tracking-[0.01em]", children: "Delivering Funds" }),
|
|
25220
|
+
/* @__PURE__ */ (0, import_jsx_runtime85.jsx)("div", { className: "text-sm leading-5 tracking-[0.01em] text-t_text_primary text-opacity-50", children: note }),
|
|
25221
|
+
/* @__PURE__ */ (0, import_jsx_runtime85.jsx)("div", { className: "text-sm leading-5 tracking-[0.01em] text-t_text_primary text-opacity-25", children: "You can close this window \u2014 the transfer completes on its own." })
|
|
25222
|
+
] }),
|
|
25223
|
+
/* @__PURE__ */ (0, import_jsx_runtime85.jsx)(TokenTiles, {}),
|
|
25224
|
+
/* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("div", { className: "flex flex-col rounded-xl bg-t_bg_tertiary bg-opacity-[0.02]", children: [
|
|
25225
|
+
/* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("div", { className: "flex items-center justify-between gap-4 px-4 sm:px-6 py-4 rounded-lg", children: [
|
|
25226
|
+
/* @__PURE__ */ (0, import_jsx_runtime85.jsx)("div", { className: "text-sm leading-5 tracking-[0.01em] text-t_text_primary text-opacity-50", children: `Swap confirmed on ${srcChain?.displayName || "the source chain"}` }),
|
|
25227
|
+
/* @__PURE__ */ (0, import_jsx_runtime85.jsx)(CheckCircleThinIcon, { className: "w-6 h-6 shrink-0 text-[#6AE89B]" })
|
|
25096
25228
|
] }),
|
|
25097
|
-
|
|
25229
|
+
/* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("div", { className: "flex items-center justify-between gap-4 px-4 sm:px-6 py-4 rounded-lg bg-gradient-to-r from-transparent via-t_bg_tertiary/5 to-transparent", children: [
|
|
25230
|
+
/* @__PURE__ */ (0, import_jsx_runtime85.jsx)("div", { className: "text-sm leading-5 tracking-[0.01em] text-t_text_primary text-opacity-75", children: `Waiting for funds on ${dstChain?.displayName || "the destination chain"}` }),
|
|
25231
|
+
/* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("div", { className: "flex items-center gap-3 shrink-0", children: [
|
|
25232
|
+
/* @__PURE__ */ (0, import_jsx_runtime85.jsx)("span", { className: "text-sm leading-5 tracking-[0.01em] tabular-nums text-t_text_primary text-opacity-50", children: formatElapsed(elapsedMs) }),
|
|
25233
|
+
/* @__PURE__ */ (0, import_jsx_runtime85.jsx)(ProgressRingThinIcon, { className: "w-6 h-6 shrink-0 animate-spin-slow text-t_text_primary" })
|
|
25234
|
+
] })
|
|
25235
|
+
] })
|
|
25098
25236
|
] }),
|
|
25099
|
-
!txMsg && /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(TokenTiles, {}),
|
|
25100
25237
|
/* @__PURE__ */ (0, import_jsx_runtime85.jsx)("div", { className: "h-px w-full gradient-sections-separator-container" }),
|
|
25101
25238
|
/* @__PURE__ */ (0, import_jsx_runtime85.jsx)(
|
|
25102
25239
|
"button",
|
|
@@ -25104,10 +25241,10 @@ var TxResult = ({ onCloseClick }) => {
|
|
|
25104
25241
|
type: "button",
|
|
25105
25242
|
onClick: onCloseClick,
|
|
25106
25243
|
className: "w-full px-6 py-3 rounded-lg border-none cursor-pointer bg-t_bg_tertiary bg-opacity-5 text-sm font-medium leading-6 tracking-[0.01em] text-t_text_primary text-opacity-80 hover:bg-opacity-10 transition-colors",
|
|
25107
|
-
children: "
|
|
25244
|
+
children: "Close"
|
|
25108
25245
|
}
|
|
25109
25246
|
),
|
|
25110
|
-
|
|
25247
|
+
/* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("div", { className: "w-full flex gap-3 items-center", children: [
|
|
25111
25248
|
/* @__PURE__ */ (0, import_jsx_runtime85.jsxs)(
|
|
25112
25249
|
"a",
|
|
25113
25250
|
{
|
|
@@ -25127,49 +25264,164 @@ var TxResult = ({ onCloseClick }) => {
|
|
|
25127
25264
|
] });
|
|
25128
25265
|
};
|
|
25129
25266
|
|
|
25130
|
-
// src/components/Swap/SwapView/ConfirmationView/index.tsx
|
|
25267
|
+
// src/components/Swap/SwapView/ConfirmationView/TxResult/index.tsx
|
|
25268
|
+
var import_react22 = require("react");
|
|
25131
25269
|
var import_jsx_runtime86 = require("react/jsx-runtime");
|
|
25132
|
-
var
|
|
25270
|
+
var TxResult = ({ onCloseClick, delivery }) => {
|
|
25271
|
+
const { txError, txExplorerUrl, txMsg } = useTxUIWrapper();
|
|
25272
|
+
const { isExpressDeliveryActive, srcChain, dstChain, supportedChains } = useSwapContext();
|
|
25273
|
+
const isCrossChain = !!srcChain && !!dstChain && srcChain.chainId !== dstChain.chainId;
|
|
25274
|
+
const failed = !!txError || !!delivery?.isFailed;
|
|
25275
|
+
const partiallyFailed = !!delivery?.isPartiallyFailed;
|
|
25276
|
+
const targetTx = delivery?.response?.targetTx;
|
|
25277
|
+
const targetExplorerUrl = (0, import_react22.useMemo)(() => {
|
|
25278
|
+
if (!targetTx) {
|
|
25279
|
+
return void 0;
|
|
25280
|
+
}
|
|
25281
|
+
const explorer = supportedChains.find(
|
|
25282
|
+
(chain) => chain.chainId === targetTx.chainId && chain.ecosystem === "evm" /* EVM */
|
|
25283
|
+
)?.transactionExplorer;
|
|
25284
|
+
return explorer ? `${explorer}/${targetTx.hash}` : void 0;
|
|
25285
|
+
}, [supportedChains, targetTx]);
|
|
25286
|
+
const note = (0, import_react22.useMemo)(() => {
|
|
25287
|
+
if (delivery?.isFailed) {
|
|
25288
|
+
return `The transaction failed on ${srcChain?.displayName || "the source chain"}.`;
|
|
25289
|
+
}
|
|
25290
|
+
if (partiallyFailed) {
|
|
25291
|
+
return `The swap on ${dstChain?.displayName || "the destination chain"} could not be completed, so the bridged tokens were sent to your wallet instead.`;
|
|
25292
|
+
}
|
|
25293
|
+
if (delivery?.isDelivered) {
|
|
25294
|
+
return `Funds delivered on ${dstChain?.displayName || "the destination chain"}.`;
|
|
25295
|
+
}
|
|
25296
|
+
if (isCrossChain) {
|
|
25297
|
+
return `Approximated time of delivery: ${isExpressDeliveryActive ? "30 sec" : "30 min"}`;
|
|
25298
|
+
}
|
|
25299
|
+
return void 0;
|
|
25300
|
+
}, [
|
|
25301
|
+
delivery?.isDelivered,
|
|
25302
|
+
delivery?.isFailed,
|
|
25303
|
+
partiallyFailed,
|
|
25304
|
+
isCrossChain,
|
|
25305
|
+
isExpressDeliveryActive,
|
|
25306
|
+
srcChain?.displayName,
|
|
25307
|
+
dstChain?.displayName
|
|
25308
|
+
]);
|
|
25309
|
+
return /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)("div", { className: "flex flex-col gap-8 text-t_text_primary", children: [
|
|
25310
|
+
/* @__PURE__ */ (0, import_jsx_runtime86.jsxs)("div", { className: "flex flex-col gap-2", children: [
|
|
25311
|
+
/* @__PURE__ */ (0, import_jsx_runtime86.jsxs)("div", { className: "flex items-center gap-3", children: [
|
|
25312
|
+
/* @__PURE__ */ (0, import_jsx_runtime86.jsx)("div", { className: "text-2xl font-medium leading-8 tracking-[0.01em]", children: failed ? "Transaction Error" : partiallyFailed ? "Partially Completed" : "Transaction Success" }),
|
|
25313
|
+
failed ? /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(ErrorCircleThinIcon, { className: "w-6 h-6 shrink-0 text-[#F44336]" }) : partiallyFailed ? /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(ErrorCircleThinIcon, { className: "w-6 h-6 shrink-0 text-t_warning_light" }) : /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(CheckCircleThinIcon, { className: "w-6 h-6 shrink-0 text-[#6AE89B]" })
|
|
25314
|
+
] }),
|
|
25315
|
+
txError ? /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("div", { className: "text-sm leading-5 tracking-[0.01em] text-t_text_primary text-opacity-50", children: txError }) : !txMsg && !!note && /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("div", { className: "text-sm leading-5 tracking-[0.01em] text-t_text_primary text-opacity-50", children: note })
|
|
25316
|
+
] }),
|
|
25317
|
+
!txMsg && /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(TokenTiles, {}),
|
|
25318
|
+
/* @__PURE__ */ (0, import_jsx_runtime86.jsx)("div", { className: "h-px w-full gradient-sections-separator-container" }),
|
|
25319
|
+
/* @__PURE__ */ (0, import_jsx_runtime86.jsx)(
|
|
25320
|
+
"button",
|
|
25321
|
+
{
|
|
25322
|
+
type: "button",
|
|
25323
|
+
onClick: onCloseClick,
|
|
25324
|
+
className: "w-full px-6 py-3 rounded-lg border-none cursor-pointer bg-t_bg_tertiary bg-opacity-5 text-sm font-medium leading-6 tracking-[0.01em] text-t_text_primary text-opacity-80 hover:bg-opacity-10 transition-colors",
|
|
25325
|
+
children: "Continue"
|
|
25326
|
+
}
|
|
25327
|
+
),
|
|
25328
|
+
!txMsg && !txError && /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)("div", { className: "w-full flex gap-3 items-center", children: [
|
|
25329
|
+
/* @__PURE__ */ (0, import_jsx_runtime86.jsxs)(
|
|
25330
|
+
"a",
|
|
25331
|
+
{
|
|
25332
|
+
href: txExplorerUrl,
|
|
25333
|
+
target: "_blank",
|
|
25334
|
+
rel: "noreferrer",
|
|
25335
|
+
className: "flex items-center gap-1.5 text-sm text-t_text_primary text-opacity-25 hover:text-opacity-50 transition-colors",
|
|
25336
|
+
children: [
|
|
25337
|
+
"View On Explorer",
|
|
25338
|
+
" ",
|
|
25339
|
+
/* @__PURE__ */ (0, import_jsx_runtime86.jsx)("div", { className: "w-6 h-6 bg-t_bg_tertiary bg-opacity-5 rounded-[4px] flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(RedirectThinIcon, { className: "w-3 h-3" }) })
|
|
25340
|
+
]
|
|
25341
|
+
}
|
|
25342
|
+
),
|
|
25343
|
+
targetExplorerUrl && /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)(
|
|
25344
|
+
"a",
|
|
25345
|
+
{
|
|
25346
|
+
href: targetExplorerUrl,
|
|
25347
|
+
target: "_blank",
|
|
25348
|
+
rel: "noreferrer",
|
|
25349
|
+
className: "flex items-center gap-1.5 text-sm text-t_text_primary text-opacity-25 hover:text-opacity-50 transition-colors",
|
|
25350
|
+
children: [
|
|
25351
|
+
"View Delivery",
|
|
25352
|
+
" ",
|
|
25353
|
+
/* @__PURE__ */ (0, import_jsx_runtime86.jsx)("div", { className: "w-6 h-6 bg-t_bg_tertiary bg-opacity-5 rounded-[4px] flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(RedirectThinIcon, { className: "w-3 h-3" }) })
|
|
25354
|
+
]
|
|
25355
|
+
}
|
|
25356
|
+
),
|
|
25357
|
+
/* @__PURE__ */ (0, import_jsx_runtime86.jsx)("div", { className: "flex-1 h-px bg-t_text_primary bg-opacity-10" })
|
|
25358
|
+
] })
|
|
25359
|
+
] });
|
|
25360
|
+
};
|
|
25361
|
+
|
|
25362
|
+
// src/components/Swap/SwapView/ConfirmationView/index.tsx
|
|
25363
|
+
var import_jsx_runtime87 = require("react/jsx-runtime");
|
|
25364
|
+
var ConfirmationView = ({ onCloseClick, delivery }) => {
|
|
25133
25365
|
const { txStatus, txError } = useTxUIWrapper();
|
|
25134
|
-
|
|
25366
|
+
if (txError) {
|
|
25367
|
+
return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(TxResult, { onCloseClick, delivery });
|
|
25368
|
+
}
|
|
25369
|
+
if (txStatus !== 5 /* COMPLETED */) {
|
|
25370
|
+
return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(TxOverview, { onCloseClick });
|
|
25371
|
+
}
|
|
25372
|
+
return delivery.isPolling ? /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(TxProgress, { onCloseClick, delivery }) : /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(TxResult, { onCloseClick, delivery });
|
|
25135
25373
|
};
|
|
25136
25374
|
|
|
25137
25375
|
// src/context/TxUIWrapper.tsx
|
|
25138
25376
|
var import_notistack3 = require("notistack");
|
|
25139
|
-
var
|
|
25140
|
-
var
|
|
25141
|
-
var TxUIWrapperContext = (0,
|
|
25377
|
+
var import_react23 = require("react");
|
|
25378
|
+
var import_jsx_runtime88 = require("react/jsx-runtime");
|
|
25379
|
+
var TxUIWrapperContext = (0, import_react23.createContext)({});
|
|
25142
25380
|
var TxUIWrapper = ({ children }) => {
|
|
25143
25381
|
const { evm, solana } = useWallet();
|
|
25144
25382
|
const { chainId } = evm;
|
|
25145
25383
|
const { chainId: solanaChainId } = solana;
|
|
25146
25384
|
const { enqueueTransaction: nativeEnqueueTransaction } = useTransaction();
|
|
25147
25385
|
const { enqueueSnackbar, closeSnackbar } = (0, import_notistack3.useSnackbar)();
|
|
25148
|
-
const [currentNetwork, setCurrentNetwork] = (0,
|
|
25149
|
-
const isTxModalOpenRef = (0,
|
|
25150
|
-
const [isTxModalOpen, setTxModalOpen] = (0,
|
|
25151
|
-
const [txHash, setTxHash] = (0,
|
|
25152
|
-
const txKey = (0,
|
|
25153
|
-
const [txError, setTxError] = (0,
|
|
25154
|
-
const [txMsg, setTxMsg] = (0,
|
|
25155
|
-
const [txReceipt, setTxReceipt] = (0,
|
|
25386
|
+
const [currentNetwork, setCurrentNetwork] = (0, import_react23.useState)("evm" /* EVM */);
|
|
25387
|
+
const isTxModalOpenRef = (0, import_react23.useRef)(false);
|
|
25388
|
+
const [isTxModalOpen, setTxModalOpen] = (0, import_react23.useState)(false);
|
|
25389
|
+
const [txHash, setTxHash] = (0, import_react23.useState)("");
|
|
25390
|
+
const txKey = (0, import_react23.useRef)();
|
|
25391
|
+
const [txError, setTxError] = (0, import_react23.useState)("");
|
|
25392
|
+
const [txMsg, setTxMsg] = (0, import_react23.useState)("");
|
|
25393
|
+
const [txReceipt, setTxReceipt] = (0, import_react23.useState)(
|
|
25156
25394
|
void 0
|
|
25157
25395
|
);
|
|
25158
|
-
const [loading, setLoading] = (0,
|
|
25159
|
-
const [txNeedsApproval, setTxNeedsApproval] = (0,
|
|
25160
|
-
const [txStatus, setTxStatus] = (0,
|
|
25161
|
-
const { supportedChains, setSrcValue } = useSwapContext();
|
|
25396
|
+
const [loading, setLoading] = (0, import_react23.useState)(false);
|
|
25397
|
+
const [txNeedsApproval, setTxNeedsApproval] = (0, import_react23.useState)(false);
|
|
25398
|
+
const [txStatus, setTxStatus] = (0, import_react23.useState)(0 /* SWAP_INIT */);
|
|
25399
|
+
const { supportedChains, setSrcValue, srcChain, dstChain } = useSwapContext();
|
|
25400
|
+
const isCrossChainSwap = !!srcChain && !!dstChain && srcChain.chainId !== dstChain.chainId;
|
|
25401
|
+
const delivery = useCrossChainDelivery({
|
|
25402
|
+
enabled: txStatus === 5 /* COMPLETED */ && !txError && // Only while the modal is up: the chains below are the ones currently
|
|
25403
|
+
// selected, and the user is free to pick different ones the moment they close
|
|
25404
|
+
// it. An unclaimed CCTP transfer is the executor's and the sweep's job from
|
|
25405
|
+
// there on, not this poll's.
|
|
25406
|
+
isTxModalOpen && // A custom message means the modal is running a standalone transaction
|
|
25407
|
+
// (an approval reset, say), not a swap with a destination leg.
|
|
25408
|
+
!txMsg && isCrossChainSwap && // The status endpoint reads an EVM receipt; a Solana source has none.
|
|
25409
|
+
srcChain?.ecosystem === "evm" /* EVM */,
|
|
25410
|
+
chainId: srcChain?.chainId,
|
|
25411
|
+
txHash,
|
|
25412
|
+
walletAddress: evm.address
|
|
25413
|
+
});
|
|
25162
25414
|
const closeTransactionModal = (transactionKey) => {
|
|
25163
25415
|
if (txKey.current === transactionKey) {
|
|
25164
25416
|
isTxModalOpenRef.current = false;
|
|
25165
25417
|
setTxModalOpen(false);
|
|
25166
25418
|
}
|
|
25167
25419
|
};
|
|
25168
|
-
(0,
|
|
25420
|
+
(0, import_react23.useEffect)(() => {
|
|
25169
25421
|
if (!isTxModalOpen) {
|
|
25170
25422
|
if (txError) {
|
|
25171
25423
|
enqueueSnackbar(
|
|
25172
|
-
/* @__PURE__ */ (0,
|
|
25424
|
+
/* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
|
|
25173
25425
|
SnackMessage,
|
|
25174
25426
|
{
|
|
25175
25427
|
message: {
|
|
@@ -25185,14 +25437,14 @@ var TxUIWrapper = ({ children }) => {
|
|
|
25185
25437
|
if (txHash) {
|
|
25186
25438
|
const snackbarKey = txHash;
|
|
25187
25439
|
enqueueSnackbar(
|
|
25188
|
-
/* @__PURE__ */ (0,
|
|
25440
|
+
/* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
|
|
25189
25441
|
SnackMessage,
|
|
25190
25442
|
{
|
|
25191
25443
|
message: {
|
|
25192
25444
|
text: `Transaction ${trimTxHash(txHash)} is about to be mined!`,
|
|
25193
25445
|
variant: "warning",
|
|
25194
|
-
action: () => /* @__PURE__ */ (0,
|
|
25195
|
-
/* @__PURE__ */ (0,
|
|
25446
|
+
action: () => /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("div", { className: "flex items-center flex-nowrap", children: [
|
|
25447
|
+
/* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
|
|
25196
25448
|
Button,
|
|
25197
25449
|
{
|
|
25198
25450
|
type: "button",
|
|
@@ -25206,16 +25458,16 @@ var TxUIWrapper = ({ children }) => {
|
|
|
25206
25458
|
children: "Check"
|
|
25207
25459
|
}
|
|
25208
25460
|
),
|
|
25209
|
-
/* @__PURE__ */ (0,
|
|
25461
|
+
/* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
|
|
25210
25462
|
"div",
|
|
25211
25463
|
{
|
|
25212
25464
|
className: "fill-t_text_primary text-t_text_primary w-[14px] h-[14px] cursor-pointer p-[14px] leading-[0px]",
|
|
25213
25465
|
onClick: () => closeSnackbar(snackbarKey),
|
|
25214
|
-
children: /* @__PURE__ */ (0,
|
|
25466
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(CloseIcon, {})
|
|
25215
25467
|
}
|
|
25216
25468
|
)
|
|
25217
25469
|
] }),
|
|
25218
|
-
animation: () => /* @__PURE__ */ (0,
|
|
25470
|
+
animation: () => /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(Spinner, { className: "w-4 h-4" })
|
|
25219
25471
|
}
|
|
25220
25472
|
}
|
|
25221
25473
|
),
|
|
@@ -25236,7 +25488,7 @@ var TxUIWrapper = ({ children }) => {
|
|
|
25236
25488
|
isTxModalOpen,
|
|
25237
25489
|
supportedChains
|
|
25238
25490
|
]);
|
|
25239
|
-
const getTxExplorerUrl = (0,
|
|
25491
|
+
const getTxExplorerUrl = (0, import_react23.useCallback)(
|
|
25240
25492
|
(txHash2, txExplorer, txReceipt2) => {
|
|
25241
25493
|
const defaultUrl = `${txExplorer}/${txHash2}`;
|
|
25242
25494
|
if (!txReceipt2) {
|
|
@@ -25255,7 +25507,7 @@ var TxUIWrapper = ({ children }) => {
|
|
|
25255
25507
|
},
|
|
25256
25508
|
[]
|
|
25257
25509
|
);
|
|
25258
|
-
const addUILogicToHandlersEVM = (0,
|
|
25510
|
+
const addUILogicToHandlersEVM = (0, import_react23.useCallback)(
|
|
25259
25511
|
(currentKey, handlers, showDefaultSuccessMessage = true) => {
|
|
25260
25512
|
const newHandlers = { ...handlers };
|
|
25261
25513
|
newHandlers.onConfirm = (tx) => {
|
|
@@ -25283,14 +25535,14 @@ var TxUIWrapper = ({ children }) => {
|
|
|
25283
25535
|
}
|
|
25284
25536
|
const snackbarKey = `${txHash}-success`;
|
|
25285
25537
|
enqueueSnackbar(
|
|
25286
|
-
/* @__PURE__ */ (0,
|
|
25538
|
+
/* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
|
|
25287
25539
|
SnackMessage,
|
|
25288
25540
|
{
|
|
25289
25541
|
message: {
|
|
25290
25542
|
text: `Transaction mined successfully!`,
|
|
25291
25543
|
variant: "success",
|
|
25292
|
-
action: () => /* @__PURE__ */ (0,
|
|
25293
|
-
/* @__PURE__ */ (0,
|
|
25544
|
+
action: () => /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("div", { className: "flex items-center flex-nowrap", children: [
|
|
25545
|
+
/* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
|
|
25294
25546
|
Button,
|
|
25295
25547
|
{
|
|
25296
25548
|
type: "button",
|
|
@@ -25308,12 +25560,12 @@ var TxUIWrapper = ({ children }) => {
|
|
|
25308
25560
|
children: "View"
|
|
25309
25561
|
}
|
|
25310
25562
|
),
|
|
25311
|
-
/* @__PURE__ */ (0,
|
|
25563
|
+
/* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
|
|
25312
25564
|
"div",
|
|
25313
25565
|
{
|
|
25314
25566
|
className: "fill-t_text_primary text-t_text_primary w-[14px] h-[14px] cursor-pointer p-[14px] leading-[0px]",
|
|
25315
25567
|
onClick: () => closeSnackbar(snackbarKey),
|
|
25316
|
-
children: /* @__PURE__ */ (0,
|
|
25568
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(CloseIcon, {})
|
|
25317
25569
|
}
|
|
25318
25570
|
)
|
|
25319
25571
|
] })
|
|
@@ -25342,7 +25594,7 @@ var TxUIWrapper = ({ children }) => {
|
|
|
25342
25594
|
currentNetwork
|
|
25343
25595
|
]
|
|
25344
25596
|
);
|
|
25345
|
-
const addUILogicToHandlersSolana = (0,
|
|
25597
|
+
const addUILogicToHandlersSolana = (0, import_react23.useCallback)(
|
|
25346
25598
|
(currentKey, handlers, showDefaultSuccessMessage = true) => {
|
|
25347
25599
|
const newHandlers = { ...handlers };
|
|
25348
25600
|
newHandlers.onConfirm = (signedTransaction) => {
|
|
@@ -25369,14 +25621,14 @@ var TxUIWrapper = ({ children }) => {
|
|
|
25369
25621
|
}
|
|
25370
25622
|
const snackbarKey = `${txHash}-success`;
|
|
25371
25623
|
enqueueSnackbar(
|
|
25372
|
-
/* @__PURE__ */ (0,
|
|
25624
|
+
/* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
|
|
25373
25625
|
SnackMessage,
|
|
25374
25626
|
{
|
|
25375
25627
|
message: {
|
|
25376
25628
|
text: `Transaction mined successfully!`,
|
|
25377
25629
|
variant: "success",
|
|
25378
|
-
action: () => /* @__PURE__ */ (0,
|
|
25379
|
-
/* @__PURE__ */ (0,
|
|
25630
|
+
action: () => /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("div", { className: "flex items-center flex-nowrap", children: [
|
|
25631
|
+
/* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
|
|
25380
25632
|
Button,
|
|
25381
25633
|
{
|
|
25382
25634
|
type: "button",
|
|
@@ -25393,12 +25645,12 @@ var TxUIWrapper = ({ children }) => {
|
|
|
25393
25645
|
children: "View"
|
|
25394
25646
|
}
|
|
25395
25647
|
),
|
|
25396
|
-
/* @__PURE__ */ (0,
|
|
25648
|
+
/* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
|
|
25397
25649
|
"div",
|
|
25398
25650
|
{
|
|
25399
25651
|
className: "fill-t_text_primary text-t_text_primary w-[14px] h-[14px] cursor-pointer p-[14px] leading-[0px]",
|
|
25400
25652
|
onClick: () => closeSnackbar(snackbarKey),
|
|
25401
|
-
children: /* @__PURE__ */ (0,
|
|
25653
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(CloseIcon, {})
|
|
25402
25654
|
}
|
|
25403
25655
|
)
|
|
25404
25656
|
] })
|
|
@@ -25427,7 +25679,7 @@ var TxUIWrapper = ({ children }) => {
|
|
|
25427
25679
|
currentNetwork
|
|
25428
25680
|
]
|
|
25429
25681
|
);
|
|
25430
|
-
const enqueueTransaction = (0,
|
|
25682
|
+
const enqueueTransaction = (0, import_react23.useCallback)(
|
|
25431
25683
|
({
|
|
25432
25684
|
executeTransaction,
|
|
25433
25685
|
txStatus: txStatus2,
|
|
@@ -25475,7 +25727,7 @@ var TxUIWrapper = ({ children }) => {
|
|
|
25475
25727
|
nativeEnqueueTransaction
|
|
25476
25728
|
]
|
|
25477
25729
|
);
|
|
25478
|
-
const txExplorerUrl = (0,
|
|
25730
|
+
const txExplorerUrl = (0, import_react23.useMemo)(() => {
|
|
25479
25731
|
return getTxExplorerUrl(
|
|
25480
25732
|
txHash,
|
|
25481
25733
|
supportedChains.find(
|
|
@@ -25492,15 +25744,15 @@ var TxUIWrapper = ({ children }) => {
|
|
|
25492
25744
|
txHash,
|
|
25493
25745
|
txReceipt
|
|
25494
25746
|
]);
|
|
25495
|
-
const setModalOpen = (0,
|
|
25747
|
+
const setModalOpen = (0, import_react23.useCallback)((flag) => {
|
|
25496
25748
|
setTxModalOpen(flag);
|
|
25497
25749
|
isTxModalOpenRef.current = flag;
|
|
25498
25750
|
}, []);
|
|
25499
|
-
const modalType = (0,
|
|
25500
|
-
() => txError ? "error" : txStatus === 5 /* COMPLETED */ ? "success" : "neutral",
|
|
25501
|
-
[txError, txStatus]
|
|
25751
|
+
const modalType = (0, import_react23.useMemo)(
|
|
25752
|
+
() => txError ? "error" : delivery.isPolling ? "waiting" : txStatus === 5 /* COMPLETED */ ? "success" : "neutral",
|
|
25753
|
+
[txError, txStatus, delivery.isPolling]
|
|
25502
25754
|
);
|
|
25503
|
-
const state = (0,
|
|
25755
|
+
const state = (0, import_react23.useMemo)(
|
|
25504
25756
|
() => ({
|
|
25505
25757
|
enqueueTransaction,
|
|
25506
25758
|
closeTransactionModal,
|
|
@@ -25530,49 +25782,49 @@ var TxUIWrapper = ({ children }) => {
|
|
|
25530
25782
|
txNeedsApproval
|
|
25531
25783
|
]
|
|
25532
25784
|
);
|
|
25533
|
-
const closeTxModal = (0,
|
|
25785
|
+
const closeTxModal = (0, import_react23.useCallback)(() => {
|
|
25534
25786
|
setTxError("");
|
|
25535
25787
|
setSrcValue("");
|
|
25536
25788
|
setModalOpen(false);
|
|
25537
25789
|
}, [setTxError, setSrcValue, setModalOpen]);
|
|
25538
|
-
return /* @__PURE__ */ (0,
|
|
25539
|
-
isTxModalOpen && /* @__PURE__ */ (0,
|
|
25790
|
+
return /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)(TxUIWrapperContext.Provider, { value: state, children: [
|
|
25791
|
+
isTxModalOpen && /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
|
|
25540
25792
|
TxModal,
|
|
25541
25793
|
{
|
|
25542
25794
|
id: "tx_modal",
|
|
25543
25795
|
type: modalType,
|
|
25544
25796
|
onCloseClick: closeTxModal,
|
|
25545
|
-
children: /* @__PURE__ */ (0,
|
|
25797
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(ConfirmationView, { onCloseClick: closeTxModal, delivery })
|
|
25546
25798
|
}
|
|
25547
25799
|
),
|
|
25548
25800
|
children
|
|
25549
25801
|
] });
|
|
25550
25802
|
};
|
|
25551
25803
|
function useTxUIWrapper() {
|
|
25552
|
-
return (0,
|
|
25804
|
+
return (0, import_react23.useContext)(TxUIWrapperContext);
|
|
25553
25805
|
}
|
|
25554
25806
|
|
|
25555
25807
|
// src/components/Modal/index.tsx
|
|
25556
|
-
var
|
|
25808
|
+
var import_jsx_runtime89 = require("react/jsx-runtime");
|
|
25557
25809
|
|
|
25558
25810
|
// src/components/PoweredBy/index.tsx
|
|
25559
|
-
var
|
|
25811
|
+
var import_jsx_runtime90 = require("react/jsx-runtime");
|
|
25560
25812
|
var PoweredBy = () => {
|
|
25561
|
-
return /* @__PURE__ */ (0,
|
|
25562
|
-
/* @__PURE__ */ (0,
|
|
25563
|
-
/* @__PURE__ */ (0,
|
|
25564
|
-
/* @__PURE__ */ (0,
|
|
25565
|
-
/* @__PURE__ */ (0,
|
|
25813
|
+
return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("div", { className: "flex justify-end items-center", children: /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("div", { className: "flex items-center gap-2.5 px-3 py-2 rounded-lg bg-gradient-to-r from-t_bg_tertiary/0 to-t_bg_tertiary/5", children: [
|
|
25814
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsx)("div", { className: "flex items-center [&_svg]:h-5 [&_svg]:w-auto", children: /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(ChainlinkMarkIcon, {}) }),
|
|
25815
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("p", { className: "text-xs whitespace-nowrap leading-5 tracking-[0.015em]", children: [
|
|
25816
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "text-t_text_primary text-opacity-70", children: `POWERED BY ` }),
|
|
25817
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "text-t_text_primary", children: "CCIP." })
|
|
25566
25818
|
] })
|
|
25567
25819
|
] }) });
|
|
25568
25820
|
};
|
|
25569
25821
|
|
|
25570
25822
|
// src/components/SafeInput/index.tsx
|
|
25571
|
-
var
|
|
25572
|
-
var
|
|
25573
|
-
var SafeInput = (0,
|
|
25574
|
-
const size = (0,
|
|
25575
|
-
const handleChange = (0,
|
|
25823
|
+
var import_react24 = require("react");
|
|
25824
|
+
var import_jsx_runtime91 = require("react/jsx-runtime");
|
|
25825
|
+
var SafeInput = (0, import_react24.forwardRef)(({ value, onChange, id: id2, placeholder, regex, className, disabled }, ref) => {
|
|
25826
|
+
const size = (0, import_react24.useMemo)(() => value.length < 2 ? 2 : value.length, [value]);
|
|
25827
|
+
const handleChange = (0, import_react24.useCallback)(
|
|
25576
25828
|
(e) => {
|
|
25577
25829
|
if (e.target.value === ".") {
|
|
25578
25830
|
return;
|
|
@@ -25583,7 +25835,7 @@ var SafeInput = (0, import_react21.forwardRef)(({ value, onChange, id: id2, plac
|
|
|
25583
25835
|
},
|
|
25584
25836
|
[onChange, regex, id2]
|
|
25585
25837
|
);
|
|
25586
|
-
return /* @__PURE__ */ (0,
|
|
25838
|
+
return /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(
|
|
25587
25839
|
"input",
|
|
25588
25840
|
{
|
|
25589
25841
|
ref,
|
|
@@ -25606,9 +25858,9 @@ var SafeInput = (0, import_react21.forwardRef)(({ value, onChange, id: id2, plac
|
|
|
25606
25858
|
SafeInput.displayName = "SafeInput";
|
|
25607
25859
|
|
|
25608
25860
|
// src/components/Skeleton/index.tsx
|
|
25609
|
-
var
|
|
25861
|
+
var import_jsx_runtime92 = require("react/jsx-runtime");
|
|
25610
25862
|
var Skeleton = ({ className }) => {
|
|
25611
|
-
return /* @__PURE__ */ (0,
|
|
25863
|
+
return /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(
|
|
25612
25864
|
"div",
|
|
25613
25865
|
{
|
|
25614
25866
|
className: `bg-t_bg_tertiary bg-opacity-15 rounded animate-pulse ${className || ""}`
|
|
@@ -25617,9 +25869,9 @@ var Skeleton = ({ className }) => {
|
|
|
25617
25869
|
};
|
|
25618
25870
|
|
|
25619
25871
|
// src/components/Spinner/index.tsx
|
|
25620
|
-
var
|
|
25872
|
+
var import_jsx_runtime93 = require("react/jsx-runtime");
|
|
25621
25873
|
var Spinner = ({ className }) => {
|
|
25622
|
-
return /* @__PURE__ */ (0,
|
|
25874
|
+
return /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("div", { role: "status", className: className || "", children: /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(
|
|
25623
25875
|
"svg",
|
|
25624
25876
|
{
|
|
25625
25877
|
"aria-hidden": "true",
|
|
@@ -25628,14 +25880,14 @@ var Spinner = ({ className }) => {
|
|
|
25628
25880
|
fill: "none",
|
|
25629
25881
|
xmlns: "http://www.w3.org/2000/svg",
|
|
25630
25882
|
children: [
|
|
25631
|
-
/* @__PURE__ */ (0,
|
|
25883
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
25632
25884
|
"path",
|
|
25633
25885
|
{
|
|
25634
25886
|
d: "M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",
|
|
25635
25887
|
fill: "currentColor"
|
|
25636
25888
|
}
|
|
25637
25889
|
),
|
|
25638
|
-
/* @__PURE__ */ (0,
|
|
25890
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
25639
25891
|
"path",
|
|
25640
25892
|
{
|
|
25641
25893
|
d: "M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",
|
|
@@ -25648,11 +25900,11 @@ var Spinner = ({ className }) => {
|
|
|
25648
25900
|
};
|
|
25649
25901
|
|
|
25650
25902
|
// src/components/Swap/index.tsx
|
|
25651
|
-
var
|
|
25903
|
+
var import_react44 = require("react");
|
|
25652
25904
|
|
|
25653
25905
|
// src/components/Swap/Header/Controls/index.tsx
|
|
25654
|
-
var
|
|
25655
|
-
var HeaderIconButton = ({ onClick, label, children }) => /* @__PURE__ */ (0,
|
|
25906
|
+
var import_jsx_runtime94 = require("react/jsx-runtime");
|
|
25907
|
+
var HeaderIconButton = ({ onClick, label, children }) => /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
|
|
25656
25908
|
"button",
|
|
25657
25909
|
{
|
|
25658
25910
|
type: "button",
|
|
@@ -25664,63 +25916,63 @@ var HeaderIconButton = ({ onClick, label, children }) => /* @__PURE__ */ (0, imp
|
|
|
25664
25916
|
);
|
|
25665
25917
|
var Controls = ({ onClose }) => {
|
|
25666
25918
|
const { tab, setTab, overlay } = useSwapContext();
|
|
25667
|
-
return /* @__PURE__ */ (0,
|
|
25668
|
-
/* @__PURE__ */ (0,
|
|
25919
|
+
return /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("div", { className: "flex gap-2 items-center", children: tab === "Swap" ? /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(import_jsx_runtime94.Fragment, { children: [
|
|
25920
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
|
|
25669
25921
|
HeaderIconButton,
|
|
25670
25922
|
{
|
|
25671
25923
|
onClick: () => setTab("Settings"),
|
|
25672
25924
|
label: "Open preferences",
|
|
25673
|
-
children: /* @__PURE__ */ (0,
|
|
25925
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(AdjustmentsIcon, { className: "w-4 h-4 opacity-50" })
|
|
25674
25926
|
}
|
|
25675
25927
|
),
|
|
25676
|
-
/* @__PURE__ */ (0,
|
|
25928
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
|
|
25677
25929
|
HeaderIconButton,
|
|
25678
25930
|
{
|
|
25679
25931
|
onClick: () => setTab("History"),
|
|
25680
25932
|
label: "Open activity",
|
|
25681
|
-
children: /* @__PURE__ */ (0,
|
|
25933
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(ClockIcon, { className: "w-4 h-4 opacity-50" })
|
|
25682
25934
|
}
|
|
25683
25935
|
),
|
|
25684
|
-
overlay && /* @__PURE__ */ (0,
|
|
25685
|
-
] }) : /* @__PURE__ */ (0,
|
|
25686
|
-
tab === "Settings" && /* @__PURE__ */ (0,
|
|
25936
|
+
overlay && /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(HeaderIconButton, { onClick: onClose, label: "Close", children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("div", { className: "w-4 h-4 opacity-50 fill-t_text_primary flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(CloseIcon, {}) }) })
|
|
25937
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(import_jsx_runtime94.Fragment, { children: [
|
|
25938
|
+
tab === "Settings" && /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
|
|
25687
25939
|
HeaderIconButton,
|
|
25688
25940
|
{
|
|
25689
25941
|
onClick: () => setTab("Settings"),
|
|
25690
25942
|
label: "Preferences",
|
|
25691
|
-
children: /* @__PURE__ */ (0,
|
|
25943
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(AdjustmentsIcon, { className: "w-4 h-4 opacity-50" })
|
|
25692
25944
|
}
|
|
25693
25945
|
),
|
|
25694
|
-
/* @__PURE__ */ (0,
|
|
25946
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
|
|
25695
25947
|
HeaderIconButton,
|
|
25696
25948
|
{
|
|
25697
25949
|
onClick: () => setTab("Swap"),
|
|
25698
25950
|
label: "Back to swap",
|
|
25699
|
-
children: /* @__PURE__ */ (0,
|
|
25951
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("div", { className: "w-4 h-4 opacity-50 fill-t_text_primary flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(CloseIcon, {}) })
|
|
25700
25952
|
}
|
|
25701
25953
|
)
|
|
25702
25954
|
] }) });
|
|
25703
25955
|
};
|
|
25704
25956
|
|
|
25705
25957
|
// src/components/Swap/Header/index.tsx
|
|
25706
|
-
var
|
|
25958
|
+
var import_jsx_runtime95 = require("react/jsx-runtime");
|
|
25707
25959
|
var Header2 = ({ onClose }) => {
|
|
25708
25960
|
const { tab, integrationConfig, bridgeUI } = useSwapContext();
|
|
25709
25961
|
const title = tab === "Settings" ? "Preferences" : tab === "History" ? "My Activity" : integrationConfig.widgetTitle || (bridgeUI ? "Bridge" : "Swap");
|
|
25710
|
-
return /* @__PURE__ */ (0,
|
|
25711
|
-
/* @__PURE__ */ (0,
|
|
25712
|
-
/* @__PURE__ */ (0,
|
|
25962
|
+
return /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("div", { className: "flex justify-between items-center", children: [
|
|
25963
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)("div", { className: "text-2xl font-medium leading-8 tracking-[0.01em]", children: title }),
|
|
25964
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(Controls, { onClose })
|
|
25713
25965
|
] });
|
|
25714
25966
|
};
|
|
25715
25967
|
|
|
25716
25968
|
// src/components/Swap/HistoryView/index.tsx
|
|
25717
|
-
var
|
|
25969
|
+
var import_react26 = require("react");
|
|
25718
25970
|
var import_react_virtuoso = require("react-virtuoso");
|
|
25719
25971
|
|
|
25720
25972
|
// src/components/Swap/HistoryView/ActivityCard/index.tsx
|
|
25721
25973
|
var import_date_fns2 = require("date-fns");
|
|
25722
|
-
var
|
|
25723
|
-
var
|
|
25974
|
+
var import_react25 = require("react");
|
|
25975
|
+
var import_jsx_runtime96 = require("react/jsx-runtime");
|
|
25724
25976
|
var ActivityCard = ({ transaction }) => {
|
|
25725
25977
|
const { supportedChains, findTokenDataByAddressAndChain, tokenPrices } = useSwapContext();
|
|
25726
25978
|
const { evm, solana } = useWallet();
|
|
@@ -25743,7 +25995,7 @@ var ActivityCard = ({ transaction }) => {
|
|
|
25743
25995
|
const date = (0, import_date_fns2.format)(txDate, "dd.MM.yyyy");
|
|
25744
25996
|
const time = (0, import_date_fns2.format)(txDate, "hh.mmaa");
|
|
25745
25997
|
const receivedToken = dstToken || srcToken;
|
|
25746
|
-
const amount = (0,
|
|
25998
|
+
const amount = (0, import_react25.useMemo)(() => {
|
|
25747
25999
|
if (transaction.tokenOutAmount && dstToken) {
|
|
25748
26000
|
return weiToHumanReadable({
|
|
25749
26001
|
amount: transaction.tokenOutAmount,
|
|
@@ -25757,7 +26009,7 @@ var ActivityCard = ({ transaction }) => {
|
|
|
25757
26009
|
precisionFractionalPlaces: 4
|
|
25758
26010
|
});
|
|
25759
26011
|
}, [transaction, srcToken, dstToken]);
|
|
25760
|
-
const amountUsd = (0,
|
|
26012
|
+
const amountUsd = (0, import_react25.useMemo)(() => {
|
|
25761
26013
|
const token = dstToken || srcToken;
|
|
25762
26014
|
const chainId = dstToken ? transaction.targetChainId : transaction.sourceChainId;
|
|
25763
26015
|
if (!token) return null;
|
|
@@ -25769,19 +26021,19 @@ var ActivityCard = ({ transaction }) => {
|
|
|
25769
26021
|
(chain) => chain.chainId === transaction.sourceChainId
|
|
25770
26022
|
)?.transactionExplorer}/${transaction.hash}`;
|
|
25771
26023
|
const destinationChain = dstChain || srcChain;
|
|
25772
|
-
return /* @__PURE__ */ (0,
|
|
25773
|
-
/* @__PURE__ */ (0,
|
|
25774
|
-
/* @__PURE__ */ (0,
|
|
25775
|
-
/* @__PURE__ */ (0,
|
|
25776
|
-
/* @__PURE__ */ (0,
|
|
25777
|
-
/* @__PURE__ */ (0,
|
|
26024
|
+
return /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("div", { className: "pb-2", children: /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "flex flex-col gap-4 p-4 rounded-2xl bg-t_bg_tertiary bg-opacity-[0.03]", children: [
|
|
26025
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "flex items-center justify-between gap-2", children: [
|
|
26026
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "flex items-center gap-2 px-3 py-2 rounded-md bg-t_bg_tertiary bg-opacity-[0.03]", children: [
|
|
26027
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)("span", { className: "text-xs leading-[18px] tracking-[0.01em] text-t_text_primary text-opacity-50 whitespace-nowrap", children: date }),
|
|
26028
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)("span", { className: "w-0.5 h-0.5 shrink-0 bg-t_text_primary opacity-25" }),
|
|
26029
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)("span", { className: "text-xs leading-[18px] tracking-[0.01em] text-t_text_primary text-opacity-50 whitespace-nowrap", children: time })
|
|
25778
26030
|
] }),
|
|
25779
|
-
/* @__PURE__ */ (0,
|
|
25780
|
-
transaction.status === "IN_PROGRESS" ? /* @__PURE__ */ (0,
|
|
25781
|
-
/* @__PURE__ */ (0,
|
|
25782
|
-
/* @__PURE__ */ (0,
|
|
26031
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
26032
|
+
transaction.status === "IN_PROGRESS" ? /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "flex items-center gap-2 px-3 py-2 rounded-md bg-t_text_orange bg-opacity-[0.07] text-t_text_orange", children: [
|
|
26033
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)(LoadingRingIcon, { className: "w-4 h-4 shrink-0 animate-spin" }),
|
|
26034
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("p", { className: "text-xs leading-[18px] whitespace-nowrap", children: [
|
|
25783
26035
|
`Est. Time `,
|
|
25784
|
-
/* @__PURE__ */ (0,
|
|
26036
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
|
|
25785
26037
|
Timer,
|
|
25786
26038
|
{
|
|
25787
26039
|
displayFormat: 0 /* Minutes */,
|
|
@@ -25790,8 +26042,8 @@ var ActivityCard = ({ transaction }) => {
|
|
|
25790
26042
|
}
|
|
25791
26043
|
)
|
|
25792
26044
|
] })
|
|
25793
|
-
] }) : transaction.status === "DONE" ? /* @__PURE__ */ (0,
|
|
25794
|
-
/* @__PURE__ */ (0,
|
|
26045
|
+
] }) : transaction.status === "DONE" ? /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("div", { className: "flex items-center px-3 py-2 rounded-md bg-t_text_green bg-opacity-5", children: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("p", { className: "text-xs leading-[18px] whitespace-nowrap text-t_text_green text-opacity-80", children: "Done" }) }) : transaction.status === "REVERTED" ? /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("div", { className: "flex items-center px-3 py-2 rounded-md bg-t_bg_tertiary bg-opacity-[0.03]", children: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("p", { className: "text-xs leading-[18px] whitespace-nowrap text-t_text_primary text-opacity-50", children: "Reverted" }) }) : null,
|
|
26046
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
|
|
25795
26047
|
"a",
|
|
25796
26048
|
{
|
|
25797
26049
|
href: explorerUrl,
|
|
@@ -25799,14 +26051,14 @@ var ActivityCard = ({ transaction }) => {
|
|
|
25799
26051
|
rel: "noreferrer",
|
|
25800
26052
|
className: "flex items-center justify-center w-[34px] h-[34px] shrink-0 rounded-md bg-t_bg_tertiary bg-opacity-5 no-underline text-t_text_primary hover:bg-opacity-10 transition-colors",
|
|
25801
26053
|
"aria-label": "Show the transaction in the chain explorer",
|
|
25802
|
-
children: /* @__PURE__ */ (0,
|
|
26054
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(LinkExternalThinIcon, { className: "w-3 h-3 opacity-50" })
|
|
25803
26055
|
}
|
|
25804
26056
|
)
|
|
25805
26057
|
] })
|
|
25806
26058
|
] }),
|
|
25807
|
-
/* @__PURE__ */ (0,
|
|
25808
|
-
/* @__PURE__ */ (0,
|
|
25809
|
-
dstToken && /* @__PURE__ */ (0,
|
|
26059
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "flex items-center gap-3", children: [
|
|
26060
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "flex items-center shrink-0", children: [
|
|
26061
|
+
dstToken && /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("div", { className: "-mr-2", children: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
|
|
25810
26062
|
TokenLogoWithChain,
|
|
25811
26063
|
{
|
|
25812
26064
|
token: srcToken,
|
|
@@ -25816,7 +26068,7 @@ var ActivityCard = ({ transaction }) => {
|
|
|
25816
26068
|
chainLogoClassName: "w-[18px]"
|
|
25817
26069
|
}
|
|
25818
26070
|
) }),
|
|
25819
|
-
/* @__PURE__ */ (0,
|
|
26071
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
|
|
25820
26072
|
TokenLogoWithChain,
|
|
25821
26073
|
{
|
|
25822
26074
|
token: receivedToken,
|
|
@@ -25827,26 +26079,26 @@ var ActivityCard = ({ transaction }) => {
|
|
|
25827
26079
|
}
|
|
25828
26080
|
)
|
|
25829
26081
|
] }),
|
|
25830
|
-
/* @__PURE__ */ (0,
|
|
25831
|
-
/* @__PURE__ */ (0,
|
|
25832
|
-
/* @__PURE__ */ (0,
|
|
25833
|
-
/* @__PURE__ */ (0,
|
|
25834
|
-
dstToken && /* @__PURE__ */ (0,
|
|
25835
|
-
/* @__PURE__ */ (0,
|
|
25836
|
-
/* @__PURE__ */ (0,
|
|
26082
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "flex justify-between items-center gap-2 w-full min-w-0", children: [
|
|
26083
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "flex flex-col gap-0.5 text-left min-w-0", children: [
|
|
26084
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "flex items-center gap-2 text-sm font-medium leading-5 tracking-[0.01em] text-t_text_primary", children: [
|
|
26085
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)("span", { children: srcToken?.symbol || "?" }),
|
|
26086
|
+
dstToken && /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(import_jsx_runtime96.Fragment, { children: [
|
|
26087
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)(ChevronRightThinIcon, { className: "shrink-0 opacity-50" }),
|
|
26088
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)("span", { className: "truncate", children: dstToken.symbol })
|
|
25837
26089
|
] })
|
|
25838
26090
|
] }),
|
|
25839
|
-
/* @__PURE__ */ (0,
|
|
25840
|
-
destinationChain && /* @__PURE__ */ (0,
|
|
25841
|
-
/* @__PURE__ */ (0,
|
|
25842
|
-
/* @__PURE__ */ (0,
|
|
26091
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "flex items-center gap-2 text-xs leading-[18px] tracking-[0.01em] text-t_text_primary text-opacity-50 min-w-0", children: [
|
|
26092
|
+
destinationChain && /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(import_jsx_runtime96.Fragment, { children: [
|
|
26093
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)("span", { className: "whitespace-nowrap truncate", children: `Destination ${destinationChain.displayName || destinationChain.name}` }),
|
|
26094
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)("span", { className: "w-0.5 h-0.5 shrink-0 bg-t_text_primary opacity-25" })
|
|
25843
26095
|
] }),
|
|
25844
|
-
/* @__PURE__ */ (0,
|
|
26096
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)("span", { className: "whitespace-nowrap", children: receiverAddress ? shortAddress(receiverAddress) : "-" })
|
|
25845
26097
|
] })
|
|
25846
26098
|
] }),
|
|
25847
|
-
/* @__PURE__ */ (0,
|
|
25848
|
-
/* @__PURE__ */ (0,
|
|
25849
|
-
amountUsd && /* @__PURE__ */ (0,
|
|
26099
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "flex flex-col gap-0.5 text-right shrink-0", children: [
|
|
26100
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)("div", { className: "text-sm font-medium leading-5 tracking-[0.01em] text-t_text_primary", children: amount }),
|
|
26101
|
+
amountUsd && /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("div", { className: "text-xs leading-[18px] tracking-[0.01em] text-t_text_primary text-opacity-50", children: `${amountUsd} USD` })
|
|
25850
26102
|
] })
|
|
25851
26103
|
] })
|
|
25852
26104
|
] })
|
|
@@ -25854,13 +26106,13 @@ var ActivityCard = ({ transaction }) => {
|
|
|
25854
26106
|
};
|
|
25855
26107
|
|
|
25856
26108
|
// src/components/Swap/HistoryView/index.tsx
|
|
25857
|
-
var
|
|
26109
|
+
var import_jsx_runtime97 = require("react/jsx-runtime");
|
|
25858
26110
|
var HistoryView = () => {
|
|
25859
26111
|
const { history, historyLoadedOnce, solanaHistory, solanaHistoryLoadedOnce } = useHistory();
|
|
25860
26112
|
const {
|
|
25861
26113
|
solana: { address: solanaAddress }
|
|
25862
26114
|
} = useWallet();
|
|
25863
|
-
const unifiedHistory = (0,
|
|
26115
|
+
const unifiedHistory = (0, import_react26.useMemo)(() => {
|
|
25864
26116
|
const combinedHistory = [
|
|
25865
26117
|
...history,
|
|
25866
26118
|
...solanaAddress ? solanaHistory : []
|
|
@@ -25869,40 +26121,40 @@ var HistoryView = () => {
|
|
|
25869
26121
|
return b.timestamp - a.timestamp;
|
|
25870
26122
|
});
|
|
25871
26123
|
}, [history, solanaHistory, solanaAddress]);
|
|
25872
|
-
const view = (0,
|
|
26124
|
+
const view = (0, import_react26.useMemo)(() => {
|
|
25873
26125
|
if (!unifiedHistory || unifiedHistory.length === 0) {
|
|
25874
26126
|
const isHistoryLoaded = historyLoadedOnce && (solanaAddress ? solanaHistoryLoadedOnce : true);
|
|
25875
|
-
return isHistoryLoaded ? /* @__PURE__ */ (0,
|
|
25876
|
-
/* @__PURE__ */ (0,
|
|
25877
|
-
/* @__PURE__ */ (0,
|
|
26127
|
+
return isHistoryLoaded ? /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "flex flex-col items-center justify-center gap-2 h-full min-h-[320px] text-center", children: [
|
|
26128
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)("p", { className: "text-sm font-medium text-t_text_primary", children: "Nothing here yet..." }),
|
|
26129
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("p", { className: "text-xs leading-[18px] text-t_text_primary text-opacity-50", children: [
|
|
25878
26130
|
"Your swaps will show up here",
|
|
25879
|
-
/* @__PURE__ */ (0,
|
|
26131
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)("br", {}),
|
|
25880
26132
|
"once you make the first one."
|
|
25881
26133
|
] })
|
|
25882
|
-
] }) : /* @__PURE__ */ (0,
|
|
25883
|
-
/* @__PURE__ */ (0,
|
|
25884
|
-
/* @__PURE__ */ (0,
|
|
25885
|
-
/* @__PURE__ */ (0,
|
|
25886
|
-
/* @__PURE__ */ (0,
|
|
26134
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "flex flex-col items-center justify-center gap-4 h-full min-h-[320px] text-center", children: [
|
|
26135
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(Spinner, { className: "w-8 h-8" }),
|
|
26136
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "flex flex-col gap-1", children: [
|
|
26137
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)("p", { className: "text-sm font-medium text-t_text_primary", children: "Where's it..." }),
|
|
26138
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("p", { className: "text-xs leading-[18px] text-t_text_primary text-opacity-50", children: [
|
|
25887
26139
|
"We crunch data for your view.",
|
|
25888
|
-
/* @__PURE__ */ (0,
|
|
26140
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)("br", {}),
|
|
25889
26141
|
"Please wait a moment."
|
|
25890
26142
|
] })
|
|
25891
26143
|
] })
|
|
25892
26144
|
] });
|
|
25893
26145
|
}
|
|
25894
|
-
return /* @__PURE__ */ (0,
|
|
25895
|
-
/* @__PURE__ */ (0,
|
|
26146
|
+
return /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "relative h-full", children: [
|
|
26147
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
|
|
25896
26148
|
import_react_virtuoso.Virtuoso,
|
|
25897
26149
|
{
|
|
25898
26150
|
data: unifiedHistory,
|
|
25899
26151
|
style: { height: "100%" },
|
|
25900
26152
|
itemContent: (_, transaction) => {
|
|
25901
|
-
return /* @__PURE__ */ (0,
|
|
26153
|
+
return /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(ActivityCard, { transaction });
|
|
25902
26154
|
}
|
|
25903
26155
|
}
|
|
25904
26156
|
),
|
|
25905
|
-
/* @__PURE__ */ (0,
|
|
26157
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)("div", { className: "pointer-events-none absolute bottom-0 inset-x-0 h-16 bg-gradient-to-t from-t_bg_primary/[0.65] to-transparent" })
|
|
25906
26158
|
] });
|
|
25907
26159
|
}, [
|
|
25908
26160
|
historyLoadedOnce,
|
|
@@ -25910,13 +26162,13 @@ var HistoryView = () => {
|
|
|
25910
26162
|
unifiedHistory,
|
|
25911
26163
|
solanaAddress
|
|
25912
26164
|
]);
|
|
25913
|
-
return /* @__PURE__ */ (0,
|
|
26165
|
+
return /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("div", { className: "flex-1 overflow-hidden", children: view });
|
|
25914
26166
|
};
|
|
25915
26167
|
|
|
25916
26168
|
// src/components/Swap/SwapView/SwapPanel/TokenPanel/ChainPicker/index.tsx
|
|
25917
|
-
var
|
|
26169
|
+
var import_react27 = require("react");
|
|
25918
26170
|
var import_react_virtuoso2 = require("react-virtuoso");
|
|
25919
|
-
var
|
|
26171
|
+
var import_jsx_runtime98 = require("react/jsx-runtime");
|
|
25920
26172
|
var ChainPicker = ({
|
|
25921
26173
|
chains,
|
|
25922
26174
|
selectedChainId,
|
|
@@ -25924,14 +26176,14 @@ var ChainPicker = ({
|
|
|
25924
26176
|
onSelect,
|
|
25925
26177
|
onClose
|
|
25926
26178
|
}) => {
|
|
25927
|
-
const [searchValue, setSearchValue] = (0,
|
|
25928
|
-
const chainSearchRef = (0,
|
|
25929
|
-
(0,
|
|
26179
|
+
const [searchValue, setSearchValue] = (0, import_react27.useState)("");
|
|
26180
|
+
const chainSearchRef = (0, import_react27.useRef)(null);
|
|
26181
|
+
(0, import_react27.useEffect)(() => {
|
|
25930
26182
|
setTimeout(() => {
|
|
25931
26183
|
chainSearchRef.current?.focus();
|
|
25932
26184
|
}, 10);
|
|
25933
26185
|
}, []);
|
|
25934
|
-
const filteredChains = (0,
|
|
26186
|
+
const filteredChains = (0, import_react27.useMemo)(() => {
|
|
25935
26187
|
if (!searchValue) return chains;
|
|
25936
26188
|
const searchLower = searchValue.toLowerCase();
|
|
25937
26189
|
return chains.filter(
|
|
@@ -25939,23 +26191,23 @@ var ChainPicker = ({
|
|
|
25939
26191
|
);
|
|
25940
26192
|
}, [chains, searchValue]);
|
|
25941
26193
|
const requiresSourceReset = (chain) => !!chain.disabled || chain.chainId === sameChainId;
|
|
25942
|
-
return /* @__PURE__ */ (0,
|
|
25943
|
-
/* @__PURE__ */ (0,
|
|
25944
|
-
/* @__PURE__ */ (0,
|
|
25945
|
-
/* @__PURE__ */ (0,
|
|
26194
|
+
return /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(import_jsx_runtime98.Fragment, { children: [
|
|
26195
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "flex justify-between items-center mb-6", children: [
|
|
26196
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)("div", { className: "text-2xl font-medium leading-8 tracking-[0.01em] text-t_text_primary", children: "Select Network" }),
|
|
26197
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
25946
26198
|
"button",
|
|
25947
26199
|
{
|
|
25948
26200
|
type: "button",
|
|
25949
26201
|
"aria-label": "Close",
|
|
25950
26202
|
className: "flex items-center justify-center w-8 h-8 rounded-md bg-t_bg_tertiary bg-opacity-5 hover:bg-opacity-10 transition-colors",
|
|
25951
26203
|
onClick: onClose,
|
|
25952
|
-
children: /* @__PURE__ */ (0,
|
|
26204
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("div", { className: "w-4 h-4 opacity-50 fill-t_text_primary flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(CloseIcon, {}) })
|
|
25953
26205
|
}
|
|
25954
26206
|
)
|
|
25955
26207
|
] }),
|
|
25956
|
-
/* @__PURE__ */ (0,
|
|
25957
|
-
/* @__PURE__ */ (0,
|
|
25958
|
-
/* @__PURE__ */ (0,
|
|
26208
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "flex items-center gap-2 h-14 px-4 rounded-xl bg-t_bg_tertiary bg-opacity-[0.03] border border-solid border-t_text_primary border-opacity-5 mb-6", children: [
|
|
26209
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)("div", { className: "text-t_text_primary opacity-60 flex items-center shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(SearchThinIcon, {}) }),
|
|
26210
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
25959
26211
|
"input",
|
|
25960
26212
|
{
|
|
25961
26213
|
ref: chainSearchRef,
|
|
@@ -25966,7 +26218,7 @@ var ChainPicker = ({
|
|
|
25966
26218
|
}
|
|
25967
26219
|
)
|
|
25968
26220
|
] }),
|
|
25969
|
-
/* @__PURE__ */ (0,
|
|
26221
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)("div", { className: "flex flex-col mx-0 h-full min-h-0 flex-1", children: filteredChains.length ? /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
25970
26222
|
import_react_virtuoso2.Virtuoso,
|
|
25971
26223
|
{
|
|
25972
26224
|
style: { maxHeight: "700px", height: "100%" },
|
|
@@ -25974,13 +26226,13 @@ var ChainPicker = ({
|
|
|
25974
26226
|
itemContent: (_, chain) => {
|
|
25975
26227
|
const resetWarning = requiresSourceReset(chain);
|
|
25976
26228
|
const isSelected = chain.chainId === selectedChainId;
|
|
25977
|
-
return /* @__PURE__ */ (0,
|
|
26229
|
+
return /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("div", { className: "pb-2", children: /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(
|
|
25978
26230
|
"div",
|
|
25979
26231
|
{
|
|
25980
26232
|
onClick: () => onSelect(chain),
|
|
25981
26233
|
className: `flex gap-3 items-center p-3 sm:p-4 rounded-xl cursor-pointer bg-gradient-to-r from-t_bg_tertiary/[0.02] to-t_bg_tertiary/[0.02] bg-[rgba(40,40,40,0.15)] hover:bg-t_bg_tertiary hover:bg-opacity-10 transition-colors ${isSelected ? "!bg-t_bg_tertiary !bg-opacity-10" : ""}`,
|
|
25982
26234
|
children: [
|
|
25983
|
-
/* @__PURE__ */ (0,
|
|
26235
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
25984
26236
|
"img",
|
|
25985
26237
|
{
|
|
25986
26238
|
src: chain.image,
|
|
@@ -25988,19 +26240,19 @@ var ChainPicker = ({
|
|
|
25988
26240
|
className: `w-10 h-10 rounded-full shrink-0 ${resetWarning ? "opacity-40" : ""}`
|
|
25989
26241
|
}
|
|
25990
26242
|
),
|
|
25991
|
-
/* @__PURE__ */ (0,
|
|
25992
|
-
/* @__PURE__ */ (0,
|
|
26243
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "flex justify-between items-center gap-2 w-full min-w-0", children: [
|
|
26244
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
25993
26245
|
"p",
|
|
25994
26246
|
{
|
|
25995
26247
|
className: `text-sm font-medium leading-5 tracking-[0.01em] text-t_text_primary ${resetWarning ? "opacity-40" : ""}`,
|
|
25996
26248
|
children: chain.displayName
|
|
25997
26249
|
}
|
|
25998
26250
|
),
|
|
25999
|
-
resetWarning && /* @__PURE__ */ (0,
|
|
26000
|
-
/* @__PURE__ */ (0,
|
|
26001
|
-
/* @__PURE__ */ (0,
|
|
26002
|
-
/* @__PURE__ */ (0,
|
|
26003
|
-
/* @__PURE__ */ (0,
|
|
26251
|
+
resetWarning && /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "flex items-center justify-end gap-1.5 text-[#D77F02]", children: [
|
|
26252
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(WarningIcon, { className: "w-3.5 h-3.5 shrink-0" }),
|
|
26253
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("span", { className: "text-xs leading-[18px] tracking-[0.01em] whitespace-nowrap", children: [
|
|
26254
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)("span", { className: "sm:hidden", children: "Source will reset." }),
|
|
26255
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)("span", { className: "hidden sm:inline", children: "Source will reset after selection." })
|
|
26004
26256
|
] })
|
|
26005
26257
|
] })
|
|
26006
26258
|
] })
|
|
@@ -26009,42 +26261,42 @@ var ChainPicker = ({
|
|
|
26009
26261
|
) });
|
|
26010
26262
|
}
|
|
26011
26263
|
}
|
|
26012
|
-
) : /* @__PURE__ */ (0,
|
|
26264
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("div", { className: "text-center py-1 text-sm text-t_text_primary text-opacity-50", children: "No network found" }) })
|
|
26013
26265
|
] });
|
|
26014
26266
|
};
|
|
26015
26267
|
|
|
26016
26268
|
// src/components/Swap/SwapView/SwapPanel/TokenPanel/TokenPicker/index.tsx
|
|
26017
26269
|
var import_free_solid_svg_icons = require("@fortawesome/free-solid-svg-icons");
|
|
26018
26270
|
var import_react_fontawesome = require("@fortawesome/react-fontawesome");
|
|
26019
|
-
var
|
|
26271
|
+
var import_react30 = require("react");
|
|
26020
26272
|
var import_react_virtuoso4 = require("react-virtuoso");
|
|
26021
26273
|
|
|
26022
26274
|
// src/components/Swap/SwapView/SwapPanel/TokenPanel/TokenPicker/NetworkFilter/index.tsx
|
|
26023
|
-
var
|
|
26275
|
+
var import_react28 = require("react");
|
|
26024
26276
|
var import_react_virtuoso3 = require("react-virtuoso");
|
|
26025
|
-
var
|
|
26277
|
+
var import_jsx_runtime99 = require("react/jsx-runtime");
|
|
26026
26278
|
var NetworkFilter = ({ type, selectedChain, onSelect }) => {
|
|
26027
26279
|
const { srcChainOptions, dstChainOptions } = useSwapContext();
|
|
26028
|
-
const [open, setOpen] = (0,
|
|
26029
|
-
const [searchValue, setSearchValue] = (0,
|
|
26030
|
-
const containerRef = (0,
|
|
26031
|
-
const chains = (0,
|
|
26280
|
+
const [open, setOpen] = (0, import_react28.useState)(false);
|
|
26281
|
+
const [searchValue, setSearchValue] = (0, import_react28.useState)("");
|
|
26282
|
+
const containerRef = (0, import_react28.useRef)(null);
|
|
26283
|
+
const chains = (0, import_react28.useMemo)(
|
|
26032
26284
|
() => type === "source" ? srcChainOptions : dstChainOptions,
|
|
26033
26285
|
[type, srcChainOptions, dstChainOptions]
|
|
26034
26286
|
);
|
|
26035
|
-
const filteredChains = (0,
|
|
26287
|
+
const filteredChains = (0, import_react28.useMemo)(() => {
|
|
26036
26288
|
if (!searchValue) return chains;
|
|
26037
26289
|
const searchLower = searchValue.toLowerCase();
|
|
26038
26290
|
return chains.filter(
|
|
26039
26291
|
(chain) => chain.displayName.toLowerCase().includes(searchLower) || chain.chainId.toLowerCase().includes(searchLower)
|
|
26040
26292
|
);
|
|
26041
26293
|
}, [chains, searchValue]);
|
|
26042
|
-
(0,
|
|
26294
|
+
(0, import_react28.useEffect)(() => {
|
|
26043
26295
|
if (!open) {
|
|
26044
26296
|
setSearchValue("");
|
|
26045
26297
|
}
|
|
26046
26298
|
}, [open]);
|
|
26047
|
-
(0,
|
|
26299
|
+
(0, import_react28.useEffect)(() => {
|
|
26048
26300
|
const onPointerDown = (e) => {
|
|
26049
26301
|
if (containerRef.current && !e.composedPath().includes(containerRef.current)) {
|
|
26050
26302
|
setOpen(false);
|
|
@@ -26054,22 +26306,22 @@ var NetworkFilter = ({ type, selectedChain, onSelect }) => {
|
|
|
26054
26306
|
return () => document.removeEventListener("mousedown", onPointerDown);
|
|
26055
26307
|
}, []);
|
|
26056
26308
|
const clusterChains = chains.slice(0, 4);
|
|
26057
|
-
return /* @__PURE__ */ (0,
|
|
26058
|
-
/* @__PURE__ */ (0,
|
|
26309
|
+
return /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "relative", ref: containerRef, children: [
|
|
26310
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
|
|
26059
26311
|
"button",
|
|
26060
26312
|
{
|
|
26061
26313
|
type: "button",
|
|
26062
26314
|
onClick: () => setOpen((state) => !state),
|
|
26063
26315
|
className: "flex items-center gap-2.5 h-12 px-3 py-2 rounded-lg bg-t_bg_tertiary bg-opacity-[0.04] hover:bg-opacity-10 transition-colors",
|
|
26064
26316
|
children: [
|
|
26065
|
-
selectedChain ? /* @__PURE__ */ (0,
|
|
26317
|
+
selectedChain ? /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
26066
26318
|
"img",
|
|
26067
26319
|
{
|
|
26068
26320
|
src: selectedChain.image,
|
|
26069
26321
|
alt: selectedChain.displayName,
|
|
26070
26322
|
className: "w-5 h-5 rounded-full"
|
|
26071
26323
|
}
|
|
26072
|
-
) : /* @__PURE__ */ (0,
|
|
26324
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { className: "grid grid-cols-2 gap-0.5 shrink-0", children: clusterChains.map((chain) => /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
26073
26325
|
"img",
|
|
26074
26326
|
{
|
|
26075
26327
|
src: chain.image,
|
|
@@ -26078,21 +26330,21 @@ var NetworkFilter = ({ type, selectedChain, onSelect }) => {
|
|
|
26078
26330
|
},
|
|
26079
26331
|
chain.chainId
|
|
26080
26332
|
)) }),
|
|
26081
|
-
/* @__PURE__ */ (0,
|
|
26082
|
-
/* @__PURE__ */ (0,
|
|
26333
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)("p", { className: "text-sm leading-6 tracking-[0.01em] text-t_text_primary whitespace-nowrap max-w-[120px] truncate", children: selectedChain ? selectedChain.displayName : `${chains.length} Networks` }),
|
|
26334
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
26083
26335
|
"div",
|
|
26084
26336
|
{
|
|
26085
26337
|
className: `flex items-center justify-center w-6 h-6 text-t_text_primary opacity-50 transition-transform ${open ? "rotate-180" : ""}`,
|
|
26086
|
-
children: /* @__PURE__ */ (0,
|
|
26338
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(ChevronDownThinIcon, {})
|
|
26087
26339
|
}
|
|
26088
26340
|
)
|
|
26089
26341
|
]
|
|
26090
26342
|
}
|
|
26091
26343
|
),
|
|
26092
|
-
open && /* @__PURE__ */ (0,
|
|
26093
|
-
/* @__PURE__ */ (0,
|
|
26094
|
-
/* @__PURE__ */ (0,
|
|
26095
|
-
/* @__PURE__ */ (0,
|
|
26344
|
+
open && /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "absolute -right-2 top-[calc(100%+8px)] z-20 flex flex-col w-[296px] py-5 px-2.5 rounded-xl network-dropdown-surface border border-solid border-t_text_primary border-opacity-5 overflow-hidden", children: [
|
|
26345
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "flex items-center gap-2 px-2.5 pb-4", children: [
|
|
26346
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { className: "text-t_text_primary opacity-60 [&_svg]:w-4 [&_svg]:h-4 flex items-center", children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(SearchThinIcon, {}) }),
|
|
26347
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
26096
26348
|
"input",
|
|
26097
26349
|
{
|
|
26098
26350
|
value: searchValue,
|
|
@@ -26102,15 +26354,15 @@ var NetworkFilter = ({ type, selectedChain, onSelect }) => {
|
|
|
26102
26354
|
}
|
|
26103
26355
|
)
|
|
26104
26356
|
] }),
|
|
26105
|
-
/* @__PURE__ */ (0,
|
|
26106
|
-
/* @__PURE__ */ (0,
|
|
26357
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { className: "h-px w-full bg-t_bg_tertiary bg-opacity-5 mb-2" }),
|
|
26358
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { className: "h-[214px]", children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
26107
26359
|
import_react_virtuoso3.Virtuoso,
|
|
26108
26360
|
{
|
|
26109
26361
|
style: { height: "214px" },
|
|
26110
26362
|
data: [void 0, ...filteredChains],
|
|
26111
26363
|
itemContent: (_, chain) => {
|
|
26112
26364
|
const isSelected = (chain?.chainId || "") === (selectedChain?.chainId || "");
|
|
26113
|
-
return /* @__PURE__ */ (0,
|
|
26365
|
+
return /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
|
|
26114
26366
|
"button",
|
|
26115
26367
|
{
|
|
26116
26368
|
type: "button",
|
|
@@ -26120,14 +26372,14 @@ var NetworkFilter = ({ type, selectedChain, onSelect }) => {
|
|
|
26120
26372
|
},
|
|
26121
26373
|
className: `network-dropdown-row flex items-center gap-2.5 w-full h-10 px-2.5 rounded-lg text-left ${isSelected ? "network-dropdown-row-active" : ""}`,
|
|
26122
26374
|
children: [
|
|
26123
|
-
chain ? /* @__PURE__ */ (0,
|
|
26375
|
+
chain ? /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
26124
26376
|
"img",
|
|
26125
26377
|
{
|
|
26126
26378
|
src: chain.image,
|
|
26127
26379
|
alt: chain.displayName,
|
|
26128
26380
|
className: "w-6 h-6 rounded-full"
|
|
26129
26381
|
}
|
|
26130
|
-
) : /* @__PURE__ */ (0,
|
|
26382
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { className: "grid grid-cols-2 gap-0.5 shrink-0", children: clusterChains.map((clusterChain) => /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
26131
26383
|
"img",
|
|
26132
26384
|
{
|
|
26133
26385
|
src: clusterChain.image,
|
|
@@ -26136,7 +26388,7 @@ var NetworkFilter = ({ type, selectedChain, onSelect }) => {
|
|
|
26136
26388
|
},
|
|
26137
26389
|
clusterChain.chainId
|
|
26138
26390
|
)) }),
|
|
26139
|
-
/* @__PURE__ */ (0,
|
|
26391
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
26140
26392
|
"p",
|
|
26141
26393
|
{
|
|
26142
26394
|
className: `text-sm leading-[18px] tracking-[0.01em] text-t_text_primary truncate ${isSelected ? "" : "text-opacity-80"}`,
|
|
@@ -26154,9 +26406,9 @@ var NetworkFilter = ({ type, selectedChain, onSelect }) => {
|
|
|
26154
26406
|
};
|
|
26155
26407
|
|
|
26156
26408
|
// src/components/Swap/SwapView/SwapPanel/TokenPanel/TokenPicker/TokenItem/index.tsx
|
|
26157
|
-
var
|
|
26409
|
+
var import_react29 = require("react");
|
|
26158
26410
|
var import_wagmi5 = require("wagmi");
|
|
26159
|
-
var
|
|
26411
|
+
var import_jsx_runtime100 = require("react/jsx-runtime");
|
|
26160
26412
|
var TokenItem = ({
|
|
26161
26413
|
token,
|
|
26162
26414
|
selectedTokenAddress,
|
|
@@ -26172,34 +26424,34 @@ var TokenItem = ({
|
|
|
26172
26424
|
integrationConfig
|
|
26173
26425
|
} = useSwapContext();
|
|
26174
26426
|
const { address } = (0, import_wagmi5.useAccount)();
|
|
26175
|
-
const chain = (0,
|
|
26427
|
+
const chain = (0, import_react29.useMemo)(
|
|
26176
26428
|
() => supportedChains.find(({ chainId }) => chainId === token.chainId),
|
|
26177
26429
|
[supportedChains, token]
|
|
26178
26430
|
);
|
|
26179
|
-
const tokenPrice = (0,
|
|
26431
|
+
const tokenPrice = (0, import_react29.useMemo)(() => {
|
|
26180
26432
|
const prices = tokenPrices[token.chainId];
|
|
26181
26433
|
return prices?.[token.address];
|
|
26182
26434
|
}, [token, tokenPrices]);
|
|
26183
|
-
const tokenBalance = (0,
|
|
26435
|
+
const tokenBalance = (0, import_react29.useMemo)(() => {
|
|
26184
26436
|
if (!token.balance || !token.decimals) return null;
|
|
26185
26437
|
return Number(ethers_exports.utils.formatUnits(token.balance, token.decimals));
|
|
26186
26438
|
}, [token.balance, token.decimals]);
|
|
26187
|
-
const hasBalance = (0,
|
|
26439
|
+
const hasBalance = (0, import_react29.useMemo)(
|
|
26188
26440
|
() => token.balance && !token.balance.eq(0),
|
|
26189
26441
|
[token.balance]
|
|
26190
26442
|
);
|
|
26191
|
-
const tokenValueUsd = (0,
|
|
26443
|
+
const tokenValueUsd = (0, import_react29.useMemo)(() => {
|
|
26192
26444
|
if (!tokenBalance || !tokenPrice || !hasBalance) return null;
|
|
26193
26445
|
return tokenBalance * +tokenPrice;
|
|
26194
26446
|
}, [tokenBalance, tokenPrice, hasBalance]);
|
|
26195
26447
|
const isSelected = token.address.toLowerCase() === selectedTokenAddress?.toLowerCase() && selectedChainId && token.chainId === selectedChainId;
|
|
26196
|
-
return /* @__PURE__ */ (0,
|
|
26448
|
+
return /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("div", { className: "pb-2", children: /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(
|
|
26197
26449
|
"div",
|
|
26198
26450
|
{
|
|
26199
26451
|
className: `flex gap-3 items-center p-3 sm:p-4 rounded-xl cursor-pointer bg-gradient-to-r from-t_bg_tertiary/[0.02] to-t_bg_tertiary/[0.02] bg-[rgba(40,40,40,0.15)] hover:bg-t_bg_tertiary hover:bg-opacity-10 transition-colors ${isSelected ? "!bg-t_bg_tertiary !bg-opacity-10" : ""}`,
|
|
26200
26452
|
onClick,
|
|
26201
26453
|
children: [
|
|
26202
|
-
/* @__PURE__ */ (0,
|
|
26454
|
+
/* @__PURE__ */ (0, import_jsx_runtime100.jsx)("div", { className: `shrink-0 ${resetWarning ? "opacity-40" : ""}`, children: /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
|
|
26203
26455
|
TokenLogoWithChain,
|
|
26204
26456
|
{
|
|
26205
26457
|
token,
|
|
@@ -26209,37 +26461,37 @@ var TokenItem = ({
|
|
|
26209
26461
|
chainLogoClassName: "w-[18px]"
|
|
26210
26462
|
}
|
|
26211
26463
|
) }),
|
|
26212
|
-
/* @__PURE__ */ (0,
|
|
26213
|
-
/* @__PURE__ */ (0,
|
|
26464
|
+
/* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("div", { className: "flex justify-between items-center gap-2 w-full min-w-0", children: [
|
|
26465
|
+
/* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(
|
|
26214
26466
|
"div",
|
|
26215
26467
|
{
|
|
26216
26468
|
className: `text-left min-w-0 ${resetWarning ? "opacity-40" : ""}`,
|
|
26217
26469
|
children: [
|
|
26218
|
-
/* @__PURE__ */ (0,
|
|
26470
|
+
/* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("div", { className: "text-sm font-medium leading-5 tracking-[0.01em] text-t_text_primary flex items-center gap-1", children: [
|
|
26219
26471
|
token.symbol,
|
|
26220
26472
|
integrationConfig?.highlightedDstTokens?.includes(
|
|
26221
26473
|
token.symbol
|
|
26222
|
-
) && panelType === "destination" && /* @__PURE__ */ (0,
|
|
26474
|
+
) && panelType === "destination" && /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
|
|
26223
26475
|
"div",
|
|
26224
26476
|
{
|
|
26225
26477
|
className: "flex items-center justify-center text-t_text_primary rounded-full w-3.5 h-3.5 text-xs",
|
|
26226
26478
|
title: "AI-powered token",
|
|
26227
|
-
children: /* @__PURE__ */ (0,
|
|
26479
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(StarsIcon, {})
|
|
26228
26480
|
}
|
|
26229
26481
|
)
|
|
26230
26482
|
] }),
|
|
26231
|
-
/* @__PURE__ */ (0,
|
|
26232
|
-
/* @__PURE__ */ (0,
|
|
26233
|
-
!resetWarning && /* @__PURE__ */ (0,
|
|
26234
|
-
/* @__PURE__ */ (0,
|
|
26235
|
-
/* @__PURE__ */ (0,
|
|
26483
|
+
/* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("div", { className: "flex gap-2 items-center text-xs leading-[18px] tracking-[0.01em] text-t_text_primary text-opacity-50", children: [
|
|
26484
|
+
/* @__PURE__ */ (0, import_jsx_runtime100.jsx)("span", { className: "whitespace-nowrap", children: chain?.displayName || token.name }),
|
|
26485
|
+
!resetWarning && /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(import_jsx_runtime100.Fragment, { children: [
|
|
26486
|
+
/* @__PURE__ */ (0, import_jsx_runtime100.jsx)("span", { className: "w-0.5 h-0.5 bg-t_text_primary opacity-25 shrink-0" }),
|
|
26487
|
+
/* @__PURE__ */ (0, import_jsx_runtime100.jsx)("span", { className: "whitespace-nowrap hidden sm:block", children: shortAddress(token.address) })
|
|
26236
26488
|
] })
|
|
26237
26489
|
] })
|
|
26238
26490
|
]
|
|
26239
26491
|
}
|
|
26240
26492
|
),
|
|
26241
|
-
/* @__PURE__ */ (0,
|
|
26242
|
-
address && isFetchingBalances ? /* @__PURE__ */ (0,
|
|
26493
|
+
/* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("div", { className: "text-right shrink-0", children: [
|
|
26494
|
+
address && isFetchingBalances ? /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(Skeleton, { className: "w-[48px] h-[12px]" }) : token.balance && token.decimals && address && /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
|
|
26243
26495
|
"div",
|
|
26244
26496
|
{
|
|
26245
26497
|
className: `text-sm font-medium leading-5 tracking-[0.01em] text-t_text_primary ${resetWarning ? "opacity-40" : ""}`,
|
|
@@ -26250,13 +26502,13 @@ var TokenItem = ({
|
|
|
26250
26502
|
}) : "<0.0001"
|
|
26251
26503
|
}
|
|
26252
26504
|
),
|
|
26253
|
-
resetWarning ? /* @__PURE__ */ (0,
|
|
26254
|
-
/* @__PURE__ */ (0,
|
|
26255
|
-
/* @__PURE__ */ (0,
|
|
26256
|
-
/* @__PURE__ */ (0,
|
|
26257
|
-
/* @__PURE__ */ (0,
|
|
26505
|
+
resetWarning ? /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("div", { className: "flex items-center justify-end gap-1.5 text-[#F46F28]", children: [
|
|
26506
|
+
/* @__PURE__ */ (0, import_jsx_runtime100.jsx)(WarningIcon, { className: "w-3.5 h-3.5 shrink-0" }),
|
|
26507
|
+
/* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("span", { className: "text-xs leading-[18px] tracking-[0.01em] whitespace-nowrap", children: [
|
|
26508
|
+
/* @__PURE__ */ (0, import_jsx_runtime100.jsx)("span", { className: "sm:hidden", children: resetWarning === "source" ? "Source will reset." : "Destination will reset." }),
|
|
26509
|
+
/* @__PURE__ */ (0, import_jsx_runtime100.jsx)("span", { className: "hidden sm:inline", children: resetWarning === "source" ? "Source will reset after selection." : "Destination will reset after selection." })
|
|
26258
26510
|
] })
|
|
26259
|
-
] }) : !isFetchingBalances && hasBalance && address && /* @__PURE__ */ (0,
|
|
26511
|
+
] }) : !isFetchingBalances && hasBalance && address && /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("div", { className: "text-xs leading-[18px] tracking-[0.01em] text-t_text_primary text-opacity-50", children: tokenValueUsd ? `${tokenValueUsd.toFixed(2)} USD` : "-" })
|
|
26260
26512
|
] })
|
|
26261
26513
|
] })
|
|
26262
26514
|
]
|
|
@@ -26267,7 +26519,7 @@ var TokenItem = ({
|
|
|
26267
26519
|
// src/components/Swap/SwapView/SwapPanel/TokenPanel/TokenPicker/index.tsx
|
|
26268
26520
|
var import_wagmi6 = require("wagmi");
|
|
26269
26521
|
var import_web328 = require("@solana/web3.js");
|
|
26270
|
-
var
|
|
26522
|
+
var import_jsx_runtime101 = require("react/jsx-runtime");
|
|
26271
26523
|
var TokenPicker = ({
|
|
26272
26524
|
chain,
|
|
26273
26525
|
tokens,
|
|
@@ -26278,16 +26530,16 @@ var TokenPicker = ({
|
|
|
26278
26530
|
setModalOpen,
|
|
26279
26531
|
type
|
|
26280
26532
|
}) => {
|
|
26281
|
-
const [searchValue, setSearchValue] = (0,
|
|
26282
|
-
const [acceptRisks, setAcceptRisks] = (0,
|
|
26283
|
-
const [showImportWarning, setShowImportWarning] = (0,
|
|
26284
|
-
const [loadingCustomTokenData, setLoadingCustomTokenData] = (0,
|
|
26285
|
-
const [customTokenData, setCustomTokenData] = (0,
|
|
26286
|
-
const [networkFilter, setNetworkFilter] = (0,
|
|
26533
|
+
const [searchValue, setSearchValue] = (0, import_react30.useState)("");
|
|
26534
|
+
const [acceptRisks, setAcceptRisks] = (0, import_react30.useState)(false);
|
|
26535
|
+
const [showImportWarning, setShowImportWarning] = (0, import_react30.useState)(false);
|
|
26536
|
+
const [loadingCustomTokenData, setLoadingCustomTokenData] = (0, import_react30.useState)(false);
|
|
26537
|
+
const [customTokenData, setCustomTokenData] = (0, import_react30.useState)(null);
|
|
26538
|
+
const [networkFilter, setNetworkFilter] = (0, import_react30.useState)(
|
|
26287
26539
|
void 0
|
|
26288
26540
|
);
|
|
26289
|
-
const currentRouteRequestNonce = (0,
|
|
26290
|
-
const tokenSearchRef = (0,
|
|
26541
|
+
const currentRouteRequestNonce = (0, import_react30.useRef)(0);
|
|
26542
|
+
const tokenSearchRef = (0, import_react30.useRef)(null);
|
|
26291
26543
|
const {
|
|
26292
26544
|
bridgeUI,
|
|
26293
26545
|
supportedChains,
|
|
@@ -26302,12 +26554,12 @@ var TokenPicker = ({
|
|
|
26302
26554
|
const {
|
|
26303
26555
|
solana: { address: solanaAddress }
|
|
26304
26556
|
} = useWallet();
|
|
26305
|
-
(0,
|
|
26557
|
+
(0, import_react30.useEffect)(() => {
|
|
26306
26558
|
setShowImportWarning(false);
|
|
26307
26559
|
setAcceptRisks(false);
|
|
26308
26560
|
}, [isOpen]);
|
|
26309
26561
|
const importChain = networkFilter ?? chain;
|
|
26310
|
-
const importCustomToken = (0,
|
|
26562
|
+
const importCustomToken = (0, import_react30.useCallback)(() => {
|
|
26311
26563
|
if (importChain && customTokenData && (isETHAddressValid(searchValue) || isSolanaAddressValid(searchValue))) {
|
|
26312
26564
|
let customTokens = {};
|
|
26313
26565
|
if (!isServer) {
|
|
@@ -26343,7 +26595,7 @@ var TokenPicker = ({
|
|
|
26343
26595
|
addTokenToChainIfNotExists,
|
|
26344
26596
|
setModalOpen
|
|
26345
26597
|
]);
|
|
26346
|
-
const getCustomTokenData2 = (0,
|
|
26598
|
+
const getCustomTokenData2 = (0, import_react30.useCallback)(async () => {
|
|
26347
26599
|
if (!importChain) {
|
|
26348
26600
|
return;
|
|
26349
26601
|
}
|
|
@@ -26369,7 +26621,7 @@ var TokenPicker = ({
|
|
|
26369
26621
|
}
|
|
26370
26622
|
}
|
|
26371
26623
|
}, [importChain, searchValue]);
|
|
26372
|
-
const getCustomSolanaTokenData = (0,
|
|
26624
|
+
const getCustomSolanaTokenData = (0, import_react30.useCallback)(async () => {
|
|
26373
26625
|
const nonce = Date.now();
|
|
26374
26626
|
currentRouteRequestNonce.current = nonce;
|
|
26375
26627
|
const rpcUrl = supportedChains.find(
|
|
@@ -26432,7 +26684,7 @@ var TokenPicker = ({
|
|
|
26432
26684
|
}
|
|
26433
26685
|
}
|
|
26434
26686
|
}, [importChain, searchValue, supportedChains]);
|
|
26435
|
-
(0,
|
|
26687
|
+
(0, import_react30.useEffect)(() => {
|
|
26436
26688
|
if (!bridgeUI && importChain && !findTokenDataByAddressAndChain(
|
|
26437
26689
|
importChain.ecosystem === "evm" /* EVM */ ? searchValue.toLowerCase() : searchValue,
|
|
26438
26690
|
importChain.chainId
|
|
@@ -26457,12 +26709,12 @@ var TokenPicker = ({
|
|
|
26457
26709
|
findTokenDataByAddressAndChain,
|
|
26458
26710
|
importChain
|
|
26459
26711
|
]);
|
|
26460
|
-
(0,
|
|
26712
|
+
(0, import_react30.useEffect)(() => {
|
|
26461
26713
|
setSearchValue("");
|
|
26462
26714
|
setNetworkFilter(void 0);
|
|
26463
26715
|
}, [isOpen]);
|
|
26464
26716
|
const isMatch = (value, searchValue2) => value.toLowerCase().indexOf(searchValue2.toLowerCase()) > -1;
|
|
26465
|
-
const visibleTokens = (0,
|
|
26717
|
+
const visibleTokens = (0, import_react30.useMemo)(() => {
|
|
26466
26718
|
const all = [...tokens || [], ...otherTokens || []];
|
|
26467
26719
|
return all.filter((token) => {
|
|
26468
26720
|
if (networkFilter && token.chainId !== networkFilter.chainId) {
|
|
@@ -26471,7 +26723,7 @@ var TokenPicker = ({
|
|
|
26471
26723
|
return isMatch(token.symbol, searchValue) || isMatch(token.name, searchValue) || token.address.toLowerCase() === searchValue.toLowerCase();
|
|
26472
26724
|
});
|
|
26473
26725
|
}, [tokens, otherTokens, searchValue, networkFilter]);
|
|
26474
|
-
const calculateTokenValue = (0,
|
|
26726
|
+
const calculateTokenValue = (0, import_react30.useCallback)(
|
|
26475
26727
|
(token) => {
|
|
26476
26728
|
if (!token.balance || !token.decimals) return 0;
|
|
26477
26729
|
const balance = Number(
|
|
@@ -26482,7 +26734,7 @@ var TokenPicker = ({
|
|
|
26482
26734
|
},
|
|
26483
26735
|
[tokenPrices]
|
|
26484
26736
|
);
|
|
26485
|
-
const getResetWarning = (0,
|
|
26737
|
+
const getResetWarning = (0, import_react30.useCallback)(
|
|
26486
26738
|
(token) => {
|
|
26487
26739
|
if (type === "destination") {
|
|
26488
26740
|
if (srcChain && !isChainConnectionSupported(srcChain, token.chainId, bridgeUI)) {
|
|
@@ -26505,11 +26757,11 @@ var TokenPicker = ({
|
|
|
26505
26757
|
},
|
|
26506
26758
|
[type, srcChain, dstChain, bridgeUI, supportedChains, bridgeTokensDictionary]
|
|
26507
26759
|
);
|
|
26508
|
-
const compareByResetWarning = (0,
|
|
26760
|
+
const compareByResetWarning = (0, import_react30.useCallback)(
|
|
26509
26761
|
(tokenA, tokenB) => Number(!!getResetWarning(tokenA)) - Number(!!getResetWarning(tokenB)),
|
|
26510
26762
|
[getResetWarning]
|
|
26511
26763
|
);
|
|
26512
|
-
const ownedTokens = (0,
|
|
26764
|
+
const ownedTokens = (0, import_react30.useMemo)(() => {
|
|
26513
26765
|
if (!address && !solanaAddress) {
|
|
26514
26766
|
return [];
|
|
26515
26767
|
}
|
|
@@ -26532,7 +26784,7 @@ var TokenPicker = ({
|
|
|
26532
26784
|
calculateTokenValue,
|
|
26533
26785
|
compareByResetWarning
|
|
26534
26786
|
]);
|
|
26535
|
-
const recommendedTokens = (0,
|
|
26787
|
+
const recommendedTokens = (0, import_react30.useMemo)(
|
|
26536
26788
|
() => visibleTokens.filter(
|
|
26537
26789
|
(token) => !(address || solanaAddress) || BigNumber.from(token?.balance || "0").eq(0)
|
|
26538
26790
|
).sort(
|
|
@@ -26540,13 +26792,13 @@ var TokenPicker = ({
|
|
|
26540
26792
|
),
|
|
26541
26793
|
[visibleTokens, address, solanaAddress, compareByResetWarning]
|
|
26542
26794
|
);
|
|
26543
|
-
const tokenGroups = (0,
|
|
26795
|
+
const tokenGroups = (0, import_react30.useMemo)(() => {
|
|
26544
26796
|
return ownedTokens.length ? [
|
|
26545
26797
|
{ label: "MY TOKENS.", tokens: ownedTokens },
|
|
26546
26798
|
{ label: "RECOMMENDED.", tokens: recommendedTokens }
|
|
26547
26799
|
] : [{ label: "RECOMMENDED.", tokens: recommendedTokens }];
|
|
26548
26800
|
}, [ownedTokens, recommendedTokens]);
|
|
26549
|
-
const listRows = (0,
|
|
26801
|
+
const listRows = (0, import_react30.useMemo)(
|
|
26550
26802
|
() => tokenGroups.flatMap((group, groupIndex) => {
|
|
26551
26803
|
const rows = groupIndex === 0 ? [] : [
|
|
26552
26804
|
{
|
|
@@ -26570,49 +26822,49 @@ var TokenPicker = ({
|
|
|
26570
26822
|
}),
|
|
26571
26823
|
[tokenGroups]
|
|
26572
26824
|
);
|
|
26573
|
-
const [topRowIndex, setTopRowIndex] = (0,
|
|
26825
|
+
const [topRowIndex, setTopRowIndex] = (0, import_react30.useState)(0);
|
|
26574
26826
|
const pinnedGroupLabel = listRows[Math.min(topRowIndex, listRows.length - 1)]?.groupLabel ?? tokenGroups[0]?.label ?? "";
|
|
26575
|
-
(0,
|
|
26827
|
+
(0, import_react30.useEffect)(() => {
|
|
26576
26828
|
if (isOpen && tokenSearchRef.current) {
|
|
26577
26829
|
setTimeout(() => {
|
|
26578
26830
|
tokenSearchRef.current?.focus();
|
|
26579
26831
|
}, 10);
|
|
26580
26832
|
}
|
|
26581
26833
|
}, [isOpen]);
|
|
26582
|
-
return showImportWarning ? /* @__PURE__ */ (0,
|
|
26583
|
-
/* @__PURE__ */ (0,
|
|
26584
|
-
/* @__PURE__ */ (0,
|
|
26585
|
-
/* @__PURE__ */ (0,
|
|
26834
|
+
return showImportWarning ? /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(import_jsx_runtime101.Fragment, { children: [
|
|
26835
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("div", { className: "flex justify-between items-center mb-6", children: [
|
|
26836
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: "text-2xl font-medium leading-8 tracking-[0.01em]", children: "Import token" }),
|
|
26837
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
|
|
26586
26838
|
"button",
|
|
26587
26839
|
{
|
|
26588
26840
|
type: "button",
|
|
26589
26841
|
"aria-label": "Close",
|
|
26590
26842
|
className: "flex items-center justify-center w-8 h-8 rounded-md bg-t_bg_tertiary bg-opacity-5 hover:bg-opacity-10 transition-colors",
|
|
26591
26843
|
onClick: () => setModalOpen(false),
|
|
26592
|
-
children: /* @__PURE__ */ (0,
|
|
26844
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: "w-4 h-4 opacity-50 fill-t_text_primary flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(CloseIcon, {}) })
|
|
26593
26845
|
}
|
|
26594
26846
|
)
|
|
26595
26847
|
] }),
|
|
26596
|
-
/* @__PURE__ */ (0,
|
|
26597
|
-
customTokenData && /* @__PURE__ */ (0,
|
|
26848
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("div", { className: "flex flex-col h-full gap-2", children: [
|
|
26849
|
+
customTokenData && /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(
|
|
26598
26850
|
"div",
|
|
26599
26851
|
{
|
|
26600
26852
|
className: `flex gap-3 py-3 px-4 items-center grow-0 bg-t_bg_tertiary bg-opacity-[0.03] border border-solid border-t_text_primary border-opacity-10 rounded-xl`,
|
|
26601
26853
|
children: [
|
|
26602
|
-
/* @__PURE__ */ (0,
|
|
26854
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
|
|
26603
26855
|
UnknownTokenLogo,
|
|
26604
26856
|
{
|
|
26605
26857
|
tokenName: customTokenData.name,
|
|
26606
26858
|
className: "w-9 h-9 text-[15px]"
|
|
26607
26859
|
}
|
|
26608
26860
|
),
|
|
26609
|
-
/* @__PURE__ */ (0,
|
|
26610
|
-
/* @__PURE__ */ (0,
|
|
26611
|
-
/* @__PURE__ */ (0,
|
|
26861
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("div", { className: "flex justify-between items-center gap-1 overflow-hidden grow", children: [
|
|
26862
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: "overflow-hidden whitespace-nowrap text-ellipsis text-sm font-medium", children: customTokenData.name }),
|
|
26863
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: "text-sm text-t_text_primary text-opacity-50", children: customTokenData.symbol })
|
|
26612
26864
|
] }),
|
|
26613
|
-
/* @__PURE__ */ (0,
|
|
26865
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("div", { className: "text-sm flex items-center", children: [
|
|
26614
26866
|
shortAddress(searchValue.toLowerCase()),
|
|
26615
|
-
/* @__PURE__ */ (0,
|
|
26867
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
|
|
26616
26868
|
"button",
|
|
26617
26869
|
{
|
|
26618
26870
|
type: "button",
|
|
@@ -26621,30 +26873,30 @@ var TokenPicker = ({
|
|
|
26621
26873
|
),
|
|
26622
26874
|
"aria-label": `Copy ${customTokenData.symbol} token address`,
|
|
26623
26875
|
className: "flex items-center p-2 fill-t_text_primary cursor-pointer hover:fill-t_main_accent_light",
|
|
26624
|
-
children: /* @__PURE__ */ (0,
|
|
26876
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(CopyIcon, { className: "w-5 h-5" })
|
|
26625
26877
|
}
|
|
26626
26878
|
)
|
|
26627
26879
|
] })
|
|
26628
26880
|
]
|
|
26629
26881
|
}
|
|
26630
26882
|
),
|
|
26631
|
-
/* @__PURE__ */ (0,
|
|
26632
|
-
/* @__PURE__ */ (0,
|
|
26633
|
-
/* @__PURE__ */ (0,
|
|
26634
|
-
/* @__PURE__ */ (0,
|
|
26883
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: "px-4 py-4 rounded-xl border border-solid border-t_warning_dark text-sm text-t_text_primary text-opacity-80", children: "Ensure that you have verified the token address and confirmed its correctness" }),
|
|
26884
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("div", { className: "bg-t_bg_tertiary bg-opacity-[0.03] border border-solid border-t_text_primary border-opacity-10 rounded-xl p-4", children: [
|
|
26885
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: "text-sm mb-2 text-t_text_primary text-opacity-80", children: "Be mindful that anyone can create tokens, even counterfeit versions of existing ones. Certain tokens and their technical specifications might not be compatible with XSwap services. By importing such custom tokens, you acknowledge and consent to the associated risks." }),
|
|
26886
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(
|
|
26635
26887
|
"button",
|
|
26636
26888
|
{
|
|
26637
26889
|
type: "button",
|
|
26638
26890
|
onClick: () => setAcceptRisks((state) => !state),
|
|
26639
26891
|
className: "flex items-center",
|
|
26640
26892
|
children: [
|
|
26641
|
-
/* @__PURE__ */ (0,
|
|
26642
|
-
/* @__PURE__ */ (0,
|
|
26893
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: "flex justify-center items-center p-1 w-6 h-6 border-2 border-solid border-t_text_primary border-opacity-50 rounded-md mr-2", children: acceptRisks && /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_react_fontawesome.FontAwesomeIcon, { icon: import_free_solid_svg_icons.faCheck, className: "w-4 h-4" }) }),
|
|
26894
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: "font-medium", children: "Accept" })
|
|
26643
26895
|
]
|
|
26644
26896
|
}
|
|
26645
26897
|
)
|
|
26646
26898
|
] }),
|
|
26647
|
-
/* @__PURE__ */ (0,
|
|
26899
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: "flex grow items-end justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
|
|
26648
26900
|
Button,
|
|
26649
26901
|
{
|
|
26650
26902
|
type: "button",
|
|
@@ -26655,24 +26907,24 @@ var TokenPicker = ({
|
|
|
26655
26907
|
}
|
|
26656
26908
|
) })
|
|
26657
26909
|
] })
|
|
26658
|
-
] }) : /* @__PURE__ */ (0,
|
|
26659
|
-
/* @__PURE__ */ (0,
|
|
26660
|
-
/* @__PURE__ */ (0,
|
|
26661
|
-
/* @__PURE__ */ (0,
|
|
26910
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(import_jsx_runtime101.Fragment, { children: [
|
|
26911
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("div", { className: "flex justify-between items-center mb-6", children: [
|
|
26912
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: "text-2xl font-medium leading-8 tracking-[0.01em] text-t_text_primary", children: "Select Token" }),
|
|
26913
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
|
|
26662
26914
|
"button",
|
|
26663
26915
|
{
|
|
26664
26916
|
type: "button",
|
|
26665
26917
|
"aria-label": "Close",
|
|
26666
26918
|
className: "flex items-center justify-center w-8 h-8 rounded-md bg-t_bg_tertiary bg-opacity-5 hover:bg-opacity-10 transition-colors",
|
|
26667
26919
|
onClick: () => setModalOpen(false),
|
|
26668
|
-
children: /* @__PURE__ */ (0,
|
|
26920
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: "w-4 h-4 opacity-50 fill-t_text_primary flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(CloseIcon, {}) })
|
|
26669
26921
|
}
|
|
26670
26922
|
)
|
|
26671
26923
|
] }),
|
|
26672
|
-
/* @__PURE__ */ (0,
|
|
26673
|
-
/* @__PURE__ */ (0,
|
|
26674
|
-
/* @__PURE__ */ (0,
|
|
26675
|
-
/* @__PURE__ */ (0,
|
|
26924
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("div", { className: "flex items-center justify-between gap-2 h-14 pl-4 pr-1 rounded-xl bg-t_bg_tertiary bg-opacity-[0.03] border border-solid border-t_text_primary border-opacity-5 mb-6", children: [
|
|
26925
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("div", { className: "flex items-center gap-2 flex-1 min-w-0", children: [
|
|
26926
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: "text-t_text_primary opacity-60 flex items-center shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(SearchThinIcon, {}) }),
|
|
26927
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
|
|
26676
26928
|
"input",
|
|
26677
26929
|
{
|
|
26678
26930
|
ref: tokenSearchRef,
|
|
@@ -26683,7 +26935,7 @@ var TokenPicker = ({
|
|
|
26683
26935
|
}
|
|
26684
26936
|
)
|
|
26685
26937
|
] }),
|
|
26686
|
-
/* @__PURE__ */ (0,
|
|
26938
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
|
|
26687
26939
|
NetworkFilter,
|
|
26688
26940
|
{
|
|
26689
26941
|
type,
|
|
@@ -26692,8 +26944,8 @@ var TokenPicker = ({
|
|
|
26692
26944
|
}
|
|
26693
26945
|
)
|
|
26694
26946
|
] }),
|
|
26695
|
-
/* @__PURE__ */ (0,
|
|
26696
|
-
/* @__PURE__ */ (0,
|
|
26947
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: "flex flex-col mx-0 h-full min-h-0 flex-1", children: loadingCustomTokenData ? /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: "flex justify-center w-full py-4 px-0", children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(Spinner, { className: "w-9 h-9" }) }) : /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_jsx_runtime101.Fragment, { children: customTokenData ? /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("div", { className: "flex gap-3 py-3 px-4 items-center rounded-xl bg-t_bg_tertiary bg-opacity-[0.03]", children: [
|
|
26948
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
|
|
26697
26949
|
TokenLogoWithChain,
|
|
26698
26950
|
{
|
|
26699
26951
|
token: customTokenData,
|
|
@@ -26703,14 +26955,14 @@ var TokenPicker = ({
|
|
|
26703
26955
|
chainLogoClassName: "w-5"
|
|
26704
26956
|
}
|
|
26705
26957
|
),
|
|
26706
|
-
/* @__PURE__ */ (0,
|
|
26707
|
-
/* @__PURE__ */ (0,
|
|
26708
|
-
/* @__PURE__ */ (0,
|
|
26709
|
-
/* @__PURE__ */ (0,
|
|
26958
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("div", { className: "flex justify-between items-center gap-1 overflow-hidden grow", children: [
|
|
26959
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("div", { children: [
|
|
26960
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: "text-sm font-medium text-ellipsis", children: customTokenData.name }),
|
|
26961
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: "text-xs text-t_text_primary !text-opacity-50", children: importChain?.displayName })
|
|
26710
26962
|
] }),
|
|
26711
|
-
/* @__PURE__ */ (0,
|
|
26963
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: "text-sm text-t_text_primary text-opacity-50", children: customTokenData.symbol })
|
|
26712
26964
|
] }),
|
|
26713
|
-
/* @__PURE__ */ (0,
|
|
26965
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
|
|
26714
26966
|
Button,
|
|
26715
26967
|
{
|
|
26716
26968
|
type: "button",
|
|
@@ -26719,10 +26971,10 @@ var TokenPicker = ({
|
|
|
26719
26971
|
children: "Import"
|
|
26720
26972
|
}
|
|
26721
26973
|
) })
|
|
26722
|
-
] }) : /* @__PURE__ */ (0,
|
|
26723
|
-
/* @__PURE__ */ (0,
|
|
26724
|
-
/* @__PURE__ */ (0,
|
|
26725
|
-
/* @__PURE__ */ (0,
|
|
26974
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("div", { className: "flex flex-col h-full min-h-0", children: [
|
|
26975
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)("p", { className: "pb-3 text-[10px] leading-4 tracking-[0.015em] text-t_text_primary text-opacity-30 text-left shrink-0", children: pinnedGroupLabel }),
|
|
26976
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("div", { className: "relative flex flex-col flex-1 min-h-0", children: [
|
|
26977
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
|
|
26726
26978
|
import_react_virtuoso4.Virtuoso,
|
|
26727
26979
|
{
|
|
26728
26980
|
style: { maxHeight: "700px", height: "100%" },
|
|
@@ -26734,12 +26986,12 @@ var TokenPicker = ({
|
|
|
26734
26986
|
return null;
|
|
26735
26987
|
}
|
|
26736
26988
|
if (row.kind === "label") {
|
|
26737
|
-
return /* @__PURE__ */ (0,
|
|
26989
|
+
return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("p", { className: "pt-2 pb-3 text-[10px] leading-4 tracking-[0.015em] text-t_text_primary text-opacity-30 text-left", children: row.label });
|
|
26738
26990
|
}
|
|
26739
26991
|
if (row.kind === "empty") {
|
|
26740
|
-
return /* @__PURE__ */ (0,
|
|
26992
|
+
return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: "text-center py-1 pb-3 text-sm text-t_text_primary text-opacity-50", children: "No token found" });
|
|
26741
26993
|
}
|
|
26742
|
-
return /* @__PURE__ */ (0,
|
|
26994
|
+
return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
|
|
26743
26995
|
TokenItem,
|
|
26744
26996
|
{
|
|
26745
26997
|
panelType: type,
|
|
@@ -26756,14 +27008,14 @@ var TokenPicker = ({
|
|
|
26756
27008
|
}
|
|
26757
27009
|
}
|
|
26758
27010
|
),
|
|
26759
|
-
/* @__PURE__ */ (0,
|
|
27011
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: "pointer-events-none absolute bottom-0 left-0 right-0 h-16 bg-gradient-to-t from-t_bg_secondary/65 to-t_bg_secondary/0" })
|
|
26760
27012
|
] })
|
|
26761
27013
|
] }) }) })
|
|
26762
27014
|
] });
|
|
26763
27015
|
};
|
|
26764
27016
|
|
|
26765
27017
|
// src/components/Swap/PickerView/index.tsx
|
|
26766
|
-
var
|
|
27018
|
+
var import_jsx_runtime102 = require("react/jsx-runtime");
|
|
26767
27019
|
var PickerView = () => {
|
|
26768
27020
|
const {
|
|
26769
27021
|
activePicker,
|
|
@@ -26830,7 +27082,7 @@ var PickerView = () => {
|
|
|
26830
27082
|
if (!activePicker) {
|
|
26831
27083
|
return null;
|
|
26832
27084
|
}
|
|
26833
|
-
return /* @__PURE__ */ (0,
|
|
27085
|
+
return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(
|
|
26834
27086
|
"div",
|
|
26835
27087
|
{
|
|
26836
27088
|
className: "fixed top-0 left-0 right-0 bottom-0 z-10 flex flex-col justify-end bg-[rgba(2,2,2,0.8)] sm:absolute sm:z-[1] sm:justify-start sm:bg-transparent",
|
|
@@ -26842,9 +27094,9 @@ var PickerView = () => {
|
|
|
26842
27094
|
close();
|
|
26843
27095
|
}
|
|
26844
27096
|
},
|
|
26845
|
-
children: /* @__PURE__ */ (0,
|
|
26846
|
-
/* @__PURE__ */ (0,
|
|
26847
|
-
bridgeDestination ? /* @__PURE__ */ (0,
|
|
27097
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)("div", { className: "flex flex-col w-full h-[85vh] max-h-full overflow-hidden p-4 pt-2.5 rounded-t-[24px] border-t border-solid border-t_text_primary border-opacity-10 bg-gradient-to-r from-t_bg_secondary/50 to-t_bg_secondary/50 bg-t_bg_primary sm:h-full sm:p-0 sm:rounded-none sm:border-0 sm:bg-none sm:bg-transparent", children: [
|
|
27098
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsx)("div", { className: "sm:hidden mx-auto mb-4 h-1 w-8 rounded-full bg-t_bg_tertiary bg-opacity-10 shrink-0" }),
|
|
27099
|
+
bridgeDestination ? /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(
|
|
26848
27100
|
ChainPicker,
|
|
26849
27101
|
{
|
|
26850
27102
|
chains: dstChainOptions,
|
|
@@ -26853,7 +27105,7 @@ var PickerView = () => {
|
|
|
26853
27105
|
onSelect: onDstChainSelect,
|
|
26854
27106
|
onClose: close
|
|
26855
27107
|
}
|
|
26856
|
-
) : /* @__PURE__ */ (0,
|
|
27108
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(
|
|
26857
27109
|
TokenPicker,
|
|
26858
27110
|
{
|
|
26859
27111
|
type,
|
|
@@ -26876,9 +27128,9 @@ var PickerView = () => {
|
|
|
26876
27128
|
};
|
|
26877
27129
|
|
|
26878
27130
|
// src/components/ToggleButton/index.tsx
|
|
26879
|
-
var
|
|
27131
|
+
var import_jsx_runtime103 = require("react/jsx-runtime");
|
|
26880
27132
|
var ToggleButton = ({ checked, onClick }) => {
|
|
26881
|
-
return /* @__PURE__ */ (0,
|
|
27133
|
+
return /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
|
|
26882
27134
|
"button",
|
|
26883
27135
|
{
|
|
26884
27136
|
type: "button",
|
|
@@ -26886,7 +27138,7 @@ var ToggleButton = ({ checked, onClick }) => {
|
|
|
26886
27138
|
"aria-checked": checked,
|
|
26887
27139
|
onClick,
|
|
26888
27140
|
className: `relative inline-flex items-center w-10 h-5 p-0.5 rounded-full cursor-pointer transition-opacity border-none bg-gradient-to-r ${checked ? "from-x_blue_light/25 to-x_blue_dark/25" : "from-t_main_accent_light/20 to-t_main_accent_dark/20 opacity-50"}`,
|
|
26889
|
-
children: /* @__PURE__ */ (0,
|
|
27141
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
|
|
26890
27142
|
"span",
|
|
26891
27143
|
{
|
|
26892
27144
|
className: `w-4 h-4 rounded-full transition-transform bg-gradient-to-r ${checked ? "translate-x-5 from-x_blue_light to-x_blue_dark" : "translate-x-0 from-t_main_accent_light to-t_main_accent_dark"}`
|
|
@@ -26973,9 +27225,9 @@ var mapTransports = (chains) => {
|
|
|
26973
27225
|
};
|
|
26974
27226
|
|
|
26975
27227
|
// src/components/Tooltip/index.tsx
|
|
26976
|
-
var
|
|
27228
|
+
var import_react31 = require("react");
|
|
26977
27229
|
var import_react_dom = require("react-dom");
|
|
26978
|
-
var
|
|
27230
|
+
var import_jsx_runtime104 = require("react/jsx-runtime");
|
|
26979
27231
|
var positionToClass = {
|
|
26980
27232
|
TOP: "-translate-x-1/2 -translate-y-full",
|
|
26981
27233
|
BOTTOM: "-translate-x-1/2",
|
|
@@ -26983,9 +27235,9 @@ var positionToClass = {
|
|
|
26983
27235
|
RIGHT: "-translate-y-1/2"
|
|
26984
27236
|
};
|
|
26985
27237
|
var Tooltip = ({ id: id2, position, text, triggerRef }) => {
|
|
26986
|
-
const [positionPx, setPositionPx] = (0,
|
|
26987
|
-
const [visible, setVisible] = (0,
|
|
26988
|
-
(0,
|
|
27238
|
+
const [positionPx, setPositionPx] = (0, import_react31.useState)({ top: 0, left: 0 });
|
|
27239
|
+
const [visible, setVisible] = (0, import_react31.useState)(false);
|
|
27240
|
+
(0, import_react31.useEffect)(() => {
|
|
26989
27241
|
const trigger = triggerRef.current;
|
|
26990
27242
|
const updatePosition = () => {
|
|
26991
27243
|
if (!trigger) {
|
|
@@ -27046,7 +27298,7 @@ var Tooltip = ({ id: id2, position, text, triggerRef }) => {
|
|
|
27046
27298
|
};
|
|
27047
27299
|
}, [triggerRef, position]);
|
|
27048
27300
|
return (0, import_react_dom.createPortal)(
|
|
27049
|
-
visible && /* @__PURE__ */ (0,
|
|
27301
|
+
visible && /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
|
|
27050
27302
|
"div",
|
|
27051
27303
|
{
|
|
27052
27304
|
id: id2,
|
|
@@ -27064,18 +27316,18 @@ var Tooltip = ({ id: id2, position, text, triggerRef }) => {
|
|
|
27064
27316
|
};
|
|
27065
27317
|
|
|
27066
27318
|
// src/components/Swap/SettingsView/InfiniteApproval/index.tsx
|
|
27067
|
-
var
|
|
27068
|
-
var
|
|
27319
|
+
var import_react32 = require("react");
|
|
27320
|
+
var import_jsx_runtime105 = require("react/jsx-runtime");
|
|
27069
27321
|
var InfiniteApproval = () => {
|
|
27070
|
-
const tooltipTriggerRef = (0,
|
|
27322
|
+
const tooltipTriggerRef = (0, import_react32.useRef)(null);
|
|
27071
27323
|
const { infiniteApproval, setInfiniteApproval } = useSwapContext();
|
|
27072
|
-
return /* @__PURE__ */ (0,
|
|
27073
|
-
/* @__PURE__ */ (0,
|
|
27074
|
-
/* @__PURE__ */ (0,
|
|
27075
|
-
/* @__PURE__ */ (0,
|
|
27076
|
-
/* @__PURE__ */ (0,
|
|
27077
|
-
/* @__PURE__ */ (0,
|
|
27078
|
-
/* @__PURE__ */ (0,
|
|
27324
|
+
return /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)("div", { className: "flex gap-2 items-center justify-between py-4 px-6 rounded-xl bg-gradient-to-r from-t_bg_tertiary/[0.03] to-t_bg_tertiary/[0.01]", children: [
|
|
27325
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsxs)("div", { className: "flex items-center gap-2 min-w-0", children: [
|
|
27326
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)("h2", { className: "text-sm leading-6 tracking-[0.01em] text-t_text_primary whitespace-nowrap", children: "Persistent Access" }),
|
|
27327
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)("div", { className: "w-0.5 h-0.5 bg-t_text_primary opacity-25 shrink-0" }),
|
|
27328
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsxs)("div", { className: "flex items-center gap-1.5 min-w-0", children: [
|
|
27329
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)("p", { className: "text-sm leading-6 tracking-[0.01em] text-t_text_primary text-opacity-50 whitespace-nowrap truncate", children: "Don't Ask Every Tx." }),
|
|
27330
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
|
|
27079
27331
|
Tooltip,
|
|
27080
27332
|
{
|
|
27081
27333
|
text: "Enabling persistent access (infinite approval) allows to access your tokens without requiring repeated approvals for each transaction. This streamlines multiple transactions but may pose a security risk if the spender's address is compromised.",
|
|
@@ -27084,7 +27336,7 @@ var InfiniteApproval = () => {
|
|
|
27084
27336
|
id: "infinite-approval-tooltip"
|
|
27085
27337
|
}
|
|
27086
27338
|
),
|
|
27087
|
-
/* @__PURE__ */ (0,
|
|
27339
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
|
|
27088
27340
|
InfoThinIcon,
|
|
27089
27341
|
{
|
|
27090
27342
|
ref: tooltipTriggerRef,
|
|
@@ -27093,7 +27345,7 @@ var InfiniteApproval = () => {
|
|
|
27093
27345
|
)
|
|
27094
27346
|
] })
|
|
27095
27347
|
] }),
|
|
27096
|
-
/* @__PURE__ */ (0,
|
|
27348
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
|
|
27097
27349
|
ToggleButton,
|
|
27098
27350
|
{
|
|
27099
27351
|
checked: infiniteApproval,
|
|
@@ -27106,18 +27358,18 @@ var InfiniteApproval = () => {
|
|
|
27106
27358
|
};
|
|
27107
27359
|
|
|
27108
27360
|
// src/components/Swap/SettingsView/Delivery/index.tsx
|
|
27109
|
-
var
|
|
27110
|
-
var
|
|
27361
|
+
var import_react33 = require("react");
|
|
27362
|
+
var import_jsx_runtime106 = require("react/jsx-runtime");
|
|
27111
27363
|
var Delivery = () => {
|
|
27112
|
-
const tooltipTriggerRef = (0,
|
|
27364
|
+
const tooltipTriggerRef = (0, import_react33.useRef)(null);
|
|
27113
27365
|
const { expressDelivery, setExpressDelivery } = useSwapContext();
|
|
27114
|
-
return /* @__PURE__ */ (0,
|
|
27115
|
-
/* @__PURE__ */ (0,
|
|
27116
|
-
/* @__PURE__ */ (0,
|
|
27117
|
-
/* @__PURE__ */ (0,
|
|
27118
|
-
/* @__PURE__ */ (0,
|
|
27119
|
-
/* @__PURE__ */ (0,
|
|
27120
|
-
/* @__PURE__ */ (0,
|
|
27366
|
+
return /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)("div", { className: "flex gap-2 items-center justify-between py-4 px-6 rounded-xl bg-gradient-to-r from-t_bg_tertiary/[0.03] to-t_bg_tertiary/[0.01]", children: [
|
|
27367
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsxs)("div", { className: "flex items-center gap-2 min-w-0", children: [
|
|
27368
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)("h2", { className: "text-sm leading-6 tracking-[0.01em] text-t_text_primary whitespace-nowrap", children: "Fast Delivery" }),
|
|
27369
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)("div", { className: "w-0.5 h-0.5 bg-t_text_primary opacity-25 shrink-0" }),
|
|
27370
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsxs)("div", { className: "flex items-center gap-1.5 min-w-0", children: [
|
|
27371
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)("p", { className: "text-sm leading-6 tracking-[0.01em] text-t_text_primary text-opacity-50 whitespace-nowrap truncate", children: expressDelivery ? "Est. Time 30 Sec." : "Est. Time 30 Min." }),
|
|
27372
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
|
|
27121
27373
|
Tooltip,
|
|
27122
27374
|
{
|
|
27123
27375
|
text: "Fast Delivery is a special feature of XSwap that reduces transaction time across chains to around 30 seconds. It is currently available for swaps below a value of $1000 USD.",
|
|
@@ -27126,7 +27378,7 @@ var Delivery = () => {
|
|
|
27126
27378
|
id: "express-delivery-tooltip"
|
|
27127
27379
|
}
|
|
27128
27380
|
),
|
|
27129
|
-
/* @__PURE__ */ (0,
|
|
27381
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
|
|
27130
27382
|
InfoThinIcon,
|
|
27131
27383
|
{
|
|
27132
27384
|
ref: tooltipTriggerRef,
|
|
@@ -27135,7 +27387,7 @@ var Delivery = () => {
|
|
|
27135
27387
|
)
|
|
27136
27388
|
] })
|
|
27137
27389
|
] }),
|
|
27138
|
-
/* @__PURE__ */ (0,
|
|
27390
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
|
|
27139
27391
|
ToggleButton,
|
|
27140
27392
|
{
|
|
27141
27393
|
checked: expressDelivery,
|
|
@@ -27148,13 +27400,13 @@ var Delivery = () => {
|
|
|
27148
27400
|
};
|
|
27149
27401
|
|
|
27150
27402
|
// src/components/Swap/SettingsView/Slippage/index.tsx
|
|
27151
|
-
var
|
|
27152
|
-
var
|
|
27403
|
+
var import_react34 = require("react");
|
|
27404
|
+
var import_jsx_runtime107 = require("react/jsx-runtime");
|
|
27153
27405
|
var defaultPreset = "1.5";
|
|
27154
27406
|
var presets = ["1", "2", "6"];
|
|
27155
27407
|
var Slippage = () => {
|
|
27156
27408
|
const { slippage, setSlippage } = useSwapContext();
|
|
27157
|
-
const [customSlippage, setCustomSlippage] = (0,
|
|
27409
|
+
const [customSlippage, setCustomSlippage] = (0, import_react34.useState)(slippage);
|
|
27158
27410
|
const onInputChange = (value) => {
|
|
27159
27411
|
if (value.length === 0) {
|
|
27160
27412
|
setCustomSlippage("");
|
|
@@ -27169,18 +27421,18 @@ var Slippage = () => {
|
|
|
27169
27421
|
}
|
|
27170
27422
|
}
|
|
27171
27423
|
};
|
|
27172
|
-
return /* @__PURE__ */ (0,
|
|
27173
|
-
/* @__PURE__ */ (0,
|
|
27174
|
-
/* @__PURE__ */ (0,
|
|
27175
|
-
/* @__PURE__ */ (0,
|
|
27176
|
-
/* @__PURE__ */ (0,
|
|
27177
|
-
/* @__PURE__ */ (0,
|
|
27424
|
+
return /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)("div", { className: "flex flex-col gap-6 py-4 px-6 rounded-xl bg-gradient-to-r from-t_bg_tertiary/[0.03] to-t_bg_tertiary/[0.01]", children: [
|
|
27425
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsxs)("div", { className: "flex flex-col gap-4", children: [
|
|
27426
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
27427
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)("h2", { className: "text-sm leading-6 tracking-[0.01em] text-t_text_primary", children: "Slippage" }),
|
|
27428
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)("div", { className: "w-0.5 h-0.5 bg-t_text_primary opacity-25 shrink-0" }),
|
|
27429
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)("p", { className: "text-sm leading-6 tracking-[0.01em] text-t_text_primary text-opacity-50", children: `${Number(slippage).toFixed(2)}%` })
|
|
27178
27430
|
] }),
|
|
27179
|
-
/* @__PURE__ */ (0,
|
|
27180
|
-
/* @__PURE__ */ (0,
|
|
27181
|
-
/* @__PURE__ */ (0,
|
|
27182
|
-
/* @__PURE__ */ (0,
|
|
27183
|
-
/* @__PURE__ */ (0,
|
|
27431
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsxs)("div", { className: "flex items-center gap-4 w-full", children: [
|
|
27432
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsxs)("div", { className: "flex items-center justify-between flex-1 h-12 gap-3 p-3 rounded-[10px] bg-gradient-to-r from-t_bg_tertiary/[0.02] to-t_bg_tertiary/[0.02] bg-[rgba(40,40,40,0.15)] border border-solid border-t_text_primary border-opacity-5", children: [
|
|
27433
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsxs)("div", { className: "flex items-center gap-3 min-w-0 flex-1", children: [
|
|
27434
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)("div", { className: "flex items-center justify-center w-6 h-6 rounded bg-t_bg_tertiary bg-opacity-5 shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(AdjustmentsIcon, { className: "w-3.5 h-3.5 text-t_text_primary" }) }),
|
|
27435
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
|
|
27184
27436
|
SafeInput,
|
|
27185
27437
|
{
|
|
27186
27438
|
id: "slippage-input",
|
|
@@ -27192,10 +27444,10 @@ var Slippage = () => {
|
|
|
27192
27444
|
}
|
|
27193
27445
|
)
|
|
27194
27446
|
] }),
|
|
27195
|
-
/* @__PURE__ */ (0,
|
|
27447
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)("span", { className: "text-sm leading-6 text-t_text_primary text-opacity-50 shrink-0", children: "%" })
|
|
27196
27448
|
] }),
|
|
27197
|
-
/* @__PURE__ */ (0,
|
|
27198
|
-
/* @__PURE__ */ (0,
|
|
27449
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)("div", { className: "w-0.5 h-0.5 bg-t_text_primary opacity-25 shrink-0 hidden sm:block" }),
|
|
27450
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)("div", { className: "flex items-center gap-2", children: presets.map((preset) => /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
|
|
27199
27451
|
"button",
|
|
27200
27452
|
{
|
|
27201
27453
|
type: "button",
|
|
@@ -27207,10 +27459,10 @@ var Slippage = () => {
|
|
|
27207
27459
|
)) })
|
|
27208
27460
|
] })
|
|
27209
27461
|
] }),
|
|
27210
|
-
/* @__PURE__ */ (0,
|
|
27211
|
-
/* @__PURE__ */ (0,
|
|
27212
|
-
/* @__PURE__ */ (0,
|
|
27213
|
-
/* @__PURE__ */ (0,
|
|
27462
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsxs)("div", { className: "flex flex-col gap-3", children: [
|
|
27463
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)("p", { className: "text-[10px] leading-4 tracking-[0.015em] text-t_text_primary text-opacity-30", children: "NOTE." }),
|
|
27464
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsxs)("p", { className: "text-sm leading-[18px] tracking-[0.01em] text-t_text_primary text-opacity-40", children: [
|
|
27465
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)("span", { className: "font-medium", children: "Slippage" }),
|
|
27214
27466
|
` defines how much a price can change before your
|
|
27215
27467
|
transfer falls back to USDC. If the price moves more than your
|
|
27216
27468
|
tolerance allows, you'll receive USDC on your destination chain.`
|
|
@@ -27220,17 +27472,17 @@ var Slippage = () => {
|
|
|
27220
27472
|
};
|
|
27221
27473
|
|
|
27222
27474
|
// src/components/Swap/SettingsView/index.tsx
|
|
27223
|
-
var
|
|
27475
|
+
var import_jsx_runtime108 = require("react/jsx-runtime");
|
|
27224
27476
|
var SettingsView = () => {
|
|
27225
|
-
return /* @__PURE__ */ (0,
|
|
27226
|
-
/* @__PURE__ */ (0,
|
|
27227
|
-
/* @__PURE__ */ (0,
|
|
27228
|
-
/* @__PURE__ */ (0,
|
|
27477
|
+
return /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)("div", { className: "flex flex-col gap-2", children: [
|
|
27478
|
+
/* @__PURE__ */ (0, import_jsx_runtime108.jsx)(Delivery, {}),
|
|
27479
|
+
/* @__PURE__ */ (0, import_jsx_runtime108.jsx)(InfiniteApproval, {}),
|
|
27480
|
+
/* @__PURE__ */ (0, import_jsx_runtime108.jsx)(Slippage, {})
|
|
27229
27481
|
] });
|
|
27230
27482
|
};
|
|
27231
27483
|
|
|
27232
27484
|
// src/components/Swap/ReorderButton/ReorderButton.tsx
|
|
27233
|
-
var
|
|
27485
|
+
var import_jsx_runtime109 = require("react/jsx-runtime");
|
|
27234
27486
|
var ReorderButton = () => {
|
|
27235
27487
|
const {
|
|
27236
27488
|
dstChain,
|
|
@@ -27248,13 +27500,13 @@ var ReorderButton = () => {
|
|
|
27248
27500
|
setDstToken(srcToken);
|
|
27249
27501
|
setSrcToken(dstToken);
|
|
27250
27502
|
};
|
|
27251
|
-
return /* @__PURE__ */ (0,
|
|
27503
|
+
return /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("div", { className: "h-0 w-full relative z-[1]", children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
|
|
27252
27504
|
"button",
|
|
27253
27505
|
{
|
|
27254
27506
|
onClick: onReorderClick,
|
|
27255
27507
|
"aria-label": "Switch target token with the source token",
|
|
27256
27508
|
className: "absolute left-1/2 -translate-x-1/2 -translate-y-1/2 flex items-center justify-center w-8 h-8 rounded-md backdrop-blur-[24px] bg-t_bg_secondary bg-gradient-to-r from-t_bg_tertiary/5 to-t_bg_tertiary/5 hover:from-t_bg_tertiary/10 hover:to-t_bg_tertiary/10 transition-colors",
|
|
27257
|
-
children: /* @__PURE__ */ (0,
|
|
27509
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("div", { className: "flex text-t_text_primary opacity-50", children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(ChevronsUpDownThinIcon, {}) })
|
|
27258
27510
|
}
|
|
27259
27511
|
) });
|
|
27260
27512
|
};
|
|
@@ -27265,7 +27517,7 @@ var specialApprovalTokens = {
|
|
|
27265
27517
|
};
|
|
27266
27518
|
|
|
27267
27519
|
// src/hooks/useERC20Token.ts
|
|
27268
|
-
var
|
|
27520
|
+
var import_react35 = require("react");
|
|
27269
27521
|
var useERC20Token = ({
|
|
27270
27522
|
rpcChainId,
|
|
27271
27523
|
currentChainId,
|
|
@@ -27274,7 +27526,7 @@ var useERC20Token = ({
|
|
|
27274
27526
|
}) => {
|
|
27275
27527
|
const evmContractApi = useEvmContractApi_default();
|
|
27276
27528
|
const { supportedChains } = useSwapContext();
|
|
27277
|
-
const contract = (0,
|
|
27529
|
+
const contract = (0, import_react35.useMemo)(() => {
|
|
27278
27530
|
const rpcUrl = supportedChains.find(
|
|
27279
27531
|
(chain) => chain.ecosystem === "evm" /* EVM */ && chain.chainId === rpcChainId
|
|
27280
27532
|
)?.publicRpcUrls[0];
|
|
@@ -27288,13 +27540,13 @@ var useERC20Token = ({
|
|
|
27288
27540
|
return null;
|
|
27289
27541
|
}, [rpcChainId, currentChainId, signer, tokenAddress, supportedChains]);
|
|
27290
27542
|
return {
|
|
27291
|
-
balanceOf: (0,
|
|
27543
|
+
balanceOf: (0, import_react35.useCallback)(
|
|
27292
27544
|
async (address) => {
|
|
27293
27545
|
return await evmContractApi.query(contract, "balanceOf", [address]);
|
|
27294
27546
|
},
|
|
27295
27547
|
[contract, evmContractApi]
|
|
27296
27548
|
),
|
|
27297
|
-
allowance: (0,
|
|
27549
|
+
allowance: (0, import_react35.useCallback)(
|
|
27298
27550
|
async (address, allowedToSpendAddress) => {
|
|
27299
27551
|
return await evmContractApi.query(contract, "allowance", [
|
|
27300
27552
|
address,
|
|
@@ -27303,7 +27555,7 @@ var useERC20Token = ({
|
|
|
27303
27555
|
},
|
|
27304
27556
|
[contract, evmContractApi]
|
|
27305
27557
|
),
|
|
27306
|
-
approve: (0,
|
|
27558
|
+
approve: (0, import_react35.useCallback)(
|
|
27307
27559
|
async (amount, allowedToSpendAddress) => {
|
|
27308
27560
|
return await evmContractApi.execute(contract, "approve", [
|
|
27309
27561
|
allowedToSpendAddress,
|
|
@@ -27316,9 +27568,9 @@ var useERC20Token = ({
|
|
|
27316
27568
|
};
|
|
27317
27569
|
|
|
27318
27570
|
// src/components/Swap/SwapView/SwapButton/index.tsx
|
|
27319
|
-
var
|
|
27571
|
+
var import_react36 = require("react");
|
|
27320
27572
|
var import_wagmi7 = require("wagmi");
|
|
27321
|
-
var
|
|
27573
|
+
var import_jsx_runtime110 = require("react/jsx-runtime");
|
|
27322
27574
|
var SwapButton = () => {
|
|
27323
27575
|
const { address, chainId } = (0, import_wagmi7.useAccount)();
|
|
27324
27576
|
const { switchChainAsync } = (0, import_wagmi7.useSwitchChain)();
|
|
@@ -27338,11 +27590,11 @@ var SwapButton = () => {
|
|
|
27338
27590
|
onConnectWallet
|
|
27339
27591
|
} = useSwapContext();
|
|
27340
27592
|
const { setTxStatus, setTxMsg, setTxModalOpen, enqueueTransaction } = useTxUIWrapper();
|
|
27341
|
-
const srcChainId = (0,
|
|
27342
|
-
const dstChainId = (0,
|
|
27343
|
-
const srcTokenAddress = (0,
|
|
27344
|
-
const dstTokenAddress = (0,
|
|
27345
|
-
const [currentTokenAllowance, setCurrentTokenAllowance] = (0,
|
|
27593
|
+
const srcChainId = (0, import_react36.useMemo)(() => srcChain?.chainId, [srcChain?.chainId]);
|
|
27594
|
+
const dstChainId = (0, import_react36.useMemo)(() => dstChain?.chainId, [dstChain?.chainId]);
|
|
27595
|
+
const srcTokenAddress = (0, import_react36.useMemo)(() => srcToken?.address, [srcToken?.address]);
|
|
27596
|
+
const dstTokenAddress = (0, import_react36.useMemo)(() => dstToken?.address, [dstToken?.address]);
|
|
27597
|
+
const [currentTokenAllowance, setCurrentTokenAllowance] = (0, import_react36.useState)("0");
|
|
27346
27598
|
const {
|
|
27347
27599
|
networks: { evm }
|
|
27348
27600
|
} = useNetworks_default();
|
|
@@ -27359,11 +27611,11 @@ var SwapButton = () => {
|
|
|
27359
27611
|
signer: evm.signer,
|
|
27360
27612
|
tokenAddress: srcTokenAddress
|
|
27361
27613
|
});
|
|
27362
|
-
const routerAddress = (0,
|
|
27614
|
+
const routerAddress = (0, import_react36.useMemo)(() => {
|
|
27363
27615
|
if (!srcChainId) return "";
|
|
27364
27616
|
return srcChainId === dstChainId ? ADDRESSES[srcChainId]?.XSwapRouterSingleChain || "" : ADDRESSES[srcChainId]?.XSwapRouter || "";
|
|
27365
27617
|
}, [srcChainId, dstChainId]);
|
|
27366
|
-
const getAllowance = (0,
|
|
27618
|
+
const getAllowance = (0, import_react36.useCallback)(async () => {
|
|
27367
27619
|
if (routerAddress && evm.address) {
|
|
27368
27620
|
try {
|
|
27369
27621
|
const currentAllowance = await allowance(evm.address, routerAddress);
|
|
@@ -27375,17 +27627,17 @@ var SwapButton = () => {
|
|
|
27375
27627
|
setCurrentTokenAllowance("0");
|
|
27376
27628
|
}
|
|
27377
27629
|
}, [allowance, evm.address, routerAddress]);
|
|
27378
|
-
(0,
|
|
27630
|
+
(0, import_react36.useEffect)(() => {
|
|
27379
27631
|
if (srcChainId && specialApprovalTokens[srcChainId]?.includes(srcTokenAddress)) {
|
|
27380
27632
|
getAllowance();
|
|
27381
27633
|
}
|
|
27382
27634
|
}, [getAllowance, srcChainId, srcTokenAddress]);
|
|
27383
|
-
const showSwapConfirmationView = (0,
|
|
27635
|
+
const showSwapConfirmationView = (0, import_react36.useCallback)(() => {
|
|
27384
27636
|
setTxStatus(0 /* SWAP_INIT */);
|
|
27385
27637
|
setTxMsg("");
|
|
27386
27638
|
setTxModalOpen(true);
|
|
27387
27639
|
}, [setTxModalOpen, setTxMsg, setTxStatus]);
|
|
27388
|
-
const button = (0,
|
|
27640
|
+
const button = (0, import_react36.useMemo)(() => {
|
|
27389
27641
|
if (!isAsyncDataLoaded) {
|
|
27390
27642
|
return {
|
|
27391
27643
|
text: "Loading XPay...",
|
|
@@ -27556,7 +27808,7 @@ var SwapButton = () => {
|
|
|
27556
27808
|
setTxStatus,
|
|
27557
27809
|
showSwapConfirmationView
|
|
27558
27810
|
]);
|
|
27559
|
-
return /* @__PURE__ */ (0,
|
|
27811
|
+
return /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(import_jsx_runtime110.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
|
|
27560
27812
|
"button",
|
|
27561
27813
|
{
|
|
27562
27814
|
type: "button",
|
|
@@ -27569,11 +27821,11 @@ var SwapButton = () => {
|
|
|
27569
27821
|
};
|
|
27570
27822
|
|
|
27571
27823
|
// src/components/Swap/SwapView/SwapPanel/index.tsx
|
|
27572
|
-
var
|
|
27824
|
+
var import_react42 = require("react");
|
|
27573
27825
|
|
|
27574
27826
|
// src/components/Swap/SwapView/SwapPanel/AmountPanel/index.tsx
|
|
27575
|
-
var
|
|
27576
|
-
var
|
|
27827
|
+
var import_react37 = require("react");
|
|
27828
|
+
var import_jsx_runtime111 = require("react/jsx-runtime");
|
|
27577
27829
|
var AmountPanel = ({ type }) => {
|
|
27578
27830
|
const {
|
|
27579
27831
|
srcChain,
|
|
@@ -27600,7 +27852,7 @@ var AmountPanel = ({ type }) => {
|
|
|
27600
27852
|
})
|
|
27601
27853
|
);
|
|
27602
27854
|
};
|
|
27603
|
-
const value = (0,
|
|
27855
|
+
const value = (0, import_react37.useMemo)(() => {
|
|
27604
27856
|
if (type === "destination" && dstToken && dstChain && bridgeUI && srcChain?.ecosystem === "solana" /* SOLANA */) {
|
|
27605
27857
|
return srcValue;
|
|
27606
27858
|
}
|
|
@@ -27615,10 +27867,10 @@ var AmountPanel = ({ type }) => {
|
|
|
27615
27867
|
dstChain
|
|
27616
27868
|
]);
|
|
27617
27869
|
if (!isAsyncDataLoaded) {
|
|
27618
|
-
return /* @__PURE__ */ (0,
|
|
27870
|
+
return /* @__PURE__ */ (0, import_jsx_runtime111.jsx)("div", { className: "flex items-center flex-1 min-w-0", children: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Skeleton, { className: "w-[100px] h-8" }) });
|
|
27619
27871
|
}
|
|
27620
|
-
return /* @__PURE__ */ (0,
|
|
27621
|
-
/* @__PURE__ */ (0,
|
|
27872
|
+
return /* @__PURE__ */ (0, import_jsx_runtime111.jsx)("div", { className: "flex items-center gap-3 flex-1 min-w-0 overflow-hidden text-left", children: type === "source" ? /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(import_jsx_runtime111.Fragment, { children: [
|
|
27873
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
|
|
27622
27874
|
SafeInput,
|
|
27623
27875
|
{
|
|
27624
27876
|
id: "swap-amount-input",
|
|
@@ -27628,7 +27880,7 @@ var AmountPanel = ({ type }) => {
|
|
|
27628
27880
|
onChange: (value2) => setSrcValue(value2)
|
|
27629
27881
|
}
|
|
27630
27882
|
),
|
|
27631
|
-
!!srcToken && !!srcTokenBalanceWei && /* @__PURE__ */ (0,
|
|
27883
|
+
!!srcToken && !!srcTokenBalanceWei && /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
|
|
27632
27884
|
"button",
|
|
27633
27885
|
{
|
|
27634
27886
|
type: "button",
|
|
@@ -27637,12 +27889,12 @@ var AmountPanel = ({ type }) => {
|
|
|
27637
27889
|
children: "MAX"
|
|
27638
27890
|
}
|
|
27639
27891
|
)
|
|
27640
|
-
] }) : isFetchingRoute ? /* @__PURE__ */ (0,
|
|
27892
|
+
] }) : isFetchingRoute ? /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Skeleton, { className: "w-[150px] h-[32px]" }) : /* @__PURE__ */ (0, import_jsx_runtime111.jsx)("div", { className: "text-2xl leading-8 text-t_text_primary opacity-60 truncate", children: value || 0 }) });
|
|
27641
27893
|
};
|
|
27642
27894
|
|
|
27643
27895
|
// src/components/Swap/SwapView/SwapPanel/AmountPanel/Balance/index.tsx
|
|
27644
|
-
var
|
|
27645
|
-
var
|
|
27896
|
+
var import_react38 = require("react");
|
|
27897
|
+
var import_jsx_runtime112 = require("react/jsx-runtime");
|
|
27646
27898
|
var Balance = ({ type }) => {
|
|
27647
27899
|
const {
|
|
27648
27900
|
srcToken,
|
|
@@ -27653,7 +27905,7 @@ var Balance = ({ type }) => {
|
|
|
27653
27905
|
dstChain,
|
|
27654
27906
|
dstChainTokensOptions
|
|
27655
27907
|
} = useSwapContext();
|
|
27656
|
-
const dstTokenBalanceInfo = (0,
|
|
27908
|
+
const dstTokenBalanceInfo = (0, import_react38.useMemo)(() => {
|
|
27657
27909
|
if (!dstToken || !dstChain) {
|
|
27658
27910
|
return "";
|
|
27659
27911
|
}
|
|
@@ -27675,15 +27927,15 @@ var Balance = ({ type }) => {
|
|
|
27675
27927
|
if (!token || !balanceInfo && !isLoading) {
|
|
27676
27928
|
return null;
|
|
27677
27929
|
}
|
|
27678
|
-
return /* @__PURE__ */ (0,
|
|
27679
|
-
/* @__PURE__ */ (0,
|
|
27680
|
-
/* @__PURE__ */ (0,
|
|
27930
|
+
return /* @__PURE__ */ (0, import_jsx_runtime112.jsx)("div", { className: "flex items-center justify-end py-1", children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(Skeleton, { className: "w-[80px] h-[16px]" }) : /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)("p", { className: "text-[10px] leading-4 text-right whitespace-nowrap", children: [
|
|
27931
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)("span", { className: "text-t_text_primary text-opacity-50", children: `Balance. ` }),
|
|
27932
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)("span", { className: "text-t_text_primary text-opacity-75 tracking-[0.032em]", children: `${balanceInfo} ${token.symbol}` })
|
|
27681
27933
|
] }) });
|
|
27682
27934
|
};
|
|
27683
27935
|
|
|
27684
27936
|
// src/components/Swap/SwapView/SwapPanel/TokenPanel/index.tsx
|
|
27685
|
-
var
|
|
27686
|
-
var
|
|
27937
|
+
var import_react39 = require("react");
|
|
27938
|
+
var import_jsx_runtime113 = require("react/jsx-runtime");
|
|
27687
27939
|
var TokenPanel = ({ chain, token, type, className }) => {
|
|
27688
27940
|
const {
|
|
27689
27941
|
bridgeUI,
|
|
@@ -27693,36 +27945,36 @@ var TokenPanel = ({ chain, token, type, className }) => {
|
|
|
27693
27945
|
setActivePicker,
|
|
27694
27946
|
isAsyncDataLoaded
|
|
27695
27947
|
} = useSwapContext();
|
|
27696
|
-
const integratorLockedDestinationToken = (0,
|
|
27948
|
+
const integratorLockedDestinationToken = (0, import_react39.useMemo)(
|
|
27697
27949
|
() => type === "destination" && dstTokenLocked,
|
|
27698
27950
|
[type, dstTokenLocked]
|
|
27699
27951
|
);
|
|
27700
|
-
const integratorLockedSourceToken = (0,
|
|
27952
|
+
const integratorLockedSourceToken = (0, import_react39.useMemo)(
|
|
27701
27953
|
() => type === "source" && srcTokenLocked,
|
|
27702
27954
|
[type, srcTokenLocked]
|
|
27703
27955
|
);
|
|
27704
|
-
const bridgeDestination = (0,
|
|
27956
|
+
const bridgeDestination = (0, import_react39.useMemo)(
|
|
27705
27957
|
() => type === "destination" && bridgeUI,
|
|
27706
27958
|
[bridgeUI, type]
|
|
27707
27959
|
);
|
|
27708
27960
|
const locked = bridgeDestination && dstChainLocked || integratorLockedDestinationToken || integratorLockedSourceToken;
|
|
27709
27961
|
if (!isAsyncDataLoaded) {
|
|
27710
|
-
return /* @__PURE__ */ (0,
|
|
27962
|
+
return /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
|
|
27711
27963
|
"div",
|
|
27712
27964
|
{
|
|
27713
27965
|
className: `flex items-center shrink-0 min-h-11 ${className || ""}`,
|
|
27714
27966
|
"aria-hidden": true,
|
|
27715
|
-
children: /* @__PURE__ */ (0,
|
|
27716
|
-
/* @__PURE__ */ (0,
|
|
27717
|
-
/* @__PURE__ */ (0,
|
|
27718
|
-
/* @__PURE__ */ (0,
|
|
27719
|
-
/* @__PURE__ */ (0,
|
|
27967
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)("div", { className: "flex items-center gap-3", children: [
|
|
27968
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)(Skeleton, { className: "w-12 h-4" }),
|
|
27969
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsxs)("div", { className: "relative flex items-end pr-1 pb-1", children: [
|
|
27970
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)(Skeleton, { className: "w-10 h-10 rounded-full" }),
|
|
27971
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)(Skeleton, { className: "absolute bottom-0 right-0 w-[18px] h-[18px] rounded-full border border-solid border-t_bg_secondary" })
|
|
27720
27972
|
] })
|
|
27721
27973
|
] })
|
|
27722
27974
|
}
|
|
27723
27975
|
);
|
|
27724
27976
|
}
|
|
27725
|
-
return /* @__PURE__ */ (0,
|
|
27977
|
+
return /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)(
|
|
27726
27978
|
"button",
|
|
27727
27979
|
{
|
|
27728
27980
|
type: "button",
|
|
@@ -27732,15 +27984,15 @@ var TokenPanel = ({ chain, token, type, className }) => {
|
|
|
27732
27984
|
},
|
|
27733
27985
|
className: `flex items-center shrink-0 min-h-11 rounded-lg ${locked ? "" : "hover:opacity-80 transition-opacity"} ${className || ""}`,
|
|
27734
27986
|
children: [
|
|
27735
|
-
/* @__PURE__ */ (0,
|
|
27736
|
-
/* @__PURE__ */ (0,
|
|
27987
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsxs)("div", { className: "flex items-center gap-3", children: [
|
|
27988
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
|
|
27737
27989
|
"p",
|
|
27738
27990
|
{
|
|
27739
27991
|
className: `text-sm font-medium leading-6 tracking-[0.01em] text-t_text_primary ${token ? "" : "opacity-60"}`,
|
|
27740
27992
|
children: token ? token.symbol : bridgeDestination && chain ? chain.displayName : "Select"
|
|
27741
27993
|
}
|
|
27742
27994
|
),
|
|
27743
|
-
token ? /* @__PURE__ */ (0,
|
|
27995
|
+
token ? /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
|
|
27744
27996
|
TokenLogoWithChain,
|
|
27745
27997
|
{
|
|
27746
27998
|
token,
|
|
@@ -27749,7 +28001,7 @@ var TokenPanel = ({ chain, token, type, className }) => {
|
|
|
27749
28001
|
generatedLogoClassName: "w-10 h-10 text-[16px]",
|
|
27750
28002
|
chainLogoClassName: "w-[18px]"
|
|
27751
28003
|
}
|
|
27752
|
-
) : bridgeDestination && chain && /* @__PURE__ */ (0,
|
|
28004
|
+
) : bridgeDestination && chain && /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
|
|
27753
28005
|
"img",
|
|
27754
28006
|
{
|
|
27755
28007
|
src: chain.image,
|
|
@@ -27760,30 +28012,30 @@ var TokenPanel = ({ chain, token, type, className }) => {
|
|
|
27760
28012
|
] }),
|
|
27761
28013
|
!locked && // The 24px glyph has 8px of built-in whitespace on each side; pull the
|
|
27762
28014
|
// right side back so the chevron sits flush with the panel edge.
|
|
27763
|
-
/* @__PURE__ */ (0,
|
|
28015
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)("div", { className: "flex items-center justify-center w-6 h-6 ml-1 -mr-2 text-t_text_primary opacity-50", children: /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(ChevronDownThinIcon, {}) })
|
|
27764
28016
|
]
|
|
27765
28017
|
}
|
|
27766
28018
|
);
|
|
27767
28019
|
};
|
|
27768
28020
|
|
|
27769
28021
|
// src/components/Swap/SwapView/SwapPanel/UsdValue/index.tsx
|
|
27770
|
-
var
|
|
27771
|
-
var
|
|
28022
|
+
var import_react40 = require("react");
|
|
28023
|
+
var import_jsx_runtime114 = require("react/jsx-runtime");
|
|
27772
28024
|
var UsdValue = ({ type }) => {
|
|
27773
28025
|
const { srcValueUsd, dstValueUsd, isFetchingRoute } = useSwapContext();
|
|
27774
|
-
const valueUsd = (0,
|
|
28026
|
+
const valueUsd = (0, import_react40.useMemo)(
|
|
27775
28027
|
() => type === "source" ? srcValueUsd : dstValueUsd,
|
|
27776
28028
|
[dstValueUsd, srcValueUsd, type]
|
|
27777
28029
|
);
|
|
27778
28030
|
if (type === "destination" && isFetchingRoute) {
|
|
27779
|
-
return /* @__PURE__ */ (0,
|
|
28031
|
+
return /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(Skeleton, { className: "w-[80px] h-[16px] my-1" });
|
|
27780
28032
|
}
|
|
27781
|
-
return /* @__PURE__ */ (0,
|
|
28033
|
+
return /* @__PURE__ */ (0, import_jsx_runtime114.jsx)("p", { className: "py-1 text-[10px] leading-4 tracking-[0.01em] text-t_text_primary text-opacity-50 whitespace-nowrap", children: valueUsd ? `${valueUsd} USD` : "" });
|
|
27782
28034
|
};
|
|
27783
28035
|
|
|
27784
28036
|
// src/components/Swap/SwapView/SwapPanel/WalletPanel/index.tsx
|
|
27785
|
-
var
|
|
27786
|
-
var
|
|
28037
|
+
var import_react41 = require("react");
|
|
28038
|
+
var import_jsx_runtime115 = require("react/jsx-runtime");
|
|
27787
28039
|
var WalletPanel = ({ chain, className }) => {
|
|
27788
28040
|
const {
|
|
27789
28041
|
setOpenEVMWalletModal,
|
|
@@ -27799,7 +28051,7 @@ var WalletPanel = ({ chain, className }) => {
|
|
|
27799
28051
|
onConnectWallet,
|
|
27800
28052
|
isAsyncDataLoaded
|
|
27801
28053
|
} = useSwapContext();
|
|
27802
|
-
const openEvmWalletModal = (0,
|
|
28054
|
+
const openEvmWalletModal = (0, import_react41.useCallback)(() => {
|
|
27803
28055
|
if (!integrationConfig.defaultWalletPicker && hasOnConnectWalletCallback) {
|
|
27804
28056
|
onConnectWallet();
|
|
27805
28057
|
return;
|
|
@@ -27811,7 +28063,7 @@ var WalletPanel = ({ chain, className }) => {
|
|
|
27811
28063
|
onConnectWallet,
|
|
27812
28064
|
setOpenEVMWalletModal
|
|
27813
28065
|
]);
|
|
27814
|
-
const openWalletModal = (0,
|
|
28066
|
+
const openWalletModal = (0, import_react41.useCallback)(() => {
|
|
27815
28067
|
if (!chain) {
|
|
27816
28068
|
return;
|
|
27817
28069
|
}
|
|
@@ -27823,7 +28075,7 @@ var WalletPanel = ({ chain, className }) => {
|
|
|
27823
28075
|
setOpenSuiWalletModal(true);
|
|
27824
28076
|
}
|
|
27825
28077
|
}, [chain, openEvmWalletModal, setOpenSolanaWalletModal, setOpenSuiWalletModal]);
|
|
27826
|
-
const address = (0,
|
|
28078
|
+
const address = (0, import_react41.useMemo)(() => {
|
|
27827
28079
|
if (!chain) {
|
|
27828
28080
|
return "";
|
|
27829
28081
|
}
|
|
@@ -27837,34 +28089,34 @@ var WalletPanel = ({ chain, className }) => {
|
|
|
27837
28089
|
return "";
|
|
27838
28090
|
}, [chain, evm, solana, sui]);
|
|
27839
28091
|
if (!isAsyncDataLoaded) {
|
|
27840
|
-
return /* @__PURE__ */ (0,
|
|
28092
|
+
return /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(Skeleton, { className: "w-16 h-6" });
|
|
27841
28093
|
}
|
|
27842
28094
|
if (!chain) {
|
|
27843
|
-
return /* @__PURE__ */ (0,
|
|
28095
|
+
return /* @__PURE__ */ (0, import_jsx_runtime115.jsx)("div", { className: "h-6", "aria-hidden": true });
|
|
27844
28096
|
}
|
|
27845
|
-
return /* @__PURE__ */ (0,
|
|
28097
|
+
return /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(
|
|
27846
28098
|
"button",
|
|
27847
28099
|
{
|
|
27848
28100
|
type: "button",
|
|
27849
28101
|
onClick: openWalletModal,
|
|
27850
28102
|
className: `flex items-center justify-center px-2 py-1 rounded bg-t_bg_tertiary bg-opacity-5 hover:bg-opacity-10 transition-colors ${className || ""}`,
|
|
27851
28103
|
children: [
|
|
27852
|
-
/* @__PURE__ */ (0,
|
|
27853
|
-
/* @__PURE__ */ (0,
|
|
28104
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)("p", { className: "text-[10px] leading-4 tracking-[0.01em] text-t_text_primary whitespace-nowrap", children: address ? shortAddress(address) : "Connect" }),
|
|
28105
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)("div", { className: "flex items-center justify-center w-4 h-4 -mr-1.5 text-t_text_primary opacity-50", children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(ChevronDownThinSmallIcon, {}) })
|
|
27854
28106
|
]
|
|
27855
28107
|
}
|
|
27856
28108
|
);
|
|
27857
28109
|
};
|
|
27858
28110
|
|
|
27859
28111
|
// src/components/Swap/SwapView/SwapPanel/index.tsx
|
|
27860
|
-
var
|
|
28112
|
+
var import_jsx_runtime116 = require("react/jsx-runtime");
|
|
27861
28113
|
var SwapPanel = ({ type }) => {
|
|
27862
28114
|
const { srcChain, srcToken, dstChain, dstToken } = useSwapContext();
|
|
27863
|
-
const token = (0,
|
|
28115
|
+
const token = (0, import_react42.useMemo)(
|
|
27864
28116
|
() => type === "source" ? srcToken : dstToken,
|
|
27865
28117
|
[type, srcToken, dstToken]
|
|
27866
28118
|
);
|
|
27867
|
-
const chain = (0,
|
|
28119
|
+
const chain = (0, import_react42.useMemo)(
|
|
27868
28120
|
() => type === "source" ? srcChain : dstChain,
|
|
27869
28121
|
[type, srcChain, dstChain]
|
|
27870
28122
|
);
|
|
@@ -27874,23 +28126,23 @@ var SwapPanel = ({ type }) => {
|
|
|
27874
28126
|
}
|
|
27875
28127
|
event.currentTarget.querySelector("#swap-amount-input")?.focus();
|
|
27876
28128
|
};
|
|
27877
|
-
return /* @__PURE__ */ (0,
|
|
28129
|
+
return /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(
|
|
27878
28130
|
"div",
|
|
27879
28131
|
{
|
|
27880
28132
|
onClick: focusAmountInput,
|
|
27881
28133
|
className: `flex flex-col gap-2 px-4 sm:px-6 py-4 rounded-2xl backdrop-blur-[12px] ${type === "source" ? "bg-gradient-to-r from-t_bg_tertiary/5 to-t_bg_tertiary/5 swap-panel-gradient-border cursor-text" : "bg-gradient-to-r from-t_bg_tertiary/[0.03] to-t_bg_tertiary/[0.03]"}`,
|
|
27882
28134
|
children: [
|
|
27883
|
-
/* @__PURE__ */ (0,
|
|
27884
|
-
/* @__PURE__ */ (0,
|
|
27885
|
-
/* @__PURE__ */ (0,
|
|
28135
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsxs)("div", { className: "flex gap-2 items-center w-full min-h-6", children: [
|
|
28136
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)("p", { className: "text-[10px] leading-4 tracking-[0.01em] text-t_text_primary text-opacity-50", children: type === "source" ? "Source" : "Destination" }),
|
|
28137
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(WalletPanel, { chain, type })
|
|
27886
28138
|
] }),
|
|
27887
|
-
/* @__PURE__ */ (0,
|
|
27888
|
-
/* @__PURE__ */ (0,
|
|
27889
|
-
/* @__PURE__ */ (0,
|
|
28139
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsxs)("div", { className: "flex items-center justify-between w-full gap-4", children: [
|
|
28140
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(AmountPanel, { type }),
|
|
28141
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(TokenPanel, { chain, token, type })
|
|
27890
28142
|
] }),
|
|
27891
|
-
/* @__PURE__ */ (0,
|
|
27892
|
-
/* @__PURE__ */ (0,
|
|
27893
|
-
/* @__PURE__ */ (0,
|
|
28143
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsxs)("div", { className: "flex items-center justify-between w-full gap-4 min-h-6", children: [
|
|
28144
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(UsdValue, { type }),
|
|
28145
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Balance, { type })
|
|
27894
28146
|
] })
|
|
27895
28147
|
]
|
|
27896
28148
|
}
|
|
@@ -27898,35 +28150,35 @@ var SwapPanel = ({ type }) => {
|
|
|
27898
28150
|
};
|
|
27899
28151
|
|
|
27900
28152
|
// src/components/Swap/SwapView/index.tsx
|
|
27901
|
-
var
|
|
28153
|
+
var import_jsx_runtime117 = require("react/jsx-runtime");
|
|
27902
28154
|
var SwapView = () => {
|
|
27903
|
-
return /* @__PURE__ */ (0,
|
|
27904
|
-
/* @__PURE__ */ (0,
|
|
27905
|
-
/* @__PURE__ */ (0,
|
|
27906
|
-
/* @__PURE__ */ (0,
|
|
27907
|
-
/* @__PURE__ */ (0,
|
|
27908
|
-
/* @__PURE__ */ (0,
|
|
28155
|
+
return /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)("div", { className: "flex flex-col gap-8 fill-t_text_primary", children: [
|
|
28156
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsxs)("div", { className: "flex flex-col gap-6", children: [
|
|
28157
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsxs)("div", { className: "flex flex-col gap-1.5", children: [
|
|
28158
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)(SwapPanel, { type: "source" }),
|
|
28159
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)(ReorderButton, {}),
|
|
28160
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)(SwapPanel, { type: "destination" })
|
|
27909
28161
|
] }),
|
|
27910
|
-
/* @__PURE__ */ (0,
|
|
27911
|
-
/* @__PURE__ */ (0,
|
|
28162
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)("div", { className: "h-px w-full gradient-sections-separator-container" }),
|
|
28163
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)(FeesPanel, {})
|
|
27912
28164
|
] }),
|
|
27913
|
-
/* @__PURE__ */ (0,
|
|
28165
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)(SwapButton, {})
|
|
27914
28166
|
] });
|
|
27915
28167
|
};
|
|
27916
28168
|
|
|
27917
28169
|
// src/components/Swap/SwapView/WalletPicker/index.tsx
|
|
27918
|
-
var
|
|
28170
|
+
var import_react43 = require("react");
|
|
27919
28171
|
var import_wagmi8 = require("wagmi");
|
|
27920
28172
|
var import_wallet_adapter_react5 = require("@solana/wallet-adapter-react");
|
|
27921
28173
|
var import_dapp_kit3 = require("@mysten/dapp-kit");
|
|
27922
|
-
var
|
|
28174
|
+
var import_jsx_runtime118 = require("react/jsx-runtime");
|
|
27923
28175
|
var ConnectorIcon = ({
|
|
27924
28176
|
connector,
|
|
27925
28177
|
className
|
|
27926
28178
|
}) => {
|
|
27927
28179
|
switch (connector.name) {
|
|
27928
28180
|
case "WalletConnect": {
|
|
27929
|
-
return /* @__PURE__ */ (0,
|
|
28181
|
+
return /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
|
|
27930
28182
|
WalletConnectIcon,
|
|
27931
28183
|
{
|
|
27932
28184
|
className: `w-10 h-10 rounded-lg shrink-0 ${className || ""}`
|
|
@@ -27934,7 +28186,7 @@ var ConnectorIcon = ({
|
|
|
27934
28186
|
);
|
|
27935
28187
|
}
|
|
27936
28188
|
default: {
|
|
27937
|
-
return /* @__PURE__ */ (0,
|
|
28189
|
+
return /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
|
|
27938
28190
|
"img",
|
|
27939
28191
|
{
|
|
27940
28192
|
src: connector.icon,
|
|
@@ -27945,7 +28197,7 @@ var ConnectorIcon = ({
|
|
|
27945
28197
|
}
|
|
27946
28198
|
}
|
|
27947
28199
|
};
|
|
27948
|
-
var WalletRow = ({ icon, name, isConnected, onClick }) => /* @__PURE__ */ (0,
|
|
28200
|
+
var WalletRow = ({ icon, name, isConnected, onClick }) => /* @__PURE__ */ (0, import_jsx_runtime118.jsx)("div", { className: "pb-2", children: /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)(
|
|
27949
28201
|
"button",
|
|
27950
28202
|
{
|
|
27951
28203
|
type: "button",
|
|
@@ -27953,15 +28205,15 @@ var WalletRow = ({ icon, name, isConnected, onClick }) => /* @__PURE__ */ (0, im
|
|
|
27953
28205
|
className: `group flex gap-3 items-center w-full p-3 sm:p-4 rounded-xl cursor-pointer bg-gradient-to-r from-t_bg_tertiary/[0.02] to-t_bg_tertiary/[0.02] bg-[rgba(40,40,40,0.15)] hover:bg-t_bg_tertiary hover:bg-opacity-10 transition-colors ${isConnected ? "!bg-t_bg_tertiary !bg-opacity-10" : ""}`,
|
|
27954
28206
|
children: [
|
|
27955
28207
|
icon,
|
|
27956
|
-
/* @__PURE__ */ (0,
|
|
27957
|
-
/* @__PURE__ */ (0,
|
|
27958
|
-
isConnected && /* @__PURE__ */ (0,
|
|
27959
|
-
/* @__PURE__ */ (0,
|
|
27960
|
-
/* @__PURE__ */ (0,
|
|
28208
|
+
/* @__PURE__ */ (0, import_jsx_runtime118.jsxs)("div", { className: "flex justify-between items-center gap-2 w-full min-w-0", children: [
|
|
28209
|
+
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)("p", { className: "text-sm font-medium leading-5 tracking-[0.01em] text-t_text_primary text-left", children: name }),
|
|
28210
|
+
isConnected && /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)("span", { className: "flex items-center gap-1.5 text-xs leading-[18px] tracking-[0.01em] whitespace-nowrap", children: [
|
|
28211
|
+
/* @__PURE__ */ (0, import_jsx_runtime118.jsxs)("span", { className: "group-hover:hidden flex items-center gap-1.5 text-t_text_green", children: [
|
|
28212
|
+
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)(DotGreenIcon, {}),
|
|
27961
28213
|
"Connected"
|
|
27962
28214
|
] }),
|
|
27963
|
-
/* @__PURE__ */ (0,
|
|
27964
|
-
/* @__PURE__ */ (0,
|
|
28215
|
+
/* @__PURE__ */ (0, import_jsx_runtime118.jsxs)("span", { className: "hidden group-hover:flex items-center gap-1.5 text-t_text_red", children: [
|
|
28216
|
+
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)(DotRedIcon, {}),
|
|
27965
28217
|
"Disconnect"
|
|
27966
28218
|
] })
|
|
27967
28219
|
] })
|
|
@@ -27981,7 +28233,7 @@ var WalletPicker = ({ ecosystem, className, onClose }) => {
|
|
|
27981
28233
|
publicKey: publicKey9,
|
|
27982
28234
|
disconnect: disconnectSolana
|
|
27983
28235
|
} = (0, import_wallet_adapter_react5.useWallet)();
|
|
27984
|
-
const handleEvmWalletClick = (0,
|
|
28236
|
+
const handleEvmWalletClick = (0, import_react43.useCallback)(
|
|
27985
28237
|
async (connector) => {
|
|
27986
28238
|
try {
|
|
27987
28239
|
await connectAsync({ connector });
|
|
@@ -27993,7 +28245,7 @@ var WalletPicker = ({ ecosystem, className, onClose }) => {
|
|
|
27993
28245
|
},
|
|
27994
28246
|
[connectAsync, onClose]
|
|
27995
28247
|
);
|
|
27996
|
-
const handleConnectSolana = (0,
|
|
28248
|
+
const handleConnectSolana = (0, import_react43.useCallback)(
|
|
27997
28249
|
async (walletName) => {
|
|
27998
28250
|
try {
|
|
27999
28251
|
select(walletName);
|
|
@@ -28011,7 +28263,7 @@ var WalletPicker = ({ ecosystem, className, onClose }) => {
|
|
|
28011
28263
|
const suiCurrentWallet = (0, import_dapp_kit3.useCurrentWallet)();
|
|
28012
28264
|
const { mutateAsync: connectSuiWalletMut } = (0, import_dapp_kit3.useConnectWallet)();
|
|
28013
28265
|
const { mutateAsync: disconnectSuiWalletMut } = (0, import_dapp_kit3.useDisconnectWallet)();
|
|
28014
|
-
const handleConnectSui = (0,
|
|
28266
|
+
const handleConnectSui = (0, import_react43.useCallback)(
|
|
28015
28267
|
async (wallet) => {
|
|
28016
28268
|
try {
|
|
28017
28269
|
await connectSuiWalletMut({ wallet });
|
|
@@ -28023,7 +28275,7 @@ var WalletPicker = ({ ecosystem, className, onClose }) => {
|
|
|
28023
28275
|
},
|
|
28024
28276
|
[connectSuiWalletMut, onClose]
|
|
28025
28277
|
);
|
|
28026
|
-
const handleDisconnectSui = (0,
|
|
28278
|
+
const handleDisconnectSui = (0, import_react43.useCallback)(async () => {
|
|
28027
28279
|
try {
|
|
28028
28280
|
await disconnectSuiWalletMut();
|
|
28029
28281
|
} catch (error) {
|
|
@@ -28036,27 +28288,27 @@ var WalletPicker = ({ ecosystem, className, onClose }) => {
|
|
|
28036
28288
|
(connector, index) => connectors.findIndex(({ name }) => name === connector.name) === index
|
|
28037
28289
|
);
|
|
28038
28290
|
const visibleSolanaWallets = wallets.filter((wallet) => !/metamask/i.test(wallet.adapter.name));
|
|
28039
|
-
return /* @__PURE__ */ (0,
|
|
28040
|
-
/* @__PURE__ */ (0,
|
|
28041
|
-
/* @__PURE__ */ (0,
|
|
28042
|
-
/* @__PURE__ */ (0,
|
|
28291
|
+
return /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)("div", { className: `flex flex-col h-full min-h-0 ${className || ""}`, children: [
|
|
28292
|
+
/* @__PURE__ */ (0, import_jsx_runtime118.jsxs)("div", { className: "flex justify-between items-center mb-6", children: [
|
|
28293
|
+
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)("div", { className: "text-2xl font-medium leading-8 tracking-[0.01em] text-t_text_primary", children: "Select Wallet" }),
|
|
28294
|
+
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
|
|
28043
28295
|
"button",
|
|
28044
28296
|
{
|
|
28045
28297
|
type: "button",
|
|
28046
28298
|
"aria-label": "Close",
|
|
28047
28299
|
className: "flex items-center justify-center w-8 h-8 rounded-md bg-t_bg_tertiary bg-opacity-5 hover:bg-opacity-10 transition-colors",
|
|
28048
28300
|
onClick: onClose,
|
|
28049
|
-
children: /* @__PURE__ */ (0,
|
|
28301
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime118.jsx)("div", { className: "w-4 h-4 opacity-50 fill-t_text_primary flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(CloseIcon, {}) })
|
|
28050
28302
|
}
|
|
28051
28303
|
)
|
|
28052
28304
|
] }),
|
|
28053
|
-
/* @__PURE__ */ (0,
|
|
28305
|
+
/* @__PURE__ */ (0, import_jsx_runtime118.jsxs)("div", { className: "flex flex-col flex-1 min-h-0 overflow-y-auto", children: [
|
|
28054
28306
|
ecosystem === "evm" /* EVM */ && visibleConnectors.map((connector) => {
|
|
28055
28307
|
const isConnected = activeConnector?.id === connector.id;
|
|
28056
|
-
return /* @__PURE__ */ (0,
|
|
28308
|
+
return /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
|
|
28057
28309
|
WalletRow,
|
|
28058
28310
|
{
|
|
28059
|
-
icon: /* @__PURE__ */ (0,
|
|
28311
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(ConnectorIcon, { connector }),
|
|
28060
28312
|
name: connector.name,
|
|
28061
28313
|
isConnected,
|
|
28062
28314
|
onClick: async () => {
|
|
@@ -28069,10 +28321,10 @@ var WalletPicker = ({ ecosystem, className, onClose }) => {
|
|
|
28069
28321
|
}),
|
|
28070
28322
|
ecosystem === "solana" /* SOLANA */ && (visibleSolanaWallets.length ? visibleSolanaWallets.map((wallet) => {
|
|
28071
28323
|
const isConnected = !!publicKey9 && activeWallet?.adapter.name === wallet.adapter.name;
|
|
28072
|
-
return /* @__PURE__ */ (0,
|
|
28324
|
+
return /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
|
|
28073
28325
|
WalletRow,
|
|
28074
28326
|
{
|
|
28075
|
-
icon: /* @__PURE__ */ (0,
|
|
28327
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
|
|
28076
28328
|
"img",
|
|
28077
28329
|
{
|
|
28078
28330
|
src: wallet.adapter.icon,
|
|
@@ -28089,20 +28341,20 @@ var WalletPicker = ({ ecosystem, className, onClose }) => {
|
|
|
28089
28341
|
},
|
|
28090
28342
|
wallet.adapter.name
|
|
28091
28343
|
);
|
|
28092
|
-
}) : /* @__PURE__ */ (0,
|
|
28344
|
+
}) : /* @__PURE__ */ (0, import_jsx_runtime118.jsx)("div", { className: "text-center py-1 text-sm text-t_text_primary text-opacity-50", children: "No wallet found" })),
|
|
28093
28345
|
ecosystem === "sui" /* SUI */ && (suiWallets.length ? suiWallets.map((wallet) => {
|
|
28094
28346
|
const isConnected = !!suiAccount?.address && suiCurrentWallet?.currentWallet?.name === wallet.name;
|
|
28095
|
-
return /* @__PURE__ */ (0,
|
|
28347
|
+
return /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
|
|
28096
28348
|
WalletRow,
|
|
28097
28349
|
{
|
|
28098
|
-
icon: wallet.icon ? /* @__PURE__ */ (0,
|
|
28350
|
+
icon: wallet.icon ? /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
|
|
28099
28351
|
"img",
|
|
28100
28352
|
{
|
|
28101
28353
|
src: wallet.icon,
|
|
28102
28354
|
alt: wallet.name,
|
|
28103
28355
|
className: "w-10 h-10 rounded-lg shrink-0"
|
|
28104
28356
|
}
|
|
28105
|
-
) : /* @__PURE__ */ (0,
|
|
28357
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime118.jsx)("div", { className: "w-10 h-10 rounded-lg shrink-0 bg-t_bg_tertiary bg-opacity-10" }),
|
|
28106
28358
|
name: wallet.name,
|
|
28107
28359
|
isConnected,
|
|
28108
28360
|
onClick: async () => {
|
|
@@ -28111,13 +28363,13 @@ var WalletPicker = ({ ecosystem, className, onClose }) => {
|
|
|
28111
28363
|
},
|
|
28112
28364
|
wallet.name
|
|
28113
28365
|
);
|
|
28114
|
-
}) : /* @__PURE__ */ (0,
|
|
28366
|
+
}) : /* @__PURE__ */ (0, import_jsx_runtime118.jsx)("div", { className: "text-center py-1 text-sm text-t_text_primary text-opacity-50", children: "No wallet found" }))
|
|
28115
28367
|
] })
|
|
28116
28368
|
] });
|
|
28117
28369
|
};
|
|
28118
28370
|
|
|
28119
28371
|
// src/components/Swap/WalletPickerView/index.tsx
|
|
28120
|
-
var
|
|
28372
|
+
var import_jsx_runtime119 = require("react/jsx-runtime");
|
|
28121
28373
|
var WalletPickerView = () => {
|
|
28122
28374
|
const {
|
|
28123
28375
|
openEVMWalletModal,
|
|
@@ -28136,7 +28388,7 @@ var WalletPickerView = () => {
|
|
|
28136
28388
|
if (!ecosystem) {
|
|
28137
28389
|
return null;
|
|
28138
28390
|
}
|
|
28139
|
-
return /* @__PURE__ */ (0,
|
|
28391
|
+
return /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
|
|
28140
28392
|
"div",
|
|
28141
28393
|
{
|
|
28142
28394
|
className: "fixed top-0 left-0 right-0 bottom-0 z-10 flex flex-col justify-end bg-[rgba(2,2,2,0.8)] sm:absolute sm:z-[2] sm:justify-start sm:bg-transparent",
|
|
@@ -28148,9 +28400,9 @@ var WalletPickerView = () => {
|
|
|
28148
28400
|
close();
|
|
28149
28401
|
}
|
|
28150
28402
|
},
|
|
28151
|
-
children: /* @__PURE__ */ (0,
|
|
28152
|
-
/* @__PURE__ */ (0,
|
|
28153
|
-
/* @__PURE__ */ (0,
|
|
28403
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime119.jsxs)("div", { className: "flex flex-col w-full h-[85vh] max-h-full overflow-hidden p-4 pt-2.5 rounded-t-[24px] border-t border-solid border-t_text_primary border-opacity-10 bg-gradient-to-r from-t_bg_secondary/50 to-t_bg_secondary/50 bg-t_bg_primary sm:h-full sm:p-0 sm:rounded-none sm:border-0 sm:bg-none sm:bg-transparent", children: [
|
|
28404
|
+
/* @__PURE__ */ (0, import_jsx_runtime119.jsx)("div", { className: "sm:hidden mx-auto mb-4 h-1 w-8 rounded-full bg-t_bg_tertiary bg-opacity-10 shrink-0" }),
|
|
28405
|
+
/* @__PURE__ */ (0, import_jsx_runtime119.jsx)(WalletPicker, { ecosystem, onClose: close })
|
|
28154
28406
|
] })
|
|
28155
28407
|
}
|
|
28156
28408
|
);
|
|
@@ -28161,51 +28413,51 @@ var useWalletPickerOpen = () => {
|
|
|
28161
28413
|
};
|
|
28162
28414
|
|
|
28163
28415
|
// src/components/Swap/index.tsx
|
|
28164
|
-
var
|
|
28416
|
+
var import_jsx_runtime120 = require("react/jsx-runtime");
|
|
28165
28417
|
var Swap = ({ onClose }) => {
|
|
28166
28418
|
const { tab, activePicker } = useSwapContext();
|
|
28167
28419
|
const walletPickerOpen = useWalletPickerOpen();
|
|
28168
|
-
const overlayView = (0,
|
|
28169
|
-
return tab === "Settings" ? /* @__PURE__ */ (0,
|
|
28420
|
+
const overlayView = (0, import_react44.useMemo)(() => {
|
|
28421
|
+
return tab === "Settings" ? /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(SettingsView, {}) : tab === "History" ? /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(HistoryView, {}) : null;
|
|
28170
28422
|
}, [tab]);
|
|
28171
|
-
return /* @__PURE__ */ (0,
|
|
28423
|
+
return /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(
|
|
28172
28424
|
"div",
|
|
28173
28425
|
{
|
|
28174
28426
|
className: `relative flex flex-col gap-6 p-4 sm:p-8 text-t_text_primary bg-gradient-to-r from-t_bg_tertiary/[0.01] to-t_bg_tertiary/[0.01] bg-t_bg_secondary bg-opacity-50 backdrop-blur-[48px] rounded-[32px] border border-solid border-t_text_primary border-opacity-10 flex-1`,
|
|
28175
28427
|
children: [
|
|
28176
|
-
/* @__PURE__ */ (0,
|
|
28177
|
-
activePicker && /* @__PURE__ */ (0,
|
|
28178
|
-
/* @__PURE__ */ (0,
|
|
28179
|
-
/* @__PURE__ */ (0,
|
|
28428
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsxs)("div", { className: "relative flex flex-col flex-1 min-h-0", children: [
|
|
28429
|
+
activePicker && /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(PickerView, {}),
|
|
28430
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)(WalletPickerView, {}),
|
|
28431
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(
|
|
28180
28432
|
"div",
|
|
28181
28433
|
{
|
|
28182
28434
|
className: `flex flex-col gap-6 flex-1 min-h-0 ${activePicker || walletPickerOpen ? "sm:invisible" : ""}`,
|
|
28183
28435
|
children: [
|
|
28184
|
-
/* @__PURE__ */ (0,
|
|
28185
|
-
/* @__PURE__ */ (0,
|
|
28186
|
-
/* @__PURE__ */ (0,
|
|
28436
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)(Header2, { onClose }),
|
|
28437
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsxs)("div", { className: "relative flex flex-col flex-1 min-h-0", children: [
|
|
28438
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
|
|
28187
28439
|
"div",
|
|
28188
28440
|
{
|
|
28189
28441
|
className: `flex flex-col flex-1 min-h-0 ${overlayView ? "invisible" : ""}`,
|
|
28190
|
-
children: /* @__PURE__ */ (0,
|
|
28442
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(SwapView, {})
|
|
28191
28443
|
}
|
|
28192
28444
|
),
|
|
28193
|
-
overlayView && /* @__PURE__ */ (0,
|
|
28445
|
+
overlayView && /* @__PURE__ */ (0, import_jsx_runtime120.jsx)("div", { className: "absolute inset-0 flex flex-col min-h-0", children: overlayView })
|
|
28194
28446
|
] })
|
|
28195
28447
|
]
|
|
28196
28448
|
}
|
|
28197
28449
|
)
|
|
28198
28450
|
] }),
|
|
28199
|
-
/* @__PURE__ */ (0,
|
|
28451
|
+
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)(PoweredBy, {})
|
|
28200
28452
|
]
|
|
28201
28453
|
}
|
|
28202
28454
|
);
|
|
28203
28455
|
};
|
|
28204
28456
|
|
|
28205
28457
|
// src/components/TextInput/index.tsx
|
|
28206
|
-
var
|
|
28207
|
-
var
|
|
28208
|
-
var TextInput = (0,
|
|
28458
|
+
var import_react45 = require("react");
|
|
28459
|
+
var import_jsx_runtime121 = require("react/jsx-runtime");
|
|
28460
|
+
var TextInput = (0, import_react45.forwardRef)((props, ref) => {
|
|
28209
28461
|
const {
|
|
28210
28462
|
inputIcon,
|
|
28211
28463
|
required,
|
|
@@ -28219,10 +28471,10 @@ var TextInput = (0, import_react42.forwardRef)((props, ref) => {
|
|
|
28219
28471
|
disabled = false,
|
|
28220
28472
|
className = ""
|
|
28221
28473
|
} = props;
|
|
28222
|
-
return /* @__PURE__ */ (0,
|
|
28223
|
-
/* @__PURE__ */ (0,
|
|
28474
|
+
return /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(import_jsx_runtime121.Fragment, { children: [
|
|
28475
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsxs)("div", { className: "flex items-center border border-solid border-t_text_primary border-opacity-10 rounded-lg py-0 px-3 gap-2 bg-t_bg_secondary ", children: [
|
|
28224
28476
|
inputIcon,
|
|
28225
|
-
/* @__PURE__ */ (0,
|
|
28477
|
+
/* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
|
|
28226
28478
|
"input",
|
|
28227
28479
|
{
|
|
28228
28480
|
ref,
|
|
@@ -28237,13 +28489,13 @@ var TextInput = (0, import_react42.forwardRef)((props, ref) => {
|
|
|
28237
28489
|
}
|
|
28238
28490
|
)
|
|
28239
28491
|
] }),
|
|
28240
|
-
error && /* @__PURE__ */ (0,
|
|
28241
|
-
warning && /* @__PURE__ */ (0,
|
|
28492
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("div", { className: "flex justify-between pt-[10px]", children: /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("div", { className: "px-5 text-t_text_red", children: error }) }),
|
|
28493
|
+
warning && /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("div", { className: "flex justify-between pt-[10px]", children: /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("div", { className: "px-5 text-t_text_orange", children: warning }) })
|
|
28242
28494
|
] });
|
|
28243
28495
|
});
|
|
28244
28496
|
|
|
28245
28497
|
// src/hooks/useTimer.ts
|
|
28246
|
-
var
|
|
28498
|
+
var import_react46 = require("react");
|
|
28247
28499
|
var TimeUtils = class {
|
|
28248
28500
|
static getTimeFromSeconds(seconds) {
|
|
28249
28501
|
const days = Math.floor(seconds / (60 * 60 * 24));
|
|
@@ -28263,11 +28515,11 @@ var useTimer = ({
|
|
|
28263
28515
|
onExpire,
|
|
28264
28516
|
autoStart = true
|
|
28265
28517
|
}) => {
|
|
28266
|
-
const [isRunning, setIsRunning] = (0,
|
|
28267
|
-
const [seconds, setSeconds] = (0,
|
|
28518
|
+
const [isRunning, setIsRunning] = (0, import_react46.useState)(autoStart);
|
|
28519
|
+
const [seconds, setSeconds] = (0, import_react46.useState)(
|
|
28268
28520
|
TimeUtils.getSecondsFromExpiry(expiryTimestamp)
|
|
28269
28521
|
);
|
|
28270
|
-
const tick = (0,
|
|
28522
|
+
const tick = (0, import_react46.useCallback)(() => {
|
|
28271
28523
|
const newSeconds = TimeUtils.getSecondsFromExpiry(expiryTimestamp);
|
|
28272
28524
|
if (newSeconds <= 0) {
|
|
28273
28525
|
if (onExpire) onExpire();
|
|
@@ -28275,14 +28527,14 @@ var useTimer = ({
|
|
|
28275
28527
|
}
|
|
28276
28528
|
setSeconds(newSeconds);
|
|
28277
28529
|
}, [expiryTimestamp, onExpire]);
|
|
28278
|
-
(0,
|
|
28530
|
+
(0, import_react46.useEffect)(() => {
|
|
28279
28531
|
if (!isRunning) return;
|
|
28280
28532
|
const intervalId = setInterval(tick, 1e3);
|
|
28281
28533
|
return () => clearInterval(intervalId);
|
|
28282
28534
|
}, [isRunning, tick]);
|
|
28283
|
-
const pause = (0,
|
|
28284
|
-
const resume = (0,
|
|
28285
|
-
const restart = (0,
|
|
28535
|
+
const pause = (0, import_react46.useCallback)(() => setIsRunning(false), []);
|
|
28536
|
+
const resume = (0, import_react46.useCallback)(() => setIsRunning(true), []);
|
|
28537
|
+
const restart = (0, import_react46.useCallback)((newExpiryTimestamp) => {
|
|
28286
28538
|
setIsRunning(true);
|
|
28287
28539
|
setSeconds(TimeUtils.getSecondsFromExpiry(newExpiryTimestamp));
|
|
28288
28540
|
}, []);
|
|
@@ -28297,37 +28549,37 @@ var useTimer = ({
|
|
|
28297
28549
|
var useTimer_default = useTimer;
|
|
28298
28550
|
|
|
28299
28551
|
// src/components/Timer/index.tsx
|
|
28300
|
-
var
|
|
28301
|
-
var
|
|
28552
|
+
var import_react47 = require("react");
|
|
28553
|
+
var import_jsx_runtime122 = require("react/jsx-runtime");
|
|
28302
28554
|
var Timer = ({
|
|
28303
28555
|
expiryTimestamp,
|
|
28304
28556
|
displayFormat = 2 /* Days */,
|
|
28305
28557
|
customTextOnExpire
|
|
28306
28558
|
}) => {
|
|
28307
|
-
const [expired, setExpired] = (0,
|
|
28559
|
+
const [expired, setExpired] = (0, import_react47.useState)(
|
|
28308
28560
|
expiryTimestamp.getTime() < Date.now()
|
|
28309
28561
|
);
|
|
28310
28562
|
const { seconds, minutes, hours, days, restart } = useTimer_default({
|
|
28311
28563
|
expiryTimestamp,
|
|
28312
28564
|
onExpire: () => setExpired(true)
|
|
28313
28565
|
});
|
|
28314
|
-
(0,
|
|
28566
|
+
(0, import_react47.useEffect)(() => {
|
|
28315
28567
|
restart(expiryTimestamp);
|
|
28316
28568
|
}, [expiryTimestamp]);
|
|
28317
|
-
return /* @__PURE__ */ (0,
|
|
28318
|
-
displayFormat === 0 /* Minutes */ && /* @__PURE__ */ (0,
|
|
28319
|
-
displayFormat === 1 /* Hours */ && /* @__PURE__ */ (0,
|
|
28320
|
-
displayFormat === 2 /* Days */ && /* @__PURE__ */ (0,
|
|
28569
|
+
return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(import_jsx_runtime122.Fragment, { children: expired && customTextOnExpire ? /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(import_jsx_runtime122.Fragment, { children: customTextOnExpire }) : /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(import_jsx_runtime122.Fragment, { children: [
|
|
28570
|
+
displayFormat === 0 /* Minutes */ && /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("span", { children: `${(days * 24 + hours) * 60 + minutes}:${seconds.toString().padStart(2, "0")}` }),
|
|
28571
|
+
displayFormat === 1 /* Hours */ && /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("span", { children: `${days * 24 + hours}:${minutes.toString().padStart(2, "0")}:${seconds.toString().padStart(2, "0")}` }),
|
|
28572
|
+
displayFormat === 2 /* Days */ && /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("span", { children: `${days}:${hours.toString().padStart(2, "0")}:${minutes.toString().padStart(2, "0")}:${seconds.toString().padStart(2, "0")}` })
|
|
28321
28573
|
] }) });
|
|
28322
28574
|
};
|
|
28323
28575
|
|
|
28324
28576
|
// src/components/TokenLogo/index.tsx
|
|
28325
|
-
var
|
|
28577
|
+
var import_react48 = require("react");
|
|
28326
28578
|
|
|
28327
28579
|
// src/components/TokenLogo/Unknown/index.tsx
|
|
28328
|
-
var
|
|
28580
|
+
var import_jsx_runtime123 = require("react/jsx-runtime");
|
|
28329
28581
|
var UnknownTokenLogo = ({ tokenName, className }) => {
|
|
28330
|
-
return /* @__PURE__ */ (0,
|
|
28582
|
+
return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
|
|
28331
28583
|
"div",
|
|
28332
28584
|
{
|
|
28333
28585
|
className: `rounded-full bg-white shadow-sm flex items-center justify-center text-black ${className}`,
|
|
@@ -28337,21 +28589,21 @@ var UnknownTokenLogo = ({ tokenName, className }) => {
|
|
|
28337
28589
|
};
|
|
28338
28590
|
|
|
28339
28591
|
// src/components/TokenLogo/index.tsx
|
|
28340
|
-
var
|
|
28592
|
+
var import_jsx_runtime124 = require("react/jsx-runtime");
|
|
28341
28593
|
var TokenLogo = ({
|
|
28342
28594
|
token,
|
|
28343
28595
|
className,
|
|
28344
28596
|
generatedLogoClassName
|
|
28345
28597
|
}) => {
|
|
28346
|
-
const [errorOcurred, setErrorOccured] = (0,
|
|
28347
|
-
(0,
|
|
28598
|
+
const [errorOcurred, setErrorOccured] = (0, import_react48.useState)(false);
|
|
28599
|
+
(0, import_react48.useEffect)(() => {
|
|
28348
28600
|
setErrorOccured(false);
|
|
28349
28601
|
}, [token?.address]);
|
|
28350
28602
|
if (!token) {
|
|
28351
28603
|
return null;
|
|
28352
28604
|
}
|
|
28353
28605
|
if (errorOcurred) {
|
|
28354
|
-
return /* @__PURE__ */ (0,
|
|
28606
|
+
return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
|
|
28355
28607
|
UnknownTokenLogo,
|
|
28356
28608
|
{
|
|
28357
28609
|
tokenName: token.name,
|
|
@@ -28359,7 +28611,7 @@ var TokenLogo = ({
|
|
|
28359
28611
|
}
|
|
28360
28612
|
);
|
|
28361
28613
|
}
|
|
28362
|
-
return token?.image ? /* @__PURE__ */ (0,
|
|
28614
|
+
return token?.image ? /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
|
|
28363
28615
|
"img",
|
|
28364
28616
|
{
|
|
28365
28617
|
src: token.image,
|
|
@@ -28367,7 +28619,7 @@ var TokenLogo = ({
|
|
|
28367
28619
|
className: `rounded-full ${className}`,
|
|
28368
28620
|
onError: () => setErrorOccured(true)
|
|
28369
28621
|
}
|
|
28370
|
-
) : /* @__PURE__ */ (0,
|
|
28622
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
|
|
28371
28623
|
UnknownTokenLogo,
|
|
28372
28624
|
{
|
|
28373
28625
|
tokenName: token.name,
|
|
@@ -28377,7 +28629,7 @@ var TokenLogo = ({
|
|
|
28377
28629
|
};
|
|
28378
28630
|
|
|
28379
28631
|
// src/components/TokenLogo/WithChain/index.tsx
|
|
28380
|
-
var
|
|
28632
|
+
var import_jsx_runtime125 = require("react/jsx-runtime");
|
|
28381
28633
|
var TokenLogoWithChain = ({
|
|
28382
28634
|
token,
|
|
28383
28635
|
chain,
|
|
@@ -28385,8 +28637,8 @@ var TokenLogoWithChain = ({
|
|
|
28385
28637
|
generatedLogoClassName,
|
|
28386
28638
|
chainLogoClassName
|
|
28387
28639
|
}) => {
|
|
28388
|
-
return /* @__PURE__ */ (0,
|
|
28389
|
-
/* @__PURE__ */ (0,
|
|
28640
|
+
return /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)("div", { className: "relative flex items-end pr-1 pb-1", children: [
|
|
28641
|
+
/* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
|
|
28390
28642
|
TokenLogo,
|
|
28391
28643
|
{
|
|
28392
28644
|
token,
|
|
@@ -28394,7 +28646,7 @@ var TokenLogoWithChain = ({
|
|
|
28394
28646
|
generatedLogoClassName
|
|
28395
28647
|
}
|
|
28396
28648
|
),
|
|
28397
|
-
chain && /* @__PURE__ */ (0,
|
|
28649
|
+
chain && /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
|
|
28398
28650
|
"img",
|
|
28399
28651
|
{
|
|
28400
28652
|
src: chain.image,
|
|
@@ -28406,7 +28658,7 @@ var TokenLogoWithChain = ({
|
|
|
28406
28658
|
};
|
|
28407
28659
|
|
|
28408
28660
|
// src/components/TxConfigForm/index.tsx
|
|
28409
|
-
var
|
|
28661
|
+
var import_react49 = require("react");
|
|
28410
28662
|
var import_react_error_boundary = require("react-error-boundary");
|
|
28411
28663
|
|
|
28412
28664
|
// localTheme.ts
|
|
@@ -28529,7 +28781,7 @@ function changeHostVariableColor(isLightMode, customStyles) {
|
|
|
28529
28781
|
}
|
|
28530
28782
|
|
|
28531
28783
|
// src/components/TxConfigForm/index.tsx
|
|
28532
|
-
var
|
|
28784
|
+
var import_jsx_runtime126 = require("react/jsx-runtime");
|
|
28533
28785
|
var normalizeTxConfigFormProps = (props) => {
|
|
28534
28786
|
return {
|
|
28535
28787
|
...props,
|
|
@@ -28539,21 +28791,21 @@ var normalizeTxConfigFormProps = (props) => {
|
|
|
28539
28791
|
};
|
|
28540
28792
|
var PendingTransactionsEmitter = ({ onPendingTransactionsChange }) => {
|
|
28541
28793
|
const { history } = useHistory();
|
|
28542
|
-
const pendingTransactions = (0,
|
|
28794
|
+
const pendingTransactions = (0, import_react49.useMemo)(
|
|
28543
28795
|
() => history.filter((entry) => entry.status === "IN_PROGRESS"),
|
|
28544
28796
|
[history]
|
|
28545
28797
|
);
|
|
28546
|
-
(0,
|
|
28798
|
+
(0, import_react49.useEffect)(() => {
|
|
28547
28799
|
if (onPendingTransactionsChange) {
|
|
28548
28800
|
onPendingTransactionsChange(pendingTransactions);
|
|
28549
28801
|
} else if (window.xPayOnPendingTransactionsChange) {
|
|
28550
28802
|
window.xPayOnPendingTransactionsChange(pendingTransactions);
|
|
28551
28803
|
}
|
|
28552
28804
|
}, [onPendingTransactionsChange, pendingTransactions]);
|
|
28553
|
-
return /* @__PURE__ */ (0,
|
|
28805
|
+
return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_jsx_runtime126.Fragment, {});
|
|
28554
28806
|
};
|
|
28555
28807
|
var TxConfigForm = (props) => {
|
|
28556
|
-
const normalizedProps = (0,
|
|
28808
|
+
const normalizedProps = (0, import_react49.useMemo)(
|
|
28557
28809
|
() => normalizeTxConfigFormProps(props),
|
|
28558
28810
|
[props]
|
|
28559
28811
|
);
|
|
@@ -28598,30 +28850,30 @@ var TxConfigForm = (props) => {
|
|
|
28598
28850
|
onClose();
|
|
28599
28851
|
}
|
|
28600
28852
|
};
|
|
28601
|
-
const wagmiConfig = (0,
|
|
28853
|
+
const wagmiConfig = (0, import_react49.useMemo)(
|
|
28602
28854
|
() => providedWagmiConfig ?? window.xPayWagmiConfig ?? getWagmiConfig(supportedChains),
|
|
28603
28855
|
[providedWagmiConfig, supportedChains]
|
|
28604
28856
|
);
|
|
28605
|
-
(0,
|
|
28857
|
+
(0, import_react49.useEffect)(() => {
|
|
28606
28858
|
changeHostVariableColor(lightTheme, styles);
|
|
28607
28859
|
}, [lightTheme, styles]);
|
|
28608
|
-
(0,
|
|
28860
|
+
(0, import_react49.useEffect)(() => {
|
|
28609
28861
|
if (override?.apiUrl) {
|
|
28610
28862
|
setApiUrl(override?.apiUrl);
|
|
28611
28863
|
}
|
|
28612
28864
|
}, [override?.apiUrl]);
|
|
28613
|
-
return /* @__PURE__ */ (0,
|
|
28865
|
+
return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
|
|
28614
28866
|
import_react_error_boundary.ErrorBoundary,
|
|
28615
28867
|
{
|
|
28616
|
-
FallbackComponent: () => /* @__PURE__ */ (0,
|
|
28617
|
-
children: /* @__PURE__ */ (0,
|
|
28618
|
-
/* @__PURE__ */ (0,
|
|
28868
|
+
FallbackComponent: () => /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("div", { children: "Something went wrong, please contact XSwap." }),
|
|
28869
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(AllWalletsConfig, { wagmiConfig, children: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(WalletProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(HistoryProvider, { children: [
|
|
28870
|
+
/* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
|
|
28619
28871
|
PendingTransactionsEmitter,
|
|
28620
28872
|
{
|
|
28621
28873
|
onPendingTransactionsChange
|
|
28622
28874
|
}
|
|
28623
28875
|
),
|
|
28624
|
-
/* @__PURE__ */ (0,
|
|
28876
|
+
/* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
|
|
28625
28877
|
SwapProvider,
|
|
28626
28878
|
{
|
|
28627
28879
|
integrationConfig: {
|
|
@@ -28651,14 +28903,14 @@ var TxConfigForm = (props) => {
|
|
|
28651
28903
|
},
|
|
28652
28904
|
supportedChains,
|
|
28653
28905
|
overlay,
|
|
28654
|
-
children: /* @__PURE__ */ (0,
|
|
28906
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(TransactionProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(TxUIWrapper, { children: overlay ? /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
|
|
28655
28907
|
"div",
|
|
28656
28908
|
{
|
|
28657
28909
|
className: "top-0 left-0 right-0 bottom-0 bg-[rgba(0,0,0,0.8)] fixed flex flex-col items-center justify-center z-10",
|
|
28658
28910
|
onMouseDown: onBackdropClick,
|
|
28659
|
-
children: /* @__PURE__ */ (0,
|
|
28911
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("div", { className: "relative rounded-[32px] overflow-auto text-t_text_primary w-x_modal min-w-x_modal max-w-x_modal min-h-[532px] flex flex-col", children: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(Swap, { onSubmit, onClose }) })
|
|
28660
28912
|
}
|
|
28661
|
-
) : /* @__PURE__ */ (0,
|
|
28913
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("div", { className: "rounded-[32px] overflow-auto text-t_text_primary min-h-[532px] w-x_modal min-w-x_modal max-w-x_modal flex flex-col", children: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(Swap, { onSubmit: () => {
|
|
28662
28914
|
}, onClose: () => {
|
|
28663
28915
|
} }) }) }) })
|
|
28664
28916
|
}
|
|
@@ -28698,7 +28950,7 @@ var openTxConfigForm = async ({
|
|
|
28698
28950
|
throw new Error("XPay was incorrectly initialized");
|
|
28699
28951
|
}
|
|
28700
28952
|
xpayRoot.render(
|
|
28701
|
-
/* @__PURE__ */ (0,
|
|
28953
|
+
/* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
|
|
28702
28954
|
TxConfigForm,
|
|
28703
28955
|
{
|
|
28704
28956
|
integratorId,
|
|
@@ -28744,13 +28996,13 @@ var openTxConfigForm = async ({
|
|
|
28744
28996
|
var import_free_solid_svg_icons2 = require("@fortawesome/free-solid-svg-icons");
|
|
28745
28997
|
var import_react_fontawesome2 = require("@fortawesome/react-fontawesome");
|
|
28746
28998
|
var import_date_fns3 = require("date-fns");
|
|
28747
|
-
var
|
|
28999
|
+
var import_react50 = require("react");
|
|
28748
29000
|
|
|
28749
29001
|
// src/components/TxDataCard/TokenDetails/index.tsx
|
|
28750
|
-
var
|
|
29002
|
+
var import_jsx_runtime127 = require("react/jsx-runtime");
|
|
28751
29003
|
var TokenDetails = ({ chain, token, amount }) => {
|
|
28752
|
-
return /* @__PURE__ */ (0,
|
|
28753
|
-
/* @__PURE__ */ (0,
|
|
29004
|
+
return /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)("div", { className: "flex gap-2", children: [
|
|
29005
|
+
/* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
|
|
28754
29006
|
TokenLogoWithChain,
|
|
28755
29007
|
{
|
|
28756
29008
|
token,
|
|
@@ -28760,22 +29012,22 @@ var TokenDetails = ({ chain, token, amount }) => {
|
|
|
28760
29012
|
chainLogoClassName: "w-5"
|
|
28761
29013
|
}
|
|
28762
29014
|
),
|
|
28763
|
-
/* @__PURE__ */ (0,
|
|
28764
|
-
/* @__PURE__ */ (0,
|
|
28765
|
-
/* @__PURE__ */ (0,
|
|
29015
|
+
/* @__PURE__ */ (0, import_jsx_runtime127.jsxs)("div", { className: "flex flex-col text-[12px]", children: [
|
|
29016
|
+
/* @__PURE__ */ (0, import_jsx_runtime127.jsx)("div", { className: "text-t_text_primary text-nowrap", children: `${Number(amount) < 1e-4 ? "<0.0001" : amount} ${token?.symbol ? token?.symbol : "unknown"}` }),
|
|
29017
|
+
/* @__PURE__ */ (0, import_jsx_runtime127.jsx)("div", { className: "text-xs text-t_text_primary text-opacity-50", children: chain?.displayName })
|
|
28766
29018
|
] })
|
|
28767
29019
|
] });
|
|
28768
29020
|
};
|
|
28769
29021
|
|
|
28770
29022
|
// src/components/TxDataCard/TxDataCardUI/index.tsx
|
|
28771
|
-
var
|
|
29023
|
+
var import_jsx_runtime128 = require("react/jsx-runtime");
|
|
28772
29024
|
var TxDataCardUI = ({
|
|
28773
29025
|
transaction,
|
|
28774
29026
|
supportedChains,
|
|
28775
29027
|
srcToken,
|
|
28776
29028
|
dstToken
|
|
28777
29029
|
}) => {
|
|
28778
|
-
const getDate = (0,
|
|
29030
|
+
const getDate = (0, import_react50.useCallback)((blockTimestamp) => {
|
|
28779
29031
|
return (0, import_date_fns3.format)(new Date(blockTimestamp * 1e3), "d MMM yyyy HH:mm:ss");
|
|
28780
29032
|
}, []);
|
|
28781
29033
|
const date = getDate(transaction.timestamp);
|
|
@@ -28795,21 +29047,21 @@ var TxDataCardUI = ({
|
|
|
28795
29047
|
const dstChain = supportedChains.find(
|
|
28796
29048
|
(chain) => chain.chainId === transaction.targetChainId
|
|
28797
29049
|
);
|
|
28798
|
-
return /* @__PURE__ */ (0,
|
|
28799
|
-
/* @__PURE__ */ (0,
|
|
28800
|
-
/* @__PURE__ */ (0,
|
|
28801
|
-
/* @__PURE__ */ (0,
|
|
28802
|
-
transaction.status === "IN_PROGRESS" ? /* @__PURE__ */ (0,
|
|
28803
|
-
/* @__PURE__ */ (0,
|
|
29050
|
+
return /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)("div", { className: "flex flex-col border border-t_text_primary border-opacity-10 rounded-lg bg-t_bg_primary p-4 gap-4 mb-2", children: [
|
|
29051
|
+
/* @__PURE__ */ (0, import_jsx_runtime128.jsxs)("div", { className: "flex items-center gap-2 border-b border-solid border-t_text_primary border-opacity-10 pb-1", children: [
|
|
29052
|
+
/* @__PURE__ */ (0, import_jsx_runtime128.jsx)("div", { className: "text-xs text-t_text_primary text-opacity-50", children: date }),
|
|
29053
|
+
/* @__PURE__ */ (0, import_jsx_runtime128.jsxs)("div", { className: "flex grow justify-end items-center h-6", children: [
|
|
29054
|
+
transaction.status === "IN_PROGRESS" ? /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)("div", { className: "flex items-center grow justify-end text-xs", children: [
|
|
29055
|
+
/* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
|
|
28804
29056
|
import_react_fontawesome2.FontAwesomeIcon,
|
|
28805
29057
|
{
|
|
28806
29058
|
icon: import_free_solid_svg_icons2.faHourglassHalf,
|
|
28807
29059
|
className: "w-4 h-4 mr-1 text-t_text_orange"
|
|
28808
29060
|
}
|
|
28809
29061
|
),
|
|
28810
|
-
/* @__PURE__ */ (0,
|
|
29062
|
+
/* @__PURE__ */ (0, import_jsx_runtime128.jsxs)("div", { className: "text-xs text-t_text_orange min-w-[108px]", children: [
|
|
28811
29063
|
"In progress (",
|
|
28812
|
-
/* @__PURE__ */ (0,
|
|
29064
|
+
/* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
|
|
28813
29065
|
Timer,
|
|
28814
29066
|
{
|
|
28815
29067
|
displayFormat: 0 /* Minutes */,
|
|
@@ -28819,8 +29071,8 @@ var TxDataCardUI = ({
|
|
|
28819
29071
|
),
|
|
28820
29072
|
")"
|
|
28821
29073
|
] })
|
|
28822
|
-
] }) : transaction.status === "DONE" ? /* @__PURE__ */ (0,
|
|
28823
|
-
/* @__PURE__ */ (0,
|
|
29074
|
+
] }) : transaction.status === "DONE" ? /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("div", { className: "flex items-center grow justify-end text-xs", children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("div", { className: "mr-1 text-t_text_green", children: "Done" }) }) : transaction.status === "REVERTED" ? /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("div", { className: "flex items-center grow justify-end text-xs", children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("div", { className: "mr-1 text-t_text_red", children: "Reverted" }) }) : null,
|
|
29075
|
+
/* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
|
|
28824
29076
|
"a",
|
|
28825
29077
|
{
|
|
28826
29078
|
href: `${transaction.messageId ? `${CCIP_EXPLORER}${transaction.messageId}` : `${supportedChains.find(
|
|
@@ -28830,7 +29082,7 @@ var TxDataCardUI = ({
|
|
|
28830
29082
|
rel: "noreferrer",
|
|
28831
29083
|
className: "no-underline ml-1.5 text-t_text_primary",
|
|
28832
29084
|
"aria-label": "Show the transaction in the chain explorer",
|
|
28833
|
-
children: /* @__PURE__ */ (0,
|
|
29085
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
|
|
28834
29086
|
import_react_fontawesome2.FontAwesomeIcon,
|
|
28835
29087
|
{
|
|
28836
29088
|
icon: import_free_solid_svg_icons2.faArrowUpRightFromSquare,
|
|
@@ -28841,8 +29093,8 @@ var TxDataCardUI = ({
|
|
|
28841
29093
|
)
|
|
28842
29094
|
] })
|
|
28843
29095
|
] }),
|
|
28844
|
-
/* @__PURE__ */ (0,
|
|
28845
|
-
/* @__PURE__ */ (0,
|
|
29096
|
+
/* @__PURE__ */ (0, import_jsx_runtime128.jsx)("div", { className: "flex flex-wrap gap-8", children: /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
29097
|
+
/* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
|
|
28846
29098
|
TokenDetails,
|
|
28847
29099
|
{
|
|
28848
29100
|
chain: srcChain,
|
|
@@ -28850,15 +29102,15 @@ var TxDataCardUI = ({
|
|
|
28850
29102
|
amount: transferredAmount
|
|
28851
29103
|
}
|
|
28852
29104
|
),
|
|
28853
|
-
transaction.tokenOutAddress && /* @__PURE__ */ (0,
|
|
28854
|
-
/* @__PURE__ */ (0,
|
|
29105
|
+
transaction.tokenOutAddress && /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(import_jsx_runtime128.Fragment, { children: [
|
|
29106
|
+
/* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
|
|
28855
29107
|
import_react_fontawesome2.FontAwesomeIcon,
|
|
28856
29108
|
{
|
|
28857
29109
|
icon: import_free_solid_svg_icons2.faArrowRight,
|
|
28858
29110
|
className: "w-5 h-5 text-t_text_primary opacity-50 mx-1.5"
|
|
28859
29111
|
}
|
|
28860
29112
|
),
|
|
28861
|
-
/* @__PURE__ */ (0,
|
|
29113
|
+
/* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
|
|
28862
29114
|
TokenDetails,
|
|
28863
29115
|
{
|
|
28864
29116
|
chain: dstChain,
|
|
@@ -28872,11 +29124,11 @@ var TxDataCardUI = ({
|
|
|
28872
29124
|
};
|
|
28873
29125
|
|
|
28874
29126
|
// src/components/TxDataCard/index.tsx
|
|
28875
|
-
var
|
|
29127
|
+
var import_jsx_runtime129 = require("react/jsx-runtime");
|
|
28876
29128
|
|
|
28877
29129
|
// src/components/TxModal/index.tsx
|
|
28878
29130
|
var import_react_dom2 = require("react-dom");
|
|
28879
|
-
var
|
|
29131
|
+
var import_jsx_runtime130 = require("react/jsx-runtime");
|
|
28880
29132
|
var TxModal = ({
|
|
28881
29133
|
id: id2,
|
|
28882
29134
|
children,
|
|
@@ -28892,24 +29144,24 @@ var TxModal = ({
|
|
|
28892
29144
|
}
|
|
28893
29145
|
};
|
|
28894
29146
|
return (0, import_react_dom2.createPortal)(
|
|
28895
|
-
/* @__PURE__ */ (0,
|
|
29147
|
+
/* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
|
|
28896
29148
|
"div",
|
|
28897
29149
|
{
|
|
28898
29150
|
className: "fixed box-border inset-0 z-20 flex items-center justify-center bg-black bg-opacity-80",
|
|
28899
29151
|
onMouseDown: onBackdropClick,
|
|
28900
|
-
children: /* @__PURE__ */ (0,
|
|
29152
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)(
|
|
28901
29153
|
"div",
|
|
28902
29154
|
{
|
|
28903
29155
|
className: `relative rounded-[32px] p-6 sm:p-8 w-full min-w-[340px] overflow-auto max-w-[var(--modal-width,588px)] backdrop-blur-[32px] bg-t_bg_secondary bg-opacity-75 border border-solid ${type === "warning" ? "border-t_warning_dark" : type === "waiting" ? "border-t_main_accent_dark" : "border-t_text_primary border-opacity-10"} ${className}`,
|
|
28904
29156
|
children: [
|
|
28905
|
-
(type === "error" || type === "success") && /* @__PURE__ */ (0,
|
|
29157
|
+
(type === "error" || type === "success") && /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
|
|
28906
29158
|
"div",
|
|
28907
29159
|
{
|
|
28908
29160
|
"aria-hidden": true,
|
|
28909
29161
|
className: `absolute inset-0 rounded-[inherit] pointer-events-none ${type === "error" ? "tx-modal-glow-error" : "tx-modal-glow-success"}`
|
|
28910
29162
|
}
|
|
28911
29163
|
),
|
|
28912
|
-
/* @__PURE__ */ (0,
|
|
29164
|
+
/* @__PURE__ */ (0, import_jsx_runtime130.jsx)("div", { className: "relative", children })
|
|
28913
29165
|
]
|
|
28914
29166
|
}
|
|
28915
29167
|
)
|
|
@@ -28921,30 +29173,30 @@ var TxModal = ({
|
|
|
28921
29173
|
};
|
|
28922
29174
|
|
|
28923
29175
|
// src/components/TxStatusButton/index.tsx
|
|
28924
|
-
var
|
|
28925
|
-
var
|
|
29176
|
+
var import_react51 = require("react");
|
|
29177
|
+
var import_jsx_runtime131 = require("react/jsx-runtime");
|
|
28926
29178
|
var TxStatusButton = ({
|
|
28927
29179
|
transaction,
|
|
28928
29180
|
supportedChains,
|
|
28929
29181
|
srcToken,
|
|
28930
29182
|
dstToken
|
|
28931
29183
|
}) => {
|
|
28932
|
-
const [isWide, setIsWide] = (0,
|
|
28933
|
-
const background = (0,
|
|
29184
|
+
const [isWide, setIsWide] = (0, import_react51.useState)(false);
|
|
29185
|
+
const background = (0, import_react51.useMemo)(
|
|
28934
29186
|
() => transaction?.status === "DONE" ? "bg-t_bg_primary bg-gradient-to-r from-t_success_light/20 to-t_success_dark/20" : "bg-t_bg_primary bg-gradient-to-r from-t_main_accent_light/20 to-t_main_accent_dark/20]",
|
|
28935
29187
|
[transaction]
|
|
28936
29188
|
);
|
|
28937
|
-
const border = (0,
|
|
29189
|
+
const border = (0, import_react51.useMemo)(
|
|
28938
29190
|
() => transaction?.status === "DONE" ? "border border-solid border-t_success_dark" : "border border-solid border-t_main_accent_dark",
|
|
28939
29191
|
[transaction]
|
|
28940
29192
|
);
|
|
28941
|
-
return /* @__PURE__ */ (0,
|
|
29193
|
+
return /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)(
|
|
28942
29194
|
"div",
|
|
28943
29195
|
{
|
|
28944
29196
|
className: "flex gap-2 items-end justify-end flex-wrap",
|
|
28945
29197
|
onClick: () => setIsWide((x) => !x),
|
|
28946
29198
|
children: [
|
|
28947
|
-
isWide && /* @__PURE__ */ (0,
|
|
29199
|
+
isWide && /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
|
|
28948
29200
|
TxDataCardUI,
|
|
28949
29201
|
{
|
|
28950
29202
|
transaction,
|
|
@@ -28953,15 +29205,15 @@ var TxStatusButton = ({
|
|
|
28953
29205
|
dstToken
|
|
28954
29206
|
}
|
|
28955
29207
|
),
|
|
28956
|
-
/* @__PURE__ */ (0,
|
|
29208
|
+
/* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
|
|
28957
29209
|
"div",
|
|
28958
29210
|
{
|
|
28959
29211
|
className: `text-t_text_primary rounded-xl h-14 w-20 mb-2 cursor-pointer ${background} ${border}`,
|
|
28960
|
-
children: /* @__PURE__ */ (0,
|
|
28961
|
-
/* @__PURE__ */ (0,
|
|
28962
|
-
/* @__PURE__ */ (0,
|
|
28963
|
-
/* @__PURE__ */ (0,
|
|
28964
|
-
/* @__PURE__ */ (0,
|
|
29212
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("div", { className: "flex gap-2 items-center h-14 w-20 justify-center fill-t_text_primary", children: [
|
|
29213
|
+
/* @__PURE__ */ (0, import_jsx_runtime131.jsx)("div", { className: `${isWide ? "rotate-180" : ""}`, children: /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(ArrowLeftIcon, {}) }),
|
|
29214
|
+
/* @__PURE__ */ (0, import_jsx_runtime131.jsx)("div", { className: "relative flex items-center justify-center w-9 h-9", children: transaction?.status === "DONE" ? /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("div", { className: "w-5 h-5 fill-t_success_dark", children: /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(CheckIcon, {}) }) : /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)(import_jsx_runtime131.Fragment, { children: [
|
|
29215
|
+
/* @__PURE__ */ (0, import_jsx_runtime131.jsx)("div", { className: "w-5 h-5", children: /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(XSwapLogo, {}) }),
|
|
29216
|
+
/* @__PURE__ */ (0, import_jsx_runtime131.jsx)("div", { className: "absolute flex items-center justify-center top-0 left-0 right-0 bottom-0 text-t_text_primary", children: /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(Spinner, { className: "w-10 h-10" }) })
|
|
28965
29217
|
] }) })
|
|
28966
29218
|
] })
|
|
28967
29219
|
}
|
|
@@ -28998,22 +29250,22 @@ var updateTransactionDoneInRenderedTransactions = (hash3) => {
|
|
|
28998
29250
|
});
|
|
28999
29251
|
};
|
|
29000
29252
|
var renderTxStatusButtons = () => {
|
|
29001
|
-
const buttons = renderedTransactions.map((item) => /* @__PURE__ */ (0,
|
|
29253
|
+
const buttons = renderedTransactions.map((item) => /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(TxStatusButton, { ...item }, item.transaction.hash));
|
|
29002
29254
|
if (xpayTxStatusRoot === null) {
|
|
29003
29255
|
throw new Error("XPay was incorrectly initialized");
|
|
29004
29256
|
}
|
|
29005
29257
|
xpayTxStatusRoot.render(
|
|
29006
|
-
/* @__PURE__ */ (0,
|
|
29258
|
+
/* @__PURE__ */ (0, import_jsx_runtime131.jsx)("div", { className: "fixed bottom-5 right-2 flex flex-col gap-3 pl-9 items-end w-full z-50", children: buttons })
|
|
29007
29259
|
);
|
|
29008
29260
|
};
|
|
29009
29261
|
|
|
29010
29262
|
// src/utils/webComponents.ts
|
|
29011
29263
|
var import_core2 = __toESM(require("@r2wc/core"));
|
|
29012
|
-
var
|
|
29264
|
+
var import_react52 = __toESM(require("react"));
|
|
29013
29265
|
var import_client3 = require("react-dom/client");
|
|
29014
29266
|
var mount = (container, ReactComponent, props) => {
|
|
29015
29267
|
const root = (0, import_client3.createRoot)(container);
|
|
29016
|
-
const element =
|
|
29268
|
+
const element = import_react52.default.createElement(ReactComponent, props);
|
|
29017
29269
|
root.render(element);
|
|
29018
29270
|
return {
|
|
29019
29271
|
root,
|
|
@@ -29021,7 +29273,7 @@ var mount = (container, ReactComponent, props) => {
|
|
|
29021
29273
|
};
|
|
29022
29274
|
};
|
|
29023
29275
|
var update2 = ({ root, ReactComponent }, props) => {
|
|
29024
|
-
const element =
|
|
29276
|
+
const element = import_react52.default.createElement(ReactComponent, props);
|
|
29025
29277
|
root.render(element);
|
|
29026
29278
|
};
|
|
29027
29279
|
var unmount = ({ root }) => {
|
|
@@ -29032,8 +29284,8 @@ var createWebComponent = (ReactComponent, options = {}) => {
|
|
|
29032
29284
|
};
|
|
29033
29285
|
|
|
29034
29286
|
// src/components/TxWidgetWC/index.tsx
|
|
29035
|
-
var
|
|
29036
|
-
var
|
|
29287
|
+
var import_react53 = require("react");
|
|
29288
|
+
var import_jsx_runtime132 = require("react/jsx-runtime");
|
|
29037
29289
|
var TxWidget = ({
|
|
29038
29290
|
integratorId,
|
|
29039
29291
|
dstChain: dstChainId,
|
|
@@ -29063,15 +29315,15 @@ var TxWidget = ({
|
|
|
29063
29315
|
integratorFeeReceiverAddress,
|
|
29064
29316
|
highlightedDstTokens
|
|
29065
29317
|
}) => {
|
|
29066
|
-
const [loading, setLoading] = (0,
|
|
29067
|
-
const [supportedChains, setSupportedChains] = (0,
|
|
29068
|
-
const [srcTokenAddr, setSrcTokenAddr] = (0,
|
|
29318
|
+
const [loading, setLoading] = (0, import_react53.useState)(true);
|
|
29319
|
+
const [supportedChains, setSupportedChains] = (0, import_react53.useState)([]);
|
|
29320
|
+
const [srcTokenAddr, setSrcTokenAddr] = (0, import_react53.useState)(
|
|
29069
29321
|
void 0
|
|
29070
29322
|
);
|
|
29071
|
-
const [dstTokenAddr, setDstTokenAddr] = (0,
|
|
29323
|
+
const [dstTokenAddr, setDstTokenAddr] = (0, import_react53.useState)(
|
|
29072
29324
|
void 0
|
|
29073
29325
|
);
|
|
29074
|
-
(0,
|
|
29326
|
+
(0, import_react53.useEffect)(() => {
|
|
29075
29327
|
(async () => {
|
|
29076
29328
|
setLoading(true);
|
|
29077
29329
|
if (override?.apiUrl) {
|
|
@@ -29092,7 +29344,7 @@ var TxWidget = ({
|
|
|
29092
29344
|
console.error("Error parsing styles:", error);
|
|
29093
29345
|
}
|
|
29094
29346
|
})();
|
|
29095
|
-
(0,
|
|
29347
|
+
(0, import_react53.useEffect)(() => {
|
|
29096
29348
|
const newSrcTokenAddr = resolveTokenAddress(
|
|
29097
29349
|
srcTokenId,
|
|
29098
29350
|
srcChainId,
|
|
@@ -29106,9 +29358,9 @@ var TxWidget = ({
|
|
|
29106
29358
|
setSrcTokenAddr(newSrcTokenAddr);
|
|
29107
29359
|
setDstTokenAddr(newDstTokenAddr);
|
|
29108
29360
|
}, [srcTokenId, srcChainId, dstTokenId, dstChainId, supportedChains]);
|
|
29109
|
-
return /* @__PURE__ */ (0,
|
|
29110
|
-
/* @__PURE__ */ (0,
|
|
29111
|
-
loading ? /* @__PURE__ */ (0,
|
|
29361
|
+
return /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)(import_jsx_runtime132.Fragment, { children: [
|
|
29362
|
+
/* @__PURE__ */ (0, import_jsx_runtime132.jsx)("style", { children: global_default }),
|
|
29363
|
+
loading ? /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("div", { className: "min-h-[532px] w-full flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(Spinner, { className: "w-10 h-10" }) }) : /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
|
|
29112
29364
|
TxConfigForm,
|
|
29113
29365
|
{
|
|
29114
29366
|
integratorId,
|
|
@@ -29187,8 +29439,8 @@ var createTxWidgetWC = () => {
|
|
|
29187
29439
|
|
|
29188
29440
|
// src/components/TxWidgetWCWrapped/index.tsx
|
|
29189
29441
|
var import_react_query2 = require("@tanstack/react-query");
|
|
29190
|
-
var
|
|
29191
|
-
var
|
|
29442
|
+
var import_react54 = require("react");
|
|
29443
|
+
var import_jsx_runtime133 = require("react/jsx-runtime");
|
|
29192
29444
|
var TxWidgetWC = createTxWidgetWC();
|
|
29193
29445
|
if (!import_react_query2.isServer && typeof customElements !== "undefined") {
|
|
29194
29446
|
if (!customElements.get("xpay-widget")) {
|
|
@@ -29228,7 +29480,7 @@ var TxWidgetWCWrapped = ({
|
|
|
29228
29480
|
if (typeof window !== "undefined") {
|
|
29229
29481
|
window.xPayWagmiConfig = wagmiConfig;
|
|
29230
29482
|
}
|
|
29231
|
-
(0,
|
|
29483
|
+
(0, import_react54.useEffect)(() => {
|
|
29232
29484
|
window.xPayOnPendingTransactionsChange = onPendingTransactionsChange;
|
|
29233
29485
|
window.xPayOnDstTokenChange = onDstTokenChange;
|
|
29234
29486
|
window.xPayOnDstChainChange = onDstChainChange;
|
|
@@ -29243,7 +29495,7 @@ var TxWidgetWCWrapped = ({
|
|
|
29243
29495
|
onSrcChainChange,
|
|
29244
29496
|
onConnectWallet
|
|
29245
29497
|
]);
|
|
29246
|
-
return /* @__PURE__ */ (0,
|
|
29498
|
+
return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
|
|
29247
29499
|
"xpay-widget",
|
|
29248
29500
|
{
|
|
29249
29501
|
"integrator-id": integratorId,
|