fix: style and copy updates to the swap box (#7006)

* add you pay/you receive label to swap inputs

* update styles

* update snapshots
This commit is contained in:
Jordan Frankfurt 2023-08-02 13:39:05 -05:00 committed by GitHub
parent 7978ed97a9
commit 1ffb9421b2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 898 additions and 787 deletions

@ -0,0 +1,5 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M20.83 14.6C19.9 14.06 19.33 13.07 19.33 12C19.33 10.93 19.9 9.93999 20.83 9.39999C20.99 9.29999 21.05 9.1 20.95 8.94L19.28 6.06C19.22 5.95 19.11 5.89001 19 5.89001C18.94 5.89001 18.88 5.91 18.83 5.94C18.37 6.2 17.85 6.34 17.33 6.34C16.8 6.34 16.28 6.19999 15.81 5.92999C14.88 5.38999 14.31 4.41 14.31 3.34C14.31 3.15 14.16 3 13.98 3H10.02C9.83999 3 9.69 3.15 9.69 3.34C9.69 4.41 9.12 5.38999 8.19 5.92999C7.72 6.19999 7.20001 6.34 6.67001 6.34C6.15001 6.34 5.63001 6.2 5.17001 5.94C5.01001 5.84 4.81 5.9 4.72 6.06L3.04001 8.94C3.01001 8.99 3 9.05001 3 9.10001C3 9.22001 3.06001 9.32999 3.17001 9.39999C4.10001 9.93999 4.67001 10.92 4.67001 11.99C4.67001 13.07 4.09999 14.06 3.17999 14.6H3.17001C3.01001 14.7 2.94999 14.9 3.04999 15.06L4.72 17.94C4.78 18.05 4.89 18.11 5 18.11C5.06 18.11 5.12001 18.09 5.17001 18.06C6.11001 17.53 7.26 17.53 8.19 18.07C9.11 18.61 9.67999 19.59 9.67999 20.66C9.67999 20.85 9.82999 21 10.02 21H13.98C14.16 21 14.31 20.85 14.31 20.66C14.31 19.59 14.88 18.61 15.81 18.07C16.28 17.8 16.8 17.66 17.33 17.66C17.85 17.66 18.37 17.8 18.83 18.06C18.99 18.16 19.19 18.1 19.28 17.94L20.96 15.06C20.99 15.01 21 14.95 21 14.9C21 14.78 20.94 14.67 20.83 14.6ZM12 15C10.34 15 9 13.66 9 12C9 10.34 10.34 9 12 9C13.66 9 15 10.34 15 12C15 13.66 13.66 15 12 15Z"
fill="currentColor" />
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

@ -37,7 +37,7 @@ export function FiatValue({
return ( return (
<Row gap="sm"> <Row gap="sm">
<ThemedText.BodySmall> <ThemedText.BodySmall color="textSecondary">
{fiatValue.data ? ( {fiatValue.data ? (
formatNumber(fiatValue.data, NumberType.FiatTokenPrice) formatNumber(fiatValue.data, NumberType.FiatTokenPrice)
) : ( ) : (

@ -71,7 +71,7 @@ const CurrencySelect = styled(ButtonGray)<{
user-select: none; user-select: none;
border: none; border: none;
font-size: 24px; font-size: 24px;
font-weight: 400; font-weight: 500;
width: ${({ hideInput }) => (hideInput ? '100%' : 'initial')}; width: ${({ hideInput }) => (hideInput ? '100%' : 'initial')};
padding: ${({ selected }) => (selected ? '4px 8px 4px 4px' : '6px 6px 6px 8px')}; padding: ${({ selected }) => (selected ? '4px 8px 4px 4px' : '6px 6px 6px 8px')};
gap: 8px; gap: 8px;
@ -189,7 +189,7 @@ interface SwapCurrencyInputPanelProps {
onUserInput: (value: string) => void onUserInput: (value: string) => void
onMax?: () => void onMax?: () => void
showMaxButton: boolean showMaxButton: boolean
label?: ReactNode label: ReactNode
onCurrencySelect?: (currency: Currency) => void onCurrencySelect?: (currency: Currency) => void
currency?: Currency | null currency?: Currency | null
hideBalance?: boolean hideBalance?: boolean
@ -229,6 +229,7 @@ export default function SwapCurrencyInputPanel({
locked = false, locked = false,
loading = false, loading = false,
disabled = false, disabled = false,
label,
...rest ...rest
}: SwapCurrencyInputPanelProps) { }: SwapCurrencyInputPanelProps) {
const [modalOpen, setModalOpen] = useState(false) const [modalOpen, setModalOpen] = useState(false)
@ -255,6 +256,7 @@ export default function SwapCurrencyInputPanel({
</FixedContainer> </FixedContainer>
)} )}
<Container hideInput={hideInput}> <Container hideInput={hideInput}>
<ThemedText.SubHeaderSmall color="textTertiary">{label}</ThemedText.SubHeaderSmall>
<InputRow style={hideInput ? { padding: '0', borderRadius: '8px' } : {}}> <InputRow style={hideInput ? { padding: '0', borderRadius: '8px' } : {}}>
{!hideInput && ( {!hideInput && (
<StyledNumericalInput <StyledNumericalInput

@ -40,7 +40,7 @@ const FixedContainer = styled.div`
width: 100%; width: 100%;
height: 100%; height: 100%;
position: absolute; position: absolute;
border-radius: 20px; border-radius: 16px;
background-color: ${({ theme }) => theme.backgroundInteractive}; background-color: ${({ theme }) => theme.backgroundInteractive};
display: flex; display: flex;
align-items: center; align-items: center;

@ -1,6 +1,6 @@
import { t, Trans } from '@lingui/macro' import { t, Trans } from '@lingui/macro'
import { ReactComponent as Settings } from 'assets/svg/settings.svg'
import Row from 'components/Row' import Row from 'components/Row'
import { Settings } from 'react-feather'
import { useUserSlippageTolerance } from 'state/user/hooks' import { useUserSlippageTolerance } from 'state/user/hooks'
import { SlippageTolerance } from 'state/user/types' import { SlippageTolerance } from 'state/user/types'
import styled from 'styled-components/macro' import styled from 'styled-components/macro'
@ -8,10 +8,10 @@ import { ThemedText } from 'theme'
import validateUserSlippageTolerance, { SlippageValidationResult } from 'utils/validateUserSlippageTolerance' import validateUserSlippageTolerance, { SlippageValidationResult } from 'utils/validateUserSlippageTolerance'
const Icon = styled(Settings)` const Icon = styled(Settings)`
height: 20px; height: 24px;
width: 20px; width: 24px;
> * { > * {
stroke: ${({ theme }) => theme.textSecondary}; fill: ${({ theme }) => theme.textSecondary};
} }
` `

@ -15,7 +15,7 @@ exports[`SwapSkeleton.tsx renders a skeleton 1`] = `
margin-bottom: -18px; margin-bottom: -18px;
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
background-color: #E8ECFB; background-color: #F5F6FC;
border: 4px solid; border: 4px solid;
border-color: #FFFFFF; border-color: #FFFFFF;
z-index: 2; z-index: 2;

@ -26,7 +26,7 @@ export const PageWrapper = styled.div`
export const SwapWrapper = styled.main<{ chainId?: number }>` export const SwapWrapper = styled.main<{ chainId?: number }>`
position: relative; position: relative;
background: ${({ theme }) => theme.backgroundSurface}; background: ${({ theme }) => theme.backgroundSurface};
border-radius: 16px; border-radius: 24px;
border: 1px solid ${({ theme }) => theme.backgroundOutline}; border: 1px solid ${({ theme }) => theme.backgroundOutline};
padding: 8px; padding: 8px;
padding-top: 12px; padding-top: 12px;
@ -151,7 +151,7 @@ export const ArrowWrapper = styled.div<{ clickable: boolean }>`
margin-bottom: -18px; margin-bottom: -18px;
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
background-color: ${({ theme }) => theme.backgroundInteractive}; background-color: ${({ theme }) => theme.backgroundModule};
border: 4px solid; border: 4px solid;
border-color: ${({ theme }) => theme.backgroundSurface}; border-color: ${({ theme }) => theme.backgroundSurface};

File diff suppressed because it is too large Load Diff

@ -74,14 +74,15 @@ export const ArrowContainer = styled.div`
` `
const SwapSection = styled.div` const SwapSection = styled.div`
position: relative;
background-color: ${({ theme }) => theme.backgroundModule}; background-color: ${({ theme }) => theme.backgroundModule};
border-radius: 12px; border-radius: 16px;
padding: 16px;
color: ${({ theme }) => theme.textSecondary}; color: ${({ theme }) => theme.textSecondary};
font-size: 14px; font-size: 14px;
line-height: 20px;
font-weight: 500; font-weight: 500;
height: 120px;
line-height: 20px;
padding: 16px;
position: relative;
&:before { &:before {
box-sizing: border-box; box-sizing: border-box;
@ -585,9 +586,7 @@ export function Swap({
<SwapSection> <SwapSection>
<Trace section={InterfaceSectionName.CURRENCY_INPUT_PANEL}> <Trace section={InterfaceSectionName.CURRENCY_INPUT_PANEL}>
<SwapCurrencyInputPanel <SwapCurrencyInputPanel
label={ label={<Trans>You pay</Trans>}
independentField === Field.OUTPUT && !showWrap ? <Trans>From (at most)</Trans> : <Trans>From</Trans>
}
disabled={disableTokenInputs} disabled={disableTokenInputs}
value={formattedAmounts[Field.INPUT]} value={formattedAmounts[Field.INPUT]}
showMaxButton={showMaxButton} showMaxButton={showMaxButton}
@ -616,10 +615,7 @@ export function Swap({
}} }}
color={theme.textPrimary} color={theme.textPrimary}
> >
<ArrowDown <ArrowDown size="16" color={theme.textPrimary} />
size="16"
color={currencies[Field.INPUT] && currencies[Field.OUTPUT] ? theme.textPrimary : theme.textTertiary}
/>
</ArrowContainer> </ArrowContainer>
</TraceEvent> </TraceEvent>
</ArrowWrapper> </ArrowWrapper>
@ -632,7 +628,7 @@ export function Swap({
value={formattedAmounts[Field.OUTPUT]} value={formattedAmounts[Field.OUTPUT]}
disabled={disableTokenInputs} disabled={disableTokenInputs}
onUserInput={handleTypeOutput} onUserInput={handleTypeOutput}
label={independentField === Field.INPUT && !showWrap ? <Trans>To (at least)</Trans> : <Trans>To</Trans>} label={<Trans>You receive</Trans>}
showMaxButton={false} showMaxButton={false}
hideBalance={false} hideBalance={false}
fiatValue={showFiatValueOutput ? fiatValueOutput : undefined} fiatValue={showFiatValueOutput ? fiatValueOutput : undefined}
@ -671,13 +667,13 @@ export function Swap({
{showPriceImpactWarning && <PriceImpactWarning priceImpact={largerPriceImpact} />} {showPriceImpactWarning && <PriceImpactWarning priceImpact={largerPriceImpact} />}
<div> <div>
{swapIsUnsupported ? ( {swapIsUnsupported ? (
<ButtonPrimary disabled={true}> <ButtonPrimary $borderRadius="16px" disabled={true}>
<ThemedText.DeprecatedMain mb="4px"> <ThemedText.DeprecatedMain mb="4px">
<Trans>Unsupported Asset</Trans> <Trans>Unsupported Asset</Trans>
</ThemedText.DeprecatedMain> </ThemedText.DeprecatedMain>
</ButtonPrimary> </ButtonPrimary>
) : switchingChain ? ( ) : switchingChain ? (
<ButtonPrimary disabled={true}> <ButtonPrimary $borderRadius="16px" disabled={true}>
<Trans>Connecting to {getChainInfo(switchingChain)?.label}</Trans> <Trans>Connecting to {getChainInfo(switchingChain)?.label}</Trans>
</ButtonPrimary> </ButtonPrimary>
) : !account ? ( ) : !account ? (
@ -687,12 +683,13 @@ export function Swap({
properties={{ received_swap_quote: getIsValidSwapQuote(trade, tradeState, swapInputError) }} properties={{ received_swap_quote: getIsValidSwapQuote(trade, tradeState, swapInputError) }}
element={InterfaceElementName.CONNECT_WALLET_BUTTON} element={InterfaceElementName.CONNECT_WALLET_BUTTON}
> >
<ButtonLight onClick={toggleWalletDrawer} fontWeight={600}> <ButtonLight onClick={toggleWalletDrawer} fontWeight={600} $borderRadius="16px">
<Trans>Connect Wallet</Trans> <Trans>Connect Wallet</Trans>
</ButtonLight> </ButtonLight>
</TraceEvent> </TraceEvent>
) : chainId && chainId !== connectedChainId ? ( ) : chainId && chainId !== connectedChainId ? (
<ButtonPrimary <ButtonPrimary
$borderRadius="16px"
onClick={async () => { onClick={async () => {
try { try {
await switchChain(connector, chainId) await switchChain(connector, chainId)
@ -710,6 +707,7 @@ export function Swap({
</ButtonPrimary> </ButtonPrimary>
) : showWrap ? ( ) : showWrap ? (
<ButtonPrimary <ButtonPrimary
$borderRadius="16px"
disabled={Boolean(wrapInputError)} disabled={Boolean(wrapInputError)}
onClick={handleOnWrap} onClick={handleOnWrap}
fontWeight={600} fontWeight={600}