diff --git a/.env.example b/.env.example index d76087b..a2285e2 100644 --- a/.env.example +++ b/.env.example @@ -1 +1,2 @@ APOLLO_GRAPHQL_URL= +ALCHEMY_ID= \ No newline at end of file diff --git a/abis/AMM.json b/abis/AMM.json new file mode 100644 index 0000000..027d6ea --- /dev/null +++ b/abis/AMM.json @@ -0,0 +1,209 @@ +[ + { + "inputs": [ + { "internalType": "address", "name": "_token0", "type": "address" }, + { "internalType": "address", "name": "_L1Token0", "type": "address" }, + { "internalType": "address", "name": "_token1", "type": "address" }, + { "internalType": "address", "name": "_L1Token1", "type": "address" }, + { "internalType": "address", "name": "_lzEndpoint", "type": "address" }, + { + "internalType": "address", + "name": "_stargateRouter", + "type": "address" + }, + { "internalType": "address", "name": "_L1Target", "type": "address" } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "L1Target", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "L1Token0", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "L1Token1", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "balance0", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "balance1", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint16", "name": "destChainId", "type": "uint16" }, + { "internalType": "uint256", "name": "amount0", "type": "uint256" }, + { "internalType": "uint256", "name": "amount1", "type": "uint256" } + ], + "name": "burnVouchers", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "fees0", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "fees1", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "lzEndpoint", + "outputs": [ + { + "internalType": "contract ILayerZeroEndpoint", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, + { "internalType": "bytes", "name": "_srcAddress", "type": "bytes" }, + { "internalType": "uint64", "name": "_nonce", "type": "uint64" }, + { "internalType": "bytes", "name": "_payload", "type": "bytes" } + ], + "name": "lzReceive", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "reserve0", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "reserve1", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_reserve0", "type": "uint256" }, + { "internalType": "uint256", "name": "_reserve1", "type": "uint256" } + ], + "name": "setReserves", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "stargateRouter", + "outputs": [ + { + "internalType": "contract IStargateRouter", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "amount0In", "type": "uint256" }, + { "internalType": "uint256", "name": "amount1In", "type": "uint256" } + ], + "name": "swap", + "outputs": [ + { "internalType": "uint256", "name": "amountOut", "type": "uint256" } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint16", "name": "destChainId", "type": "uint16" }, + { "internalType": "uint256", "name": "srcPoolId0", "type": "uint256" }, + { "internalType": "uint256", "name": "dstPoolId0", "type": "uint256" }, + { "internalType": "uint256", "name": "srcPoolId1", "type": "uint256" }, + { "internalType": "uint256", "name": "dstPoolId1", "type": "uint256" } + ], + "name": "syncToL1", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "token0", + "outputs": [ + { "internalType": "contract ERC20", "name": "", "type": "address" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "token1", + "outputs": [ + { "internalType": "contract ERC20", "name": "", "type": "address" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "trustedRemoteHash", + "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "voucher0", + "outputs": [ + { "internalType": "contract Voucher", "name": "", "type": "address" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "voucher1", + "outputs": [ + { "internalType": "contract Voucher", "name": "", "type": "address" } + ], + "stateMutability": "view", + "type": "function" + } +] diff --git a/abis/ERC20.json b/abis/ERC20.json new file mode 100644 index 0000000..27e70d1 --- /dev/null +++ b/abis/ERC20.json @@ -0,0 +1,317 @@ +[ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "quantity", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/abis/dAMM.json b/abis/dAMM.json new file mode 100644 index 0000000..7fab7be --- /dev/null +++ b/abis/dAMM.json @@ -0,0 +1,322 @@ +[ + { + "inputs": [ + { "internalType": "address", "name": "_factory", "type": "address" } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint16", "name": "chainId", "type": "uint16" }, + { "internalType": "address", "name": "remote", "type": "address" }, + { "internalType": "address", "name": "local", "type": "address" } + ], + "name": "addTrustedRemote", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "", "type": "address" }, + { "internalType": "address", "name": "", "type": "address" } + ], + "name": "allowance", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "spender", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "approve", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "", "type": "address" }], + "name": "balanceOf", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "healthFactor", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_token0", "type": "address" }, + { "internalType": "address", "name": "_token1", "type": "address" } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, + { "internalType": "bytes", "name": "_srcAddress", "type": "bytes" }, + { "internalType": "uint64", "name": "_nonce", "type": "uint64" }, + { "internalType": "bytes", "name": "_payload", "type": "bytes" } + ], + "name": "lzReceive", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint16", "name": "", "type": "uint16" }], + "name": "marked0", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint16", "name": "", "type": "uint16" }], + "name": "marked1", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "", "type": "address" }], + "name": "nonces", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint16", "name": "", "type": "uint16" }], + "name": "partialSyncs", + "outputs": [ + { "internalType": "address", "name": "token", "type": "address" }, + { "internalType": "uint256", "name": "bridgedAmount", "type": "uint256" }, + { + "internalType": "uint256", + "name": "earmarkedAmount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "owner", "type": "address" }, + { "internalType": "address", "name": "spender", "type": "address" }, + { "internalType": "uint256", "name": "value", "type": "uint256" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" }, + { "internalType": "uint8", "name": "v", "type": "uint8" }, + { "internalType": "bytes32", "name": "r", "type": "bytes32" }, + { "internalType": "bytes32", "name": "s", "type": "bytes32" } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "amount0", "type": "uint256" }, + { "internalType": "uint256", "name": "amount1", "type": "uint256" } + ], + "name": "provide", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "reserve0", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "reserve1", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, + { "internalType": "bytes", "name": "_srcAddress", "type": "bytes" }, + { "internalType": "uint256", "name": "_nonce", "type": "uint256" }, + { "internalType": "address", "name": "_token", "type": "address" }, + { + "internalType": "uint256", + "name": "_bridgedAmount", + "type": "uint256" + }, + { "internalType": "bytes", "name": "_payload", "type": "bytes" } + ], + "name": "sgReceive", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint16", "name": "_destChainId", "type": "uint16" }, + { "internalType": "address", "name": "_amm", "type": "address" } + ], + "name": "syncL2", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "token0", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "token1", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "transfer", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "from", "type": "address" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "transferFrom", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint16", "name": "", "type": "uint16" }], + "name": "trustedRemoteLookup", + "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "shares", "type": "uint256" } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] diff --git a/components/CustomConnectButton.tsx b/components/CustomConnectButton.tsx new file mode 100644 index 0000000..015c05d --- /dev/null +++ b/components/CustomConnectButton.tsx @@ -0,0 +1,168 @@ +import { ConnectButton } from "@rainbow-me/rainbowkit"; +import { Button } from "./InteractButton"; +import { BiChevronDown, BiError } from "react-icons/bi"; + +export const CustomConnectButton = () => { + return ( + + {({ + account, + chain, + openAccountModal, + openChainModal, + openConnectModal, + authenticationStatus, + mounted, + }) => { + // Note: If your app doesn't use authentication, you + // can remove all 'authenticationStatus' checks + const ready = mounted; + const connected = ready && account && chain; + + return ( +
+ {(() => { + if (!connected) { + return ( + + ); + } + if (chain.unsupported) { + return ( + + ); + } + return ( +
+ + +
+ ); + })()} +
+ ); + }} +
+ ); +}; + +export const InteractConnectButton = () => { + return ( + + {({ + account, + chain, + openAccountModal, + openChainModal, + openConnectModal, + authenticationStatus, + mounted, + }) => { + // Note: If your app doesn't use authentication, you + // can remove all 'authenticationStatus' checks + const ready = mounted; + const connected = ready && account && chain; + + return ( +
+ {(() => { + if (!connected) { + return ( + + +
+ ); + })()} + + ); + }} +
+ ); +}; diff --git a/components/DammTabContent.tsx b/components/DammTabContent.tsx new file mode 100644 index 0000000..5f6bd13 --- /dev/null +++ b/components/DammTabContent.tsx @@ -0,0 +1,238 @@ +import React from "react"; +import * as Tabs from "@radix-ui/react-tabs"; +import { useState } from "react"; +import { BiPlus, BiMinus, BiStats, BiDollar, BiDownload } from "react-icons/bi"; +import InteractButton from "./InteractButton"; +import { chain } from "wagmi"; +import { validateNumber } from "../lib/utils"; +import usedAMM from "../hooks/usedAMMProvide"; +import useMint from "../hooks/useMint"; + +const DammTabContent = () => { + const [activeTab, setActiveTab] = useState("tab1"); + + const [amount1, setAmount1] = useState(""); + const [amount2, setAmount2] = useState(""); + const [USDCToMint, setUSDCToMint] = useState(""); + const [USDTToMint, setUSDTToMint] = useState(""); + const [withdrawAmount, setWithdrawAmount] = useState(""); + + const { provide } = usedAMM({ amount1, amount2 }); + const { mint: mintUSDC } = useMint({ amount: USDCToMint, isUSDC: true }); + const { mint: mintUSDT } = useMint({ amount: USDTToMint, isUSDC: false }); + + const handleAmount1Change = (e: React.ChangeEvent) => { + if (validateNumber(e.target.value)) { + setAmount1(e.target.value); + } + }; + + const handleAmount2Change = (e: React.ChangeEvent) => { + if (validateNumber(e.target.value)) { + setAmount2(e.target.value); + } + }; + + const handleUSDCToMintChange = (e: React.ChangeEvent) => { + if (validateNumber(e.target.value)) { + setUSDCToMint(e.target.value); + } + }; + + const handleUSDTToMintChange = (e: React.ChangeEvent) => { + if (validateNumber(e.target.value)) { + setUSDTToMint(e.target.value); + } + }; + + const handleWithdrawAmountChange = ( + e: React.ChangeEvent + ) => { + if (validateNumber(e.target.value)) { + setWithdrawAmount(e.target.value); + } + }; + + return ( + setActiveTab(v)} + className="w-full" + > + + +

Provide

+ +
+ +

Withdraw

+ +
+ +

Reserves

+ +
+ +

Mint

+ +
+ +

Sync

+ +
+
+ +
+ +
+

+ USDT +

+

Balance: 10.432

+
+
+
+ +
+

+ USDC +

+

Balance: 10.432

+
+
+ {}} + text="Add Liquidity" + /> +
+ + {/*

+ Total Balance (DAMM-LP) +

+

100

*/} +
+ +
+

