Compare commits
27 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8f59f501cc | ||
|
|
197947835b | ||
|
|
94081b29a3 | ||
|
|
69183ed8c2 | ||
|
|
05e741b6c9 | ||
|
|
dfe550c43b | ||
|
|
65dfb40e44 | ||
|
|
25f5ed9983 | ||
|
|
9b1ef415c6 | ||
|
|
70f481430a | ||
|
|
942211eb00 | ||
|
|
6589c41800 | ||
|
|
14bac770b6 | ||
|
|
c9dbe2f0ac | ||
|
|
775cf57c30 | ||
|
|
f4935e9264 | ||
|
|
6b3914b7b9 | ||
|
|
41efb6f617 | ||
|
|
52df5f14cf | ||
|
|
b48a7c529f | ||
|
|
2eca50be93 | ||
|
|
be2ce18bfa | ||
|
|
fe13b29e5e | ||
|
|
02aac08489 | ||
|
|
8f29980b94 | ||
|
|
bb542ef0fb | ||
|
|
c2fe17615f |
@@ -27,6 +27,7 @@
|
||||
"@typescript-eslint/no-explicit-any": "off",
|
||||
"@typescript-eslint/ban-ts-comment": "off",
|
||||
"@typescript-eslint/ban-ts-ignore": "off",
|
||||
"@typescript-eslint/explicit-module-boundary-types": "off"
|
||||
"@typescript-eslint/explicit-module-boundary-types": "off",
|
||||
"react/react-in-jsx-scope": "off"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ or visit [app.uniswap.org](https://app.uniswap.org).
|
||||
|
||||
## Contributions
|
||||
|
||||
See [CONTRIBUTING](./CONTRIBUTING.md).
|
||||
For steps on local deployment, development, and code contribution, please see [CONTRIBUTING](./CONTRIBUTING.md).
|
||||
|
||||
## Accessing Uniswap V2
|
||||
|
||||
|
||||
181
src/assets/svg/arbitrum_logo.svg
Normal file
181
src/assets/svg/arbitrum_logo.svg
Normal file
@@ -0,0 +1,181 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 470.287 514.251" enable-background="new 0 0 470.287 514.251" xml:space="preserve">
|
||||
<g id="Background">
|
||||
</g>
|
||||
<g id="Logos_and_symbols">
|
||||
<g id="SYMBOL_VER_3">
|
||||
</g>
|
||||
<g id="SYMBOL_VER_3_3_">
|
||||
</g>
|
||||
<g id="SYMBOL_VER_4">
|
||||
</g>
|
||||
<g id="SYMBOL_VER_4_1_">
|
||||
<g id="SYMBOL_VER_4_3_">
|
||||
</g>
|
||||
</g>
|
||||
<g id="SYMBOL_VER_5_1_">
|
||||
</g>
|
||||
<g id="off_2_1_">
|
||||
</g>
|
||||
<g id="VER_3_1_">
|
||||
<g id="SYMBOL_VER_2_1_">
|
||||
</g>
|
||||
</g>
|
||||
<g id="VER_3">
|
||||
<g id="SYMBOL_VER_2">
|
||||
</g>
|
||||
</g>
|
||||
<g id="off_2">
|
||||
</g>
|
||||
<g id="SYMBOL_VER_5">
|
||||
</g>
|
||||
<g id="SYMBOL_VER_1">
|
||||
</g>
|
||||
<g id="SYMBOL_VER_1_1_">
|
||||
</g>
|
||||
<g id="SYMBOL_VER_1-1_3_">
|
||||
</g>
|
||||
<g id="SYMBOL_VER_1-1_2_">
|
||||
</g>
|
||||
<g id="SYMBOL_VER_1-1">
|
||||
</g>
|
||||
<g id="SYMBOL_VER_1-1_1_">
|
||||
<g id="_x31_-3">
|
||||
</g>
|
||||
<g id="Symbol_-_Original_14_">
|
||||
<path fill="#2D374B" d="M291.134,237.469l35.654-60.5l96.103,149.684l0.046,28.727l-0.313-197.672
|
||||
c-0.228-4.832-2.794-9.252-6.887-11.859L242.715,46.324c-4.045-1.99-9.18-1.967-13.22,0.063c-0.546,0.272-1.06,0.57-1.548,0.895
|
||||
l-0.604,0.379L59.399,144.983l-0.651,0.296c-0.838,0.385-1.686,0.875-2.48,1.444c-3.185,2.283-5.299,5.66-5.983,9.448
|
||||
c-0.103,0.574-0.179,1.158-0.214,1.749l0.264,161.083l89.515-138.745c11.271-18.397,35.825-24.323,58.62-24.001l26.753,0.706
|
||||
L67.588,409.765l18.582,10.697L245.692,157.22l70.51-0.256L157.091,426.849l66.306,38.138l7.922,4.556
|
||||
c3.351,1.362,7.302,1.431,10.681,0.21l175.453-101.678l-33.544,19.438L291.134,237.469z M304.736,433.395l-66.969-105.108
|
||||
l40.881-69.371l87.952,138.628L304.736,433.395z"/>
|
||||
<polygon fill="#28A0F0" points="237.768,328.286 304.736,433.395 366.601,397.543 278.648,258.915 "/>
|
||||
<path fill="#28A0F0" d="M422.937,355.379l-0.046-28.727l-96.103-149.684l-35.654,60.5l92.774,150.043l33.544-19.438
|
||||
c3.29-2.673,5.281-6.594,5.49-10.825L422.937,355.379z"/>
|
||||
<path fill="#FFFFFF" d="M20.219,382.469l47.369,27.296l157.634-252.801l-26.753-0.706c-22.795-0.322-47.35,5.604-58.62,24.001
|
||||
L50.334,319.004l-30.115,46.271V382.469z"/>
|
||||
<polygon fill="#FFFFFF" points="316.202,156.964 245.692,157.22 86.17,420.462 141.928,452.565 157.091,426.849 "/>
|
||||
<path fill="#96BEDC" d="M452.65,156.601c-0.59-14.746-8.574-28.245-21.08-36.104L256.28,19.692
|
||||
c-12.371-6.229-27.825-6.237-40.218-0.004c-1.465,0.739-170.465,98.752-170.465,98.752c-2.339,1.122-4.592,2.458-6.711,3.975
|
||||
c-11.164,8.001-17.969,20.435-18.668,34.095v208.765l30.115-46.271L50.07,157.921c0.035-0.589,0.109-1.169,0.214-1.741
|
||||
c0.681-3.79,2.797-7.171,5.983-9.456c0.795-0.569,172.682-100.064,173.228-100.337c4.04-2.029,9.175-2.053,13.22-0.063
|
||||
l173.022,99.523c4.093,2.607,6.659,7.027,6.887,11.859v199.542c-0.209,4.231-1.882,8.152-5.172,10.825l-33.544,19.438
|
||||
l-17.308,10.031l-61.864,35.852l-62.737,36.357c-3.379,1.221-7.33,1.152-10.681-0.21l-74.228-42.693l-15.163,25.717
|
||||
l66.706,38.406c2.206,1.255,4.171,2.367,5.784,3.272c2.497,1.4,4.199,2.337,4.8,2.629c4.741,2.303,11.563,3.643,17.71,3.643
|
||||
c5.636,0,11.132-1.035,16.332-3.072l182.225-105.531c10.459-8.104,16.612-20.325,17.166-33.564V156.601z"/>
|
||||
</g>
|
||||
<g id="Symbol_-_Original_13_">
|
||||
</g>
|
||||
<g id="Symbol_-_Original_6_">
|
||||
</g>
|
||||
<g id="Symbol_-_Original_4_">
|
||||
</g>
|
||||
<g id="One_color_version_-_White_3_">
|
||||
<g id="Symbol_-_Original_15_">
|
||||
</g>
|
||||
</g>
|
||||
<g id="One_color_version_-_White">
|
||||
<g id="Symbol_-_Original">
|
||||
</g>
|
||||
</g>
|
||||
<g id="Symbol_-_Monochromatic_3_">
|
||||
<g id="_x33__7_">
|
||||
</g>
|
||||
</g>
|
||||
<g id="Symbol_-_Monochromatic">
|
||||
<g id="_x33__3_">
|
||||
</g>
|
||||
</g>
|
||||
<g id="_x33__2_">
|
||||
</g>
|
||||
<g id="_x33__1_">
|
||||
</g>
|
||||
<g id="_x33_">
|
||||
</g>
|
||||
<g id="Symbol_-_Original_10_">
|
||||
</g>
|
||||
<g id="Symbol_-_Original_1_">
|
||||
</g>
|
||||
<g id="Symbol_-_Original_2_">
|
||||
</g>
|
||||
<g id="_x34__1_">
|
||||
</g>
|
||||
<g id="Symbol_-_Monochromatic_2_">
|
||||
<g id="_x33__6_">
|
||||
</g>
|
||||
</g>
|
||||
<g id="One_color_version_-_White_2_">
|
||||
<g id="Symbol_-_Original_11_">
|
||||
</g>
|
||||
</g>
|
||||
<g id="Symbol_-_Original_5_">
|
||||
<g id="Symbol_-_Original_12_">
|
||||
</g>
|
||||
</g>
|
||||
<g id="One_color_version_-_White_1_">
|
||||
<g id="Symbol_-_Original_9_">
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="SYMBOL_VER_1_2_">
|
||||
<g id="SYMBOL_VER_2_4_">
|
||||
</g>
|
||||
<g id="SYMBOL_VER_2-1-1_1_">
|
||||
</g>
|
||||
<g id="SYMBOL_VER_2-2-1_1_">
|
||||
</g>
|
||||
<g id="SYMBOL_VER_2-3-1_4_">
|
||||
</g>
|
||||
<g id="New_Symbol_1_">
|
||||
<g id="SYMBOL_VER_2-3-1_3_">
|
||||
</g>
|
||||
</g>
|
||||
<g id="New_Symbol">
|
||||
<g id="SYMBOL_VER_2-3-1_1_">
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="SYMBOL_VER_2_2_">
|
||||
</g>
|
||||
<g id="SYMBOL_VER_4_2_">
|
||||
</g>
|
||||
<g id="SYMBOL_VER_3_2_">
|
||||
</g>
|
||||
<g id="SYMBOL_VER_3_1_">
|
||||
</g>
|
||||
<g id="SYMBOL_VER_1-1-1_1_">
|
||||
</g>
|
||||
<g id="SYMBOL_VER_1-1-1">
|
||||
</g>
|
||||
<g id="SYMBOL_VER_1-1-1_2_2_">
|
||||
</g>
|
||||
<g id="SYMBOL_VER_1-1-1_2">
|
||||
</g>
|
||||
<g id="SYMBOL_VER_1-1-1_2_1_">
|
||||
</g>
|
||||
<g id="Symbol_-_Original_7_">
|
||||
</g>
|
||||
<g id="Symbol_-_Original_8_">
|
||||
</g>
|
||||
<g id="SYMBOL_VER_2-1-1">
|
||||
</g>
|
||||
<g id="SYMBOL_VER_2-2-1">
|
||||
</g>
|
||||
<g id="SYMBOL_VER_2-3-1">
|
||||
</g>
|
||||
<g id="SYMBOL_VER_5-1_1_">
|
||||
</g>
|
||||
<g id="SYMBOL_VER_5-1">
|
||||
</g>
|
||||
<g id="SYMBOL_VER_5-2_1_">
|
||||
</g>
|
||||
<g id="SYMBOL_VER_5-2">
|
||||
</g>
|
||||
<g id="Symbol_-_Monochromatic_1_">
|
||||
<g id="_x33__4_">
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.3 KiB |
14
src/assets/svg/arbitrum_mask.svg
Normal file
14
src/assets/svg/arbitrum_mask.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 250 KiB |
@@ -1,4 +1,3 @@
|
||||
import React from 'react'
|
||||
import styled from 'styled-components/macro'
|
||||
import { CheckCircle, Triangle } from 'react-feather'
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React, { useCallback, useContext } from 'react'
|
||||
import { useCallback, useContext } from 'react'
|
||||
import styled, { ThemeContext } from 'styled-components'
|
||||
import { SUPPORTED_WALLETS } from '../../constants/wallet'
|
||||
import { useActiveWeb3React } from '../../hooks/web3'
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import React, { useContext, useCallback } from 'react'
|
||||
import { t, Trans } from '@lingui/macro'
|
||||
import { useContext, useCallback, ReactNode } from 'react'
|
||||
import styled, { ThemeContext } from 'styled-components'
|
||||
import useENS from '../../hooks/useENS'
|
||||
import { useActiveWeb3React } from '../../hooks/web3'
|
||||
@@ -40,7 +41,7 @@ const Input = styled.input<{ error?: boolean }>`
|
||||
width: 0;
|
||||
background-color: ${({ theme }) => theme.bg1};
|
||||
transition: color 300ms ${({ error }) => (error ? 'step-end' : 'step-start')};
|
||||
color: ${({ error, theme }) => (error ? theme.red1 : theme.primary1)};
|
||||
color: ${({ error, theme }) => (error ? theme.red1 : theme.text1)};
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
font-weight: 500;
|
||||
@@ -67,10 +68,16 @@ const Input = styled.input<{ error?: boolean }>`
|
||||
|
||||
export default function AddressInputPanel({
|
||||
id,
|
||||
className = 'recipient-address-input',
|
||||
label,
|
||||
placeholder,
|
||||
value,
|
||||
onChange,
|
||||
}: {
|
||||
id?: string
|
||||
className?: string
|
||||
label?: ReactNode
|
||||
placeholder?: string
|
||||
// the typed string value
|
||||
value: string
|
||||
// triggers whenever the typed value changes
|
||||
@@ -99,25 +106,25 @@ export default function AddressInputPanel({
|
||||
<AutoColumn gap="md">
|
||||
<RowBetween>
|
||||
<TYPE.black color={theme.text2} fontWeight={500} fontSize={14}>
|
||||
Recipient
|
||||
{label ?? <Trans>Recipient</Trans>}
|
||||
</TYPE.black>
|
||||
{address && chainId && (
|
||||
<ExternalLink
|
||||
href={getExplorerLink(chainId, name ?? address, ExplorerDataType.ADDRESS)}
|
||||
style={{ fontSize: '14px' }}
|
||||
>
|
||||
(View on Explorer)
|
||||
<Trans>(View on Explorer)</Trans>
|
||||
</ExternalLink>
|
||||
)}
|
||||
</RowBetween>
|
||||
<Input
|
||||
className="recipient-address-input"
|
||||
className={className}
|
||||
type="text"
|
||||
autoComplete="off"
|
||||
autoCorrect="off"
|
||||
autoCapitalize="off"
|
||||
spellCheck="false"
|
||||
placeholder="Wallet Address or ENS name"
|
||||
placeholder={placeholder ?? t`Wallet Address or ENS name`}
|
||||
error={error}
|
||||
pattern="^(0x[a-fA-F0-9]{40})$"
|
||||
onChange={handleInput}
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
import React from 'react'
|
||||
|
||||
import Badge, { BadgeVariant } from 'components/Badge'
|
||||
import styled from 'styled-components/macro'
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React, { ReactNode, useMemo } from 'react'
|
||||
import { ReactNode, useMemo } from 'react'
|
||||
import { useActiveWeb3React } from '../../hooks/web3'
|
||||
import { Trans } from '@lingui/macro'
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import React from 'react'
|
||||
import styled from 'styled-components/macro'
|
||||
import { darken } from 'polished'
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import React from 'react'
|
||||
import ReactConfetti from 'react-confetti'
|
||||
import { useWindowSize } from '../../hooks/useWindowSize'
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Currency, CurrencyAmount, Percent } from '@uniswap/sdk-core'
|
||||
import React, { useMemo } from 'react'
|
||||
import { useMemo } from 'react'
|
||||
import useTheme from '../../hooks/useTheme'
|
||||
import { TYPE } from '../../theme'
|
||||
import { warningSeverity } from '../../utils/prices'
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { Pair } from '@uniswap/v2-sdk'
|
||||
import { Currency, CurrencyAmount, Percent, Token } from '@uniswap/sdk-core'
|
||||
import React, { useState, useCallback, ReactNode } from 'react'
|
||||
import { useState, useCallback, ReactNode } from 'react'
|
||||
import styled from 'styled-components/macro'
|
||||
import { darken } from 'polished'
|
||||
import { useCurrencyBalance } from '../../state/wallet/hooks'
|
||||
@@ -160,6 +160,8 @@ interface CurrencyInputPanelProps {
|
||||
priceImpact?: Percent
|
||||
id: string
|
||||
showCommonBases?: boolean
|
||||
showCurrencyAmount?: boolean
|
||||
disableNonToken?: boolean
|
||||
renderBalance?: (amount: CurrencyAmount<Currency>) => ReactNode
|
||||
locked?: boolean
|
||||
}
|
||||
@@ -174,6 +176,8 @@ export default function CurrencyInputPanel({
|
||||
otherCurrency,
|
||||
id,
|
||||
showCommonBases,
|
||||
showCurrencyAmount,
|
||||
disableNonToken,
|
||||
renderBalance,
|
||||
fiatValue,
|
||||
priceImpact,
|
||||
@@ -298,6 +302,8 @@ export default function CurrencyInputPanel({
|
||||
selectedCurrency={currency}
|
||||
otherSelectedCurrency={otherCurrency}
|
||||
showCommonBases={showCommonBases}
|
||||
showCurrencyAmount={showCurrencyAmount}
|
||||
disableNonToken={disableNonToken}
|
||||
/>
|
||||
)}
|
||||
</InputPanel>
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import { Currency } from '@uniswap/sdk-core'
|
||||
import React from 'react'
|
||||
import styled from 'styled-components/macro'
|
||||
import CurrencyLogo from '../CurrencyLogo'
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import React from 'react'
|
||||
import { FeeAmount } from '@uniswap/v3-sdk'
|
||||
import { Trans } from '@lingui/macro'
|
||||
import { AutoColumn } from 'components/Column'
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import JSBI from 'jsbi'
|
||||
import React from 'react'
|
||||
import { Currency, CurrencyAmount, Fraction } from '@uniswap/sdk-core'
|
||||
|
||||
const CURRENCY_AMOUNT_MIN = new Fraction(JSBI.BigInt(1), JSBI.BigInt(1000000))
|
||||
|
||||
219
src/components/Header/NetworkCard.tsx
Normal file
219
src/components/Header/NetworkCard.tsx
Normal file
@@ -0,0 +1,219 @@
|
||||
import { Trans } from '@lingui/macro'
|
||||
import arbitrumLogoUrl from 'assets/svg/arbitrum_logo.svg'
|
||||
import { YellowCard } from 'components/Card'
|
||||
import { useOnClickOutside } from 'hooks/useOnClickOutside'
|
||||
import { useActiveWeb3React } from 'hooks/web3'
|
||||
import { transparentize } from 'polished'
|
||||
import React, { useEffect, useRef, useState } from 'react'
|
||||
import { ArrowDownCircle } from 'react-feather'
|
||||
import { ApplicationModal } from 'state/application/actions'
|
||||
import { useModalOpen, useToggleModal } from 'state/application/hooks'
|
||||
import styled, { css } from 'styled-components'
|
||||
import { ExternalLink } from 'theme'
|
||||
import { switchToNetwork } from 'utils/switchToNetwork'
|
||||
import { NETWORK_LABELS, SupportedChainId } from '../../constants/chains'
|
||||
|
||||
const BaseWrapper = css`
|
||||
position: relative;
|
||||
${({ theme }) => theme.mediaWidth.upToMedium`
|
||||
margin-left: 12px;
|
||||
`};
|
||||
${({ theme }) => theme.mediaWidth.upToSmall`
|
||||
margin: 0 0.5rem 0 0;
|
||||
width: initial;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
flex-shrink: 1;
|
||||
`};
|
||||
`
|
||||
const ArbitrumWrapper = styled.div`
|
||||
${BaseWrapper}
|
||||
`
|
||||
const BaseMenuItem = css`
|
||||
align-items: center;
|
||||
background-color: ${({ theme }) => transparentize(0.9, theme.primary1)};
|
||||
border-radius: 12px;
|
||||
color: ${({ theme }) => theme.text2};
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
flex: 1;
|
||||
flex-direction: row;
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
justify-content: space-between;
|
||||
padding: 12px;
|
||||
:hover {
|
||||
color: ${({ theme }) => theme.text1};
|
||||
text-decoration: none;
|
||||
}
|
||||
`
|
||||
const DisabledMenuItem = styled.div`
|
||||
${BaseMenuItem}
|
||||
align-items: center;
|
||||
background-color: ${({ theme }) => theme.bg2};
|
||||
cursor: auto;
|
||||
display: flex;
|
||||
font-size: 10px;
|
||||
font-style: italic;
|
||||
justify-content: center;
|
||||
:hover,
|
||||
:active,
|
||||
:focus {
|
||||
color: ${({ theme }) => theme.text2};
|
||||
}
|
||||
`
|
||||
const FallbackWrapper = styled(YellowCard)`
|
||||
${BaseWrapper}
|
||||
border-radius: 12px;
|
||||
padding: 8px 12px;
|
||||
`
|
||||
const Icon = styled.img`
|
||||
width: 17px;
|
||||
`
|
||||
const L1Tag = styled.div`
|
||||
color: #c4d9f8;
|
||||
opacity: 40%;
|
||||
`
|
||||
const L2Tag = styled.div`
|
||||
background-color: ${({ theme }) => theme.primary1};
|
||||
border-radius: 6px;
|
||||
color: white;
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
padding: 2px 6px;
|
||||
`
|
||||
const MenuFlyout = styled.span`
|
||||
background-color: ${({ theme }) => theme.bg2};
|
||||
box-shadow: 0px 0px 1px rgba(0, 0, 0, 0.01), 0px 4px 8px rgba(0, 0, 0, 0.04), 0px 16px 24px rgba(0, 0, 0, 0.04),
|
||||
0px 24px 32px rgba(0, 0, 0, 0.01);
|
||||
border-radius: 20px;
|
||||
padding: 8px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
font-size: 1rem;
|
||||
position: absolute;
|
||||
left: 0rem;
|
||||
top: 3rem;
|
||||
z-index: 100;
|
||||
width: 237px;
|
||||
${({ theme }) => theme.mediaWidth.upToMedium`
|
||||
top: -14.25rem;
|
||||
`};
|
||||
> {
|
||||
padding: 12px;
|
||||
}
|
||||
> :not(:first-child) {
|
||||
margin-top: 4px;
|
||||
}
|
||||
> :not(:last-child) {
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
`
|
||||
const LinkOutCircle = styled(ArrowDownCircle)`
|
||||
transform: rotate(230deg);
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
`
|
||||
const MenuItem = styled(ExternalLink)`
|
||||
${BaseMenuItem}
|
||||
`
|
||||
const ButtonMenuItem = styled.button`
|
||||
${BaseMenuItem}
|
||||
border: none;
|
||||
outline: none;
|
||||
box-shadow: none;
|
||||
`
|
||||
const NetworkInfo = styled.button`
|
||||
align-items: center;
|
||||
background-color: ${({ theme }) => theme.bg2};
|
||||
border-radius: 8px;
|
||||
border: none;
|
||||
color: ${({ theme }) => theme.text1};
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
font-weight: 500;
|
||||
height: 100%;
|
||||
justify-content: space-between;
|
||||
margin: 0;
|
||||
padding: 8px;
|
||||
width: 172px;
|
||||
|
||||
:hover,
|
||||
:focus {
|
||||
cursor: pointer;
|
||||
outline: none;
|
||||
background-color: ${({ theme }) => theme.bg3};
|
||||
}
|
||||
`
|
||||
export default function NetworkCard() {
|
||||
const { chainId, library } = useActiveWeb3React()
|
||||
const node = useRef<HTMLDivElement>(null)
|
||||
const open = useModalOpen(ApplicationModal.ARBITRUM_OPTIONS)
|
||||
const toggle = useToggleModal(ApplicationModal.ARBITRUM_OPTIONS)
|
||||
useOnClickOutside(node, open ? toggle : undefined)
|
||||
|
||||
const [implements3085, setImplements3085] = useState(false)
|
||||
useEffect(() => {
|
||||
// metamask is currently the only known implementer of this EIP
|
||||
// here we proceed w/ a noop feature check to ensure the user's version of metamask supports network switching
|
||||
// if not, we hide the UI
|
||||
if (!library?.provider?.request || !chainId || !library?.provider?.isMetaMask) {
|
||||
return
|
||||
}
|
||||
switchToNetwork({ library, chainId })
|
||||
.then((x) => x ?? setImplements3085(true))
|
||||
.catch(() => setImplements3085(false))
|
||||
}, [library, chainId])
|
||||
|
||||
if (!chainId || chainId === SupportedChainId.MAINNET || !NETWORK_LABELS[chainId] || !library) {
|
||||
return null
|
||||
}
|
||||
|
||||
if (chainId === SupportedChainId.ARBITRUM_ONE) {
|
||||
return (
|
||||
<ArbitrumWrapper ref={node}>
|
||||
<NetworkInfo onClick={toggle}>
|
||||
<Icon src={arbitrumLogoUrl} />
|
||||
<span>Arbitrum</span>
|
||||
<L2Tag>L2 Alpha</L2Tag>
|
||||
</NetworkInfo>
|
||||
{open && (
|
||||
<MenuFlyout>
|
||||
<MenuItem href="https://bridge.arbitrum.io/">
|
||||
<div>
|
||||
<Trans>Arbitrum Token Bridge</Trans>
|
||||
</div>
|
||||
<LinkOutCircle />
|
||||
</MenuItem>
|
||||
<MenuItem href="https://explorer.arbitrum.io/">
|
||||
<div>
|
||||
<Trans>Arbitrum Explorer</Trans>
|
||||
</div>
|
||||
<LinkOutCircle />
|
||||
</MenuItem>
|
||||
<MenuItem href="https://offchainlabs.com/">
|
||||
<div>
|
||||
<Trans>Learn more</Trans>
|
||||
</div>
|
||||
<LinkOutCircle />
|
||||
</MenuItem>
|
||||
{implements3085 ? (
|
||||
<ButtonMenuItem onClick={() => switchToNetwork({ library, chainId: SupportedChainId.MAINNET })}>
|
||||
<div>
|
||||
<Trans>Switch to Ethereum</Trans>
|
||||
</div>
|
||||
<L1Tag>L1</L1Tag>
|
||||
</ButtonMenuItem>
|
||||
) : (
|
||||
<DisabledMenuItem>
|
||||
<Trans>Change your network to go back to L1</Trans>
|
||||
</DisabledMenuItem>
|
||||
)}
|
||||
</MenuFlyout>
|
||||
)}
|
||||
</ArbitrumWrapper>
|
||||
)
|
||||
}
|
||||
|
||||
return <FallbackWrapper title={NETWORK_LABELS[chainId]}>{NETWORK_LABELS[chainId]}</FallbackWrapper>
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
import React, { useEffect, useState } from 'react'
|
||||
import { useEffect, useState } from 'react'
|
||||
import styled, { keyframes } from 'styled-components'
|
||||
import { useActiveWeb3React } from '../../hooks/web3'
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import React from 'react'
|
||||
import styled from 'styled-components/macro'
|
||||
|
||||
import { AlertTriangle, X } from 'react-feather'
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { CurrencyAmount, Token } from '@uniswap/sdk-core'
|
||||
import React, { useMemo } from 'react'
|
||||
import { useMemo } from 'react'
|
||||
import { X } from 'react-feather'
|
||||
import styled from 'styled-components/macro'
|
||||
import tokenLogo from '../../assets/images/token-logo.png'
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { Trans } from '@lingui/macro'
|
||||
import useScrollPosition from '@react-hook/window-scroll'
|
||||
import { darken } from 'polished'
|
||||
import React, { useState } from 'react'
|
||||
import { useState } from 'react'
|
||||
import { Moon, Sun } from 'react-feather'
|
||||
import { NavLink } from 'react-router-dom'
|
||||
import { Text } from 'rebass'
|
||||
@@ -13,10 +13,8 @@ import { useETHBalances } from 'state/wallet/hooks'
|
||||
import styled from 'styled-components/macro'
|
||||
import Logo from '../../assets/svg/logo.svg'
|
||||
import LogoDark from '../../assets/svg/logo_white.svg'
|
||||
import { NETWORK_LABELS, SupportedChainId } from '../../constants/chains'
|
||||
import { useActiveWeb3React } from '../../hooks/web3'
|
||||
import { ExternalLink, TYPE } from '../../theme'
|
||||
import { YellowCard } from '../Card'
|
||||
import ClaimModal from '../claim/ClaimModal'
|
||||
import { CardNoise } from '../earn/styled'
|
||||
import Menu from '../Menu'
|
||||
@@ -24,6 +22,7 @@ import Modal from '../Modal'
|
||||
import Row, { RowFixed } from '../Row'
|
||||
import { Dots } from '../swap/styleds'
|
||||
import Web3Status from '../Web3Status'
|
||||
import NetworkCard from './NetworkCard'
|
||||
import UniBalanceContent from './UniBalanceContent'
|
||||
|
||||
const HeaderFrame = styled.div<{ showBackground: boolean }>`
|
||||
@@ -166,19 +165,6 @@ const HideSmall = styled.span`
|
||||
`};
|
||||
`
|
||||
|
||||
const NetworkCard = styled(YellowCard)`
|
||||
border-radius: 12px;
|
||||
padding: 8px 12px;
|
||||
${({ theme }) => theme.mediaWidth.upToSmall`
|
||||
margin: 0;
|
||||
margin-right: 0.5rem;
|
||||
width: initial;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
flex-shrink: 1;
|
||||
`};
|
||||
`
|
||||
|
||||
const BalanceText = styled(Text)`
|
||||
${({ theme }) => theme.mediaWidth.upToExtraSmall`
|
||||
display: none;
|
||||
@@ -299,7 +285,7 @@ export const StyledMenuButton = styled.button`
|
||||
`
|
||||
|
||||
export default function Header() {
|
||||
const { account, chainId } = useActiveWeb3React()
|
||||
const { account } = useActiveWeb3React()
|
||||
|
||||
const userEthBalance = useETHBalances(account ? [account] : [])?.[account ?? '']
|
||||
// const [isDark] = useDarkModeManager()
|
||||
@@ -357,9 +343,7 @@ export default function Header() {
|
||||
<HeaderControls>
|
||||
<HeaderElement>
|
||||
<HideSmall>
|
||||
{chainId && chainId !== SupportedChainId.MAINNET && NETWORK_LABELS[chainId] && (
|
||||
<NetworkCard title={NETWORK_LABELS[chainId]}>{NETWORK_LABELS[chainId]}</NetworkCard>
|
||||
)}
|
||||
<NetworkCard />
|
||||
</HideSmall>
|
||||
{availableClaim && !showClaimPopup && (
|
||||
<UNIWrapper onClick={toggleClaimModal}>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import Tooltip from 'components/Tooltip'
|
||||
import React, { useState } from 'react'
|
||||
import { useState } from 'react'
|
||||
import styled from 'styled-components/macro'
|
||||
|
||||
const TextWrapper = styled.span<{ margin: boolean; link?: boolean; fontSize?: string; adjustSize?: boolean }>`
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React, { useEffect, useRef } from 'react'
|
||||
import { useEffect, useRef } from 'react'
|
||||
|
||||
import styled from 'styled-components/macro'
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React, { useState, useCallback, useEffect, ReactNode } from 'react'
|
||||
import { useState, useCallback, useEffect, ReactNode } from 'react'
|
||||
import { LightCard } from 'components/Card'
|
||||
import { RowBetween } from 'components/Row'
|
||||
import { Input as NumericalInput } from '../NumericalInput'
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
import React from 'react'
|
||||
|
||||
import styled, { keyframes } from 'styled-components'
|
||||
|
||||
const rotate = keyframes`
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React, { useState } from 'react'
|
||||
import { useState } from 'react'
|
||||
import { Slash } from 'react-feather'
|
||||
import { ImageProps } from 'rebass'
|
||||
import useTheme from '../../hooks/useTheme'
|
||||
|
||||
@@ -30,7 +30,7 @@ const StyledDialogContent = styled(({ minHeight, maxHeight, mobile, isOpen, ...r
|
||||
)).attrs({
|
||||
'aria-label': 'dialog',
|
||||
})`
|
||||
overflow-y: ${({ mobile }) => (mobile ? 'scroll' : 'hidden')};
|
||||
overflow-y: auto;
|
||||
|
||||
&[data-reach-dialog-content] {
|
||||
margin: 0 0 2rem 0;
|
||||
@@ -39,7 +39,7 @@ const StyledDialogContent = styled(({ minHeight, maxHeight, mobile, isOpen, ...r
|
||||
box-shadow: 0 4px 8px 0 ${({ theme }) => transparentize(0.95, theme.shadow1)};
|
||||
padding: 0px;
|
||||
width: 50vw;
|
||||
overflow-y: ${({ mobile }) => (mobile ? 'scroll' : 'hidden')};
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
|
||||
align-self: ${({ mobile }) => (mobile ? 'flex-end' : 'center')};
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React, { useContext } from 'react'
|
||||
import { useContext } from 'react'
|
||||
import { useActiveWeb3React } from '../../hooks/web3'
|
||||
import { ExplorerDataType, getExplorerLink } from '../../utils/getExplorerLink'
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import React from 'react'
|
||||
import styled from 'styled-components/macro'
|
||||
import { darken } from 'polished'
|
||||
import { Trans } from '@lingui/macro'
|
||||
@@ -6,7 +5,7 @@ import { NavLink, Link as HistoryLink, useLocation } from 'react-router-dom'
|
||||
import { Percent } from '@uniswap/sdk-core'
|
||||
|
||||
import { ArrowLeft } from 'react-feather'
|
||||
import { RowBetween } from '../Row'
|
||||
import Row, { RowBetween } from '../Row'
|
||||
import SettingsTab from '../Settings'
|
||||
|
||||
import { useAppDispatch } from 'state/hooks'
|
||||
@@ -137,3 +136,16 @@ export function AddRemoveTabs({
|
||||
</Tabs>
|
||||
)
|
||||
}
|
||||
|
||||
export function CreateProposalTabs() {
|
||||
return (
|
||||
<Tabs>
|
||||
<Row style={{ padding: '1rem 1rem 0 1rem' }}>
|
||||
<HistoryLink to="/vote">
|
||||
<StyledArrowLeft />
|
||||
</HistoryLink>
|
||||
<ActiveText style={{ marginLeft: 'auto', marginRight: 'auto' }}>Create Proposal</ActiveText>
|
||||
</Row>
|
||||
</Tabs>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { Trans } from '@lingui/macro'
|
||||
import { CurrencyAmount, Token } from '@uniswap/sdk-core'
|
||||
import React, { useCallback, useEffect } from 'react'
|
||||
import { useCallback, useEffect } from 'react'
|
||||
import ReactGA from 'react-ga'
|
||||
import { Heart, X } from 'react-feather'
|
||||
import styled, { keyframes } from 'styled-components'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React, { useCallback, useContext, useEffect } from 'react'
|
||||
import { useCallback, useContext, useEffect } from 'react'
|
||||
import { X } from 'react-feather'
|
||||
import { useSpring } from 'react-spring/web'
|
||||
import styled, { ThemeContext } from 'styled-components'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React, { useContext } from 'react'
|
||||
import { useContext } from 'react'
|
||||
import { AlertCircle, CheckCircle } from 'react-feather'
|
||||
import styled, { ThemeContext } from 'styled-components'
|
||||
import { useActiveWeb3React } from '../../hooks/web3'
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import React from 'react'
|
||||
import styled from 'styled-components/macro'
|
||||
import { useActivePopups } from '../../state/application/hooks'
|
||||
import { AutoColumn } from '../Column'
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import React from 'react'
|
||||
import { Token } from '@uniswap/sdk-core'
|
||||
import { Link } from 'react-router-dom'
|
||||
import { Text } from 'rebass'
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import JSBI from 'jsbi'
|
||||
import React, { useState } from 'react'
|
||||
import { useState } from 'react'
|
||||
import { Percent, CurrencyAmount, Token } from '@uniswap/sdk-core'
|
||||
import { Pair } from '@uniswap/v2-sdk'
|
||||
import { ChevronDown, ChevronUp } from 'react-feather'
|
||||
|
||||
@@ -2,7 +2,7 @@ import JSBI from 'jsbi'
|
||||
import { Percent, CurrencyAmount, Token } from '@uniswap/sdk-core'
|
||||
import { Pair } from '@uniswap/v2-sdk'
|
||||
import { darken } from 'polished'
|
||||
import React, { useState } from 'react'
|
||||
import { useState } from 'react'
|
||||
import { ChevronDown, ChevronUp } from 'react-feather'
|
||||
import { Link } from 'react-router-dom'
|
||||
import { Text } from 'rebass'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React, { useMemo } from 'react'
|
||||
import { useMemo } from 'react'
|
||||
import { Position } from '@uniswap/v3-sdk'
|
||||
import Badge from 'components/Badge'
|
||||
import DoubleCurrencyLogo from 'components/DoubleLogo'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React, { useState, useCallback, useContext, ReactNode } from 'react'
|
||||
import { useState, useCallback, useContext, ReactNode } from 'react'
|
||||
import { Position } from '@uniswap/v3-sdk'
|
||||
import { LightCard } from 'components/Card'
|
||||
import { AutoColumn } from 'components/Column'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React, { useContext } from 'react'
|
||||
import { useContext } from 'react'
|
||||
import styled from 'styled-components/macro'
|
||||
import { AutoColumn } from '../Column'
|
||||
import { ThemeContext } from 'styled-components'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React, { ReactNode, useCallback, useState } from 'react'
|
||||
import { ReactNode, useCallback, useState } from 'react'
|
||||
import styled from 'styled-components/macro'
|
||||
import Tooltip from '../Tooltip'
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import { Trans } from '@lingui/macro'
|
||||
import React from 'react'
|
||||
import { Currency, Price, Token } from '@uniswap/sdk-core'
|
||||
import StepCounter from 'components/InputStepCounter/InputStepCounter'
|
||||
import { RowBetween } from 'components/Row'
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import { Trans } from '@lingui/macro'
|
||||
import React from 'react'
|
||||
import { Currency } from '@uniswap/sdk-core'
|
||||
import { ToggleElement, ToggleWrapper } from 'components/Toggle/MultiToggle'
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import { Trans } from '@lingui/macro'
|
||||
import React from 'react'
|
||||
import { Text } from 'rebass'
|
||||
import { Currency } from '@uniswap/sdk-core'
|
||||
import styled from 'styled-components/macro'
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { Trans } from '@lingui/macro'
|
||||
import { Currency, CurrencyAmount, Token } from '@uniswap/sdk-core'
|
||||
import React, { CSSProperties, MutableRefObject, useCallback, useMemo } from 'react'
|
||||
import { CSSProperties, MutableRefObject, useCallback, useMemo } from 'react'
|
||||
import { FixedSizeList } from 'react-window'
|
||||
import { Text } from 'rebass'
|
||||
import styled from 'styled-components/macro'
|
||||
@@ -104,12 +104,14 @@ function CurrencyRow({
|
||||
isSelected,
|
||||
otherSelected,
|
||||
style,
|
||||
showCurrencyAmount,
|
||||
}: {
|
||||
currency: Currency
|
||||
onSelect: () => void
|
||||
isSelected: boolean
|
||||
otherSelected: boolean
|
||||
style: CSSProperties
|
||||
showCurrencyAmount?: boolean
|
||||
}) {
|
||||
const { account } = useActiveWeb3React()
|
||||
const key = currencyKey(currency)
|
||||
@@ -141,9 +143,11 @@ function CurrencyRow({
|
||||
</TYPE.darkGray>
|
||||
</Column>
|
||||
<TokenTags currency={currency} />
|
||||
<RowFixed style={{ justifySelf: 'flex-end' }}>
|
||||
{balance ? <Balance balance={balance} /> : account ? <Loader /> : null}
|
||||
</RowFixed>
|
||||
{showCurrencyAmount && (
|
||||
<RowFixed style={{ justifySelf: 'flex-end' }}>
|
||||
{balance ? <Balance balance={balance} /> : account ? <Loader /> : null}
|
||||
</RowFixed>
|
||||
)}
|
||||
</MenuItem>
|
||||
)
|
||||
}
|
||||
@@ -189,6 +193,7 @@ export default function CurrencyList({
|
||||
fixedListRef,
|
||||
showImportView,
|
||||
setImportToken,
|
||||
showCurrencyAmount,
|
||||
}: {
|
||||
height: number
|
||||
currencies: Currency[]
|
||||
@@ -199,6 +204,7 @@ export default function CurrencyList({
|
||||
fixedListRef?: MutableRefObject<FixedSizeList | undefined>
|
||||
showImportView: () => void
|
||||
setImportToken: (token: Token) => void
|
||||
showCurrencyAmount?: boolean
|
||||
}) {
|
||||
const itemData: (Currency | BreakLine)[] = useMemo(() => {
|
||||
if (otherListTokens && otherListTokens?.length > 0) {
|
||||
@@ -237,13 +243,22 @@ export default function CurrencyList({
|
||||
isSelected={isSelected}
|
||||
onSelect={handleSelect}
|
||||
otherSelected={otherSelected}
|
||||
showCurrencyAmount={showCurrencyAmount}
|
||||
/>
|
||||
)
|
||||
} else {
|
||||
return null
|
||||
}
|
||||
},
|
||||
[currencies.length, onCurrencySelect, otherCurrency, selectedCurrency, setImportToken, showImportView]
|
||||
[
|
||||
currencies.length,
|
||||
onCurrencySelect,
|
||||
otherCurrency,
|
||||
selectedCurrency,
|
||||
setImportToken,
|
||||
showImportView,
|
||||
showCurrencyAmount,
|
||||
]
|
||||
)
|
||||
|
||||
const itemKey = useCallback((index: number, data: typeof itemData) => {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Currency, Token } from '@uniswap/sdk-core'
|
||||
import React, { KeyboardEvent, RefObject, useCallback, useEffect, useMemo, useRef, useState } from 'react'
|
||||
import { KeyboardEvent, RefObject, useCallback, useEffect, useMemo, useRef, useState } from 'react'
|
||||
import ReactGA from 'react-ga'
|
||||
import { t, Trans } from '@lingui/macro'
|
||||
import { FixedSizeList } from 'react-window'
|
||||
@@ -48,6 +48,8 @@ interface CurrencySearchProps {
|
||||
onCurrencySelect: (currency: Currency) => void
|
||||
otherSelectedCurrency?: Currency | null
|
||||
showCommonBases?: boolean
|
||||
showCurrencyAmount?: boolean
|
||||
disableNonToken?: boolean
|
||||
showManageView: () => void
|
||||
showImportView: () => void
|
||||
setImportToken: (token: Token) => void
|
||||
@@ -58,6 +60,8 @@ export function CurrencySearch({
|
||||
onCurrencySelect,
|
||||
otherSelectedCurrency,
|
||||
showCommonBases,
|
||||
showCurrencyAmount,
|
||||
disableNonToken,
|
||||
onDismiss,
|
||||
isOpen,
|
||||
showManageView,
|
||||
@@ -203,7 +207,7 @@ export function CurrencySearch({
|
||||
{({ height }) => (
|
||||
<CurrencyList
|
||||
height={height}
|
||||
currencies={filteredSortedTokensWithETH}
|
||||
currencies={disableNonToken ? filteredSortedTokens : filteredSortedTokensWithETH}
|
||||
otherListTokens={filteredInactiveTokens}
|
||||
onCurrencySelect={handleCurrencySelect}
|
||||
otherCurrency={otherSelectedCurrency}
|
||||
@@ -211,6 +215,7 @@ export function CurrencySearch({
|
||||
fixedListRef={fixedList}
|
||||
showImportView={showImportView}
|
||||
setImportToken={setImportToken}
|
||||
showCurrencyAmount={showCurrencyAmount}
|
||||
/>
|
||||
)}
|
||||
</AutoSizer>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Currency, Token } from '@uniswap/sdk-core'
|
||||
import React, { useCallback, useEffect, useState } from 'react'
|
||||
import { useCallback, useEffect, useState } from 'react'
|
||||
import useLast from '../../hooks/useLast'
|
||||
import { WrappedTokenInfo } from '../../state/lists/wrappedTokenInfo'
|
||||
import Modal from '../Modal'
|
||||
@@ -17,6 +17,8 @@ interface CurrencySearchModalProps {
|
||||
onCurrencySelect: (currency: Currency) => void
|
||||
otherSelectedCurrency?: Currency | null
|
||||
showCommonBases?: boolean
|
||||
showCurrencyAmount?: boolean
|
||||
disableNonToken?: boolean
|
||||
}
|
||||
|
||||
export enum CurrencyModalView {
|
||||
@@ -33,6 +35,8 @@ export default function CurrencySearchModal({
|
||||
selectedCurrency,
|
||||
otherSelectedCurrency,
|
||||
showCommonBases = false,
|
||||
showCurrencyAmount = true,
|
||||
disableNonToken = false,
|
||||
}: CurrencySearchModalProps) {
|
||||
const [modalView, setModalView] = useState<CurrencyModalView>(CurrencyModalView.manage)
|
||||
const lastOpen = useLast(isOpen)
|
||||
@@ -74,6 +78,8 @@ export default function CurrencySearchModal({
|
||||
selectedCurrency={selectedCurrency}
|
||||
otherSelectedCurrency={otherSelectedCurrency}
|
||||
showCommonBases={showCommonBases}
|
||||
showCurrencyAmount={showCurrencyAmount}
|
||||
disableNonToken={disableNonToken}
|
||||
showImportView={() => setModalView(CurrencyModalView.importToken)}
|
||||
setImportToken={setImportToken}
|
||||
showManageView={() => setModalView(CurrencyModalView.manage)}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React, { useState, useCallback } from 'react'
|
||||
import { useState, useCallback } from 'react'
|
||||
import styled from 'styled-components/macro'
|
||||
import ReactGA from 'react-ga'
|
||||
import { TYPE, CloseIcon } from 'theme'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React, { CSSProperties } from 'react'
|
||||
import { CSSProperties } from 'react'
|
||||
import { Token } from '@uniswap/sdk-core'
|
||||
import { AutoRow, RowFixed } from 'components/Row'
|
||||
import { AutoColumn } from 'components/Column'
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import { TokenList } from '@uniswap/token-lists/dist/types'
|
||||
import React from 'react'
|
||||
import { Token, Currency } from '@uniswap/sdk-core'
|
||||
import styled from 'styled-components/macro'
|
||||
import { TYPE, CloseIcon } from 'theme'
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Trans } from '@lingui/macro'
|
||||
import React, { useState } from 'react'
|
||||
import { useState } from 'react'
|
||||
import { PaddedColumn, Separator } from './styleds'
|
||||
import { RowBetween } from 'components/Row'
|
||||
import { ArrowLeft } from 'react-feather'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React, { memo, useCallback, useMemo, useRef, useState, useEffect } from 'react'
|
||||
import { memo, useCallback, useMemo, useRef, useState, useEffect } from 'react'
|
||||
import { Settings, CheckCircle } from 'react-feather'
|
||||
import ReactGA from 'react-ga'
|
||||
import { useAppDispatch, useAppSelector } from 'state/hooks'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React, { useRef, RefObject, useCallback, useState, useMemo } from 'react'
|
||||
import { useRef, RefObject, useCallback, useState, useMemo } from 'react'
|
||||
import Column from 'components/Column'
|
||||
import { ExplorerDataType, getExplorerLink } from '../../utils/getExplorerLink'
|
||||
import { PaddedColumn, Separator, SearchInput } from './styleds'
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import React from 'react'
|
||||
import { Text } from 'rebass'
|
||||
import styled from 'styled-components/macro'
|
||||
import { RowFixed } from '../Row'
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { t, Trans } from '@lingui/macro'
|
||||
import React, { useContext, useRef, useState } from 'react'
|
||||
import { useContext, useRef, useState } from 'react'
|
||||
import { Settings, X } from 'react-feather'
|
||||
import ReactGA from 'react-ga'
|
||||
import { Text } from 'rebass'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React, { useCallback } from 'react'
|
||||
import { useCallback } from 'react'
|
||||
import styled from 'styled-components/macro'
|
||||
|
||||
const StyledRangeInput = styled.input<{ size: number }>`
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Trans } from '@lingui/macro'
|
||||
import React, { useMemo } from 'react'
|
||||
import { useMemo } from 'react'
|
||||
import ReactGA from 'react-ga'
|
||||
import { useLocation } from 'react-router'
|
||||
import styled from 'styled-components/macro'
|
||||
|
||||
146
src/components/TextInput/index.tsx
Normal file
146
src/components/TextInput/index.tsx
Normal file
@@ -0,0 +1,146 @@
|
||||
import React, { memo, useCallback, useRef } from 'react'
|
||||
import styled from 'styled-components'
|
||||
|
||||
const Input = styled.input<{ error?: boolean; fontSize?: string }>`
|
||||
font-size: ${({ fontSize }) => fontSize || '1.25rem'};
|
||||
outline: none;
|
||||
border: none;
|
||||
flex: 1 1 auto;
|
||||
width: 0;
|
||||
background-color: ${({ theme }) => theme.bg1};
|
||||
transition: color 300ms ${({ error }) => (error ? 'step-end' : 'step-start')};
|
||||
color: ${({ error, theme }) => (error ? theme.red1 : theme.text1)};
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
font-weight: 500;
|
||||
width: 100%;
|
||||
padding: 0px;
|
||||
-webkit-appearance: textfield;
|
||||
|
||||
::-webkit-search-decoration {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
::-webkit-outer-spin-button,
|
||||
::-webkit-inner-spin-button {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
::placeholder {
|
||||
color: ${({ theme }) => theme.text4};
|
||||
}
|
||||
`
|
||||
|
||||
const TextAreaInput = styled.textarea<{ error?: boolean; fontSize?: string }>`
|
||||
font-size: ${({ fontSize }) => fontSize || '1.25rem'};
|
||||
outline: none;
|
||||
border: none;
|
||||
flex: 1 1 auto;
|
||||
width: 0;
|
||||
resize: none;
|
||||
background-color: ${({ theme }) => theme.bg1};
|
||||
transition: color 300ms ${({ error }) => (error ? 'step-end' : 'step-start')};
|
||||
color: ${({ error, theme }) => (error ? theme.red1 : theme.text1)};
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
font-weight: 500;
|
||||
width: 100%;
|
||||
line-height: 1.2;
|
||||
padding: 0px;
|
||||
-webkit-appearance: textfield;
|
||||
|
||||
::-webkit-search-decoration {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
::-webkit-outer-spin-button,
|
||||
::-webkit-inner-spin-button {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
::placeholder {
|
||||
color: ${({ theme }) => theme.text4};
|
||||
}
|
||||
`
|
||||
|
||||
export const TextInput = ({
|
||||
className,
|
||||
value,
|
||||
onUserInput,
|
||||
placeholder,
|
||||
fontSize,
|
||||
}: {
|
||||
className?: string
|
||||
value: string
|
||||
onUserInput: (value: string) => void
|
||||
placeholder: string
|
||||
fontSize: string
|
||||
}) => {
|
||||
const handleInput = useCallback(
|
||||
(event) => {
|
||||
onUserInput(event.target.value)
|
||||
},
|
||||
[onUserInput]
|
||||
)
|
||||
|
||||
return (
|
||||
<div className={className}>
|
||||
<Input
|
||||
type="text"
|
||||
autoComplete="off"
|
||||
autoCorrect="off"
|
||||
autoCapitalize="off"
|
||||
spellCheck="false"
|
||||
placeholder={placeholder || ''}
|
||||
onChange={handleInput}
|
||||
value={value}
|
||||
fontSize={fontSize}
|
||||
/>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
export const ResizingTextArea = memo(
|
||||
({
|
||||
className,
|
||||
value,
|
||||
onUserInput,
|
||||
placeholder,
|
||||
fontSize,
|
||||
}: {
|
||||
className?: string
|
||||
value: string
|
||||
onUserInput: (value: string) => void
|
||||
placeholder: string
|
||||
fontSize: string
|
||||
}) => {
|
||||
const inputRef = useRef<HTMLTextAreaElement>(document.createElement('textarea'))
|
||||
|
||||
const handleInput = useCallback(
|
||||
(event) => {
|
||||
inputRef.current.style.height = 'auto'
|
||||
inputRef.current.style.height = inputRef.current.scrollHeight + 'px'
|
||||
onUserInput(event.target.value)
|
||||
},
|
||||
[onUserInput]
|
||||
)
|
||||
|
||||
return (
|
||||
<TextAreaInput
|
||||
style={{ height: 'auto', minHeight: '500px' }}
|
||||
className={className}
|
||||
autoComplete="off"
|
||||
autoCorrect="off"
|
||||
autoCapitalize="off"
|
||||
spellCheck="false"
|
||||
placeholder={placeholder || ''}
|
||||
onChange={handleInput}
|
||||
value={value}
|
||||
fontSize={fontSize}
|
||||
ref={inputRef}
|
||||
/>
|
||||
)
|
||||
}
|
||||
)
|
||||
|
||||
ResizingTextArea.displayName = 'ResizingTextArea'
|
||||
@@ -1,5 +1,4 @@
|
||||
import { readableColor } from 'polished'
|
||||
import React from 'react'
|
||||
import styled from 'styled-components/macro'
|
||||
import { colors } from 'theme'
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import { Trans } from '@lingui/macro'
|
||||
import React from 'react'
|
||||
import styled from 'styled-components/macro'
|
||||
import { TYPE } from '../../theme'
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { Trans } from '@lingui/macro'
|
||||
import { darken } from 'polished'
|
||||
import React, { ReactNode } from 'react'
|
||||
import { ReactNode } from 'react'
|
||||
import styled from 'styled-components/macro'
|
||||
|
||||
const ToggleElement = styled.span<{ isActive?: boolean; isOnSwitch?: boolean }>`
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import { Token } from '@uniswap/sdk-core'
|
||||
import React from 'react'
|
||||
import Modal from '../Modal'
|
||||
import { ImportToken } from 'components/SearchModal/ImportToken'
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React, { ReactNode, useCallback, useState } from 'react'
|
||||
import { ReactNode, useCallback, useState } from 'react'
|
||||
import styled from 'styled-components/macro'
|
||||
import Popover, { PopoverProps } from '../Popover'
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Currency } from '@uniswap/sdk-core'
|
||||
import React, { ReactNode, useContext } from 'react'
|
||||
import { ReactNode, useContext } from 'react'
|
||||
import styled, { ThemeContext } from 'styled-components'
|
||||
import { getExplorerLink, ExplorerDataType } from '../../utils/getExplorerLink'
|
||||
import Modal from '../Modal'
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { t, Trans } from '@lingui/macro'
|
||||
import React, { useState, useContext } from 'react'
|
||||
import { useState, useContext } from 'react'
|
||||
import { Percent } from '@uniswap/sdk-core'
|
||||
import styled, { ThemeContext } from 'styled-components'
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import { AbstractConnector } from '@web3-react/abstract-connector'
|
||||
import React from 'react'
|
||||
import styled from 'styled-components/macro'
|
||||
import { SUPPORTED_WALLETS } from '../../constants/wallet'
|
||||
import Option from './Option'
|
||||
|
||||
@@ -2,7 +2,7 @@ import { AbstractConnector } from '@web3-react/abstract-connector'
|
||||
import { UnsupportedChainIdError, useWeb3React } from '@web3-react/core'
|
||||
import { WalletConnectConnector } from '@web3-react/walletconnect-connector'
|
||||
import { AutoRow } from 'components/Row'
|
||||
import React, { useEffect, useState } from 'react'
|
||||
import { useEffect, useState } from 'react'
|
||||
import { isMobile } from 'react-device-detect'
|
||||
import ReactGA from 'react-ga'
|
||||
import styled from 'styled-components/macro'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React, { useState, useEffect } from 'react'
|
||||
import { useState, useEffect } from 'react'
|
||||
import { useWeb3React } from '@web3-react/core'
|
||||
import styled from 'styled-components/macro'
|
||||
import { Trans } from '@lingui/macro'
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { AbstractConnector } from '@web3-react/abstract-connector'
|
||||
import { UnsupportedChainIdError, useWeb3React } from '@web3-react/core'
|
||||
import { darken, lighten } from 'polished'
|
||||
import React, { useMemo } from 'react'
|
||||
import { useMemo } from 'react'
|
||||
import { Activity } from 'react-feather'
|
||||
import { t, Trans } from '@lingui/macro'
|
||||
import styled, { css } from 'styled-components'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React, { useState } from 'react'
|
||||
import { useState } from 'react'
|
||||
import { ExplorerDataType, getExplorerLink } from '../../utils/getExplorerLink'
|
||||
import Modal from '../Modal'
|
||||
import { AutoColumn, ColumnCenter } from '../Column'
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import JSBI from 'jsbi'
|
||||
import { CurrencyAmount, Token } from '@uniswap/sdk-core'
|
||||
import { isAddress } from 'ethers/lib/utils'
|
||||
import React, { useEffect, useState } from 'react'
|
||||
import { useEffect, useState } from 'react'
|
||||
import { Text } from 'rebass'
|
||||
import styled from 'styled-components/macro'
|
||||
import Circle from '../../assets/images/blue-loader.svg'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React, { useState } from 'react'
|
||||
import { useState } from 'react'
|
||||
import Modal from '../Modal'
|
||||
import { AutoColumn } from '../Column'
|
||||
import styled from 'styled-components/macro'
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import React from 'react'
|
||||
import { AutoColumn } from '../Column'
|
||||
import { RowBetween } from '../Row'
|
||||
import styled from 'styled-components/macro'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React, { useState, useCallback } from 'react'
|
||||
import { useState, useCallback } from 'react'
|
||||
import { useV2LiquidityTokenPermit } from '../../hooks/useERC20Permit'
|
||||
import useTransactionDeadline from '../../hooks/useTransactionDeadline'
|
||||
import { formatCurrencyAmount } from '../../utils/formatCurrencyAmount'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React, { useState } from 'react'
|
||||
import { useState } from 'react'
|
||||
import Modal from '../Modal'
|
||||
import { AutoColumn } from '../Column'
|
||||
import styled from 'styled-components/macro'
|
||||
|
||||
@@ -2,7 +2,7 @@ import { Trans } from '@lingui/macro'
|
||||
import { Percent, Currency, TradeType } from '@uniswap/sdk-core'
|
||||
import { Trade as V2Trade } from '@uniswap/v2-sdk'
|
||||
import { Trade as V3Trade } from '@uniswap/v3-sdk'
|
||||
import React, { useContext, useMemo } from 'react'
|
||||
import { useContext, useMemo } from 'react'
|
||||
import { ThemeContext } from 'styled-components'
|
||||
import { TYPE } from '../../theme'
|
||||
import { computeRealizedLPFeePercent } from '../../utils/prices'
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import React from 'react'
|
||||
import styled from 'styled-components/macro'
|
||||
import { useLastTruthy } from '../../hooks/useLast'
|
||||
import { AdvancedSwapDetails, AdvancedSwapDetailsProps } from './AdvancedSwapDetails'
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { stringify } from 'qs'
|
||||
import React, { useMemo } from 'react'
|
||||
import { useMemo } from 'react'
|
||||
import { useLocation } from 'react-router'
|
||||
import { Link } from 'react-router-dom'
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ import { Trans } from '@lingui/macro'
|
||||
import { Currency, Percent, TradeType } from '@uniswap/sdk-core'
|
||||
import { Trade as V2Trade } from '@uniswap/v2-sdk'
|
||||
import { Trade as V3Trade } from '@uniswap/v3-sdk'
|
||||
import React, { ReactNode, useCallback, useMemo } from 'react'
|
||||
import { ReactNode, useCallback, useMemo } from 'react'
|
||||
import TransactionConfirmationModal, {
|
||||
ConfirmationModalContent,
|
||||
TransactionErrorContent,
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import { Percent } from '@uniswap/sdk-core'
|
||||
import React from 'react'
|
||||
import { warningSeverity } from '../../utils/prices'
|
||||
import { ErrorText, ErrorPill } from './styleds'
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import { Trans } from '@lingui/macro'
|
||||
import React from 'react'
|
||||
import styled from 'styled-components/macro'
|
||||
import SettingsTab from '../Settings'
|
||||
import { Percent } from '@uniswap/sdk-core'
|
||||
|
||||
@@ -3,7 +3,7 @@ import { Currency, TradeType } from '@uniswap/sdk-core'
|
||||
import { Trade as V2Trade } from '@uniswap/v2-sdk'
|
||||
import { Trade as V3Trade } from '@uniswap/v3-sdk'
|
||||
|
||||
import React, { ReactNode } from 'react'
|
||||
import { ReactNode } from 'react'
|
||||
import { Text } from 'rebass'
|
||||
import { ButtonError } from '../Button'
|
||||
import { AutoRow } from '../Row'
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { Currency, Percent, TradeType } from '@uniswap/sdk-core'
|
||||
import { Trade as V2Trade } from '@uniswap/v2-sdk'
|
||||
import { Trade as V3Trade } from '@uniswap/v3-sdk'
|
||||
import React, { useContext, useState } from 'react'
|
||||
import { useContext, useState } from 'react'
|
||||
import { ArrowDown, AlertTriangle } from 'react-feather'
|
||||
import { Text } from 'rebass'
|
||||
import styled, { ThemeContext } from 'styled-components'
|
||||
|
||||
115
src/components/swap/SwapNetworkAlert.tsx
Normal file
115
src/components/swap/SwapNetworkAlert.tsx
Normal file
@@ -0,0 +1,115 @@
|
||||
import { Trans } from '@lingui/macro'
|
||||
import arbitrumMaskUrl from 'assets/svg/arbitrum_mask.svg'
|
||||
import { SupportedChainId } from 'constants/chains'
|
||||
import { useActiveWeb3React } from 'hooks/web3'
|
||||
import React, { useCallback, useState } from 'react'
|
||||
import { ArrowDownCircle, X } from 'react-feather'
|
||||
import { useArbitrumAlphaAlert } from 'state/user/hooks'
|
||||
import { useETHBalances } from 'state/wallet/hooks'
|
||||
import styled from 'styled-components'
|
||||
|
||||
const CloseIcon = styled(X)`
|
||||
cursor: pointer;
|
||||
position: absolute;
|
||||
top: 1em;
|
||||
right: 1em;
|
||||
`
|
||||
const Wrapper = styled.div`
|
||||
border-radius: 20px;
|
||||
background: radial-gradient(285.11% 8200.45% at 29.05% 48.94%, rgba(40, 160, 240, 0.1) 0%, rgba(219, 255, 0, 0) 100%),
|
||||
radial-gradient(76.02% 75.41% at 1.84% 0%, rgba(150, 190, 220, 0.3) 0%, rgba(33, 114, 229, 0.3) 100%);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
max-width: 480px;
|
||||
min-height: 212px;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
|
||||
:before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: -1;
|
||||
background-image: url(${arbitrumMaskUrl});
|
||||
background-repeat: no-repeat;
|
||||
transform: rotate(15deg), scale(1);
|
||||
}
|
||||
`
|
||||
const ArbitrumTextStyles = styled.span`
|
||||
font-style: italic;
|
||||
font-weight: 900;
|
||||
color: #f3de1e;
|
||||
background: linear-gradient(to right, #f3de1e, #ffffff);
|
||||
background-clip: text;
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
`
|
||||
const Header = styled.h3`
|
||||
margin: 0;
|
||||
padding: 20px 20px 0;
|
||||
`
|
||||
const Body = styled.p`
|
||||
line-height: 143%;
|
||||
margin: 16px 20px 31px;
|
||||
`
|
||||
const LinkOutCircle = styled(ArrowDownCircle)`
|
||||
transform: rotate(230deg);
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
`
|
||||
const LinkOutToBridge = styled.a`
|
||||
align-items: center;
|
||||
background-color: black;
|
||||
border-radius: 16px;
|
||||
color: white;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin: 0 18px 18px 18px;
|
||||
padding: 14px 24px;
|
||||
text-decoration: none;
|
||||
width: auto;
|
||||
:hover,
|
||||
:focus,
|
||||
:active {
|
||||
background-color: black;
|
||||
}
|
||||
`
|
||||
export function SwapNetworkAlert() {
|
||||
const { account, chainId } = useActiveWeb3React()
|
||||
const [arbitrumAlphaAcknowledged, setArbitrumAlphaAcknowledged] = useArbitrumAlphaAlert()
|
||||
const [locallyDismissed, setLocallyDimissed] = useState(false)
|
||||
const userEthBalance = useETHBalances(account ? [account] : [])?.[account ?? '']
|
||||
|
||||
const dismiss = useCallback(() => {
|
||||
if (userEthBalance?.greaterThan(0)) {
|
||||
setArbitrumAlphaAcknowledged(true)
|
||||
} else {
|
||||
setLocallyDimissed(true)
|
||||
}
|
||||
}, [setArbitrumAlphaAcknowledged, userEthBalance])
|
||||
if (chainId !== SupportedChainId.ARBITRUM_ONE || arbitrumAlphaAcknowledged || locallyDismissed) {
|
||||
return null
|
||||
}
|
||||
return (
|
||||
<Wrapper>
|
||||
<CloseIcon onClick={dismiss} />
|
||||
<Header>
|
||||
<Trans>
|
||||
Uniswap on <ArbitrumTextStyles>Arbitrum</ArbitrumTextStyles>
|
||||
</Trans>
|
||||
</Header>
|
||||
<Body>
|
||||
<Trans>
|
||||
This is an alpha release of Uniswap on the Arbitrum network. You must bridge L1 assets to the network to swap
|
||||
them.
|
||||
</Trans>
|
||||
</Body>
|
||||
<LinkOutToBridge href="https://bridge.arbitrum.io/" target="_blank" rel="noopener noreferrer">
|
||||
<Trans>Deposit to Arbitrum</Trans>
|
||||
<LinkOutCircle />
|
||||
</LinkOutToBridge>
|
||||
</Wrapper>
|
||||
)
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
import { Currency, TradeType } from '@uniswap/sdk-core'
|
||||
import { Trade as V2Trade } from '@uniswap/v2-sdk'
|
||||
import { Trade as V3Trade, FeeAmount } from '@uniswap/v3-sdk'
|
||||
import React, { Fragment, memo, useContext } from 'react'
|
||||
import { Fragment, memo, useContext } from 'react'
|
||||
import { ChevronRight } from 'react-feather'
|
||||
import { Flex } from 'rebass'
|
||||
import { ThemeContext } from 'styled-components'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React, { useCallback } from 'react'
|
||||
import { useCallback } from 'react'
|
||||
import { Price, Currency } from '@uniswap/sdk-core'
|
||||
import { useContext } from 'react'
|
||||
import { Text } from 'rebass'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React, { useState } from 'react'
|
||||
import { useState } from 'react'
|
||||
import styled from 'styled-components/macro'
|
||||
import { TYPE, CloseIcon, ExternalLink } from 'theme'
|
||||
import { ButtonEmpty } from 'components/Button'
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { transparentize } from 'polished'
|
||||
import React, { ReactNode } from 'react'
|
||||
import { ReactNode } from 'react'
|
||||
import { Link } from 'react-router-dom'
|
||||
|
||||
import { AlertTriangle } from 'react-feather'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React, { ReactNode, useState } from 'react'
|
||||
import { ReactNode, useState } from 'react'
|
||||
import { UNI } from '../../constants/tokens'
|
||||
|
||||
import Modal from '../Modal'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React, { useState, useContext } from 'react'
|
||||
import { useState, useContext } from 'react'
|
||||
import { useActiveWeb3React } from '../../hooks/web3'
|
||||
import { getExplorerLink, ExplorerDataType } from '../../utils/getExplorerLink'
|
||||
|
||||
|
||||
@@ -27,8 +27,8 @@ const NETWORK_URLS: {
|
||||
[SupportedChainId.ROPSTEN]: `https://ropsten.infura.io/v3/${INFURA_KEY}`,
|
||||
[SupportedChainId.GOERLI]: `https://goerli.infura.io/v3/${INFURA_KEY}`,
|
||||
[SupportedChainId.KOVAN]: `https://kovan.infura.io/v3/${INFURA_KEY}`,
|
||||
[SupportedChainId.ARBITRUM_KOVAN]: `https://kovan5.arbitrum.io/rpc`,
|
||||
[SupportedChainId.ARBITRUM_ONE]: `https://arb1.arbitrum.io/rpc`,
|
||||
[SupportedChainId.ARBITRUM_RINKEBY]: `https://rinkeby.arbitrum.io/rpc`,
|
||||
}
|
||||
|
||||
const SUPPORTED_CHAIN_IDS: SupportedChainId[] = [
|
||||
@@ -37,8 +37,8 @@ const SUPPORTED_CHAIN_IDS: SupportedChainId[] = [
|
||||
SupportedChainId.GOERLI,
|
||||
SupportedChainId.RINKEBY,
|
||||
SupportedChainId.ROPSTEN,
|
||||
SupportedChainId.ARBITRUM_KOVAN,
|
||||
SupportedChainId.ARBITRUM_ONE,
|
||||
SupportedChainId.ARBITRUM_RINKEBY,
|
||||
]
|
||||
|
||||
export const network = new NetworkConnector({
|
||||
|
||||
@@ -5,17 +5,14 @@ import { SupportedChainId } from './chains'
|
||||
|
||||
type AddressMap = { [chainId: number]: string }
|
||||
|
||||
export const UNI_ADDRESS: AddressMap = constructSameAddressMap('0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984', false)
|
||||
export const UNI_ADDRESS: AddressMap = constructSameAddressMap('0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984')
|
||||
export const MULTICALL2_ADDRESSES: AddressMap = {
|
||||
...constructSameAddressMap('0x5BA1e12693Dc8F9c48aAD8770482f4739bEeD696', false),
|
||||
[SupportedChainId.ARBITRUM_KOVAN]: '0xc80e33a6f02cf08557a0ca3d94d1474d73f64bc1',
|
||||
...constructSameAddressMap('0x5BA1e12693Dc8F9c48aAD8770482f4739bEeD696'),
|
||||
[SupportedChainId.ARBITRUM_ONE]: '0x021CeAC7e681dBCE9b5039d2535ED97590eB395c',
|
||||
[SupportedChainId.ARBITRUM_RINKEBY]: '0x334f67349c1cB3A8fF1268c3eC43FF1D3De246C6',
|
||||
}
|
||||
export const V2_FACTORY_ADDRESSES: AddressMap = constructSameAddressMap(V2_FACTORY_ADDRESS, false)
|
||||
export const V2_ROUTER_ADDRESS: AddressMap = constructSameAddressMap(
|
||||
'0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D',
|
||||
false
|
||||
)
|
||||
export const V2_FACTORY_ADDRESSES: AddressMap = constructSameAddressMap(V2_FACTORY_ADDRESS)
|
||||
export const V2_ROUTER_ADDRESS: AddressMap = constructSameAddressMap('0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D')
|
||||
|
||||
// most current governance contract address should always be the 0 index
|
||||
// only support governance on mainnet
|
||||
@@ -27,9 +24,7 @@ export const GOVERNANCE_ADDRESSES: AddressMap[] = [
|
||||
[SupportedChainId.MAINNET]: '0x5e4be8Bc9637f0EAA1A755019e06A68ce081D58F',
|
||||
},
|
||||
]
|
||||
export const TIMELOCK_ADDRESS: AddressMap = {
|
||||
[SupportedChainId.MAINNET]: '0x1a9C8182C09F50C8318d769245beA52c32BE35BC',
|
||||
}
|
||||
export const TIMELOCK_ADDRESS: AddressMap = constructSameAddressMap('0x1a9C8182C09F50C8318d769245beA52c32BE35BC')
|
||||
|
||||
export const MERKLE_DISTRIBUTOR_ADDRESS: AddressMap = {
|
||||
[SupportedChainId.MAINNET]: '0x090D4613473dEE047c3f2706764f49E0821D256e',
|
||||
@@ -37,18 +32,18 @@ export const MERKLE_DISTRIBUTOR_ADDRESS: AddressMap = {
|
||||
export const ARGENT_WALLET_DETECTOR_ADDRESS: AddressMap = {
|
||||
[SupportedChainId.MAINNET]: '0xeca4B0bDBf7c55E9b7925919d03CbF8Dc82537E8',
|
||||
}
|
||||
export const V3_CORE_FACTORY_ADDRESSES: AddressMap = {
|
||||
...constructSameAddressMap(V3_FACTORY_ADDRESS, true),
|
||||
[SupportedChainId.ARBITRUM_KOVAN]: '0xf594DEF7751440197879149f46E98b334E6DF1fa',
|
||||
}
|
||||
export const QUOTER_ADDRESSES: AddressMap = {
|
||||
...constructSameAddressMap('0xb27308f9F90D607463bb33eA1BeBb41C27CE5AB6', true),
|
||||
[SupportedChainId.ARBITRUM_KOVAN]: '0xAC06b88FA9adB7584A659b190F37F085352cB783',
|
||||
}
|
||||
export const NONFUNGIBLE_POSITION_MANAGER_ADDRESSES: AddressMap = {
|
||||
...constructSameAddressMap('0xC36442b4a4522E871399CD717aBDD847Ab11FE88', true),
|
||||
[SupportedChainId.ARBITRUM_KOVAN]: '0x9E1498aE1F508E86462e8A0F213CF385A6622464',
|
||||
}
|
||||
export const V3_CORE_FACTORY_ADDRESSES: AddressMap = constructSameAddressMap(V3_FACTORY_ADDRESS, [
|
||||
SupportedChainId.ARBITRUM_ONE,
|
||||
SupportedChainId.ARBITRUM_RINKEBY,
|
||||
])
|
||||
export const QUOTER_ADDRESSES: AddressMap = constructSameAddressMap('0xb27308f9F90D607463bb33eA1BeBb41C27CE5AB6', [
|
||||
SupportedChainId.ARBITRUM_ONE,
|
||||
SupportedChainId.ARBITRUM_RINKEBY,
|
||||
])
|
||||
export const NONFUNGIBLE_POSITION_MANAGER_ADDRESSES: AddressMap = constructSameAddressMap(
|
||||
'0xC36442b4a4522E871399CD717aBDD847Ab11FE88',
|
||||
[SupportedChainId.ARBITRUM_ONE, SupportedChainId.ARBITRUM_RINKEBY]
|
||||
)
|
||||
export const ENS_REGISTRAR_ADDRESSES: AddressMap = {
|
||||
[SupportedChainId.MAINNET]: '0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e',
|
||||
[SupportedChainId.ROPSTEN]: '0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e',
|
||||
@@ -58,11 +53,11 @@ export const ENS_REGISTRAR_ADDRESSES: AddressMap = {
|
||||
export const SOCKS_CONTROLLER_ADDRESSES: AddressMap = {
|
||||
[SupportedChainId.MAINNET]: '0x65770b5283117639760beA3F867b69b3697a91dd',
|
||||
}
|
||||
export const SWAP_ROUTER_ADDRESSES: AddressMap = {
|
||||
...constructSameAddressMap('0xE592427A0AEce92De3Edee1F18E0157C05861564', true),
|
||||
[SupportedChainId.ARBITRUM_KOVAN]: '0x6ae2DE23F2BE35B3921ba15DA52e4b173667dCb9',
|
||||
}
|
||||
export const V3_MIGRATOR_ADDRESSES: AddressMap = constructSameAddressMap(
|
||||
'0xA5644E29708357803b5A882D272c41cC0dF92B34',
|
||||
true
|
||||
)
|
||||
export const SWAP_ROUTER_ADDRESSES: AddressMap = constructSameAddressMap('0xE592427A0AEce92De3Edee1F18E0157C05861564', [
|
||||
SupportedChainId.ARBITRUM_ONE,
|
||||
SupportedChainId.ARBITRUM_RINKEBY,
|
||||
])
|
||||
export const V3_MIGRATOR_ADDRESSES: AddressMap = constructSameAddressMap('0xA5644E29708357803b5A882D272c41cC0dF92B34', [
|
||||
SupportedChainId.ARBITRUM_ONE,
|
||||
SupportedChainId.ARBITRUM_RINKEBY,
|
||||
])
|
||||
|
||||
@@ -4,8 +4,8 @@ export enum SupportedChainId {
|
||||
RINKEBY = 4,
|
||||
GOERLI = 5,
|
||||
KOVAN = 42,
|
||||
ARBITRUM_KOVAN = 144545313136048,
|
||||
ARBITRUM_ONE = 42161,
|
||||
ARBITRUM_RINKEBY = 421611,
|
||||
}
|
||||
|
||||
export const NETWORK_LABELS: { [chainId in SupportedChainId | number]: string } = {
|
||||
@@ -14,6 +14,6 @@ export const NETWORK_LABELS: { [chainId in SupportedChainId | number]: string }
|
||||
[SupportedChainId.ROPSTEN]: 'Ropsten',
|
||||
[SupportedChainId.GOERLI]: 'Görli',
|
||||
[SupportedChainId.KOVAN]: 'Kovan',
|
||||
[SupportedChainId.ARBITRUM_KOVAN]: 'kArbitrum',
|
||||
[SupportedChainId.ARBITRUM_ONE]: 'Arbitrum One',
|
||||
[SupportedChainId.ARBITRUM_ONE]: 'Arbitrum',
|
||||
[SupportedChainId.ARBITRUM_RINKEBY]: 'Arbitrum Testnet',
|
||||
}
|
||||
|
||||
@@ -55,7 +55,6 @@ const WETH_ONLY: ChainTokenList = {
|
||||
[SupportedChainId.RINKEBY]: [WETH9_EXTENDED[SupportedChainId.RINKEBY]],
|
||||
[SupportedChainId.GOERLI]: [WETH9_EXTENDED[SupportedChainId.GOERLI]],
|
||||
[SupportedChainId.KOVAN]: [WETH9_EXTENDED[SupportedChainId.KOVAN]],
|
||||
[SupportedChainId.ARBITRUM_KOVAN]: [WETH9_EXTENDED[SupportedChainId.ARBITRUM_KOVAN]],
|
||||
[SupportedChainId.ARBITRUM_ONE]: [WETH9_EXTENDED[SupportedChainId.ARBITRUM_ONE]],
|
||||
}
|
||||
// used to construct intermediary pairs for trading
|
||||
@@ -99,10 +98,6 @@ export const COMMON_BASES: ChainCurrencyList = {
|
||||
[4]: [ExtendedEther.onChain(4), WETH9_EXTENDED[4]],
|
||||
[5]: [ExtendedEther.onChain(5), WETH9_EXTENDED[5]],
|
||||
[42]: [ExtendedEther.onChain(42), WETH9_EXTENDED[42]],
|
||||
[SupportedChainId.ARBITRUM_KOVAN]: [
|
||||
ExtendedEther.onChain(SupportedChainId.ARBITRUM_KOVAN),
|
||||
WETH9_EXTENDED[SupportedChainId.ARBITRUM_KOVAN],
|
||||
],
|
||||
[SupportedChainId.ARBITRUM_ONE]: [
|
||||
ExtendedEther.onChain(SupportedChainId.ARBITRUM_ONE),
|
||||
WETH9_EXTENDED[SupportedChainId.ARBITRUM_ONE],
|
||||
|
||||
@@ -2,27 +2,112 @@ import { WETH9, Token, Ether } from '@uniswap/sdk-core'
|
||||
import { UNI_ADDRESS } from './addresses'
|
||||
import { SupportedChainId } from './chains'
|
||||
|
||||
export const AMPL = new Token(1, '0xD46bA6D942050d489DBd938a2C909A5d5039A161', 9, 'AMPL', 'Ampleforth')
|
||||
export const DAI = new Token(1, '0x6B175474E89094C44Da98b954EedeAC495271d0F', 18, 'DAI', 'Dai Stablecoin')
|
||||
export const USDC = new Token(1, '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', 6, 'USDC', 'USD//C')
|
||||
export const USDT = new Token(1, '0xdAC17F958D2ee523a2206206994597C13D831ec7', 6, 'USDT', 'Tether USD')
|
||||
export const WBTC = new Token(1, '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599', 8, 'WBTC', 'Wrapped BTC')
|
||||
export const FEI = new Token(1, '0x956F47F50A910163D8BF957Cf5846D573E7f87CA', 18, 'FEI', 'Fei USD')
|
||||
export const TRIBE = new Token(1, '0xc7283b66Eb1EB5FB86327f08e1B5816b0720212B', 18, 'TRIBE', 'Tribe')
|
||||
export const FRAX = new Token(1, '0x853d955aCEf822Db058eb8505911ED77F175b99e', 18, 'FRAX', 'Frax')
|
||||
export const FXS = new Token(1, '0x3432B6A60D23Ca0dFCa7761B7ab56459D9C964D0', 18, 'FXS', 'Frax Share')
|
||||
export const renBTC = new Token(1, '0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D', 8, 'renBTC', 'renBTC')
|
||||
export const UMA = new Token(1, '0x04Fa0d235C4abf4BcF4787aF4CF447DE572eF828', 18, 'UMA', 'UMA Voting Token v1')
|
||||
export const AMPL = new Token(
|
||||
SupportedChainId.MAINNET,
|
||||
'0xD46bA6D942050d489DBd938a2C909A5d5039A161',
|
||||
9,
|
||||
'AMPL',
|
||||
'Ampleforth'
|
||||
)
|
||||
export const DAI = new Token(
|
||||
SupportedChainId.MAINNET,
|
||||
'0x6B175474E89094C44Da98b954EedeAC495271d0F',
|
||||
18,
|
||||
'DAI',
|
||||
'Dai Stablecoin'
|
||||
)
|
||||
export const USDC = new Token(
|
||||
SupportedChainId.MAINNET,
|
||||
'0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
|
||||
6,
|
||||
'USDC',
|
||||
'USD//C'
|
||||
)
|
||||
export const USDC_ARBITRUM = new Token(
|
||||
SupportedChainId.ARBITRUM_ONE,
|
||||
'0xe865dF68133fcEd7c2285ff3896B406CAfAa2dB8',
|
||||
6,
|
||||
'USDC',
|
||||
'USD//C'
|
||||
)
|
||||
export const USDT = new Token(
|
||||
SupportedChainId.MAINNET,
|
||||
'0xdAC17F958D2ee523a2206206994597C13D831ec7',
|
||||
6,
|
||||
'USDT',
|
||||
'Tether USD'
|
||||
)
|
||||
export const WBTC = new Token(
|
||||
SupportedChainId.MAINNET,
|
||||
'0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599',
|
||||
8,
|
||||
'WBTC',
|
||||
'Wrapped BTC'
|
||||
)
|
||||
export const FEI = new Token(
|
||||
SupportedChainId.MAINNET,
|
||||
'0x956F47F50A910163D8BF957Cf5846D573E7f87CA',
|
||||
18,
|
||||
'FEI',
|
||||
'Fei USD'
|
||||
)
|
||||
export const TRIBE = new Token(
|
||||
SupportedChainId.MAINNET,
|
||||
'0xc7283b66Eb1EB5FB86327f08e1B5816b0720212B',
|
||||
18,
|
||||
'TRIBE',
|
||||
'Tribe'
|
||||
)
|
||||
export const FRAX = new Token(
|
||||
SupportedChainId.MAINNET,
|
||||
'0x853d955aCEf822Db058eb8505911ED77F175b99e',
|
||||
18,
|
||||
'FRAX',
|
||||
'Frax'
|
||||
)
|
||||
export const FXS = new Token(
|
||||
SupportedChainId.MAINNET,
|
||||
'0x3432B6A60D23Ca0dFCa7761B7ab56459D9C964D0',
|
||||
18,
|
||||
'FXS',
|
||||
'Frax Share'
|
||||
)
|
||||
export const renBTC = new Token(
|
||||
SupportedChainId.MAINNET,
|
||||
'0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D',
|
||||
8,
|
||||
'renBTC',
|
||||
'renBTC'
|
||||
)
|
||||
export const UMA = new Token(
|
||||
SupportedChainId.MAINNET,
|
||||
'0x04Fa0d235C4abf4BcF4787aF4CF447DE572eF828',
|
||||
18,
|
||||
'UMA',
|
||||
'UMA Voting Token v1'
|
||||
)
|
||||
export const ETH2X_FLI = new Token(
|
||||
1,
|
||||
SupportedChainId.MAINNET,
|
||||
'0xAa6E8127831c9DE45ae56bB1b0d4D4Da6e5665BD',
|
||||
18,
|
||||
'ETH2x-FLI',
|
||||
'ETH 2x Flexible Leverage Index'
|
||||
)
|
||||
// Mirror Protocol compat.
|
||||
export const UST = new Token(1, '0xa47c8bf37f92abed4a126bda807a7b7498661acd', 18, 'UST', 'Wrapped UST')
|
||||
export const MIR = new Token(1, '0x09a3ecafa817268f77be1283176b946c4ff2e608', 18, 'MIR', 'Wrapped MIR')
|
||||
export const UST = new Token(
|
||||
SupportedChainId.MAINNET,
|
||||
'0xa47c8bf37f92abed4a126bda807a7b7498661acd',
|
||||
18,
|
||||
'UST',
|
||||
'Wrapped UST'
|
||||
)
|
||||
export const MIR = new Token(
|
||||
SupportedChainId.MAINNET,
|
||||
'0x09a3ecafa817268f77be1283176b946c4ff2e608',
|
||||
18,
|
||||
'MIR',
|
||||
'Wrapped MIR'
|
||||
)
|
||||
export const UNI: { [chainId: number]: Token } = {
|
||||
[SupportedChainId.MAINNET]: new Token(SupportedChainId.MAINNET, UNI_ADDRESS[1], 18, 'UNI', 'Uniswap'),
|
||||
[SupportedChainId.RINKEBY]: new Token(SupportedChainId.RINKEBY, UNI_ADDRESS[4], 18, 'UNI', 'Uniswap'),
|
||||
@@ -30,15 +115,9 @@ export const UNI: { [chainId: number]: Token } = {
|
||||
[SupportedChainId.GOERLI]: new Token(SupportedChainId.GOERLI, UNI_ADDRESS[5], 18, 'UNI', 'Uniswap'),
|
||||
[SupportedChainId.KOVAN]: new Token(SupportedChainId.KOVAN, UNI_ADDRESS[42], 18, 'UNI', 'Uniswap'),
|
||||
}
|
||||
|
||||
export const WETH9_EXTENDED: { [chainId: number]: Token } = {
|
||||
...WETH9,
|
||||
[SupportedChainId.ARBITRUM_KOVAN]: new Token(
|
||||
SupportedChainId.ARBITRUM_KOVAN,
|
||||
'0x4A5e4A42dC430f669086b417AADf2B128beFEfac',
|
||||
18,
|
||||
'WETH9',
|
||||
'Wrapped Ether'
|
||||
),
|
||||
[SupportedChainId.ARBITRUM_ONE]: new Token(
|
||||
SupportedChainId.ARBITRUM_ONE,
|
||||
'0x82aF49447D8a07e3bd95BD0d56f35241523fBab1',
|
||||
@@ -46,6 +125,13 @@ export const WETH9_EXTENDED: { [chainId: number]: Token } = {
|
||||
'WETH',
|
||||
'Wrapped Ether'
|
||||
),
|
||||
[SupportedChainId.ARBITRUM_RINKEBY]: new Token(
|
||||
SupportedChainId.ARBITRUM_RINKEBY,
|
||||
'0xB47e6A5f8b33b3F17603C83a0535A9dcD7E32681',
|
||||
18,
|
||||
'WETH',
|
||||
'Wrapped Ether'
|
||||
),
|
||||
}
|
||||
|
||||
export class ExtendedEther extends Ether {
|
||||
@@ -54,7 +140,9 @@ export class ExtendedEther extends Ether {
|
||||
throw new Error('Unsupported chain ID')
|
||||
}
|
||||
|
||||
private static _cachedEther: { [chainId: number]: ExtendedEther } = {}
|
||||
|
||||
public static onChain(chainId: number): ExtendedEther {
|
||||
return new ExtendedEther(chainId)
|
||||
return this._cachedEther[chainId] ?? (this._cachedEther[chainId] = new ExtendedEther(chainId))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { Currency, CurrencyAmount, Price, Token } from '@uniswap/sdk-core'
|
||||
import { useMemo } from 'react'
|
||||
import { SupportedChainId } from '../constants/chains'
|
||||
import { USDC } from '../constants/tokens'
|
||||
import { USDC, USDC_ARBITRUM } from '../constants/tokens'
|
||||
import { useV2TradeExactOut } from './useV2Trade'
|
||||
import { useBestV3TradeExactOut } from './useBestV3Trade'
|
||||
import { useActiveWeb3React } from './web3'
|
||||
@@ -10,6 +10,7 @@ import { useActiveWeb3React } from './web3'
|
||||
// The amount is large enough to filter low liquidity pairs.
|
||||
const STABLECOIN_AMOUNT_OUT: { [chainId: number]: CurrencyAmount<Token> } = {
|
||||
[SupportedChainId.MAINNET]: CurrencyAmount.fromRawAmount(USDC, 100_000e6),
|
||||
[SupportedChainId.ARBITRUM_ONE]: CurrencyAmount.fromRawAmount(USDC_ARBITRUM, 10_000e6),
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React, { useEffect, useState } from 'react'
|
||||
import { useEffect, useState } from 'react'
|
||||
import { i18n } from '@lingui/core'
|
||||
import { I18nProvider } from '@lingui/react'
|
||||
import { ReactNode } from 'react'
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import 'inter-ui'
|
||||
import '@reach/dialog/styles.css'
|
||||
import { createWeb3ReactRoot, Web3ReactProvider } from '@web3-react/core'
|
||||
import React, { StrictMode } from 'react'
|
||||
import { StrictMode } from 'react'
|
||||
import { isMobile } from 'react-device-detect'
|
||||
import ReactDOM from 'react-dom'
|
||||
import ReactGA from 'react-ga'
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"POT-Creation-Date: 2021-06-21 15:11+0000\n"
|
||||
"POT-Creation-Date: 2021-06-27 05:00+0000\n"
|
||||
"Mime-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
@@ -14,7 +14,7 @@ msgstr ""
|
||||
"X-Crowdin-File-ID: 4\n"
|
||||
"Project-Id-Version: uniswap-interface\n"
|
||||
"Language-Team: Afrikaans\n"
|
||||
"PO-Revision-Date: 2021-06-21 16:05\n"
|
||||
"PO-Revision-Date: 2021-06-27 05:04\n"
|
||||
|
||||
#: src/pages/Pool/PositionPage.tsx
|
||||
#: src/pages/Pool/PositionPage.tsx
|
||||
@@ -35,6 +35,10 @@ msgstr "${0} ETH"
|
||||
msgid "(Max)"
|
||||
msgstr "(Maksimum)"
|
||||
|
||||
#: src/components/AddressInputPanel/index.tsx
|
||||
msgid "(View on Explorer)"
|
||||
msgstr "(Bekyk op Explorer)"
|
||||
|
||||
#: src/components/Header/UniBalanceContent.tsx
|
||||
msgid "(claim)"
|
||||
msgstr "(eis)"
|
||||
@@ -111,6 +115,10 @@ msgstr "<0> Terug na</0> V3"
|
||||
msgid "<0>Tip:</0> Removing pool tokens converts your position back into underlying tokens at the current rate, proportional to your share of the pool. Accrued fees are included in the amounts you receive."
|
||||
msgstr "<0> Wenk:</0> As u poeltekens verwyder, verander u u posisie in onderliggende tekens teen die huidige koers, eweredig aan u deel van die poel. Opgelope fooie is ingesluit by die bedrae wat u ontvang."
|
||||
|
||||
#: src/pages/CreateProposal/index.tsx
|
||||
msgid "<0>Tip:</0> Select an action and describe your proposal for the community. The proposal cannot be modified after submission, so please verify all information before submitting. The voting period will begin immediately and last for 7 days. To propose a custom action, <1>read the docs</1>."
|
||||
msgstr "<0> Wenk:</0> Kies 'n aksie en beskryf u voorstel vir die gemeenskap. Die voorstel kan nie na indiening gewysig word nie, en verifieer dus alle inligting voordat dit ingedien word. Die stemtydperk sal onmiddellik begin en vir 7 dae duur. Om 'n aangepaste handeling voor te stel, lees <1> die dokumente</1> ."
|
||||
|
||||
#: src/pages/PoolFinder/index.tsx
|
||||
msgid "<0>Tip:</0> Use this tool to find v2 pools that don't automatically appear in the interface."
|
||||
msgstr "<0> Wenk:</0> Gebruik hierdie instrument om v2 poele te vind wat nie outomaties in die koppelvlak verskyn nie."
|
||||
@@ -235,6 +243,10 @@ msgstr "Analise"
|
||||
msgid "Approve"
|
||||
msgstr "Goedkeur"
|
||||
|
||||
#: src/pages/CreateProposal/ProposalActionSelector.tsx
|
||||
msgid "Approve Token"
|
||||
msgstr "Keur token goed"
|
||||
|
||||
#: src/pages/AddLiquidity/index.tsx
|
||||
#: src/pages/AddLiquidity/index.tsx
|
||||
#: src/pages/AddLiquidityV2/index.tsx
|
||||
@@ -258,6 +270,14 @@ msgstr "Goedkeur"
|
||||
msgid "Approving {0}"
|
||||
msgstr "Goedkeur {0}"
|
||||
|
||||
#: src/components/Header/NetworkCard.tsx
|
||||
msgid "Arbitrum Explorer"
|
||||
msgstr "Arbitrum Explorer"
|
||||
|
||||
#: src/components/Header/NetworkCard.tsx
|
||||
msgid "Arbitrum Token Bridge"
|
||||
msgstr "Arbitrum Token Bridge"
|
||||
|
||||
#: src/components/Settings/index.tsx
|
||||
msgid "Are you sure?"
|
||||
msgstr "Is jy seker?"
|
||||
@@ -322,6 +342,10 @@ msgstr "Deur 'n beursie aan te sluit, stem u in tot die <0> diensvoorwaardes van
|
||||
msgid "Change"
|
||||
msgstr "Verander"
|
||||
|
||||
#: src/components/Header/NetworkCard.tsx
|
||||
msgid "Change your network to go back to L1"
|
||||
msgstr "Verander u netwerk om terug te gaan na L1"
|
||||
|
||||
#: src/components/Header/index.tsx
|
||||
msgid "Charts"
|
||||
msgstr "Grafieke"
|
||||
@@ -519,6 +543,11 @@ msgstr "Kopieer adres"
|
||||
msgid "Create Pool & Supply"
|
||||
msgstr "Skep Poel en Verskaf"
|
||||
|
||||
#: src/pages/CreateProposal/index.tsx
|
||||
#: src/pages/Vote/index.tsx
|
||||
msgid "Create Proposal"
|
||||
msgstr "Skep 'n voorstel"
|
||||
|
||||
#: src/components/NavigationTabs/index.tsx
|
||||
#: src/pages/Pool/v2.tsx
|
||||
msgid "Create a pair"
|
||||
@@ -584,6 +613,10 @@ msgstr "Plaas UNI-V2 LP-tekens"
|
||||
msgid "Deposit liquidity"
|
||||
msgstr "Deponeer likiditeit"
|
||||
|
||||
#: src/components/swap/SwapNetworkAlert.tsx
|
||||
msgid "Deposit to Arbitrum"
|
||||
msgstr "Deposito aan Arbitrum"
|
||||
|
||||
#: src/pages/Earn/index.tsx
|
||||
msgid "Deposit your Liquidity Provider tokens to receive UNI, the Uniswap protocol governance token."
|
||||
msgstr "Deponeer u likiditeitsverskaffer-tekens om UNI, die Uniswap-protokolbestuursteken, te ontvang."
|
||||
@@ -839,6 +872,10 @@ msgstr "Ongeldige ontvanger"
|
||||
msgid "Learn"
|
||||
msgstr "Leer"
|
||||
|
||||
#: src/components/Header/NetworkCard.tsx
|
||||
msgid "Learn more"
|
||||
msgstr "Leer meer"
|
||||
|
||||
#: src/components/claim/ClaimModal.tsx
|
||||
#: src/pages/Pool/PositionPage.tsx
|
||||
msgid "Liquidity"
|
||||
@@ -1140,6 +1177,18 @@ msgstr "Prys:"
|
||||
msgid "Prices and pool share"
|
||||
msgstr "Pryse en swembadaandeel"
|
||||
|
||||
#: src/pages/CreateProposal/ProposalEditor.tsx
|
||||
msgid "Proposal"
|
||||
msgstr "Voorstel"
|
||||
|
||||
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
|
||||
msgid "Proposal Submitted"
|
||||
msgstr "Voorstel ingedien"
|
||||
|
||||
#: src/pages/CreateProposal/ProposalEditor.tsx
|
||||
msgid "Proposal Title"
|
||||
msgstr "Voorstel Titel"
|
||||
|
||||
#: src/pages/Vote/index.tsx
|
||||
msgid "Proposals"
|
||||
msgstr "Voorstelle"
|
||||
@@ -1148,6 +1197,10 @@ msgstr "Voorstelle"
|
||||
msgid "Proposals submitted by community members will appear here."
|
||||
msgstr "Voorstelle wat deur lede van die gemeenskap ingedien word, sal hier verskyn."
|
||||
|
||||
#: src/pages/CreateProposal/ProposalActionSelector.tsx
|
||||
msgid "Proposed Action"
|
||||
msgstr "Voorgestelde aksie"
|
||||
|
||||
#: src/pages/Vote/VotePage.tsx
|
||||
msgid "Proposer"
|
||||
msgstr "Voorsteller"
|
||||
@@ -1176,6 +1229,10 @@ msgstr "Lees meer oor onondersteunde bates"
|
||||
msgid "Recent Transactions"
|
||||
msgstr "Onlangse transaksies"
|
||||
|
||||
#: src/components/AddressInputPanel/index.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "Ontvanger"
|
||||
|
||||
#: src/components/PositionCard/V2.tsx
|
||||
#: src/components/PositionCard/index.tsx
|
||||
#: src/pages/RemoveLiquidity/V3.tsx
|
||||
@@ -1220,6 +1277,7 @@ msgid "Restricts swaps to direct pairs only."
|
||||
msgstr "Beperk ruilings slegs vir direkte pare."
|
||||
|
||||
#: src/components/TransactionConfirmationModal/index.tsx
|
||||
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
|
||||
msgid "Return"
|
||||
msgstr "Keer terug"
|
||||
|
||||
@@ -1251,6 +1309,10 @@ msgstr "Kies 'n teken"
|
||||
msgid "Select a token to find your v2 liquidity."
|
||||
msgstr "Kies 'n teken om u v2-likiditeit te vind."
|
||||
|
||||
#: src/pages/CreateProposal/ProposalActionSelector.tsx
|
||||
msgid "Select an action"
|
||||
msgstr "Kies 'n aksie"
|
||||
|
||||
#: src/pages/AddLiquidity/index.tsx
|
||||
msgid "Select pair"
|
||||
msgstr "Kies 'n paar"
|
||||
@@ -1313,6 +1375,14 @@ msgstr "Iets het verkeerd geloop"
|
||||
msgid "Step 1. Get UNI-V2 Liquidity tokens"
|
||||
msgstr "Stap 1. Kry UNI-V2 likiditeitstekens"
|
||||
|
||||
#: src/state/governance/hooks.ts
|
||||
msgid "Submitted new proposal"
|
||||
msgstr "Nuwe voorstel ingedien"
|
||||
|
||||
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
|
||||
msgid "Submitting Proposal"
|
||||
msgstr "Voorlegging indien"
|
||||
|
||||
#: src/components/vote/VoteModal.tsx
|
||||
msgid "Submitting Vote"
|
||||
msgstr "Stemming indien"
|
||||
@@ -1342,6 +1412,10 @@ msgstr "Ruil in elk geval"
|
||||
msgid "Swapping {0} {1} for {2} {3}"
|
||||
msgstr "Ruil {0} {1} vir {2} {3}"
|
||||
|
||||
#: src/components/Header/NetworkCard.tsx
|
||||
msgid "Switch to Ethereum"
|
||||
msgstr "Skakel oor na Ethereum"
|
||||
|
||||
#: src/components/Popups/ClaimPopup.tsx
|
||||
msgid "Thanks for being part of the Uniswap community <0/>"
|
||||
msgstr "Dankie dat u deel is van die Uniswap-gemeenskap <0/>"
|
||||
@@ -1386,6 +1460,10 @@ msgstr "Die transaksie kon nie gestuur word nie omdat die sperdatum verstryk het
|
||||
msgid "These tokens are commonly paired with other tokens."
|
||||
msgstr "Hierdie tekens word gewoonlik gekoppel aan ander tekens."
|
||||
|
||||
#: src/components/swap/SwapNetworkAlert.tsx
|
||||
msgid "This is an alpha release of Uniswap on the Arbitrum network. You must bridge L1 assets to the network to swap them."
|
||||
msgstr "Dit is 'n alfa-vrystelling van Uniswap op die Arbitrum-netwerk. U moet L1-bates na die netwerk oorbrug om dit te verruil."
|
||||
|
||||
#: src/components/SearchModal/ImportToken.tsx
|
||||
msgid "This token doesn't appear on the active token list(s). Make sure this is the token that you want to trade."
|
||||
msgstr "Hierdie teken verskyn nie op die aktiewe tekenlys(te) nie. Maak seker dat dit die teken is wat u wil verhandel."
|
||||
@@ -1407,6 +1485,8 @@ msgid "Tip: Custom tokens are stored locally in your browser"
|
||||
msgstr "Wenk: Pasgemaakte tekens word plaaslik in u blaaier geberg"
|
||||
|
||||
#: src/components/swap/SwapModalHeader.tsx
|
||||
#: src/pages/CreateProposal/ProposalActionDetail.tsx
|
||||
#: src/pages/CreateProposal/ProposalActionDetail.tsx
|
||||
#: src/pages/Swap/index.tsx
|
||||
msgid "To"
|
||||
msgstr "Aan"
|
||||
@@ -1460,6 +1540,10 @@ msgstr "Transaksie ingedien"
|
||||
msgid "Transaction deadline"
|
||||
msgstr "Transaksiesperdatum"
|
||||
|
||||
#: src/pages/CreateProposal/ProposalActionSelector.tsx
|
||||
msgid "Transfer Token"
|
||||
msgstr "Oordragtoken"
|
||||
|
||||
#: src/components/WalletModal/PendingView.tsx
|
||||
msgid "Try Again"
|
||||
msgstr "Probeer weer"
|
||||
@@ -1529,6 +1613,10 @@ msgstr "Onttrek likiditeitsontginning"
|
||||
msgid "Uniswap migration contract↗"
|
||||
msgstr "Onttrek migrasie kontrak↗"
|
||||
|
||||
#: src/components/swap/SwapNetworkAlert.tsx
|
||||
msgid "Uniswap on <0>Arbitrum</0>"
|
||||
msgstr "Ontruil op <0> Arbitrum</0>"
|
||||
|
||||
#: src/components/SearchModal/ImportToken.tsx
|
||||
msgid "Unknown Source"
|
||||
msgstr "Onbekende bron"
|
||||
@@ -1605,6 +1693,10 @@ msgstr "Kyk na opgelope fooie en analise <0> ↗</0>"
|
||||
msgid "View list"
|
||||
msgstr "Kyk na lys"
|
||||
|
||||
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
|
||||
msgid "View on Etherscan"
|
||||
msgstr "Uitsig op Etherscan"
|
||||
|
||||
#: src/components/AccountDetails/index.tsx
|
||||
#: src/components/AccountDetails/index.tsx
|
||||
#: src/components/TransactionConfirmationModal/index.tsx
|
||||
@@ -1652,6 +1744,10 @@ msgstr "Die stemming eindig ongeveer {0}"
|
||||
msgid "Waiting For Confirmation"
|
||||
msgstr "Wag op bevestiging"
|
||||
|
||||
#: src/components/AddressInputPanel/index.tsx
|
||||
msgid "Wallet Address or ENS name"
|
||||
msgstr "Wallet-adres of ENS-naam"
|
||||
|
||||
#: src/components/earn/StakingModal.tsx
|
||||
msgid "Weekly Rewards"
|
||||
msgstr "Weeklikse belonings"
|
||||
@@ -1703,6 +1799,10 @@ msgstr "Draai toe"
|
||||
msgid "Wrong Network"
|
||||
msgstr "Verkeerde netwerk"
|
||||
|
||||
#: src/pages/CreateProposal/index.tsx
|
||||
msgid "You already have an active or pending proposal"
|
||||
msgstr "U het reeds 'n aktiewe of hangende voorstel"
|
||||
|
||||
#: src/pages/AddLiquidityV2/index.tsx
|
||||
msgid "You are creating a pool"
|
||||
msgstr "U skep 'n poel"
|
||||
@@ -1723,6 +1823,10 @@ msgstr "U kan self oor elke voorstel stem of u stemme aan 'n derde party delegee
|
||||
msgid "You can now trade {0}"
|
||||
msgstr "U kan nou {0} verhandel"
|
||||
|
||||
#: src/pages/CreateProposal/index.tsx
|
||||
msgid "You don't have enough votes to submit a proposal"
|
||||
msgstr "U het nie genoeg stemme om 'n voorstel in te dien nie"
|
||||
|
||||
#: src/pages/PoolFinder/index.tsx
|
||||
msgid "You don’t have liquidity in this pool yet."
|
||||
msgstr "U het nog nie likiditeit in hierdie poel nie."
|
||||
@@ -1735,6 +1839,10 @@ msgstr "U moet 'n rekening koppel."
|
||||
msgid "You must give the Uniswap smart contracts permission to use your {0}. You only have to do this once per token."
|
||||
msgstr "U moet die Uniswap-slimkontrakte toestemming gee om u {0}te gebruik. U hoef dit slegs een keer per teken te doen."
|
||||
|
||||
#: src/pages/CreateProposal/index.tsx
|
||||
msgid "You must have {formattedProposalThreshold} votes to submit a proposal"
|
||||
msgstr "U moet {formattedProposalThreshold} stemme hê om 'n voorstel in te dien"
|
||||
|
||||
#: src/pages/MigrateV2/MigrateV2Pair.tsx
|
||||
msgid "You should only deposit liquidity into Uniswap V3 at a price you believe is correct. <0/>If the price seems incorrect, you can either make a swap to move the price or wait for someone else to do so."
|
||||
msgstr "U moet slegs likiditeit in Uniswap V3 deponeer teen 'n prys wat volgens u korrek is. <0 /> As die prys verkeerd lyk, kan u ruil om die prys te skuif, of wag tot iemand anders dit doen."
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"POT-Creation-Date: 2021-06-21 15:11+0000\n"
|
||||
"POT-Creation-Date: 2021-06-27 05:00+0000\n"
|
||||
"Mime-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
@@ -14,7 +14,7 @@ msgstr ""
|
||||
"X-Crowdin-File-ID: 4\n"
|
||||
"Project-Id-Version: uniswap-interface\n"
|
||||
"Language-Team: Arabic\n"
|
||||
"PO-Revision-Date: 2021-06-21 16:05\n"
|
||||
"PO-Revision-Date: 2021-06-27 05:04\n"
|
||||
|
||||
#: src/pages/Pool/PositionPage.tsx
|
||||
#: src/pages/Pool/PositionPage.tsx
|
||||
@@ -35,6 +35,10 @@ msgstr "${0} ETH"
|
||||
msgid "(Max)"
|
||||
msgstr "(الحد الأقصى)"
|
||||
|
||||
#: src/components/AddressInputPanel/index.tsx
|
||||
msgid "(View on Explorer)"
|
||||
msgstr "(عرض على Explorer)"
|
||||
|
||||
#: src/components/Header/UniBalanceContent.tsx
|
||||
msgid "(claim)"
|
||||
msgstr "(مطالبة)"
|
||||
@@ -111,6 +115,10 @@ msgstr "<0> رجوع إلى</0> V3"
|
||||
msgid "<0>Tip:</0> Removing pool tokens converts your position back into underlying tokens at the current rate, proportional to your share of the pool. Accrued fees are included in the amounts you receive."
|
||||
msgstr "<0>تلميح:</0> إزالة رموز المجموعة تحول مركزك مرة أخرى إلى الرموز الأساسية بالمعدل الحالي، بما يتناسب مع نصيبك من المجموعة. الرسوم المتراكمة مدرجة في المبالغ التي تتلقاها."
|
||||
|
||||
#: src/pages/CreateProposal/index.tsx
|
||||
msgid "<0>Tip:</0> Select an action and describe your proposal for the community. The proposal cannot be modified after submission, so please verify all information before submitting. The voting period will begin immediately and last for 7 days. To propose a custom action, <1>read the docs</1>."
|
||||
msgstr "<0> نصيحة:</0> حدد إجراء ووصف اقتراحك للمجتمع. لا يمكن تعديل العرض بعد التقديم ، لذا يرجى التحقق من جميع المعلومات قبل التقديم. ستبدأ فترة التصويت على الفور وتستمر لمدة 7 أيام. لاقتراح إجراء مخصص ، <1> اقرأ المستندات</1> ."
|
||||
|
||||
#: src/pages/PoolFinder/index.tsx
|
||||
msgid "<0>Tip:</0> Use this tool to find v2 pools that don't automatically appear in the interface."
|
||||
msgstr "<0> نصيحة:</0> استخدم هذه الأداة للبحث عن مجموعات v2 التي لا تظهر تلقائيًا في الواجهة."
|
||||
@@ -235,6 +243,10 @@ msgstr "التحليلات"
|
||||
msgid "Approve"
|
||||
msgstr "الموافقة"
|
||||
|
||||
#: src/pages/CreateProposal/ProposalActionSelector.tsx
|
||||
msgid "Approve Token"
|
||||
msgstr "الموافقة على رمز"
|
||||
|
||||
#: src/pages/AddLiquidity/index.tsx
|
||||
#: src/pages/AddLiquidity/index.tsx
|
||||
#: src/pages/AddLiquidityV2/index.tsx
|
||||
@@ -258,6 +270,14 @@ msgstr "الموافقة"
|
||||
msgid "Approving {0}"
|
||||
msgstr "الموافقة على {0}"
|
||||
|
||||
#: src/components/Header/NetworkCard.tsx
|
||||
msgid "Arbitrum Explorer"
|
||||
msgstr "مستكشف Arbitrum"
|
||||
|
||||
#: src/components/Header/NetworkCard.tsx
|
||||
msgid "Arbitrum Token Bridge"
|
||||
msgstr "جسر Arbitrum Token"
|
||||
|
||||
#: src/components/Settings/index.tsx
|
||||
msgid "Are you sure?"
|
||||
msgstr "هل أنت متأكد؟"
|
||||
@@ -322,6 +342,10 @@ msgstr "عند توصيل محفظة، فإنك توافق على <0>شروط خ
|
||||
msgid "Change"
|
||||
msgstr "تغيير"
|
||||
|
||||
#: src/components/Header/NetworkCard.tsx
|
||||
msgid "Change your network to go back to L1"
|
||||
msgstr "قم بتغيير شبكتك للعودة إلى L1"
|
||||
|
||||
#: src/components/Header/index.tsx
|
||||
msgid "Charts"
|
||||
msgstr "الرسوم البيانية"
|
||||
@@ -519,6 +543,11 @@ msgstr "نسخ العنوان"
|
||||
msgid "Create Pool & Supply"
|
||||
msgstr "إنشاء مجموعة وإمدادات"
|
||||
|
||||
#: src/pages/CreateProposal/index.tsx
|
||||
#: src/pages/Vote/index.tsx
|
||||
msgid "Create Proposal"
|
||||
msgstr "إنشاء اقتراح"
|
||||
|
||||
#: src/components/NavigationTabs/index.tsx
|
||||
#: src/pages/Pool/v2.tsx
|
||||
msgid "Create a pair"
|
||||
@@ -584,6 +613,10 @@ msgstr "إيداع رموز UNI-V2 LP"
|
||||
msgid "Deposit liquidity"
|
||||
msgstr "إيداع السيولة"
|
||||
|
||||
#: src/components/swap/SwapNetworkAlert.tsx
|
||||
msgid "Deposit to Arbitrum"
|
||||
msgstr "الإيداع في Arbitrum"
|
||||
|
||||
#: src/pages/Earn/index.tsx
|
||||
msgid "Deposit your Liquidity Provider tokens to receive UNI, the Uniswap protocol governance token."
|
||||
msgstr "قم بإيداع رموز موفر السيولة الخاصة بك لتلقي UNI، رمز بروتوكول Uniswap."
|
||||
@@ -839,6 +872,10 @@ msgstr "مستلم غير صالح"
|
||||
msgid "Learn"
|
||||
msgstr "تعلم"
|
||||
|
||||
#: src/components/Header/NetworkCard.tsx
|
||||
msgid "Learn more"
|
||||
msgstr "يتعلم أكثر"
|
||||
|
||||
#: src/components/claim/ClaimModal.tsx
|
||||
#: src/pages/Pool/PositionPage.tsx
|
||||
msgid "Liquidity"
|
||||
@@ -1140,6 +1177,18 @@ msgstr "السعر:"
|
||||
msgid "Prices and pool share"
|
||||
msgstr "الأسعار وحصة المجموعة"
|
||||
|
||||
#: src/pages/CreateProposal/ProposalEditor.tsx
|
||||
msgid "Proposal"
|
||||
msgstr "عرض"
|
||||
|
||||
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
|
||||
msgid "Proposal Submitted"
|
||||
msgstr "تم تقديم الاقتراح"
|
||||
|
||||
#: src/pages/CreateProposal/ProposalEditor.tsx
|
||||
msgid "Proposal Title"
|
||||
msgstr "عنوان الاقتراح"
|
||||
|
||||
#: src/pages/Vote/index.tsx
|
||||
msgid "Proposals"
|
||||
msgstr "مقترحات"
|
||||
@@ -1148,6 +1197,10 @@ msgstr "مقترحات"
|
||||
msgid "Proposals submitted by community members will appear here."
|
||||
msgstr "وسترد هنا المقترحات المقدمة من أعضاء المجتمع المحلي."
|
||||
|
||||
#: src/pages/CreateProposal/ProposalActionSelector.tsx
|
||||
msgid "Proposed Action"
|
||||
msgstr "الإجراء المقترح"
|
||||
|
||||
#: src/pages/Vote/VotePage.tsx
|
||||
msgid "Proposer"
|
||||
msgstr "المقترح"
|
||||
@@ -1176,6 +1229,10 @@ msgstr "اقرأ المزيد عن الأصول غير المدعومة"
|
||||
msgid "Recent Transactions"
|
||||
msgstr "المعاملات الأخيرة"
|
||||
|
||||
#: src/components/AddressInputPanel/index.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "متلقي"
|
||||
|
||||
#: src/components/PositionCard/V2.tsx
|
||||
#: src/components/PositionCard/index.tsx
|
||||
#: src/pages/RemoveLiquidity/V3.tsx
|
||||
@@ -1220,6 +1277,7 @@ msgid "Restricts swaps to direct pairs only."
|
||||
msgstr "يقيد المبادلات إلى أزواج فقط ."
|
||||
|
||||
#: src/components/TransactionConfirmationModal/index.tsx
|
||||
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
|
||||
msgid "Return"
|
||||
msgstr "رجوع"
|
||||
|
||||
@@ -1251,6 +1309,10 @@ msgstr "حدد الرمز"
|
||||
msgid "Select a token to find your v2 liquidity."
|
||||
msgstr "حدد رمزًا للعثور على سيولة v2 الخاصة بك."
|
||||
|
||||
#: src/pages/CreateProposal/ProposalActionSelector.tsx
|
||||
msgid "Select an action"
|
||||
msgstr "حدد إجراء"
|
||||
|
||||
#: src/pages/AddLiquidity/index.tsx
|
||||
msgid "Select pair"
|
||||
msgstr "حدد زوجًا"
|
||||
@@ -1313,6 +1375,14 @@ msgstr "حدث خطأ ما"
|
||||
msgid "Step 1. Get UNI-V2 Liquidity tokens"
|
||||
msgstr "الخطوة 1. احصل على رمز سيولة UNI-V2"
|
||||
|
||||
#: src/state/governance/hooks.ts
|
||||
msgid "Submitted new proposal"
|
||||
msgstr "قدم اقتراح جديد"
|
||||
|
||||
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
|
||||
msgid "Submitting Proposal"
|
||||
msgstr "تقديم الاقتراح"
|
||||
|
||||
#: src/components/vote/VoteModal.tsx
|
||||
msgid "Submitting Vote"
|
||||
msgstr "تقديم التصويت"
|
||||
@@ -1342,6 +1412,10 @@ msgstr "مبادلة على أي حال"
|
||||
msgid "Swapping {0} {1} for {2} {3}"
|
||||
msgstr "مبادلة {0} {1} مقابل {2} {3}"
|
||||
|
||||
#: src/components/Header/NetworkCard.tsx
|
||||
msgid "Switch to Ethereum"
|
||||
msgstr "قم بالتبديل إلى Ethereum"
|
||||
|
||||
#: src/components/Popups/ClaimPopup.tsx
|
||||
msgid "Thanks for being part of the Uniswap community <0/>"
|
||||
msgstr "نشكرك على كونك جزءًا من مجتمع Uniswap <0/>"
|
||||
@@ -1386,6 +1460,10 @@ msgstr "تعذر إرسال المعاملة لانتهاء الموعد الم
|
||||
msgid "These tokens are commonly paired with other tokens."
|
||||
msgstr "هذه الرموز عادة ما تقترن مع رموز أخرى."
|
||||
|
||||
#: src/components/swap/SwapNetworkAlert.tsx
|
||||
msgid "This is an alpha release of Uniswap on the Arbitrum network. You must bridge L1 assets to the network to swap them."
|
||||
msgstr "هذا إصدار ألفا من Uniswap على شبكة Arbitrum. يجب ربط أصول L1 بالشبكة لتبديلها."
|
||||
|
||||
#: src/components/SearchModal/ImportToken.tsx
|
||||
msgid "This token doesn't appear on the active token list(s). Make sure this is the token that you want to trade."
|
||||
msgstr "لا يظهر هذا الرمز في قائمة (قوائم) الرموز النشطة. تأكد من أن هذا هو الرمز الذي تريد تداوله."
|
||||
@@ -1407,6 +1485,8 @@ msgid "Tip: Custom tokens are stored locally in your browser"
|
||||
msgstr "نصيحة: يتم تخزين الرموز المخصصة محليًا في المتصفح الخاص بك"
|
||||
|
||||
#: src/components/swap/SwapModalHeader.tsx
|
||||
#: src/pages/CreateProposal/ProposalActionDetail.tsx
|
||||
#: src/pages/CreateProposal/ProposalActionDetail.tsx
|
||||
#: src/pages/Swap/index.tsx
|
||||
msgid "To"
|
||||
msgstr "إلى"
|
||||
@@ -1460,6 +1540,10 @@ msgstr "تم إرسال المعاملة"
|
||||
msgid "Transaction deadline"
|
||||
msgstr "الموعد النهائي للمعاملة"
|
||||
|
||||
#: src/pages/CreateProposal/ProposalActionSelector.tsx
|
||||
msgid "Transfer Token"
|
||||
msgstr "رمز التحويل"
|
||||
|
||||
#: src/components/WalletModal/PendingView.tsx
|
||||
msgid "Try Again"
|
||||
msgstr "حاول مرة أخرى"
|
||||
@@ -1529,6 +1613,10 @@ msgstr "تعدين سيولة Uniswap"
|
||||
msgid "Uniswap migration contract↗"
|
||||
msgstr "عقد ترحيل Uniswap ↗"
|
||||
|
||||
#: src/components/swap/SwapNetworkAlert.tsx
|
||||
msgid "Uniswap on <0>Arbitrum</0>"
|
||||
msgstr "Uniswap على <0> Arbitrum</0>"
|
||||
|
||||
#: src/components/SearchModal/ImportToken.tsx
|
||||
msgid "Unknown Source"
|
||||
msgstr "مصدر مجهول"
|
||||
@@ -1605,6 +1693,10 @@ msgstr "عرض الرسوم المتراكمة والتحليلات <0>↗</0>"
|
||||
msgid "View list"
|
||||
msgstr "عرض القائمة"
|
||||
|
||||
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
|
||||
msgid "View on Etherscan"
|
||||
msgstr "عرض على Etherscan"
|
||||
|
||||
#: src/components/AccountDetails/index.tsx
|
||||
#: src/components/AccountDetails/index.tsx
|
||||
#: src/components/TransactionConfirmationModal/index.tsx
|
||||
@@ -1652,6 +1744,10 @@ msgstr "التصويت ينتهي تقريبًا {0}"
|
||||
msgid "Waiting For Confirmation"
|
||||
msgstr "في انتظار التأكيد"
|
||||
|
||||
#: src/components/AddressInputPanel/index.tsx
|
||||
msgid "Wallet Address or ENS name"
|
||||
msgstr "عنوان المحفظة أو اسم ENS"
|
||||
|
||||
#: src/components/earn/StakingModal.tsx
|
||||
msgid "Weekly Rewards"
|
||||
msgstr "المكافآت الأسبوعية"
|
||||
@@ -1703,6 +1799,10 @@ msgstr "التفاف"
|
||||
msgid "Wrong Network"
|
||||
msgstr "شبكة خاطئة"
|
||||
|
||||
#: src/pages/CreateProposal/index.tsx
|
||||
msgid "You already have an active or pending proposal"
|
||||
msgstr "لديك بالفعل اقتراح نشط أو معلق"
|
||||
|
||||
#: src/pages/AddLiquidityV2/index.tsx
|
||||
msgid "You are creating a pool"
|
||||
msgstr "أنت تقوم بإنشاء مجموعة"
|
||||
@@ -1723,6 +1823,10 @@ msgstr "يمكنك إما أن تصوت على كل اقتراح بنفسك أو
|
||||
msgid "You can now trade {0}"
|
||||
msgstr "يمكنك الآن التداول {0}"
|
||||
|
||||
#: src/pages/CreateProposal/index.tsx
|
||||
msgid "You don't have enough votes to submit a proposal"
|
||||
msgstr "ليس لديك ما يكفي من الأصوات لتقديم اقتراح"
|
||||
|
||||
#: src/pages/PoolFinder/index.tsx
|
||||
msgid "You don’t have liquidity in this pool yet."
|
||||
msgstr "ليس لديك سيولة في هذه المجموعة حتى الآن."
|
||||
@@ -1735,6 +1839,10 @@ msgstr "يجب عليك توصيل حساب."
|
||||
msgid "You must give the Uniswap smart contracts permission to use your {0}. You only have to do this once per token."
|
||||
msgstr "يجب عليك منح العقود الذكية لـ Uniswap الإذن لاستخدام {0}الخاص بك. يجب عليك القيام بذلك مرة واحدة فقط لكل رمز."
|
||||
|
||||
#: src/pages/CreateProposal/index.tsx
|
||||
msgid "You must have {formattedProposalThreshold} votes to submit a proposal"
|
||||
msgstr "يجب أن يكون لديك {formattedProposalThreshold} أصوات لتقديم اقتراح"
|
||||
|
||||
#: src/pages/MigrateV2/MigrateV2Pair.tsx
|
||||
msgid "You should only deposit liquidity into Uniswap V3 at a price you believe is correct. <0/>If the price seems incorrect, you can either make a swap to move the price or wait for someone else to do so."
|
||||
msgstr "يجب عليك إيداع السيولة فقط في Uniswap V3 بسعر تعتقد أنه صحيح. <0/>إذا بدا السعر غير صحيح، يمكنك إما مقايضة لتحريك السعر أو الانتظار حتى يقوم شخص آخر بذلك."
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"POT-Creation-Date: 2021-06-21 15:11+0000\n"
|
||||
"POT-Creation-Date: 2021-06-27 05:00+0000\n"
|
||||
"Mime-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
@@ -14,7 +14,7 @@ msgstr ""
|
||||
"X-Crowdin-File-ID: 4\n"
|
||||
"Project-Id-Version: uniswap-interface\n"
|
||||
"Language-Team: Catalan\n"
|
||||
"PO-Revision-Date: 2021-06-21 16:05\n"
|
||||
"PO-Revision-Date: 2021-06-27 05:04\n"
|
||||
|
||||
#: src/pages/Pool/PositionPage.tsx
|
||||
#: src/pages/Pool/PositionPage.tsx
|
||||
@@ -35,6 +35,10 @@ msgstr "${0} ETH"
|
||||
msgid "(Max)"
|
||||
msgstr "(Màxim)"
|
||||
|
||||
#: src/components/AddressInputPanel/index.tsx
|
||||
msgid "(View on Explorer)"
|
||||
msgstr "(Veure a Explorer)"
|
||||
|
||||
#: src/components/Header/UniBalanceContent.tsx
|
||||
msgid "(claim)"
|
||||
msgstr "(reclamació)"
|
||||
@@ -111,6 +115,10 @@ msgstr "<0>Torna a</0> V3"
|
||||
msgid "<0>Tip:</0> Removing pool tokens converts your position back into underlying tokens at the current rate, proportional to your share of the pool. Accrued fees are included in the amounts you receive."
|
||||
msgstr "<0>Consell:</0> L’eliminació de les fitxes de grup converteix la vostra posició en fitxes subjacents al ritme actual, proporcional a la vostra quota de grup. Les comissions acumulades estan incloses en els imports que rebeu."
|
||||
|
||||
#: src/pages/CreateProposal/index.tsx
|
||||
msgid "<0>Tip:</0> Select an action and describe your proposal for the community. The proposal cannot be modified after submission, so please verify all information before submitting. The voting period will begin immediately and last for 7 days. To propose a custom action, <1>read the docs</1>."
|
||||
msgstr "<0> Consell:</0> Seleccioneu una acció i descriviu la vostra proposta per a la comunitat. La proposta no es pot modificar després de l’enviament, així que comproveu tota la informació abans d’enviar-la. El període de votació començarà immediatament i durarà 7 dies. Per proposar una acció personalitzada, <1> llegiu els documents</1> ."
|
||||
|
||||
#: src/pages/PoolFinder/index.tsx
|
||||
msgid "<0>Tip:</0> Use this tool to find v2 pools that don't automatically appear in the interface."
|
||||
msgstr "<0>Consell:</0> Utilitzeu aquesta eina per trobar grups de v2 que no apareixen automàticament a la interfície."
|
||||
@@ -235,6 +243,10 @@ msgstr "Analítica"
|
||||
msgid "Approve"
|
||||
msgstr "Aprovar"
|
||||
|
||||
#: src/pages/CreateProposal/ProposalActionSelector.tsx
|
||||
msgid "Approve Token"
|
||||
msgstr "Aprova el testimoni"
|
||||
|
||||
#: src/pages/AddLiquidity/index.tsx
|
||||
#: src/pages/AddLiquidity/index.tsx
|
||||
#: src/pages/AddLiquidityV2/index.tsx
|
||||
@@ -258,6 +270,14 @@ msgstr "Aprovant"
|
||||
msgid "Approving {0}"
|
||||
msgstr "S’aprova {0}"
|
||||
|
||||
#: src/components/Header/NetworkCard.tsx
|
||||
msgid "Arbitrum Explorer"
|
||||
msgstr "Arbitrum Explorer"
|
||||
|
||||
#: src/components/Header/NetworkCard.tsx
|
||||
msgid "Arbitrum Token Bridge"
|
||||
msgstr "Pont d'àrbitres"
|
||||
|
||||
#: src/components/Settings/index.tsx
|
||||
msgid "Are you sure?"
|
||||
msgstr "N'esteu segurs?"
|
||||
@@ -322,6 +342,10 @@ msgstr "En connectar una cartera, accepteu les Condicions del servei <0> d'Unisw
|
||||
msgid "Change"
|
||||
msgstr "Canvi"
|
||||
|
||||
#: src/components/Header/NetworkCard.tsx
|
||||
msgid "Change your network to go back to L1"
|
||||
msgstr "Canvieu la vostra xarxa per tornar a L1"
|
||||
|
||||
#: src/components/Header/index.tsx
|
||||
msgid "Charts"
|
||||
msgstr "Gràfics"
|
||||
@@ -519,6 +543,11 @@ msgstr "Copia l'adreça"
|
||||
msgid "Create Pool & Supply"
|
||||
msgstr "Crea grup i subministrament"
|
||||
|
||||
#: src/pages/CreateProposal/index.tsx
|
||||
#: src/pages/Vote/index.tsx
|
||||
msgid "Create Proposal"
|
||||
msgstr "Crea una proposta"
|
||||
|
||||
#: src/components/NavigationTabs/index.tsx
|
||||
#: src/pages/Pool/v2.tsx
|
||||
msgid "Create a pair"
|
||||
@@ -584,6 +613,10 @@ msgstr "Dipositeu fitxes LP UNI-V2"
|
||||
msgid "Deposit liquidity"
|
||||
msgstr "Dipòsit de liquiditat"
|
||||
|
||||
#: src/components/swap/SwapNetworkAlert.tsx
|
||||
msgid "Deposit to Arbitrum"
|
||||
msgstr "Dipòsit a Arbitrum"
|
||||
|
||||
#: src/pages/Earn/index.tsx
|
||||
msgid "Deposit your Liquidity Provider tokens to receive UNI, the Uniswap protocol governance token."
|
||||
msgstr "Dipositeu les vostres fitxes de proveïdor de liquiditat per rebre UNI, la fitxa de governança del protocol Uniswap."
|
||||
@@ -839,6 +872,10 @@ msgstr "Destinatari no vàlid"
|
||||
msgid "Learn"
|
||||
msgstr "Aprendre"
|
||||
|
||||
#: src/components/Header/NetworkCard.tsx
|
||||
msgid "Learn more"
|
||||
msgstr "Aprèn més"
|
||||
|
||||
#: src/components/claim/ClaimModal.tsx
|
||||
#: src/pages/Pool/PositionPage.tsx
|
||||
msgid "Liquidity"
|
||||
@@ -1140,6 +1177,18 @@ msgstr "Preu:"
|
||||
msgid "Prices and pool share"
|
||||
msgstr "Preus i quota de grup"
|
||||
|
||||
#: src/pages/CreateProposal/ProposalEditor.tsx
|
||||
msgid "Proposal"
|
||||
msgstr "Proposta"
|
||||
|
||||
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
|
||||
msgid "Proposal Submitted"
|
||||
msgstr "Proposta enviada"
|
||||
|
||||
#: src/pages/CreateProposal/ProposalEditor.tsx
|
||||
msgid "Proposal Title"
|
||||
msgstr "Títol de la proposta"
|
||||
|
||||
#: src/pages/Vote/index.tsx
|
||||
msgid "Proposals"
|
||||
msgstr "Propostes"
|
||||
@@ -1148,6 +1197,10 @@ msgstr "Propostes"
|
||||
msgid "Proposals submitted by community members will appear here."
|
||||
msgstr "Les propostes enviades pels membres de la comunitat apareixeran aquí."
|
||||
|
||||
#: src/pages/CreateProposal/ProposalActionSelector.tsx
|
||||
msgid "Proposed Action"
|
||||
msgstr "Acció proposada"
|
||||
|
||||
#: src/pages/Vote/VotePage.tsx
|
||||
msgid "Proposer"
|
||||
msgstr "Proponent"
|
||||
@@ -1176,6 +1229,10 @@ msgstr "Obteniu més informació sobre els recursos no compatibles"
|
||||
msgid "Recent Transactions"
|
||||
msgstr "Transaccions recents"
|
||||
|
||||
#: src/components/AddressInputPanel/index.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "Destinatari"
|
||||
|
||||
#: src/components/PositionCard/V2.tsx
|
||||
#: src/components/PositionCard/index.tsx
|
||||
#: src/pages/RemoveLiquidity/V3.tsx
|
||||
@@ -1220,6 +1277,7 @@ msgid "Restricts swaps to direct pairs only."
|
||||
msgstr "Restringeix els intercanvis només a parells directes."
|
||||
|
||||
#: src/components/TransactionConfirmationModal/index.tsx
|
||||
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
|
||||
msgid "Return"
|
||||
msgstr "Torna"
|
||||
|
||||
@@ -1251,6 +1309,10 @@ msgstr "Seleccioneu una fitxa"
|
||||
msgid "Select a token to find your v2 liquidity."
|
||||
msgstr "Seleccioneu una fitxa per trobar la vostra liquiditat v2."
|
||||
|
||||
#: src/pages/CreateProposal/ProposalActionSelector.tsx
|
||||
msgid "Select an action"
|
||||
msgstr "Seleccioneu una acció"
|
||||
|
||||
#: src/pages/AddLiquidity/index.tsx
|
||||
msgid "Select pair"
|
||||
msgstr "Selecciona un parell"
|
||||
@@ -1313,6 +1375,14 @@ msgstr "Alguna cosa ha anat malament"
|
||||
msgid "Step 1. Get UNI-V2 Liquidity tokens"
|
||||
msgstr "Pas 1. Obteniu fitxes de liquiditat UNI-V2"
|
||||
|
||||
#: src/state/governance/hooks.ts
|
||||
msgid "Submitted new proposal"
|
||||
msgstr "S'ha enviat una nova proposta"
|
||||
|
||||
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
|
||||
msgid "Submitting Proposal"
|
||||
msgstr "Enviament de la proposta"
|
||||
|
||||
#: src/components/vote/VoteModal.tsx
|
||||
msgid "Submitting Vote"
|
||||
msgstr "Enviament de vot"
|
||||
@@ -1342,6 +1412,10 @@ msgstr "Intercanviar de totes maneres"
|
||||
msgid "Swapping {0} {1} for {2} {3}"
|
||||
msgstr "Intercanvi de {0} {1} per {2} {3}"
|
||||
|
||||
#: src/components/Header/NetworkCard.tsx
|
||||
msgid "Switch to Ethereum"
|
||||
msgstr "Canvieu a Ethereum"
|
||||
|
||||
#: src/components/Popups/ClaimPopup.tsx
|
||||
msgid "Thanks for being part of the Uniswap community <0/>"
|
||||
msgstr "Gràcies per formar part de la comunitat Uniswap <0 />"
|
||||
@@ -1386,6 +1460,10 @@ msgstr "No s'ha pogut enviar la transacció perquè s'ha acabat el termini. Comp
|
||||
msgid "These tokens are commonly paired with other tokens."
|
||||
msgstr "Aquestes fitxes solen aparellar-se amb altres fitxes."
|
||||
|
||||
#: src/components/swap/SwapNetworkAlert.tsx
|
||||
msgid "This is an alpha release of Uniswap on the Arbitrum network. You must bridge L1 assets to the network to swap them."
|
||||
msgstr "Es tracta d’una versió alfa d’Uniswap a la xarxa Arbitrum. Heu de connectar els recursos L1 a la xarxa per canviar-los."
|
||||
|
||||
#: src/components/SearchModal/ImportToken.tsx
|
||||
msgid "This token doesn't appear on the active token list(s). Make sure this is the token that you want to trade."
|
||||
msgstr "Aquest testimoni no apareix a la llista de fitxes actives. Assegureu-vos que aquest sigui el testimoni que voleu canviar."
|
||||
@@ -1407,6 +1485,8 @@ msgid "Tip: Custom tokens are stored locally in your browser"
|
||||
msgstr "Consell: les fitxes personalitzades s’emmagatzemen localment al navegador"
|
||||
|
||||
#: src/components/swap/SwapModalHeader.tsx
|
||||
#: src/pages/CreateProposal/ProposalActionDetail.tsx
|
||||
#: src/pages/CreateProposal/ProposalActionDetail.tsx
|
||||
#: src/pages/Swap/index.tsx
|
||||
msgid "To"
|
||||
msgstr "Per a"
|
||||
@@ -1460,6 +1540,10 @@ msgstr "Transacció enviada"
|
||||
msgid "Transaction deadline"
|
||||
msgstr "Termini de transacció"
|
||||
|
||||
#: src/pages/CreateProposal/ProposalActionSelector.tsx
|
||||
msgid "Transfer Token"
|
||||
msgstr "Transferir el testimoni"
|
||||
|
||||
#: src/components/WalletModal/PendingView.tsx
|
||||
msgid "Try Again"
|
||||
msgstr "Torna-ho a provar"
|
||||
@@ -1529,6 +1613,10 @@ msgstr "Mineria de liquiditat Uniswap"
|
||||
msgid "Uniswap migration contract↗"
|
||||
msgstr "Contracte de migració Uniswap↗"
|
||||
|
||||
#: src/components/swap/SwapNetworkAlert.tsx
|
||||
msgid "Uniswap on <0>Arbitrum</0>"
|
||||
msgstr "Uniswap a <0> Arbitrum</0>"
|
||||
|
||||
#: src/components/SearchModal/ImportToken.tsx
|
||||
msgid "Unknown Source"
|
||||
msgstr "Font desconeguda"
|
||||
@@ -1605,6 +1693,10 @@ msgstr "Consulteu els honoraris i les taxes acumulades <0> ↗</0>"
|
||||
msgid "View list"
|
||||
msgstr "Veure llista"
|
||||
|
||||
#: src/pages/CreateProposal/ProposalSubmissionModal.tsx
|
||||
msgid "View on Etherscan"
|
||||
msgstr "Veure a Etherscan"
|
||||
|
||||
#: src/components/AccountDetails/index.tsx
|
||||
#: src/components/AccountDetails/index.tsx
|
||||
#: src/components/TransactionConfirmationModal/index.tsx
|
||||
@@ -1652,6 +1744,10 @@ msgstr "La votació finalitza aproximadament {0}"
|
||||
msgid "Waiting For Confirmation"
|
||||
msgstr "Esperant la confirmació"
|
||||
|
||||
#: src/components/AddressInputPanel/index.tsx
|
||||
msgid "Wallet Address or ENS name"
|
||||
msgstr "Adreça de cartera o nom ENS"
|
||||
|
||||
#: src/components/earn/StakingModal.tsx
|
||||
msgid "Weekly Rewards"
|
||||
msgstr "Recompenses setmanals"
|
||||
@@ -1703,6 +1799,10 @@ msgstr "Embolicar"
|
||||
msgid "Wrong Network"
|
||||
msgstr "Xarxa incorrecta"
|
||||
|
||||
#: src/pages/CreateProposal/index.tsx
|
||||
msgid "You already have an active or pending proposal"
|
||||
msgstr "Ja teniu una proposta activa o pendent"
|
||||
|
||||
#: src/pages/AddLiquidityV2/index.tsx
|
||||
msgid "You are creating a pool"
|
||||
msgstr "Esteu creant un grup"
|
||||
@@ -1723,6 +1823,10 @@ msgstr "Podeu votar vosaltres cada proposta o delegar els vostres vots a un terc
|
||||
msgid "You can now trade {0}"
|
||||
msgstr "Ara podeu canviar {0}"
|
||||
|
||||
#: src/pages/CreateProposal/index.tsx
|
||||
msgid "You don't have enough votes to submit a proposal"
|
||||
msgstr "No teniu prou vots per enviar una proposta"
|
||||
|
||||
#: src/pages/PoolFinder/index.tsx
|
||||
msgid "You don’t have liquidity in this pool yet."
|
||||
msgstr "Encara no teniu liquiditat en aquest grup."
|
||||
@@ -1735,6 +1839,10 @@ msgstr "Heu de connectar un compte."
|
||||
msgid "You must give the Uniswap smart contracts permission to use your {0}. You only have to do this once per token."
|
||||
msgstr "Heu de donar permís als contractes intel·ligents Uniswap per utilitzar el vostre {0}. Només heu de fer-ho una vegada per fitxa."
|
||||
|
||||
#: src/pages/CreateProposal/index.tsx
|
||||
msgid "You must have {formattedProposalThreshold} votes to submit a proposal"
|
||||
msgstr "Heu de tenir {formattedProposalThreshold} vots per enviar una proposta"
|
||||
|
||||
#: src/pages/MigrateV2/MigrateV2Pair.tsx
|
||||
msgid "You should only deposit liquidity into Uniswap V3 at a price you believe is correct. <0/>If the price seems incorrect, you can either make a swap to move the price or wait for someone else to do so."
|
||||
msgstr "Només heu de dipositar liquiditat a Uniswap V3 a un preu que creieu correcte. <0/> Si el preu sembla incorrecte, podeu canviar el preu o esperar que algú ho faci."
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user