Commit 1536e187 authored by Jack Short's avatar Jack Short Committed by GitHub

style: updating details (#5371)

* style: adjusting details page

* moving owners

* removing traits if no traits

* adding accent colors

* trait grid breakpoint

* some comments

* addressing comments
parent c19431eb
...@@ -6,7 +6,6 @@ import { reduceFilters } from 'nft/components/collection/Activity' ...@@ -6,7 +6,6 @@ import { reduceFilters } from 'nft/components/collection/Activity'
import { LoadingSparkle } from 'nft/components/common/Loading/LoadingSparkle' import { LoadingSparkle } from 'nft/components/common/Loading/LoadingSparkle'
import { AssetPriceDetails } from 'nft/components/details/AssetPriceDetails' import { AssetPriceDetails } from 'nft/components/details/AssetPriceDetails'
import { Center } from 'nft/components/Flex' import { Center } from 'nft/components/Flex'
import { VerifiedIcon } from 'nft/components/icons'
import { ActivityFetcher } from 'nft/queries/genie/ActivityFetcher' import { ActivityFetcher } from 'nft/queries/genie/ActivityFetcher'
import { ActivityEventResponse, ActivityEventType, CollectionInfoForAsset, GenieAsset } from 'nft/types' import { ActivityEventResponse, ActivityEventType, CollectionInfoForAsset, GenieAsset } from 'nft/types'
import { shortenAddress } from 'nft/utils/address' import { shortenAddress } from 'nft/utils/address'
...@@ -27,17 +26,6 @@ import DetailsContainer from './DetailsContainer' ...@@ -27,17 +26,6 @@ import DetailsContainer from './DetailsContainer'
import InfoContainer from './InfoContainer' import InfoContainer from './InfoContainer'
import TraitsContainer from './TraitsContainer' import TraitsContainer from './TraitsContainer'
const CollectionHeader = styled.span`
display: flex;
align-items: center;
font-size: 16px;
line-height: 24px;
color: ${({ theme }) => theme.textPrimary};
margin-top: 28px;
text-decoration: none;
${OpacityHoverState};
`
const AssetPriceDetailsContainer = styled.div` const AssetPriceDetailsContainer = styled.div`
margin-top: 20px; margin-top: 20px;
display: none; display: none;
...@@ -46,15 +34,6 @@ const AssetPriceDetailsContainer = styled.div` ...@@ -46,15 +34,6 @@ const AssetPriceDetailsContainer = styled.div`
} }
` `
const AssetHeader = styled.div`
display: flex;
align-items: center;
font-size: 36px;
line-height: 36px;
color: ${({ theme }) => theme.textPrimary};
margin-top: 8px;
`
const MediaContainer = styled.div` const MediaContainer = styled.div`
display: flex; display: flex;
justify-content: center; justify-content: center;
...@@ -118,10 +97,6 @@ const Link = styled(RouterLink)` ...@@ -118,10 +97,6 @@ const Link = styled(RouterLink)`
${OpacityHoverState}; ${OpacityHoverState};
` `
const DefaultLink = styled(RouterLink)`
text-decoration: none;
`
const ActivitySelectContainer = styled.div` const ActivitySelectContainer = styled.div`
display: flex; display: flex;
gap: 8px; gap: 8px;
...@@ -150,8 +125,11 @@ const ContentNotAvailable = styled.div` ...@@ -150,8 +125,11 @@ const ContentNotAvailable = styled.div`
const FilterBox = styled.div<{ isActive?: boolean }>` const FilterBox = styled.div<{ isActive?: boolean }>`
box-sizing: border-box; box-sizing: border-box;
background-color: ${({ theme }) => theme.backgroundInteractive}; background-color: ${({ theme }) => theme.backgroundInteractive};
font-size: 14px;
font-weight: 600;
line-height: 14px;
color: ${({ theme }) => theme.textPrimary}; color: ${({ theme }) => theme.textPrimary};
padding: 12px 16px; padding: 8px 16px;
border-radius: 12px; border-radius: 12px;
cursor: pointer; cursor: pointer;
box-sizing: border-box; box-sizing: border-box;
...@@ -383,43 +361,39 @@ export const AssetDetails = ({ asset, collection }: AssetDetailsProps) => { ...@@ -383,43 +361,39 @@ export const AssetDetails = ({ asset, collection }: AssetDetailsProps) => {
<AssetView asset={asset} mediaType={assetMediaType} dominantColor={dominantColor} /> <AssetView asset={asset} mediaType={assetMediaType} dominantColor={dominantColor} />
)} )}
</MediaContainer> </MediaContainer>
<DefaultLink to={`/nfts/collection/${asset.address}`}>
<CollectionHeader>
{collection.collectionName} {collection.isVerified && <VerifiedIcon />}
</CollectionHeader>
</DefaultLink>
<AssetHeader>{asset.name ?? `${asset.collectionName} #${asset.tokenId}`}</AssetHeader>
<AssetPriceDetailsContainer> <AssetPriceDetailsContainer>
<AssetPriceDetails asset={asset} collection={collection} /> <AssetPriceDetails asset={asset} collection={collection} />
</AssetPriceDetailsContainer> </AssetPriceDetailsContainer>
<InfoContainer {asset.traits && (
primaryHeader="Traits" <InfoContainer
defaultOpen primaryHeader="Traits"
secondaryHeader={ defaultOpen
rarityProvider && rarity && rarity.score ? ( secondaryHeader={
<MouseoverTooltip rarityProvider && rarity && rarity.score ? (
text={ <MouseoverTooltip
<HoverContainer> text={
<HoverImageContainer> <HoverContainer>
<img src={rarityProviderLogo} alt="cardLogo" width={16} /> <HoverImageContainer>
</HoverImageContainer> <img src={rarityProviderLogo} alt="cardLogo" width={16} />
<ContainerText> </HoverImageContainer>
{`Ranking by ${rarity.provider === 'Genie' ? fallbackProvider : rarity.provider}`} <ContainerText>
</ContainerText> {`Ranking by ${rarity.provider === 'Genie' ? fallbackProvider : rarity.provider}`}
</HoverContainer> </ContainerText>
} </HoverContainer>
placement="top" }
> placement="top"
<RarityWrap>Rarity: {putCommas(rarity.score)}</RarityWrap> >
</MouseoverTooltip> <RarityWrap>Rarity: {putCommas(rarity.score)}</RarityWrap>
) : null </MouseoverTooltip>
} ) : null
> }
<TraitsContainer asset={asset} /> >
</InfoContainer> <TraitsContainer asset={asset} />
</InfoContainer>
)}
<InfoContainer <InfoContainer
primaryHeader="Activity" primaryHeader="Activity"
defaultOpen
secondaryHeader={formattedPrice ? `Last Sale: ${formattedPrice} ETH` : undefined} secondaryHeader={formattedPrice ? `Last Sale: ${formattedPrice} ETH` : undefined}
> >
<> <>
......
...@@ -11,7 +11,7 @@ const Grid = styled.div` ...@@ -11,7 +11,7 @@ const Grid = styled.div`
gap: 16px; gap: 16px;
max-width: 780px; max-width: 780px;
@media (max-width: 960px) { @media (max-width: 1080px) {
grid-template-columns: 1fr 1fr 1fr; grid-template-columns: 1fr 1fr 1fr;
} }
......
...@@ -28,3 +28,11 @@ export const getAssetHref = (asset: GenieAsset | WalletAsset, origin?: DetailsOr ...@@ -28,3 +28,11 @@ export const getAssetHref = (asset: GenieAsset | WalletAsset, origin?: DetailsOr
export const getMarketplaceIcon = (marketplace: string) => { export const getMarketplaceIcon = (marketplace: string) => {
return `/nft/svgs/marketplaces/${marketplace.toLowerCase()}.svg` return `/nft/svgs/marketplaces/${marketplace.toLowerCase()}.svg`
} }
export const generateTweetForAsset = (asset: GenieAsset): string => {
return `https://twitter.com/intent/tweet?text=Check%20out%20${
asset.name ?? `${asset.collectionName}%20%23${asset.tokenId}`
}%20(${asset.collectionName})%20https://app.uniswap.org/%23/nfts/asset/${asset.address}/${
asset.tokenId
}%20via%20@uniswap`
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment