UNPKG

@privy-io/react-auth

Version:

React client for the Privy Auth API

70 lines (61 loc) 5.64 kB
import{createPublicClient as e,http as r}from"viem";import{UsdcAddressMap as a,formatWalletAddress as o}from"@privy-io/js-sdk-core";import{a as i}from"./getPublicClient-B4uPLKn-.mjs";import{g as n}from"./getErc20Balance-DA4dGV9O.mjs";import{jsx as t,jsxs as s,Fragment as c}from"react/jsx-runtime";import{useRef as m}from"react";import{c as l,B as d}from"./ModalHeader-D8-mhjp4.mjs";import{b as h,R as p}from"./Layouts-BlFm53ED.mjs";import{t as u}from"./FundWalletMethodHeader-Cfci4-83.mjs";import{R as f}from"./Row-C9vrS4Zi.mjs";import{E as g}from"./ErrorMessage-D8VaAP5m.mjs";import{V as b,L as y}from"./Value-tcJV9e0L.mjs";import{S as v}from"./Subtitle-CV-2yKE4.mjs";import{T as j}from"./Title-BnzYV3Is.mjs";import w from"@heroicons/react/24/outline/WalletIcon";import{styled as C}from"styled-components";import{g as x}from"./getChainName-DjpPdUSc.mjs";import{C as k}from"./Chip-D2-wZOHJ.mjs";import{N}from"./NetworkIcon-B48ilzF8.mjs";import{B as T,a as B}from"./shared-FM0rljBt.mjs";import{Menu as $,MenuButton as A,MenuItems as I,MenuItem as S}from"@headlessui/react";import E from"@heroicons/react/24/outline/ChevronDownIcon";import{f as F}from"./formatErc20TokenAmount-BuPk9xcy.mjs";import{g as P}from"./ethers-D1WT71Ay.mjs";import{F as M,a as L,b as R,c as U,d as W}from"./styles-BmZHuqSX.mjs";const H=({chains:o,appId:t,address:s,rpcConfig:c,includeUsdc:m})=>Promise.all(o.map((async o=>{let l=e({chain:o,transport:r(i(o,c,t))}),d=await l.getBalance({address:s}).catch((()=>0n)),h=null,p=a[o.id];if(m&&p){let{balance:e}=await n({address:s,chain:o,rpcConfig:c,appId:t,erc20Address:p});h=e}return{balance:d,erc20Balance:h,erc20Address:p,chain:o}}))),Q=({balance:e,className:r,chain:a})=>/*#__PURE__*/t(T,{className:r,$state:void 0,children:/*#__PURE__*/t(V,{balance:e,chain:a})}),V=({balance:e,chain:r})=>/*#__PURE__*/s(c,{children:[/*#__PURE__*/s(q,{children:[/*#__PURE__*/t(D,{chainId:"object"==typeof r?r.id:"solana"}),/*#__PURE__*/t(b,{children:"object"==typeof r?r.name:x(r)})]}),/*#__PURE__*/s(k,{isLoading:!1,isPulsing:!1,color:"gray",children:[/*#__PURE__*/t(z,{children:/*#__PURE__*/t(w,{})}),e]})]});let q=C.div` display: flex; align-items: center; `,z=C.div` height: 0.75rem; width: 0.75rem; margin-right: 0.2rem; `,D=C(N)` height: 1.25rem; width: 1.25rem; display: inline-block; margin-right: 0.5rem; border-radius: 4px; `;const O=({options:e,onSelect:r,selected:a,className:o})=>/*#__PURE__*/s($,{as:Y,children:[/*#__PURE__*/s(A,{as:X,children:[/*#__PURE__*/t(V,{balance:a.balance,chain:a.chain}),/*#__PURE__*/t(K,{height:16})]}),/*#__PURE__*/t(I,{as:G,className:o,children:e.map(((e,a)=>/*#__PURE__*/t(S,{as:J,onClick:()=>r(a),children:/*#__PURE__*/t(V,{balance:e.balance,chain:e.chain})},a)))})]});let Y=C.div` width: 100%; position: relative; `,G=C.div` width: 100%; margin-top: 0.5rem; position: absolute; background-color: var(--privy-color-background); border-radius: var(--privy-border-radius-md); overflow-x: hidden; overflow-y: auto; box-shadow: 0px 1px 2px 0px rgba(16, 24, 40, 0.05); max-height: 11.75rem; && { border: solid 1px var(--privy-color-foreground-4); } z-index: 1; `,J=C.button` width: 100%; display: flex; justify-content: space-between; && { padding: 1rem; } :not(:last-child) { border-bottom: solid 1px var(--privy-color-foreground-4); } :hover { background: var(--privy-color-background-2); } `,K=C(E)` height: 1rem; margin-left: 0.5rem; `,X=C.button` ${B} /* Push the chip all the way to the right */ span { margin-left: auto; } ${K} { transition: rotate 100ms ease-in; } &[aria-expanded='true'] { ${K} { rotate: -180deg; } } `;const Z=({displayName:e,errorMessage:r,configuredFundingChain:a,formattedBalance:i,fundingAmount:n,fundingCurrency:b,fundingAmountInUsd:w,options:C,selectedOption:k,isPreparing:N,isSubmitting:T,addressToFund:B,fundingWalletAddress:$,onSubmit:A,onSelect:I,onAmountChange:S,erc20ContractInfo:E})=>{let H=m(null);/*#__PURE__*/return s(c,{children:[/*#__PURE__*/t(u,{}),/*#__PURE__*/t(h,{}),/*#__PURE__*/t(j,{children:"Transfer from another network"}),/*#__PURE__*/s(v,{children:["You need more funds on the"," ","object"==typeof a?a.name:x(a)," ","network. Bridge from another blockchain network."]}),/*#__PURE__*/s(M,{style:{marginTop:"2rem"},children:[/*#__PURE__*/s(L,{onClick:()=>H.current?.focus(),children:[/*#__PURE__*/t(R,{ref:H,value:n,onChange:e=>{let r=e.target.value;if(/^[0-9.]*$/.test(r)&&r.split(".").length-1<=1){let e=/\.$/.test(r)?".":"",a=Number(r.replace(/\.$/,"")||"0");if(Number.isNaN(a))return void S("0");S(a.toString()+e)}}}),/*#__PURE__*/t(U,{children:b})]}),w&&/*#__PURE__*/t(W,{children:w})]}),/*#__PURE__*/s(f,{style:{marginTop:"1.5rem"},children:[/*#__PURE__*/t(y,{children:"From"}),/*#__PURE__*/t(y,{children:o($)})]}),/*#__PURE__*/t(O,{selected:{chain:k.chain,balance:k.isErc20Quote?F({amount:k.erc20Balance??0n,decimals:E?.decimals??6})+` ${E?.symbol||""}`:P(k.balance,k.chain.nativeCurrency.symbol,3,!0)},options:C.map((({chain:e,balance:r,isErc20Quote:a,erc20Balance:o})=>({chain:e,balance:a?F({amount:o??0n,decimals:E?.decimals??6})+` ${E?.symbol||""}`:P(r,e.nativeCurrency.symbol,3,!0)}))),onSelect:I}),/*#__PURE__*/s(f,{style:{marginTop:"1.5rem"},children:[/*#__PURE__*/t(y,{children:"To"}),/*#__PURE__*/t(y,{children:o(B)})]}),/*#__PURE__*/t(Q,{chain:a,balance:i}),/*#__PURE__*/t(g,{style:{marginTop:"1rem"},children:r}),/*#__PURE__*/s(l,{style:{marginTop:"1rem"},loading:T||N,disabled:N||T,onClick:A,children:["Confirm with ",e]}),/*#__PURE__*/t(p,{}),/*#__PURE__*/t(d,{})]})};export{Z as B,H as g};