fix: Simplifying opacity hover and fixing a link (#5200)

* Simplifying Opacity hover state and fixing a link styling
This commit is contained in:
aballerr 2022-11-14 12:29:38 -05:00 committed by GitHub
parent c563dd5a39
commit 8c3ba8bac3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 49 additions and 153 deletions

@ -29,3 +29,19 @@ export const ScrollBarStyles = css<{ $isHorizontalScroll?: boolean }>`
border-radius: 8px;
}
`
export const OpacityHoverState = css`
&:hover {
opacity: ${({ theme }) => theme.opacity.hover};
}
&:active {
opacity: ${({ theme }) => theme.opacity.click};
}
transition: ${({
theme: {
transition: { duration, timing },
},
}) => `opacity ${duration.medium} ${timing.ease}`};
`

@ -1,3 +1,4 @@
import { OpacityHoverState } from 'components/Common'
import { Column, Row } from 'nft/components/Flex'
import { BagCloseIcon } from 'nft/components/icons'
import { roundAndPluralize } from 'nft/utils/roundAndPluralize'
@ -33,19 +34,8 @@ const IconWrapper = styled.button`
display: flex;
padding: 2px;
opacity: 1;
&:hover {
opacity: ${({ theme }) => theme.opacity.hover};
}
&:active {
opacity: ${({ theme }) => theme.opacity.click};
}
transition: ${({
theme: {
transition: { duration, timing },
},
}) => `opacity ${duration.medium} ${timing.ease}`};
${OpacityHoverState}
`
interface BagHeaderProps {
numberOfAssets: number

@ -1,5 +1,6 @@
import { BigNumber } from '@ethersproject/bignumber'
import clsx from 'clsx'
import { OpacityHoverState } from 'components/Common'
import { MouseoverTooltip } from 'components/Tooltip'
import { Box } from 'nft/components/Box'
import { Row } from 'nft/components/Flex'
@ -93,12 +94,7 @@ const DetailsLinkContainer = styled.a`
text-decoration: none;
color: ${({ theme }) => theme.textSecondary};
:hover {
opacity: ${({ theme }) => theme.opacity.hover};
}
:focus {
opacity: ${({ theme }) => theme.opacity.click};
}
${OpacityHoverState}
`
const SuspiciousIcon = styled(AlertTriangle)`

@ -2,6 +2,7 @@ import { TraceEvent } from '@uniswap/analytics'
import { BrowserEvent, ElementName, EventName } from '@uniswap/analytics-events'
import { useWeb3React } from '@web3-react/core'
import clsx from 'clsx'
import { OpacityHoverState } from 'components/Common'
import { loadingAnimation } from 'components/Loader/styled'
import { parseEther } from 'ethers/lib/utils'
import { NftAssetTraitInput, NftMarketplace } from 'graphql/data/nft/__generated__/AssetQuery.graphql'
@ -90,19 +91,7 @@ const EmptyCollectionWrapper = styled.div`
`
const ViewFullCollection = styled.span`
&:hover {
opacity: ${({ theme }) => theme.opacity.hover};
}
&:active {
opacity: ${({ theme }) => theme.opacity.click};
}
transition: ${({
theme: {
transition: { duration, timing },
},
}) => `opacity ${duration.medium} ${timing.ease}`};
${OpacityHoverState}
`
const ClearAllButton = styled.button`

@ -1,4 +1,4 @@
import { ScrollBarStyles } from 'components/Common'
import { OpacityHoverState, ScrollBarStyles } from 'components/Common'
import { ActivityEventResponse } from 'nft/types'
import { shortenAddress } from 'nft/utils/address'
import { formatEthPrice } from 'nft/utils/currency'
@ -74,19 +74,7 @@ const Link = styled.a`
color: ${({ theme }) => theme.textPrimary};
text-decoration: none;
&:hover {
opacity: ${({ theme }) => theme.opacity.hover};
}
&:active {
opacity: ${({ theme }) => theme.opacity.click};
}
transition: ${({
theme: {
transition: { duration, timing },
},
}) => `opacity ${duration.medium} ${timing.ease}`};
${OpacityHoverState}
`
const ActivityContainer = styled.div`

@ -1,4 +1,4 @@
import { ScrollBarStyles } from 'components/Common'
import { OpacityHoverState, ScrollBarStyles } from 'components/Common'
import Resource from 'components/Tokens/TokenDetails/Resource'
import { MouseoverTooltip } from 'components/Tooltip/index'
import { Box } from 'nft/components/Box'
@ -19,7 +19,7 @@ import { useCallback, useMemo, useReducer, useState } from 'react'
import InfiniteScroll from 'react-infinite-scroll-component'
import { useInfiniteQuery, useQuery } from 'react-query'
import { Link as RouterLink } from 'react-router-dom'
import styled, { css } from 'styled-components/macro'
import styled from 'styled-components/macro'
import AssetActivity from './AssetActivity'
import * as styles from './AssetDetails.css'
@ -27,22 +27,6 @@ import DetailsContainer from './DetailsContainer'
import InfoContainer from './InfoContainer'
import TraitsContainer from './TraitsContainer'
const OpacityTransition = css`
&:hover {
opacity: ${({ theme }) => theme.opacity.hover};
}
&:active {
opacity: ${({ theme }) => theme.opacity.click};
}
transition: ${({
theme: {
transition: { duration, timing },
},
}) => `opacity ${duration.medium} ${timing.ease}`};
`
const CollectionHeader = styled.span`
display: flex;
align-items: center;
@ -51,7 +35,7 @@ const CollectionHeader = styled.span`
color: ${({ theme }) => theme.textPrimary};
margin-top: 28px;
text-decoration: none;
${OpacityTransition};
${OpacityHoverState};
`
const AssetPriceDetailsContainer = styled.div`
@ -89,7 +73,7 @@ const AddressTextLink = styled.a`
text-decoration: none;
max-width: 100%;
word-wrap: break-word;
${OpacityTransition};
${OpacityHoverState};
`
const SocialsContainer = styled.div`
@ -131,7 +115,7 @@ const Link = styled(RouterLink)`
line-height: 16px;
margin-top: 12px;
cursor: pointer;
${OpacityTransition};
${OpacityHoverState};
`
const DefaultLink = styled(RouterLink)`
@ -172,7 +156,7 @@ const FilterBox = styled.div<{ isActive?: boolean }>`
cursor: pointer;
box-sizing: border-box;
border: ${({ isActive, theme }) => (isActive ? `1px solid ${theme.accentActive}` : undefined)};
${OpacityTransition};
${OpacityHoverState};
`
const ByText = styled.span`

@ -1,4 +1,5 @@
import { useWeb3React } from '@web3-react/core'
import { OpacityHoverState } from 'components/Common'
import useCopyClipboard from 'hooks/useCopyClipboard'
import { CancelListingIcon, MinusIcon, PlusIcon } from 'nft/components/icons'
import { useBag } from 'nft/hooks'
@ -139,19 +140,7 @@ const UploadLink = styled.a`
color: ${({ theme }) => theme.textSecondary};
cursor: pointer;
&:hover {
opacity: ${({ theme }) => theme.opacity.hover};
}
&:active {
opacity: ${({ theme }) => theme.opacity.click};
}
transition: ${({
theme: {
transition: { duration, timing },
},
}) => `opacity ${duration.medium} ${timing.ease}`};
${OpacityHoverState}
`
const NotForSaleContainer = styled.div`
@ -177,19 +166,7 @@ const OwnerText = styled.a`
color: ${({ theme }) => theme.textSecondary};
text-decoration: none;
&:hover {
opacity: ${({ theme }) => theme.opacity.hover};
}
&:active {
opacity: ${({ theme }) => theme.opacity.click};
}
transition: ${({
theme: {
transition: { duration, timing },
},
}) => `opacity ${duration.medium} ${timing.ease}`};
${OpacityHoverState}
`
const OwnerInformationContainer = styled.div`
@ -257,6 +234,11 @@ export const OwnerContainer = ({ asset }: { asset: GenieAsset }) => {
)
}
const StyledLink = styled(Link)`
text-decoration: none;
${OpacityHoverState}
`
export const NotForSale = ({ collectionName, collectionUrl }: { collectionName: string; collectionUrl: string }) => {
const theme = useTheme()
@ -271,9 +253,9 @@ export const NotForSale = ({ collectionName, collectionUrl }: { collectionName:
<ThemedText.BodySecondary fontSize="14px" lineHeight="20px">
Discover similar NFTs for sale in
</ThemedText.BodySecondary>
<Link to={`/nfts/collection/${collectionUrl}`}>
<StyledLink to={`/nfts/collection/${collectionUrl}`}>
<ThemedText.Link lineHeight="20px">{collectionName}</ThemedText.Link>
</Link>
</StyledLink>
</DiscoveryContainer>
</NotForSaleContainer>
</BestPriceContainer>

@ -1,3 +1,4 @@
import { OpacityHoverState } from 'components/Common'
import useCopyClipboard from 'hooks/useCopyClipboard'
import { CollectionInfoForAsset, GenieAsset } from 'nft/types'
import { putCommas } from 'nft/utils'
@ -39,38 +40,14 @@ const Center = styled.span`
display: flex;
gap: 8px;
&:hover {
opacity: ${({ theme }) => theme.opacity.hover};
}
&:active {
opacity: ${({ theme }) => theme.opacity.click};
}
transition: ${({
theme: {
transition: { duration, timing },
},
}) => `opacity ${duration.medium} ${timing.ease}`};
${OpacityHoverState}
`
const CreatorLink = styled.a`
color: ${({ theme }) => theme.textPrimary};
text-decoration: none;
&:hover {
opacity: ${({ theme }) => theme.opacity.hover};
}
&:active {
opacity: ${({ theme }) => theme.opacity.click};
}
transition: ${({
theme: {
transition: { duration, timing },
},
}) => `opacity ${duration.medium} ${timing.ease}`};
${OpacityHoverState}
`
const CopyIcon = styled(Copy)`

@ -1,3 +1,4 @@
import { OpacityHoverState } from 'components/Common'
import { GenieAsset, Trait } from 'nft/types'
import qs from 'query-string'
import { useMemo } from 'react'
@ -26,19 +27,7 @@ const GridItemContainer = styled(Link)`
padding: 12px;
text-decoration: none;
&:hover {
opacity: ${({ theme }) => theme.opacity.hover};
}
&:active {
opacity: ${({ theme }) => theme.opacity.click};
}
transition: ${({
theme: {
transition: { duration, timing },
},
}) => `opacity ${duration.medium} ${timing.ease}`};
${OpacityHoverState}
min-width: 0;
`

@ -1,3 +1,4 @@
import { OpacityHoverState } from 'components/Common'
import ms from 'ms.macro'
import { CollectionTableColumn, Denomination, TimePeriod, VolumeType } from 'nft/types'
import { fetchPrice } from 'nft/utils'
@ -60,13 +61,7 @@ const Selector = styled.div<{ active: boolean }>`
background: ${({ active, theme }) => (active ? theme.backgroundInteractive : 'none')};
cursor: pointer;
:hover {
opacity: ${({ theme }) => theme.opacity.hover};
}
:active {
opacity: ${({ theme }) => theme.opacity.click};
}
${OpacityHoverState}
`
const StyledSelectorText = styled(ThemedText.SubHeader)<{ active: boolean }>`

@ -1,6 +1,7 @@
import { Trace } from '@uniswap/analytics'
import { PageName } from '@uniswap/analytics-events'
import { useWeb3React } from '@web3-react/core'
import { OpacityHoverState } from 'components/Common'
import { useLoadAssetsQuery } from 'graphql/data/nft/Asset'
import { useCollectionQuery, useLoadCollectionQuery } from 'graphql/data/nft/Collection'
import { MobileHoverBag } from 'nft/components/bag/MobileHoverBag'
@ -49,19 +50,8 @@ const IconWrapper = styled.button`
display: flex;
padding: 2px 0px;
opacity: 1;
&:hover {
opacity: ${({ theme }) => theme.opacity.hover};
}
&:active {
opacity: ${({ theme }) => theme.opacity.click};
}
transition: ${({
theme: {
transition: { duration, timing },
},
}) => `opacity ${duration.medium} ${timing.ease}`};
${OpacityHoverState}
`
const Collection = () => {