+ DAMM-LP +

+

Balance: 10.432

+
+
+

You receive

+
+

USDC

+

100

+
+
+

USDT

+

100

+
+ {}} + /> +
+ +
+

+ Reserve 1 (USDT) +

+

$139.14

+
+
+
+

+ Reserve 2 (USDC) +

+

$23.64

+
+ + +
+ +

+ USDT +

+ mintUSDT()} + text="Mint USDT" + /> +
+
+ +

+ USDC +

+ mintUSDC()} + text="Mint USDC" + /> +
+
+ +
+ {}} + text="Sync to Arbitrum AMM" + /> +
+
+ {}} + text="Sync to Fuji AMM" + /> +
+
+ + ); +}; + +export default DammTabContent; diff --git a/components/InteractButton.tsx b/components/InteractButton.tsx new file mode 100644 index 0000000..acecfbd --- /dev/null +++ b/components/InteractButton.tsx @@ -0,0 +1,63 @@ +import React from "react"; +import { useAccount, useNetwork } from "wagmi"; +import { + CustomConnectButton, + InteractConnectButton, +} from "./CustomConnectButton"; + +const InteractButton = ({ + text, + expectedChainId, + onClick, +}: { + text: string; + expectedChainId: number; + onClick: () => void; +}) => { + const { address } = useAccount(); + const { chain } = useNetwork(); + + return ( + <> + {address ? ( + chain?.id === expectedChainId ? ( + + ); +}; + +export default InteractButton; diff --git a/components/Navbar.tsx b/components/Navbar.tsx index 9cbd7c0..16ca6af 100644 --- a/components/Navbar.tsx +++ b/components/Navbar.tsx @@ -1,12 +1,16 @@ -import { ConnectKitButton } from "connectkit"; +import { ConnectButton } from "@rainbow-me/rainbowkit"; import React from "react"; +import { CustomConnectButton } from "./CustomConnectButton"; +import { FaGithub, FaTwitter } from "react-icons/fa"; const Navbar = () => { return ( -
-
-

wagmi

- +
+
+ {/*

dAmm

*/} + + +
); diff --git a/components/SettingsTabContent.tsx b/components/SettingsTabContent.tsx new file mode 100644 index 0000000..8fde75b --- /dev/null +++ b/components/SettingsTabContent.tsx @@ -0,0 +1,28 @@ +import React from "react"; +import { useState } from "react"; +import * as Switch from "@radix-ui/react-switch"; +import { useStore } from "../lib/store"; + +const SettingsTabContent = () => { + const isAutoSwitch = useStore((state) => state.isAutoSwitch); + const setAutoSwitch = useStore((state) => state.setAutoSwitch); + + return ( + <> +

Settings

+ +

Automatically Switch Networks

+ setAutoSwitch(v)} + > + + + + {/*

Slippage Tolerance

*/} + + ); +}; + +export default SettingsTabContent; diff --git a/components/SwapTabContent.tsx b/components/SwapTabContent.tsx new file mode 100644 index 0000000..8f91f17 --- /dev/null +++ b/components/SwapTabContent.tsx @@ -0,0 +1,154 @@ +import React from "react"; +import { chain } from "wagmi"; +import InteractButton from "./InteractButton"; +import { BiExpandAlt, BiRefresh, BiCog, BiDollar } from "react-icons/bi"; +import * as Tabs from "@radix-ui/react-tabs"; +import { useState } from "react"; +import { validateNumber } from "../lib/utils"; +import useMint from "../hooks/useMint"; + +const SwapTabContent = ({ expectedChainId }: { expectedChainId: number }) => { + const [activeTab, setActiveTab] = useState("tab1"); + const [amount1, setAmount1] = useState(""); + const [amount2, setAmount2] = useState(""); + const [USDCToMint, setUSDCToMint] = useState(""); + const [USDTToMint, setUSDTToMint] = useState(""); + + const { mint: mintUSDC } = useMint({ amount: USDCToMint, isUSDC: true }); + const { mint: mintUSDT } = useMint({ amount: USDTToMint, isUSDC: false }); + + const handleAmount1Change = (e: React.ChangeEvent) => { + if (validateNumber(e.target.value)) { + setAmount1(e.target.value); + } + }; + + const handleAmount2Change = (e: React.ChangeEvent) => { + if (validateNumber(e.target.value)) { + setAmount2(e.target.value); + } + }; + + const handleUSDCToMintChange = (e: React.ChangeEvent) => { + if (validateNumber(e.target.value)) { + setUSDCToMint(e.target.value); + } + }; + + const handleUSDTToMintChange = (e: React.ChangeEvent) => { + if (validateNumber(e.target.value)) { + setUSDTToMint(e.target.value); + } + }; + + return ( + setActiveTab(v)} + className="w-full" + > + + +

Swap

+ +
+ +

Mint

+ +
+ +

Advanced

+ +
+
+ +
+ +

+ USDT +

+
+ +
+ +
+
+ +

+ USDC +

+
+ {}} + /> +
+ +
+ +

+ USDT +

+ mintUSDT()} + text="Mint USDT" + /> +
+
+ +

+ USDC +

+ mintUSDC()} + text="Mint USDC" + /> +
+
+ +
+ {}} + text="Sync to L1" + /> +
+
+
+ ); +}; + +export default SwapTabContent; diff --git a/components/TabContainer.tsx b/components/TabContainer.tsx new file mode 100644 index 0000000..20a2827 --- /dev/null +++ b/components/TabContainer.tsx @@ -0,0 +1,14 @@ +import React from "react"; + +const TabContainer = ({ children }: { children: React.ReactNode }) => { + return ( +
+ {/*
+
+
*/} + {children} +
+ ); +}; + +export default TabContainer; diff --git a/components/layouts/Article.tsx b/components/layouts/Article.tsx index 80228e0..b3629c9 100644 --- a/components/layouts/Article.tsx +++ b/components/layouts/Article.tsx @@ -2,6 +2,7 @@ import React from "react"; import { motion } from "framer-motion"; import { transitionAnimation } from "../../lib/utils"; import Navbar from "../Navbar"; +import { GiPeaceDove } from "react-icons/gi"; const Article = ({ children }) => { return ( @@ -12,9 +13,18 @@ const Article = ({ children }) => { exit="hidden" className="relative w-full" > -
+
{children} +
+ +
+
+
+
+
+

25ms

+
); diff --git a/components/layouts/Main.tsx b/components/layouts/Main.tsx index 7e863d8..edc4afd 100644 --- a/components/layouts/Main.tsx +++ b/components/layouts/Main.tsx @@ -12,11 +12,11 @@ const Main = ({ children }) => {
- Wagmi Starter + Dove Interface { + const [mounted, setMounted] = React.useState(false); + + React.useEffect(() => setMounted(true), []); + + return mounted; +}; diff --git a/hooks/useMint.ts b/hooks/useMint.ts new file mode 100644 index 0000000..e9236b9 --- /dev/null +++ b/hooks/useMint.ts @@ -0,0 +1,64 @@ +import { + useAccount, + useNetwork, + useContractWrite, + usePrepareContractWrite, +} from "wagmi"; +import { + USDC_GOERLI_ADDRESS, + USDT_GOERLI_ADDRESS, + USDC_ARBI_ADDRESS, + USDT_ARBI_ADDRESS, + USDC_FUJI_ADDRESS, + USDT_FUJI_ADDRESS, +} from "../lib/contracts"; +import MintableERC20 from "../abis/ERC20.json"; +import { avalancheChain } from "../pages/_app"; + +export default function ({ + amount, + isUSDC, +}: { + amount: string | undefined; + isUSDC: boolean | undefined; +}): { + mint: () => void; +} { + const { chain: currentChain, chains } = useNetwork(); + + let tokenAddress = ""; + switch (currentChain?.id) { + // probably bad to manually encode index + case chains[0].id: { + tokenAddress = isUSDC ? USDC_GOERLI_ADDRESS : USDT_GOERLI_ADDRESS; + break; + } + case chains[1].id: { + tokenAddress = isUSDC ? USDC_ARBI_ADDRESS : USDT_ARBI_ADDRESS; + break; + } + case chains[2].id: { + tokenAddress = isUSDC ? USDC_FUJI_ADDRESS : USDT_FUJI_ADDRESS; + break; + } + } + + const { address } = useAccount(); + // assume correct chain id will be selected as it's enforced on each tab + const { config } = usePrepareContractWrite({ + addressOrName: tokenAddress, + contractInterface: MintableERC20, + functionName: "mint", + args: [address, amount], + }); + + const { write } = useContractWrite(config); + + function mintToken() { + write?.(); + } + + return { + mint: () => mintToken(), + }; +} diff --git a/hooks/usedAMMProvide.ts b/hooks/usedAMMProvide.ts new file mode 100644 index 0000000..35733f7 --- /dev/null +++ b/hooks/usedAMMProvide.ts @@ -0,0 +1,30 @@ +import { useContractWrite, usePrepareContractWrite } from "wagmi"; +import { DAMM_CONTRACT_ADDRESS } from "../lib/contracts"; +import dAMMContractInterface from "../abis/dAMM.json"; + +export default function ({ + amount1, + amount2, +}: { + amount1: string | undefined; + amount2: string | undefined; +}): { + provide: () => void; +} { + const { config } = usePrepareContractWrite({ + addressOrName: DAMM_CONTRACT_ADDRESS, + contractInterface: dAMMContractInterface, + functionName: "provide", + args: [amount1, amount2], + }); + + const { write } = useContractWrite(config); + + function provideLiquidity() { + write?.(); + } + + return { + provide: () => provideLiquidity(), + }; +} diff --git a/hooks/usedAMMWithdraw.ts b/hooks/usedAMMWithdraw.ts new file mode 100644 index 0000000..35733f7 --- /dev/null +++ b/hooks/usedAMMWithdraw.ts @@ -0,0 +1,30 @@ +import { useContractWrite, usePrepareContractWrite } from "wagmi"; +import { DAMM_CONTRACT_ADDRESS } from "../lib/contracts"; +import dAMMContractInterface from "../abis/dAMM.json"; + +export default function ({ + amount1, + amount2, +}: { + amount1: string | undefined; + amount2: string | undefined; +}): { + provide: () => void; +} { + const { config } = usePrepareContractWrite({ + addressOrName: DAMM_CONTRACT_ADDRESS, + contractInterface: dAMMContractInterface, + functionName: "provide", + args: [amount1, amount2], + }); + + const { write } = useContractWrite(config); + + function provideLiquidity() { + write?.(); + } + + return { + provide: () => provideLiquidity(), + }; +} diff --git a/lib/contracts.ts b/lib/contracts.ts new file mode 100644 index 0000000..e0a34cf --- /dev/null +++ b/lib/contracts.ts @@ -0,0 +1,12 @@ +export const DAMM_CONTRACT_ADDRESS = + "0xeD1E6C09a4Fe724726a02F0316cCDB3181123599"; +export const ARBI_AMM_CONTRACT_ADDRESS = + "0xbCc3a92B8e83c8B29eB248d0B3C66FD1014fd43d"; +export const FUJI_AMM_CONTRACT_ADDRESS = + "0xdf7698ae254eade160abaf16555645e9ff9e993e"; +export const USDC_GOERLI_ADDRESS = "0xDf0360Ad8C5ccf25095Aa97ee5F2785c8d848620"; +export const USDT_GOERLI_ADDRESS = "0x5BCc22abEC37337630C0E0dd41D64fd86CaeE951"; +export const USDC_ARBI_ADDRESS = "0x6aAd876244E7A1Ad44Ec4824Ce813729E5B6C291"; +export const USDT_ARBI_ADDRESS = "0x533046F316590C19d99c74eE661c6d541b64471C"; +export const USDC_FUJI_ADDRESS = "0x4A0D1092E9df255cf95D72834Ea9255132782318"; +export const USDT_FUJI_ADDRESS = "0x134Dc38AE8C853D1aa2103d5047591acDAA16682"; diff --git a/lib/store.ts b/lib/store.ts new file mode 100644 index 0000000..62e49ba --- /dev/null +++ b/lib/store.ts @@ -0,0 +1,13 @@ +import create from "zustand"; +import produce from "immer"; + +interface StoreState { + isAutoSwitch: boolean; + setAutoSwitch: (isAutoSwitch: boolean) => void; +} + +export const useStore = create((set, get) => ({ + isAutoSwitch: false, + setAutoSwitch: (isAutoSwitch) => + set((state) => ({ isAutoSwitch: isAutoSwitch })), +})); diff --git a/lib/store.tsx b/lib/store.tsx deleted file mode 100644 index adf3384..0000000 --- a/lib/store.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import create from "zustand"; -import produce from "immer"; - -interface StoreState { - address: string; - setAddress: (address: string) => void; -} - -export const useStore = create((set, get) => ({ - address: "", - setAddress: (address) => set((state) => ({ address: address })), -})); diff --git a/lib/utils.ts b/lib/utils.ts new file mode 100644 index 0000000..a46082f --- /dev/null +++ b/lib/utils.ts @@ -0,0 +1,10 @@ +export const transitionAnimation = { + hidden: { opacity: 0 }, + visible: { + opacity: 1, + }, +}; + +export const validateNumber = (value: string) => { + return RegExp(/^[0-9]*\.?[0-9]*$/).test(value); +}; diff --git a/lib/utils.tsx b/lib/utils.tsx deleted file mode 100644 index d93c090..0000000 --- a/lib/utils.tsx +++ /dev/null @@ -1,6 +0,0 @@ -export const transitionAnimation = { - hidden: { opacity: 0 }, - visible: { - opacity: 1, - }, -}; diff --git a/package.json b/package.json index ac0d773..8a360ec 100644 --- a/package.json +++ b/package.json @@ -9,9 +9,11 @@ }, "dependencies": { "@apollo/client": "^3.7.1", + "@radix-ui/react-switch": "^1.0.1", + "@radix-ui/react-tabs": "^1.0.1", + "@rainbow-me/rainbowkit": "^0.7.4", "@types/node": "^17.0.21", "@types/react": "^17.0.39", - "connectkit": "^0.0.1", "eslint-config-next": "^13.0.1", "ethers": "^5.6.9", "framer-motion": "^6.2.8", @@ -22,6 +24,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-icons": "^4.3.1", + "tailwindcss-radix": "^2.6.1", "typescript": "^4.5.5", "wagmi": "^0.6.0", "zustand": "^3.7.0" diff --git a/pages/_app.tsx b/pages/_app.tsx index aebc51d..48baeb4 100644 --- a/pages/_app.tsx +++ b/pages/_app.tsx @@ -1,38 +1,88 @@ import "../styles/globals.css"; import "../styles/tailwind.css"; +import "@rainbow-me/rainbowkit/styles.css"; import { - ConnectKitProvider, - ConnectKitButton, - getDefaultClient, -} from "connectkit"; -import { chain, createClient, WagmiConfig } from "wagmi"; + Chain, + chain, + configureChains, + createClient, + WagmiConfig, +} from "wagmi"; import { providers } from "ethers"; import { AnimatePresence } from "framer-motion"; import { ApolloClient, ApolloProvider, InMemoryCache } from "@apollo/client"; +import { alchemyProvider } from "wagmi/providers/alchemy"; +import { jsonRpcProvider } from "wagmi/providers/jsonRpc"; +import { + getDefaultWallets, + darkTheme, + RainbowKitProvider, +} from "@rainbow-me/rainbowkit"; +import { AppProps } from "next/app"; -const alchemyId = process.env.ALCHEMY_ID; +export const avalancheChain: Chain = { + id: 43113, + name: "Avalanche", + network: "avalanche", + nativeCurrency: { + decimals: 18, + name: "Avalanche", + symbol: "AVAX", + }, + rpcUrls: { + default: "https://api.avax-test.network/ext/bc/C/rpc", + }, + blockExplorers: { + default: { name: "SnowTrace", url: "https:/testnet.snowtrace.io" }, + }, + testnet: true, +}; -const client = createClient( - getDefaultClient({ - appName: "Your App Name", - alchemyId, - }) +const { chains, provider } = configureChains( + [chain.goerli, chain.arbitrumGoerli, avalancheChain], + [ + alchemyProvider({ apiKey: "e7cPXmSM4CN0WoDydp42aBK_SRswrWXU" }), + jsonRpcProvider({ + rpc: (chain) => { + if (chain.id !== avalancheChain.id) return null; + return { http: chain.rpcUrls.default }; + }, + }), + ] ); +const { connectors } = getDefaultWallets({ + appName: "My RainbowKit App", + chains, +}); + +const wagmiClient = createClient({ + autoConnect: true, + connectors, + provider, +}); const apolloClient = new ApolloClient({ uri: process.env.GRAPHQL_URI, cache: new InMemoryCache(), }); -function MyApp({ Component, pageProps }) { +function MyApp({ Component, pageProps }: AppProps) { return ( - - + + - + ); diff --git a/pages/index.tsx b/pages/index.tsx index dfbb5eb..c9f4c6b 100644 --- a/pages/index.tsx +++ b/pages/index.tsx @@ -1,37 +1,106 @@ -import Head from "next/head"; import Main from "../components/layouts/Main"; -import { FaGithub } from "react-icons/fa"; -import { ConnectKitButton } from "connectkit"; -import Image from "next/image"; import Article from "../components/layouts/Article"; +import * as Tabs from "@radix-ui/react-tabs"; +import { useState, useEffect } from "react"; +import { chain, useSwitchNetwork } from "wagmi"; +import { useIsMounted } from "../hooks/useIsMounted"; +import { avalancheChain } from "./_app"; +import { BiCog } from "react-icons/bi"; +import TabContainer from "../components/TabContainer"; +import SwapTabContent from "../components/SwapTabContent"; +import DammTabContent from "../components/DammTabContent"; +import SettingsTabContent from "../components/SettingsTabContent"; +import { useStore } from "../lib/store"; export default function Home() { + const isAutoSwitch = useStore((state) => state.isAutoSwitch); + const [activeNetworkTab, setActiveNetworkTab] = useState("damm"); + + const { chains, error, isLoading, pendingChainId, switchNetwork } = + useSwitchNetwork(); + + useEffect(() => { + if (isAutoSwitch) { + if (activeNetworkTab === "damm") { + switchNetwork?.(chain.goerli.id); + } + if (activeNetworkTab === "fuji") { + switchNetwork?.(43113); + } + if (activeNetworkTab === "arbi") { + switchNetwork?.(chain.arbitrumGoerli.id); + } + } + }, [activeNetworkTab]); + + const isMounted = useIsMounted(); + + if (!isMounted) return null; + return (
-
- +
+
+
-
-
-

- wagmi boilerplate -

- -
- -

Use this template

-
-
+
+
+
+ setActiveNetworkTab(v)} + defaultValue="damm" + className="w-full" + > + + +

dAMM

+
+ +

Fuji AMM

+
+ +

Arbitrum AMM

+
+ + + +
+ + + + + + + + + + + + + + + + + + + + +
+
diff --git a/public/Gilroy-Bold.ttf b/public/Gilroy-Bold.ttf deleted file mode 100644 index 10bc23b..0000000 Binary files a/public/Gilroy-Bold.ttf and /dev/null differ diff --git a/public/Gilroy-ExtraBold.ttf b/public/Gilroy-ExtraBold.ttf deleted file mode 100644 index 2524ba7..0000000 Binary files a/public/Gilroy-ExtraBold.ttf and /dev/null differ diff --git a/public/Gilroy-ExtraBoldItalic.ttf b/public/Gilroy-ExtraBoldItalic.ttf deleted file mode 100644 index f51d9d6..0000000 Binary files a/public/Gilroy-ExtraBoldItalic.ttf and /dev/null differ diff --git a/public/Gilroy-Heavy.ttf b/public/Gilroy-Heavy.ttf deleted file mode 100644 index 44d4f6e..0000000 Binary files a/public/Gilroy-Heavy.ttf and /dev/null differ diff --git a/public/Gilroy-HeavyItalic.ttf b/public/Gilroy-HeavyItalic.ttf deleted file mode 100644 index 2602022..0000000 Binary files a/public/Gilroy-HeavyItalic.ttf and /dev/null differ diff --git a/public/Gilroy-Light.ttf b/public/Gilroy-Light.ttf deleted file mode 100644 index d8c2bb9..0000000 Binary files a/public/Gilroy-Light.ttf and /dev/null differ diff --git a/public/Gilroy-LightItalic.ttf b/public/Gilroy-LightItalic.ttf deleted file mode 100644 index 615c05b..0000000 Binary files a/public/Gilroy-LightItalic.ttf and /dev/null differ diff --git a/public/Gilroy-Medium.ttf b/public/Gilroy-Medium.ttf deleted file mode 100644 index bdbe5de..0000000 Binary files a/public/Gilroy-Medium.ttf and /dev/null differ diff --git a/public/Gilroy-MediumItalic.ttf b/public/Gilroy-MediumItalic.ttf deleted file mode 100644 index df864ec..0000000 Binary files a/public/Gilroy-MediumItalic.ttf and /dev/null differ diff --git a/public/Gilroy-Regular.ttf b/public/Gilroy-Regular.ttf deleted file mode 100644 index 6cb332c..0000000 Binary files a/public/Gilroy-Regular.ttf and /dev/null differ diff --git a/public/Gilroy-RegularItalic.ttf b/public/Gilroy-RegularItalic.ttf deleted file mode 100644 index 29a6795..0000000 Binary files a/public/Gilroy-RegularItalic.ttf and /dev/null differ diff --git a/public/Gilroy-SemiBold.ttf b/public/Gilroy-SemiBold.ttf deleted file mode 100644 index 30b5d25..0000000 Binary files a/public/Gilroy-SemiBold.ttf and /dev/null differ diff --git a/public/Gilroy-SemiBoldItalic.ttf b/public/Gilroy-SemiBoldItalic.ttf deleted file mode 100644 index baf3ac0..0000000 Binary files a/public/Gilroy-SemiBoldItalic.ttf and /dev/null differ diff --git a/public/Gilroy-Thin.ttf b/public/Gilroy-Thin.ttf deleted file mode 100644 index ca15a0d..0000000 Binary files a/public/Gilroy-Thin.ttf and /dev/null differ diff --git a/public/Gilroy-ThinItalic.ttf b/public/Gilroy-ThinItalic.ttf deleted file mode 100644 index e71433a..0000000 Binary files a/public/Gilroy-ThinItalic.ttf and /dev/null differ diff --git a/public/Gilroy-UltraLight.ttf b/public/Gilroy-UltraLight.ttf deleted file mode 100644 index 0cfa611..0000000 Binary files a/public/Gilroy-UltraLight.ttf and /dev/null differ diff --git a/public/Gilroy-UltraLightItalic.ttf b/public/Gilroy-UltraLightItalic.ttf deleted file mode 100644 index b5e57c3..0000000 Binary files a/public/Gilroy-UltraLightItalic.ttf and /dev/null differ diff --git a/public/Satoshi-Black.otf b/public/Satoshi-Black.otf new file mode 100644 index 0000000..4f5f852 Binary files /dev/null and b/public/Satoshi-Black.otf differ diff --git a/public/Satoshi-BlackItalic.otf b/public/Satoshi-BlackItalic.otf new file mode 100644 index 0000000..b105ea4 Binary files /dev/null and b/public/Satoshi-BlackItalic.otf differ diff --git a/public/Satoshi-Bold.otf b/public/Satoshi-Bold.otf new file mode 100644 index 0000000..677ab5f Binary files /dev/null and b/public/Satoshi-Bold.otf differ diff --git a/public/Satoshi-BoldItalic.otf b/public/Satoshi-BoldItalic.otf new file mode 100644 index 0000000..cd5b85e Binary files /dev/null and b/public/Satoshi-BoldItalic.otf differ diff --git a/public/Satoshi-Italic.otf b/public/Satoshi-Italic.otf new file mode 100644 index 0000000..d8652b3 Binary files /dev/null and b/public/Satoshi-Italic.otf differ diff --git a/public/Satoshi-Light.otf b/public/Satoshi-Light.otf new file mode 100644 index 0000000..22cb8bc Binary files /dev/null and b/public/Satoshi-Light.otf differ diff --git a/public/Satoshi-LightItalic.otf b/public/Satoshi-LightItalic.otf new file mode 100644 index 0000000..1cf1a32 Binary files /dev/null and b/public/Satoshi-LightItalic.otf differ diff --git a/public/Satoshi-Medium.otf b/public/Satoshi-Medium.otf new file mode 100644 index 0000000..3513a83 Binary files /dev/null and b/public/Satoshi-Medium.otf differ diff --git a/public/Satoshi-MediumItalic.otf b/public/Satoshi-MediumItalic.otf new file mode 100644 index 0000000..105838c Binary files /dev/null and b/public/Satoshi-MediumItalic.otf differ diff --git a/public/Satoshi-Regular.otf b/public/Satoshi-Regular.otf new file mode 100644 index 0000000..ddaadc0 Binary files /dev/null and b/public/Satoshi-Regular.otf differ diff --git a/public/Satoshi_Complete.zip b/public/Satoshi_Complete.zip new file mode 100644 index 0000000..95ee8f6 Binary files /dev/null and b/public/Satoshi_Complete.zip differ diff --git a/public/add.png b/public/add.png new file mode 100644 index 0000000..6fbde5f Binary files /dev/null and b/public/add.png differ diff --git a/public/bg.png b/public/bg.png deleted file mode 100644 index 04b3cc7..0000000 Binary files a/public/bg.png and /dev/null differ diff --git a/public/guilloche.svg b/public/guilloche.svg new file mode 100644 index 0000000..f45861d --- /dev/null +++ b/public/guilloche.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + diff --git a/public/minus.png b/public/minus.png new file mode 100644 index 0000000..fe6587e Binary files /dev/null and b/public/minus.png differ diff --git a/public/stats.png b/public/stats.png new file mode 100644 index 0000000..c337024 Binary files /dev/null and b/public/stats.png differ diff --git a/styles/globals.css b/styles/globals.css index b6703f0..91b3e04 100644 --- a/styles/globals.css +++ b/styles/globals.css @@ -1,9 +1,9 @@ html, body { - background-color: #000000; + background-color: #131319; padding: 0; margin: 0; - font-family: Gilroy, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, + font-family: Satoshi, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; } @@ -15,3 +15,34 @@ a { * { box-sizing: border-box; } + +.bg { + background: linear-gradient(138.16deg, #313135 -14.83%, #1f2024 92.59%); +} + +.radial { + background: radial-gradient( + farthest-side at 50% 50%, + rgba(255, 255, 255, 0.05), + rgba(0, 0, 0, 0) + ); +} + +.background-gradient-pattern { + position: absolute; + inset: 0px; + background-image: url("/guilloche.svg"); + background-repeat: repeat; + background-position: right top; + background-size: 20px, 20px; + mix-blend-mode: overlay; +} + +.background-gradient { + -webkit-mask-image: radial-gradient( + farthest-side at 50% 50%, + rgba(0, 0, 0, 0.4), + rgba(0, 0, 0, 0) + ); + background-image: linear-gradient(90deg,#ffffff,#ffae33,1)); +} diff --git a/styles/tailwind.css b/styles/tailwind.css index e19df7e..24e3e73 100644 --- a/styles/tailwind.css +++ b/styles/tailwind.css @@ -2,30 +2,46 @@ @tailwind components; @tailwind utilities; +h1 { + @apply font-wagmi text-6xl sm:text-7xl lg:text-8xl; +} + +h2 { + @apply font-wagmi text-4xl sm:text-5xl lg:text-6xl; +} + +h3 { + @apply font-wagmi text-3xl sm:text-4xl lg:text-5xl; +} + p { - @apply font-wagmi text-xs tracking-wide lg:text-sm; + @apply font-wagmi text-base font-thin; +} + +input { + @apply font-wagmi text-sm font-thin; } @font-face { - src: url(/Gilroy-Thin.ttf); + src: url(/Satoshi-Light.otf); font-weight: 100; - font-family: "Gilroy"; + font-family: "Satoshi"; } @font-face { - src: url(/Gilroy-Regular.ttf); + src: url(/Satoshi-Regular.otf); font-weight: 400; - font-family: "Gilroy"; + font-family: "Satoshi"; } @font-face { - src: url(/Gilroy-Medium.ttf); + src: url(/Satoshi-Medium.otf); font-weight: 500; - font-family: "Gilroy"; + font-family: "Satoshi"; } @font-face { - src: url(/Gilroy-Bold.ttf); + src: url(/Satoshi-Bold.otf); font-weight: 700; - font-family: "Gilroy"; + font-family: "Satoshi"; } diff --git a/tailwind.config.js b/tailwind.config.js index f7037ae..885245e 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -6,9 +6,25 @@ module.exports = { theme: { extend: { fontFamily: { - wagmi: "Gilroy", + wagmi: "Satoshi", + }, + colors: { + primary: "#ffae33", + }, + boxShadow: { + damn: "0 2px 2px rgba(4,4,7,.45),0 8px 24px rgba(4,4,7,.6)", + }, + dropShadow: { + soju: "0 0 5px #fff", + }, + backgroundImage: { + "gradient-radial": "radial-gradient(var(--gradient-color-stops))", }, }, }, - plugins: [], + plugins: [ + require("tailwindcss-radix")({ + variantPrefix: "rdx", + }), + ], }; diff --git a/tsconfig.json b/tsconfig.json index 6db37c0..50bcb22 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,14 +1,10 @@ { "compilerOptions": { "target": "es5", - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], + "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, - "strict": false, + "strict": true, "forceConsistentCasingInFileNames": true, "noEmit": true, "incremental": true, @@ -19,12 +15,6 @@ "isolatedModules": true, "jsx": "preserve" }, - "include": [ - "next-env.d.ts", - "**/*.ts", - "**/*.tsx" - ], - "exclude": [ - "node_modules" - ] + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], + "exclude": ["node_modules"] } diff --git a/yarn.lock b/yarn.lock index f604e5c..09a69b2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -71,7 +71,7 @@ "@jridgewell/gen-mapping" "^0.3.2" "jsesc" "^2.5.1" -"@babel/helper-annotate-as-pure@^7.16.0", "@babel/helper-annotate-as-pure@^7.18.6": +"@babel/helper-annotate-as-pure@^7.18.6": "integrity" "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==" "resolved" "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz" "version" "7.18.6" @@ -163,7 +163,7 @@ dependencies: "@babel/types" "^7.18.9" -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.16.0", "@babel/helper-module-imports@^7.18.6": +"@babel/helper-module-imports@^7.18.6": "integrity" "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==" "resolved" "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz" "version" "7.18.6" @@ -1012,7 +1012,7 @@ "core-js-pure" "^3.25.1" "regenerator-runtime" "^0.13.10" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.17.2", "@babel/runtime@^7.18.9", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.17.2", "@babel/runtime@^7.18.9", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4": "integrity" "sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==" "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz" "version" "7.20.1" @@ -1028,7 +1028,7 @@ "@babel/parser" "^7.18.10" "@babel/types" "^7.18.10" -"@babel/traverse@^7.14.0", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1", "@babel/traverse@^7.19.6", "@babel/traverse@^7.20.1", "@babel/traverse@^7.4.5": +"@babel/traverse@^7.14.0", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1", "@babel/traverse@^7.19.6", "@babel/traverse@^7.20.1": "integrity" "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==" "resolved" "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz" "version" "7.20.1" @@ -1076,6 +1076,11 @@ "stream-browserify" "^3.0.0" "util" "^0.12.4" +"@emotion/hash@^0.8.0": + "integrity" "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" + "resolved" "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz" + "version" "0.8.0" + "@emotion/is-prop-valid@^0.8.2": "integrity" "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==" "resolved" "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz" @@ -1083,33 +1088,11 @@ dependencies: "@emotion/memoize" "0.7.4" -"@emotion/is-prop-valid@^1.1.0": - "integrity" "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==" - "resolved" "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "@emotion/memoize" "^0.8.0" - -"@emotion/memoize@^0.8.0": - "integrity" "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==" - "resolved" "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz" - "version" "0.8.0" - "@emotion/memoize@0.7.4": "integrity" "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==" "resolved" "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz" "version" "0.7.4" -"@emotion/stylis@^0.8.4": - "integrity" "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==" - "resolved" "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz" - "version" "0.8.5" - -"@emotion/unitless@^0.7.4": - "integrity" "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" - "resolved" "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz" - "version" "0.7.5" - "@eslint/eslintrc@^1.3.3": "integrity" "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==" "resolved" "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz" @@ -1686,9 +1669,9 @@ dependencies: "glob" "7.1.7" -"@next/swc-darwin-x64@13.0.1": - "integrity" "sha512-8E6BY/VO+QqQkthhoWgB8mJMw1NcN9Vhl2OwEwxv8jy2r3zjeU+WNRxz4y8RLbcY0R1h+vHlXuP0mLnuac84tQ==" - "resolved" "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.0.1.tgz" +"@next/swc-win32-x64-msvc@13.0.1": + "integrity" "sha512-t/0G33t/6VGWZUGCOT7rG42qqvf/x+MrFp1CU+8CN6PrjSSL57R5bqkXfubV9t4eCEnUxVP+5Hn3MoEXEebtEw==" + "resolved" "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.0.1.tgz" "version" "13.0.1" "@nodelib/fs.scandir@2.1.5": @@ -1717,6 +1700,172 @@ "resolved" "https://registry.npmjs.org/@pedrouid/environment/-/environment-1.0.1.tgz" "version" "1.0.1" +"@radix-ui/primitive@1.0.0": + "integrity" "sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA==" + "resolved" "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "@babel/runtime" "^7.13.10" + +"@radix-ui/react-collection@1.0.1": + "integrity" "sha512-uuiFbs+YCKjn3X1DTSx9G7BHApu4GHbi3kgiwsnFUbOKCrwejAJv4eE4Vc8C0Oaxt9T0aV4ox0WCOdx+39Xo+g==" + "resolved" "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-compose-refs" "1.0.0" + "@radix-ui/react-context" "1.0.0" + "@radix-ui/react-primitive" "1.0.1" + "@radix-ui/react-slot" "1.0.1" + +"@radix-ui/react-compose-refs@1.0.0": + "integrity" "sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==" + "resolved" "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "@babel/runtime" "^7.13.10" + +"@radix-ui/react-context@1.0.0": + "integrity" "sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg==" + "resolved" "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "@babel/runtime" "^7.13.10" + +"@radix-ui/react-direction@1.0.0": + "integrity" "sha512-2HV05lGUgYcA6xgLQ4BKPDmtL+QbIZYH5fCOTAOOcJ5O0QbWS3i9lKaurLzliYUDhORI2Qr3pyjhJh44lKA3rQ==" + "resolved" "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "@babel/runtime" "^7.13.10" + +"@radix-ui/react-id@1.0.0": + "integrity" "sha512-Q6iAB/U7Tq3NTolBBQbHTgclPmGWE3OlktGGqrClPozSw4vkQ1DfQAOtzgRPecKsMdJINE05iaoDUG8tRzCBjw==" + "resolved" "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-use-layout-effect" "1.0.0" + +"@radix-ui/react-presence@1.0.0": + "integrity" "sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==" + "resolved" "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-compose-refs" "1.0.0" + "@radix-ui/react-use-layout-effect" "1.0.0" + +"@radix-ui/react-primitive@1.0.1": + "integrity" "sha512-fHbmislWVkZaIdeF6GZxF0A/NH/3BjrGIYj+Ae6eTmTCr7EB0RQAAVEiqsXK6p3/JcRqVSBQoceZroj30Jj3XA==" + "resolved" "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-slot" "1.0.1" + +"@radix-ui/react-roving-focus@1.0.1": + "integrity" "sha512-TB76u5TIxKpqMpUAuYH2VqMhHYKa+4Vs1NHygo/llLvlffN6mLVsFhz0AnSFlSBAvTBYVHYAkHAyEt7x1gPJOA==" + "resolved" "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/primitive" "1.0.0" + "@radix-ui/react-collection" "1.0.1" + "@radix-ui/react-compose-refs" "1.0.0" + "@radix-ui/react-context" "1.0.0" + "@radix-ui/react-direction" "1.0.0" + "@radix-ui/react-id" "1.0.0" + "@radix-ui/react-primitive" "1.0.1" + "@radix-ui/react-use-callback-ref" "1.0.0" + "@radix-ui/react-use-controllable-state" "1.0.0" + +"@radix-ui/react-slot@1.0.1": + "integrity" "sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw==" + "resolved" "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-compose-refs" "1.0.0" + +"@radix-ui/react-switch@^1.0.1": + "integrity" "sha512-tTxGluMtwrc5ffgAiOSMrYIx0r3vSTcgM4Vl8rqfpXcHt6ryB9B0OlFKUOiDpKASXlhvzfHf4Y0AYKJdpzjL8w==" + "resolved" "https://registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/primitive" "1.0.0" + "@radix-ui/react-compose-refs" "1.0.0" + "@radix-ui/react-context" "1.0.0" + "@radix-ui/react-primitive" "1.0.1" + "@radix-ui/react-use-controllable-state" "1.0.0" + "@radix-ui/react-use-previous" "1.0.0" + "@radix-ui/react-use-size" "1.0.0" + +"@radix-ui/react-tabs@^1.0.1": + "integrity" "sha512-mVNEwHwgjy2G9F7b39f9VY+jF0QUZykTm0Sdv+Uz6KC4KOEIa4HLDiHU8MeEZluRtZE3aqGYDhl93O7QbJDwhg==" + "resolved" "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/primitive" "1.0.0" + "@radix-ui/react-context" "1.0.0" + "@radix-ui/react-direction" "1.0.0" + "@radix-ui/react-id" "1.0.0" + "@radix-ui/react-presence" "1.0.0" + "@radix-ui/react-primitive" "1.0.1" + "@radix-ui/react-roving-focus" "1.0.1" + "@radix-ui/react-use-controllable-state" "1.0.0" + +"@radix-ui/react-use-callback-ref@1.0.0": + "integrity" "sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==" + "resolved" "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "@babel/runtime" "^7.13.10" + +"@radix-ui/react-use-controllable-state@1.0.0": + "integrity" "sha512-FohDoZvk3mEXh9AWAVyRTYR4Sq7/gavuofglmiXB2g1aKyboUD4YtgWxKj8O5n+Uak52gXQ4wKz5IFST4vtJHg==" + "resolved" "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-use-callback-ref" "1.0.0" + +"@radix-ui/react-use-layout-effect@1.0.0": + "integrity" "sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==" + "resolved" "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "@babel/runtime" "^7.13.10" + +"@radix-ui/react-use-previous@1.0.0": + "integrity" "sha512-RG2K8z/K7InnOKpq6YLDmT49HGjNmrK+fr82UCVKT2sW0GYfVnYp4wZWBooT/EYfQ5faA9uIjvsuMMhH61rheg==" + "resolved" "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "@babel/runtime" "^7.13.10" + +"@radix-ui/react-use-size@1.0.0": + "integrity" "sha512-imZ3aYcoYCKhhgNpkNDh/aTiU05qw9hX+HHI1QDBTyIlcFjgeFlKKySNGMwTp7nYFLQg/j0VA2FmCY4WPDDHMg==" + "resolved" "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-use-layout-effect" "1.0.0" + +"@rainbow-me/rainbowkit@^0.7.4": + "integrity" "sha512-o3kwaHZw9O40gfK2DamJZzoqPbK7EHC+8++QtFy5AQ0Sw5P+U0tzb/87KHatSIXyIwrZTEGD0uciPjCGikJMjg==" + "resolved" "https://registry.npmjs.org/@rainbow-me/rainbowkit/-/rainbowkit-0.7.4.tgz" + "version" "0.7.4" + dependencies: + "@vanilla-extract/css" "1.9.1" + "@vanilla-extract/dynamic" "2.0.2" + "@vanilla-extract/sprinkles" "1.5.0" + "clsx" "1.1.1" + "qrcode" "1.5.0" + "react-remove-scroll" "2.5.4" + "@react-native-community/cli-clean@^9.2.1": "integrity" "sha512-dyNWFrqRe31UEvNO+OFWmQ4hmqA07bR9Ief/6NnGwx67IO9q83D5PEAf/o96ML6jhSbDwCmpPKhPwwBbsyM3mQ==" "resolved" "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-9.2.1.tgz" @@ -2049,7 +2198,7 @@ "resolved" "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz" "version" "15.7.5" -"@types/react@^17.0.39": +"@types/react@^16.8.0 || ^17.0.0 || ^18.0.0", "@types/react@^16.9.0 || ^17.0.0 || ^18.0.0", "@types/react@^17.0.39": "integrity" "sha512-vwk8QqVODi0VaZZpDXQCmEmiOuyjEFPY7Ttaw5vjM112LOq37yz1CDJGrRJwA1fYEq4Iitd5rnjd1yWAc/bT+A==" "resolved" "https://registry.npmjs.org/@types/react/-/react-17.0.52.tgz" "version" "17.0.52" @@ -2147,6 +2296,40 @@ "@typescript-eslint/types" "5.42.0" "eslint-visitor-keys" "^3.3.0" +"@vanilla-extract/css@^1.0.0", "@vanilla-extract/css@1.9.1": + "integrity" "sha512-pu2SFiff5jRhPwvGoj8cM5l/qIyLvigOmy22ss5DGjwV5pJYezRjDLxWumi2luIwioMWvh9EozCjyfH8nq+7fQ==" + "resolved" "https://registry.npmjs.org/@vanilla-extract/css/-/css-1.9.1.tgz" + "version" "1.9.1" + dependencies: + "@emotion/hash" "^0.8.0" + "@vanilla-extract/private" "^1.0.3" + "ahocorasick" "1.0.2" + "chalk" "^4.1.1" + "css-what" "^5.0.1" + "cssesc" "^3.0.0" + "csstype" "^3.0.7" + "deep-object-diff" "^1.1.0" + "deepmerge" "^4.2.2" + "media-query-parser" "^2.0.2" + "outdent" "^0.8.0" + +"@vanilla-extract/dynamic@2.0.2": + "integrity" "sha512-U4nKaEQ8Kuz+exXEr51DUpyaOuzo24/S/k1YbDPQR06cYcNjQqvwFRnwWtZ+9ImocqM1wTKtzrdUgSTtLGIwAg==" + "resolved" "https://registry.npmjs.org/@vanilla-extract/dynamic/-/dynamic-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "@vanilla-extract/private" "^1.0.3" + +"@vanilla-extract/private@^1.0.3": + "integrity" "sha512-17kVyLq3ePTKOkveHxXuIJZtGYs+cSoev7BlP+Lf4916qfDhk/HBjvlYDe8egrea7LNPHKwSZJK/bzZC+Q6AwQ==" + "resolved" "https://registry.npmjs.org/@vanilla-extract/private/-/private-1.0.3.tgz" + "version" "1.0.3" + +"@vanilla-extract/sprinkles@1.5.0": + "integrity" "sha512-W58f2Rzz5lLmk0jbhgStVlZl5wEiPB1Ur3fRvUaBM+MrifZ3qskmFq/CiH//fEYeG5Dh9vF1qRviMMH46cX9Nw==" + "resolved" "https://registry.npmjs.org/@vanilla-extract/sprinkles/-/sprinkles-1.5.0.tgz" + "version" "1.5.0" + "@wagmi/core@^0.5.8": "integrity" "sha512-1mABf1bXyn3AOHyQkios4FTGqoARa8y1tf7GMH6t1c7q0nAMSbpXoTDdjEidUHy8qhWoG0y3Ez4PjCi8WQnmMg==" "resolved" "https://registry.npmjs.org/@wagmi/core/-/core-0.5.8.tgz" @@ -2413,16 +2596,16 @@ "resolved" "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz" "version" "7.2.0" -"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", "acorn@^7.0.0": - "integrity" "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" - "version" "7.4.1" - -"acorn@^8.8.0": +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", "acorn@^8.8.0": "integrity" "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==" "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz" "version" "8.8.1" +"acorn@^7.0.0": + "integrity" "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" + "resolved" "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" + "version" "7.4.1" + "aes-js@^3.1.2": "integrity" "sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==" "resolved" "https://registry.npmjs.org/aes-js/-/aes-js-3.1.2.tgz" @@ -2433,6 +2616,11 @@ "resolved" "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz" "version" "3.0.0" +"ahocorasick@1.0.2": + "integrity" "sha512-hCOfMzbFx5IDutmWLAt6MZwOUjIfSM9G9FyVxytmE4Rs/5YDPWQrD/+IR1w+FweD9H2oOZEnv36TmkjhNURBVA==" + "resolved" "https://registry.npmjs.org/ahocorasick/-/ahocorasick-1.0.2.tgz" + "version" "1.0.2" + "ajv@^6.10.0", "ajv@^6.12.4": "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" "resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" @@ -2467,7 +2655,14 @@ "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" "version" "5.0.1" -"ansi-styles@^3.2.0", "ansi-styles@^3.2.1": +"ansi-styles@^3.2.0": + "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + "version" "3.2.1" + dependencies: + "color-convert" "^1.9.0" + +"ansi-styles@^3.2.1": "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" "version" "3.2.1" @@ -2687,22 +2882,6 @@ dependencies: "@babel/helper-define-polyfill-provider" "^0.3.3" -"babel-plugin-styled-components@>= 1.12.0": - "integrity" "sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA==" - "resolved" "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.7.tgz" - "version" "2.0.7" - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.0" - "@babel/helper-module-imports" "^7.16.0" - "babel-plugin-syntax-jsx" "^6.18.0" - "lodash" "^4.17.11" - "picomatch" "^2.3.0" - -"babel-plugin-syntax-jsx@^6.18.0": - "integrity" "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==" - "resolved" "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz" - "version" "6.18.0" - "babel-plugin-syntax-trailing-function-commas@^7.0.0-beta.0": "integrity" "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==" "resolved" "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz" @@ -3063,11 +3242,6 @@ "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" "version" "6.3.0" -"camelize@^1.0.0": - "integrity" "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==" - "resolved" "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz" - "version" "1.0.1" - "caniuse-lite@^1.0.30001400", "caniuse-lite@^1.0.30001406", "caniuse-lite@^1.0.30001426": "integrity" "sha512-511ThLu1hF+5RRRt0zYCf2U2yRr9GPF6m5y90SBCWsvSoYoW7yAGlv/elyPaNfvGCkp6kj/KFZWU0BMA69Prsg==" "resolved" "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001429.tgz" @@ -3082,23 +3256,7 @@ "escape-string-regexp" "^1.0.5" "supports-color" "^5.3.0" -"chalk@^4.0.0": - "integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - "version" "4.1.2" - dependencies: - "ansi-styles" "^4.1.0" - "supports-color" "^7.1.0" - -"chalk@^4.1.0": - "integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - "version" "4.1.2" - dependencies: - "ansi-styles" "^4.1.0" - "supports-color" "^7.1.0" - -"chalk@^4.1.2": +"chalk@^4.0.0", "chalk@^4.1.0", "chalk@^4.1.1", "chalk@^4.1.2": "integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" "version" "4.1.2" @@ -3208,6 +3366,11 @@ "resolved" "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz" "version" "1.2.1" +"clsx@1.1.1": + "integrity" "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==" + "resolved" "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz" + "version" "1.1.1" + "collection-visit@^1.0.0": "integrity" "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==" "resolved" "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz" @@ -3230,12 +3393,7 @@ dependencies: "color-name" "~1.1.4" -"color-name@^1.1.4": - "integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - "version" "1.1.4" - -"color-name@~1.1.4": +"color-name@^1.1.4", "color-name@~1.1.4": "integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" "version" "1.1.4" @@ -3315,18 +3473,6 @@ "parseurl" "~1.3.3" "utils-merge" "1.0.1" -"connectkit@^0.0.1": - "integrity" "sha512-v6YknHC8jtGzMY7ioawJuMlyRVRs2g+c3C/Kg0Mxmjlu7pxxq3UALaIPyvBJcplyuVbMMReOO3DxMEWZVrLRzA==" - "resolved" "https://registry.npmjs.org/connectkit/-/connectkit-0.0.1.tgz" - "version" "0.0.1" - dependencies: - "framer-motion" "^6.3.11" - "qrcode" "^1.5.0" - "react-transition-state" "^1.1.4" - "react-use-measure" "^2.1.1" - "styled-components" "^5.3.5" - "util" "^0.12.4" - "convert-source-map@^1.7.0": "integrity" "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" "resolved" "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz" @@ -3421,26 +3567,17 @@ "shebang-command" "^2.0.0" "which" "^2.0.1" -"css-color-keywords@^1.0.0": - "integrity" "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==" - "resolved" "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz" - "version" "1.0.0" - -"css-to-react-native@^3.0.0": - "integrity" "sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ==" - "resolved" "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "camelize" "^1.0.0" - "css-color-keywords" "^1.0.0" - "postcss-value-parser" "^4.0.2" +"css-what@^5.0.1": + "integrity" "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==" + "resolved" "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz" + "version" "5.1.0" "cssesc@^3.0.0": "integrity" "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" "resolved" "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" "version" "3.0.0" -"csstype@^3.0.2": +"csstype@^3.0.2", "csstype@^3.0.7": "integrity" "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" "resolved" "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz" "version" "3.1.1" @@ -3455,11 +3592,6 @@ "resolved" "https://registry.npmjs.org/dayjs/-/dayjs-1.11.6.tgz" "version" "1.11.6" -"debounce@^1.2.1": - "integrity" "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==" - "resolved" "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz" - "version" "1.2.1" - "debug@^2.2.0": "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" @@ -3517,11 +3649,21 @@ "resolved" "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" "version" "0.1.4" +"deep-object-diff@^1.1.0": + "integrity" "sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA==" + "resolved" "https://registry.npmjs.org/deep-object-diff/-/deep-object-diff-1.1.9.tgz" + "version" "1.1.9" + "deepmerge@^3.2.0": "integrity" "sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA==" "resolved" "https://registry.npmjs.org/deepmerge/-/deepmerge-3.3.0.tgz" "version" "3.3.0" +"deepmerge@^4.2.2": + "integrity" "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" + "resolved" "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz" + "version" "4.2.2" + "defaults@^1.0.3": "integrity" "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==" "resolved" "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz" @@ -3589,6 +3731,11 @@ "resolved" "https://registry.npmjs.org/detect-browser/-/detect-browser-5.2.0.tgz" "version" "5.2.0" +"detect-node-es@^1.1.0": + "integrity" "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" + "resolved" "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz" + "version" "1.1.0" + "detective@^5.2.1": "integrity" "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==" "resolved" "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz" @@ -4111,7 +4258,8 @@ "setimmediate" "^1.0.5" "ethereumjs-abi@git+https://github.com/ethereumjs/ethereumjs-abi.git": - "resolved" "git+ssh://git@github.com/ethereumjs/ethereumjs-abi.git#ee3994657fa7a427238e6ba92a84d0b529bbcde0" + "integrity" "sha512-qs8G5KwnIO/thOQjv1RvR/4oiTsy6IaCsN+ory5dbiqFXz8sd239aWJH0wmsVNPimL5X1KzQheUpi6xAo6FU4w==" + "resolved" "git+ssh://git@github.com/ethereumjs/ethereumjs-abi.git" "version" "0.6.8" dependencies: "bn.js" "^4.11.8" @@ -4143,7 +4291,7 @@ "ethjs-util" "0.1.6" "rlp" "^2.2.3" -"ethers@^5.6.5", "ethers@^5.6.9", "ethers@>=5.5.1": +"ethers@^5.6.9", "ethers@>=5.5.1": "integrity" "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==" "resolved" "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz" "version" "5.7.2" @@ -4441,7 +4589,7 @@ dependencies: "map-cache" "^0.2.2" -"framer-motion@^6.2.8", "framer-motion@^6.3.11": +"framer-motion@^6.2.8": "integrity" "sha512-o1BGqqposwi7cgDrtg0dNONhkmPsUFDaLcKXigzuTFC5x58mE8iyTazxSudFzmT6MEyJKfjjU8ItoMe3W+3fiw==" "resolved" "https://registry.npmjs.org/framer-motion/-/framer-motion-6.5.1.tgz" "version" "6.5.1" @@ -4490,11 +4638,6 @@ "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" "version" "1.0.0" -"fsevents@^2.1.2", "fsevents@~2.3.2": - "integrity" "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==" - "resolved" "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz" - "version" "2.3.2" - "function-bind@^1.1.1": "integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" "resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" @@ -4534,6 +4677,11 @@ "has" "^1.0.3" "has-symbols" "^1.0.3" +"get-nonce@^1.0.0": + "integrity" "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==" + "resolved" "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz" + "version" "1.0.1" + "get-stream@^4.0.0": "integrity" "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==" "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz" @@ -4575,27 +4723,27 @@ dependencies: "is-glob" "^4.0.1" -"glob@^7.1.3", "glob@^7.2.0": - "integrity" "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==" - "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" - "version" "7.2.3" +"glob@^7.1.3", "glob@7.1.7": + "integrity" "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==" + "resolved" "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz" + "version" "7.1.7" dependencies: "fs.realpath" "^1.0.0" "inflight" "^1.0.4" "inherits" "2" - "minimatch" "^3.1.1" + "minimatch" "^3.0.4" "once" "^1.3.0" "path-is-absolute" "^1.0.0" -"glob@7.1.7": - "integrity" "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==" - "resolved" "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz" - "version" "7.1.7" +"glob@^7.2.0": + "integrity" "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==" + "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + "version" "7.2.3" dependencies: "fs.realpath" "^1.0.0" "inflight" "^1.0.4" "inherits" "2" - "minimatch" "^3.0.4" + "minimatch" "^3.1.1" "once" "^1.3.0" "path-is-absolute" "^1.0.0" @@ -4774,7 +4922,7 @@ "minimalistic-assert" "^1.0.0" "minimalistic-crypto-utils" "^1.0.1" -"hoist-non-react-statics@^3.0.0", "hoist-non-react-statics@^3.3.2": +"hoist-non-react-statics@^3.3.2": "integrity" "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==" "resolved" "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz" "version" "3.3.2" @@ -4820,15 +4968,7 @@ "caller-path" "^2.0.0" "resolve-from" "^3.0.0" -"import-fresh@^3.0.0": - "integrity" "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==" - "resolved" "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" - "version" "3.3.0" - dependencies: - "parent-module" "^1.0.0" - "resolve-from" "^4.0.0" - -"import-fresh@^3.2.1": +"import-fresh@^3.0.0", "import-fresh@^3.2.1": "integrity" "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==" "resolved" "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" "version" "3.3.0" @@ -5561,7 +5701,7 @@ "resolved" "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz" "version" "4.1.1" -"lodash@^4.17.11", "lodash@^4.17.20": +"lodash@^4.17.20": "integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" "version" "4.17.21" @@ -5633,6 +5773,13 @@ "inherits" "^2.0.1" "safe-buffer" "^5.1.2" +"media-query-parser@^2.0.2": + "integrity" "sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==" + "resolved" "https://registry.npmjs.org/media-query-parser/-/media-query-parser-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "@babel/runtime" "^7.12.5" + "memoize-one@^5.0.0": "integrity" "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" "resolved" "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz" @@ -6336,12 +6483,24 @@ "resolved" "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" "version" "1.0.2" +"outdent@^0.8.0": + "integrity" "sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A==" + "resolved" "https://registry.npmjs.org/outdent/-/outdent-0.8.0.tgz" + "version" "0.8.0" + "p-finally@^1.0.0": "integrity" "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==" "resolved" "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" "version" "1.0.0" -"p-limit@^2.0.0", "p-limit@^2.2.0": +"p-limit@^2.0.0": + "integrity" "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==" + "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + "version" "2.3.0" + dependencies: + "p-try" "^2.0.0" + +"p-limit@^2.2.0": "integrity" "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==" "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" "version" "2.3.0" @@ -6421,7 +6580,12 @@ "resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" "version" "1.0.1" -"path-key@^2.0.0", "path-key@^2.0.1": +"path-key@^2.0.0": + "integrity" "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==" + "resolved" "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" + "version" "2.0.1" + +"path-key@^2.0.1": "integrity" "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==" "resolved" "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" "version" "2.0.1" @@ -6457,7 +6621,7 @@ "resolved" "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" "version" "1.0.0" -"picomatch@^2.0.4", "picomatch@^2.2.1", "picomatch@^2.2.3", "picomatch@^2.3.0", "picomatch@^2.3.1": +"picomatch@^2.0.4", "picomatch@^2.2.1", "picomatch@^2.2.3", "picomatch@^2.3.1": "integrity" "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" "version" "2.3.1" @@ -6558,7 +6722,7 @@ "cssesc" "^3.0.0" "util-deprecate" "^1.0.2" -"postcss-value-parser@^4.0.0", "postcss-value-parser@^4.0.2", "postcss-value-parser@^4.2.0": +"postcss-value-parser@^4.0.0", "postcss-value-parser@^4.2.0": "integrity" "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" "resolved" "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" "version" "4.2.0" @@ -6658,16 +6822,6 @@ "resolved" "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" "version" "2.1.1" -"qrcode@^1.5.0": - "integrity" "sha512-nS8NJ1Z3md8uTjKtP+SGGhfqmTCs5flU/xR623oI0JX+Wepz9R8UrRVCTBTJm3qGw3rH6jJ6MUHjkDx15cxSSg==" - "resolved" "https://registry.npmjs.org/qrcode/-/qrcode-1.5.1.tgz" - "version" "1.5.1" - dependencies: - "dijkstrajs" "^1.0.1" - "encode-utf8" "^1.0.3" - "pngjs" "^5.0.0" - "yargs" "^15.3.1" - "qrcode@1.4.4": "integrity" "sha512-oLzEC5+NKFou9P0bMj5+v6Z40evexeE29Z9cummZXZ9QXyMr3lphkURzxjXgPJC5azpxcshoDWV1xE46z+/c3Q==" "resolved" "https://registry.npmjs.org/qrcode/-/qrcode-1.4.4.tgz" @@ -6681,6 +6835,16 @@ "pngjs" "^3.3.0" "yargs" "^13.2.4" +"qrcode@1.5.0": + "integrity" "sha512-9MgRpgVc+/+47dFvQeD6U2s0Z92EsKzcHogtum4QB+UNd025WOJSHvn/hjk9xmzj7Stj95CyUAs31mrjxliEsQ==" + "resolved" "https://registry.npmjs.org/qrcode/-/qrcode-1.5.0.tgz" + "version" "1.5.0" + dependencies: + "dijkstrajs" "^1.0.1" + "encode-utf8" "^1.0.3" + "pngjs" "^5.0.0" + "yargs" "^15.3.1" + "qs@^6.10.3": "integrity" "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==" "resolved" "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz" @@ -6727,7 +6891,7 @@ "shell-quote" "^1.6.1" "ws" "^7" -"react-dom@^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom@^18.0.0", "react-dom@^18.2.0", "react-dom@>= 16.8.0", "react-dom@>=16.0.0", "react-dom@>=16.13", "react-dom@>=16.8 || ^17.0.0 || ^18.0.0", "react-dom@>=16.8.0": +"react-dom@^16.8 || ^17.0 || ^18.0", "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom@^18.2.0", "react-dom@>=16.0.0", "react-dom@>=16.8 || ^17.0.0 || ^18.0.0", "react-dom@>=17": "integrity" "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==" "resolved" "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz" "version" "18.2.0" @@ -6740,7 +6904,7 @@ "resolved" "https://registry.npmjs.org/react-icons/-/react-icons-4.6.0.tgz" "version" "4.6.0" -"react-is@^16.12.0 || ^17.0.0 || ^18.0.0", "react-is@>= 16.8.0": +"react-is@^16.12.0 || ^17.0.0 || ^18.0.0": "integrity" "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" "resolved" "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" "version" "18.2.0" @@ -6825,6 +6989,25 @@ "resolved" "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz" "version" "0.4.3" +"react-remove-scroll-bar@^2.3.3": + "integrity" "sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==" + "resolved" "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz" + "version" "2.3.4" + dependencies: + "react-style-singleton" "^2.2.1" + "tslib" "^2.0.0" + +"react-remove-scroll@2.5.4": + "integrity" "sha512-xGVKJJr0SJGQVirVFAUZ2k1QLyO6m+2fy0l8Qawbp5Jgrv3DeLalrfMNBFSlmz5kriGGzsVBtGVnf4pTKIhhWA==" + "resolved" "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.4.tgz" + "version" "2.5.4" + dependencies: + "react-remove-scroll-bar" "^2.3.3" + "react-style-singleton" "^2.2.1" + "tslib" "^2.1.0" + "use-callback-ref" "^1.3.0" + "use-sidecar" "^1.1.2" + "react-shallow-renderer@^16.15.0": "integrity" "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==" "resolved" "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz" @@ -6833,19 +7016,16 @@ "object-assign" "^4.1.1" "react-is" "^16.12.0 || ^17.0.0 || ^18.0.0" -"react-transition-state@^1.1.4": - "integrity" "sha512-ITY2mZqc2dWG2eitJkYNdcSFW8aKeOlkL2A/vowRrLL8GH3J6Re/SpD/BLvQzrVOTqjsP0b5S9N10vgNNzwMUQ==" - "resolved" "https://registry.npmjs.org/react-transition-state/-/react-transition-state-1.1.5.tgz" - "version" "1.1.5" - -"react-use-measure@^2.1.1": - "integrity" "sha512-nocZhN26cproIiIduswYpV5y5lQpSQS1y/4KuvUCjSKmw7ZWIS/+g3aFnX3WdBkyuGUtTLif3UTqnLLhbDoQig==" - "resolved" "https://registry.npmjs.org/react-use-measure/-/react-use-measure-2.1.1.tgz" - "version" "2.1.1" +"react-style-singleton@^2.2.1": + "integrity" "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==" + "resolved" "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz" + "version" "2.2.1" dependencies: - "debounce" "^1.2.1" + "get-nonce" "^1.0.0" + "invariant" "^2.2.4" + "tslib" "^2.0.0" -"react@*", "react@^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^18.0.0", "react@^18.2.0", "react@>= 16.8.0", "react@>= 16.8.0 || 17.x.x || ^18.0.0-0", "react@>=16.0.0", "react@>=16.13", "react@>=16.8", "react@>=16.8 || ^17.0.0 || ^18.0.0", "react@>=16.8.0", "react@>=17.0.0": +"react@*", "react@^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.8 || ^17.0 || ^18.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^18.2.0", "react@>= 16.8.0 || 17.x.x || ^18.0.0-0", "react@>=16.0.0", "react@>=16.8", "react@>=16.8 || ^17.0.0 || ^18.0.0", "react@>=17", "react@>=17.0.0": "integrity" "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==" "resolved" "https://registry.npmjs.org/react/-/react-18.2.0.tgz" "version" "18.2.0" @@ -7205,7 +7385,17 @@ "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" "version" "5.7.1" -"semver@^6.1.1", "semver@^6.1.2", "semver@^6.3.0": +"semver@^6.1.1": + "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + "version" "6.3.0" + +"semver@^6.1.2": + "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + "version" "6.3.0" + +"semver@^6.3.0": "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" "version" "6.3.0" @@ -7291,11 +7481,6 @@ dependencies: "kind-of" "^6.0.2" -"shallowequal@^1.1.0": - "integrity" "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" - "resolved" "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz" - "version" "1.1.0" - "shebang-command@^1.2.0": "integrity" "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==" "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" @@ -7605,22 +7790,6 @@ "hey-listen" "^1.0.8" "tslib" "^2.1.0" -"styled-components@^5.3.5", "styled-components@>= 2": - "integrity" "sha512-hGTZquGAaTqhGWldX7hhfzjnIYBZ0IXQXkCYdvF1Sq3DsUaLx6+NTHC5Jj1ooM2F68sBiVz3lvhfwQs/S3l6qg==" - "resolved" "https://registry.npmjs.org/styled-components/-/styled-components-5.3.6.tgz" - "version" "5.3.6" - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/traverse" "^7.4.5" - "@emotion/is-prop-valid" "^1.1.0" - "@emotion/stylis" "^0.8.4" - "@emotion/unitless" "^0.7.4" - "babel-plugin-styled-components" ">= 1.12.0" - "css-to-react-native" "^3.0.0" - "hoist-non-react-statics" "^3.0.0" - "shallowequal" "^1.1.0" - "supports-color" "^5.5.0" - "styled-jsx@5.1.0": "integrity" "sha512-/iHaRJt9U7T+5tp6TRelLnqBqiaIT0HsO0+vgyj8hK2KUk7aejFqRrumqPUlAqDwAj8IbS/1hk3IhBAAK/FCUQ==" "resolved" "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.0.tgz" @@ -7638,7 +7807,7 @@ "resolved" "https://registry.npmjs.org/superstruct/-/superstruct-0.14.2.tgz" "version" "0.14.2" -"supports-color@^5.3.0", "supports-color@^5.5.0": +"supports-color@^5.3.0": "integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" "version" "5.5.0" @@ -7669,6 +7838,11 @@ "resolved" "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz" "version" "4.0.0" +"tailwindcss-radix@^2.6.1": + "integrity" "sha512-ejh4BHkn/3g349l+JiEW6I4//uclU4nllEqnOK3/8zpORscIk9WbjLyYR2UzqwVRjjzgd72I/hMDJZm3+XO48w==" + "resolved" "https://registry.npmjs.org/tailwindcss-radix/-/tailwindcss-radix-2.6.1.tgz" + "version" "2.6.1" + "tailwindcss@^3.0.23": "integrity" "sha512-Uw+GVSxp5CM48krnjHObqoOwlCt5Qo6nw1jlCRwfGy68dSYb/LwS9ZFidYGRiM+w6rMawkZiu1mEMAsHYAfoLg==" "resolved" "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.1.tgz" @@ -7960,6 +8134,21 @@ "resolved" "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz" "version" "0.1.0" +"use-callback-ref@^1.3.0": + "integrity" "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==" + "resolved" "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz" + "version" "1.3.0" + dependencies: + "tslib" "^2.0.0" + +"use-sidecar@^1.1.2": + "integrity" "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==" + "resolved" "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz" + "version" "1.1.2" + dependencies: + "detect-node-es" "^1.1.0" + "tslib" "^2.0.0" + "use-sync-external-store@^1.0.0", "use-sync-external-store@^1.2.0", "use-sync-external-store@1.2.0": "integrity" "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==" "resolved" "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz" @@ -8013,7 +8202,7 @@ "resolved" "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz" "version" "1.0.1" -"wagmi@^0.6.0": +"wagmi@^0.6.0", "wagmi@0.5.x || 0.6.x || 0.7.x": "integrity" "sha512-pIOn7I56KPfdPQ1WRIWzWnpC8eJZm1V25Rcn5fbgOJ2eV3kjGNchnIub/ERY1VMKywxkCAfgXfn2D/tqwCJsWw==" "resolved" "https://registry.npmjs.org/wagmi/-/wagmi-0.6.8.tgz" "version" "0.6.8"