diff --git a/src/assets/images/arrowRight.svg b/src/assets/images/arrowRight.svg new file mode 100644 index 0000000..b950a39 --- /dev/null +++ b/src/assets/images/arrowRight.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/components/Button.tsx b/src/components/Button.tsx index 988d2d6..979997c 100644 --- a/src/components/Button.tsx +++ b/src/components/Button.tsx @@ -40,5 +40,6 @@ export const ButtonSecondary = styled(Button)` &:disabled { background: ${Colors.GrayDisabledLight}; + filter: grayscale(1); } ` diff --git a/src/components/Card.tsx b/src/components/Card.tsx index 353e9a7..fec3781 100644 --- a/src/components/Card.tsx +++ b/src/components/Card.tsx @@ -4,6 +4,7 @@ import { Colors } from '../constants/styles' import { ButtonSecondary } from '../components/Button' import externalIcon from '../assets/images/ext.svg' import indicatorIcon from '../assets/images/indicator.svg' +import rightIcon from '../assets/images/arrowRight.svg' interface CardCommunityProps { img: string @@ -132,6 +133,36 @@ function calculateWidth(votesFor: number, votesAgainst: number) { return (100 * votesAgainst) / (votesFor + votesAgainst) } +interface CardFeatureProps { + heading: string + text: string + icon: string + sum?: number + timeLeft?: string + voting?: boolean +} + +export const CardFeature = ({ heading, text, icon, sum, timeLeft, voting }: CardFeatureProps) => ( + + + {heading} + {voting && Ongoing vote for removal} + + + +

{text}

+

{icon}

+ + {timeLeft && {timeLeft}} + + {sum && {addCommas(sum)} SNT} +
+ + Feature this community! ⭐️ + +
+) + export const Card = styled.div` display: flex; align-items: center; @@ -230,6 +261,26 @@ const CardLinkInternal = styled.a` color: ${Colors.VioletDark}; } ` + +const CardLinkFeature = styled(CardLinkInternal)` + padding-right: 28px; + font-size: 12px; + line-height: 20px; + position: relative; + + &::after { + content: ''; + width: 24px; + height: 24px; + position: absolute; + top: 50%; + right: 0; + transform: translateY(-50%); + background-image: url(${rightIcon}); + background-size: cover; + } +` + const CardVoteBlock = styled.div` width: 50%; z-index: 2; @@ -332,3 +383,33 @@ const VoteBtn = styled(ButtonSecondary)` const VoteBtnFinal = styled(VoteBtn)` width: 100%; ` + +const FeatureTop = styled.div` + display: flex; + justify-content: space-between; + align-items: center; +` + +const FeatureBtn = styled(VoteBtn)` + width: 100%; +` +const FeatureVote = styled.div` + display: flex; + flex-direction: column; + align-items: center; + margin: 45px auto 32px; + max-width: 290px; + text-align: center; + + & > p { + font-size: 17px; + line-height: 18px; + margin-bottom: 8px; + } + + & > span { + font-weight: bold; + font-size: 15px; + line-height: 22px; + } +` diff --git a/src/pages/Directory.tsx b/src/pages/Directory.tsx index 91444cd..840fa57 100644 --- a/src/pages/Directory.tsx +++ b/src/pages/Directory.tsx @@ -1,17 +1,46 @@ import React from 'react' import { ConnectButton, InfoWrap, PageInfo } from '../components/PageInfo' import { useEthers } from '@usedapp/core' +import { Card, CardCommunity, CardFeature } from '../components/Card' +import styled from 'styled-components' export function Directory() { const { account } = useEthers() return ( - - - {!account && } - + /> + {!account && } + + + + + + + + ) } + +const Voting = styled.div` + display: flex; + flex-direction: column; +`