diff --git a/package.json b/package.json index 7476f0025..fe2600931 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,8 @@ "@emotion/styled": "^11", "@ethersproject/web": "^5.4.0", "@synthetixio/synpress": "^1.2.0", + "@types/react-copy-to-clipboard": "^5.0.2", + "@types/react-slick": "^0.23.9", "@walletconnect/web3-provider": "^1.6.5", "awesome-debounce-promise": "^2.1.0", "axios": "^0.21.1", diff --git a/src/app/components/copy-string/CopyString.style.tsx b/src/app/components/copy-string/CopyString.style.tsx new file mode 100644 index 000000000..0dd856209 --- /dev/null +++ b/src/app/components/copy-string/CopyString.style.tsx @@ -0,0 +1,10 @@ +import { BoxProps } from '@chakra-ui/react'; + +export const CopyWrapperStyle: BoxProps = { + borderRadius: '10px', + padding: '6px 8px', + _hover: { + bg: 'rgba(0, 0, 0, 0.05)', + } +} + diff --git a/src/app/components/copy-string/CopyString.tsx b/src/app/components/copy-string/CopyString.tsx new file mode 100644 index 000000000..6e6516db4 --- /dev/null +++ b/src/app/components/copy-string/CopyString.tsx @@ -0,0 +1,35 @@ +import { Box, Image, Text } from "@chakra-ui/react"; +import React, { useState } from "react"; +import { CopyToClipboard } from "react-copy-to-clipboard"; +import copyIcon from "@assets/images/copy1.svg"; +import * as styles from './CopyString.style'; + +interface ICopyStringProps { + str: string; +} + +export const CopyString = ({ str }: ICopyStringProps) => { + const [copied, setCopied] = useState(false); + + const handleOnCopy = () => { + setCopied(true); + setTimeout(() => { + setCopied(false); + }, 1000); + } + + return ( + + + Copy to clipboard icon + + {copied ? 'Copied!' : 'Copy URL'} + + + + ); +}; diff --git a/src/app/components/copy-string/index.ts b/src/app/components/copy-string/index.ts new file mode 100644 index 000000000..b98e4e5a9 --- /dev/null +++ b/src/app/components/copy-string/index.ts @@ -0,0 +1 @@ +export * from './CopyString'; diff --git a/src/app/components/index.ts b/src/app/components/index.ts index c8d84e572..d4a2ad94b 100644 --- a/src/app/components/index.ts +++ b/src/app/components/index.ts @@ -6,6 +6,7 @@ export * from './checkbox'; export * from './circular-progress'; export * from './collection-approve'; export * from './collection-preview'; +export * from './copy-string'; export * from './currency-input'; export * from './currency-select'; export * from './date-time-picker'; diff --git a/src/app/modules/auctions/index.ts b/src/app/modules/auctions/index.ts new file mode 100644 index 000000000..23c7929ac --- /dev/null +++ b/src/app/modules/auctions/index.ts @@ -0,0 +1 @@ +export * from './pages'; diff --git a/src/app/modules/auctions/pages/active-auction-landing-page/ActiveAuctionLandingPage.tsx b/src/app/modules/auctions/pages/active-auction-landing-page/ActiveAuctionLandingPage.tsx new file mode 100644 index 000000000..47049043c --- /dev/null +++ b/src/app/modules/auctions/pages/active-auction-landing-page/ActiveAuctionLandingPage.tsx @@ -0,0 +1,17 @@ +import { Box } from '@chakra-ui/react'; +import { OpenGraph } from '@app/components'; +import { ActionSection, CreatorSection, HeroSection, TiersSection } from './components'; + +export const ActiveAuctionLandingPage = () => { + + return ( + + {/* TODO - set open graph correctly */} + {/* */} + + + + + + ); +}; diff --git a/src/app/modules/auctions/pages/active-auction-landing-page/components/action-section/ActionSection.styles.tsx b/src/app/modules/auctions/pages/active-auction-landing-page/components/action-section/ActionSection.styles.tsx new file mode 100644 index 000000000..9a95012a0 --- /dev/null +++ b/src/app/modules/auctions/pages/active-auction-landing-page/components/action-section/ActionSection.styles.tsx @@ -0,0 +1,28 @@ +import { BoxProps, ButtonProps, ContainerProps, HeadingProps, TextProps } from '@chakra-ui/react'; + +export const WrapperStyle: BoxProps = { + bg: 'linear-gradient(103.48deg, rgba(240, 233, 57, 0.16) 0%, rgba(254, 176, 254, 0.16) 49.86%, rgba(66, 164, 255, 0.16) 100%)', + padding: '44px 0', +}; + +export const ContainerStyle: ContainerProps = { + alignItems: 'center', + display: 'flex', + flexWrap: 'wrap', + justifyContent: 'space-between', + margin: '0 auto', + maxW: '1110px', + padding: { base: '0 20px', xl: '0' }, +}; + +export const HeadingStyle: HeadingProps = { + fontSize: '20px', + lineHeight: '24px', + fontWeight: 600, + marginBottom: { base: '20px', md: '0' }, +}; + +export const ButtonStyle: ButtonProps = { + boxShadow: 'lg', + w: { base: '100%', md: 'fit-content' }, +}; diff --git a/src/app/modules/auctions/pages/active-auction-landing-page/components/action-section/ActionSection.tsx b/src/app/modules/auctions/pages/active-auction-landing-page/components/action-section/ActionSection.tsx new file mode 100644 index 000000000..b20246d41 --- /dev/null +++ b/src/app/modules/auctions/pages/active-auction-landing-page/components/action-section/ActionSection.tsx @@ -0,0 +1,22 @@ +import { Box, Button, Container, Heading } from '@chakra-ui/react'; +import { useCallback } from 'react'; + +import * as styles from './ActionSection.styles'; + +export const ActionSection = () => { + + const handlePlaceBid = useCallback(() => { + // TODO - BE implementation + }, []); + + return ( + + + Bid to win 1 of 3 NFT bundles + + + + ); +}; diff --git a/src/app/modules/auctions/pages/active-auction-landing-page/components/action-section/index.ts b/src/app/modules/auctions/pages/active-auction-landing-page/components/action-section/index.ts new file mode 100644 index 000000000..3073f471d --- /dev/null +++ b/src/app/modules/auctions/pages/active-auction-landing-page/components/action-section/index.ts @@ -0,0 +1 @@ +export * from './ActionSection'; diff --git a/src/app/modules/auctions/pages/active-auction-landing-page/components/creator-section/CreatorSection.styles.tsx b/src/app/modules/auctions/pages/active-auction-landing-page/components/creator-section/CreatorSection.styles.tsx new file mode 100644 index 000000000..c5aacb1c4 --- /dev/null +++ b/src/app/modules/auctions/pages/active-auction-landing-page/components/creator-section/CreatorSection.styles.tsx @@ -0,0 +1,39 @@ +import { BoxProps, ButtonProps, ContainerProps, HeadingProps } from "@chakra-ui/react"; + +export const WrapperStyle: BoxProps = { + bg: '#fff', + padding: { base: '10px 0 60px 0', lg: '20px 0 120px 0' }, +}; + +export const ContainerStyle: ContainerProps = { + margin: '0 auto', + maxW: '1110px', + padding: { base: '0 20px', xl: '0' }, +}; + +export const HeadingStyle: HeadingProps = { + fontSize: { + lg: '32px', + md: '26px', + base: '20px', + }, + lineHeight: { + lg: '40px', + md: '32px', + base: '24px', + }, + fontWeight: 600, + marginBottom: '8px', +}; + +export const SocialButtonStyle: ButtonProps = { + padding: '8px', + _hover: { + bg: 'rgba(0, 0, 0, .04)' + }, + sx: { + '.chakra-button__icon': { + margin: '0' + } + } +}; diff --git a/src/app/modules/auctions/pages/active-auction-landing-page/components/creator-section/CreatorSection.tsx b/src/app/modules/auctions/pages/active-auction-landing-page/components/creator-section/CreatorSection.tsx new file mode 100644 index 000000000..53ce34a8c --- /dev/null +++ b/src/app/modules/auctions/pages/active-auction-landing-page/components/creator-section/CreatorSection.tsx @@ -0,0 +1,43 @@ +import { Box, Button, Container, Heading, Image, Text } from "@chakra-ui/react"; + +import * as styles from './CreatorSection.styles'; +import React from "react"; +import CreatorAvatarImage from '@assets/images/_MOCK_AUCTION_CREATOR2.png'; +import twitterIcon from "@assets/images/icons_twitter.svg"; +import instagramIcon from '@assets/images/instagram-outlined.svg'; + +export const CreatorSection = () => { + + return ( + + + + {'User'} + + About Justin 3LAU + Cras vel eget vitae quis scelerisque arcu ut. Tristique velit nec sed sit massa. Odio molestie velit purus at blandit. Lacus, fusce imperdiet velit augue neque tincidunt diam fringilla in. Natoque ipsum ipsum eget pellentesque. Magna felis, praesent ornare tincidunt nunc. + + + + + + + + + + {'Gold + {'Gold + + + + + + Gold tier + + + Bidders #6-15 + NFTs: 16 + + Amet nibh risus turpis mattis adipiscing. Vitae sit consectetur odio massa fusce scelerisque. + + + + + + + {'Silver + + + + + + Silver tier + + + Bidders #16-35 + NFTs: 19 + + Faucibus et. Sagittis condimentum etiam quisque viverra consequat nec pharetra aenean egestas. + + + + + + ); +}; diff --git a/src/app/modules/auctions/pages/active-auction-landing-page/components/tiers-section/index.ts b/src/app/modules/auctions/pages/active-auction-landing-page/components/tiers-section/index.ts new file mode 100644 index 000000000..65363ccd5 --- /dev/null +++ b/src/app/modules/auctions/pages/active-auction-landing-page/components/tiers-section/index.ts @@ -0,0 +1 @@ +export * from './TiersSection'; diff --git a/src/app/modules/auctions/pages/active-auction-landing-page/index.ts b/src/app/modules/auctions/pages/active-auction-landing-page/index.ts new file mode 100644 index 000000000..3ada8241c --- /dev/null +++ b/src/app/modules/auctions/pages/active-auction-landing-page/index.ts @@ -0,0 +1 @@ +export * from './ActiveAuctionLandingPage'; diff --git a/src/app/modules/auctions/pages/index.ts b/src/app/modules/auctions/pages/index.ts new file mode 100644 index 000000000..736be67de --- /dev/null +++ b/src/app/modules/auctions/pages/index.ts @@ -0,0 +1 @@ +export * from './active-auction-landing-page' diff --git a/src/assets/images/auction-lp-placeholder.png b/src/assets/images/auction-lp-placeholder.png new file mode 100644 index 000000000..1cdf8e87d Binary files /dev/null and b/src/assets/images/auction-lp-placeholder.png differ diff --git a/src/assets/images/auction-tier-placeholder.png b/src/assets/images/auction-tier-placeholder.png new file mode 100644 index 000000000..fdc75aa3e Binary files /dev/null and b/src/assets/images/auction-tier-placeholder.png differ diff --git a/src/assets/images/cancel-icon.svg b/src/assets/images/cancel-icon.svg new file mode 100644 index 000000000..84c62e983 --- /dev/null +++ b/src/assets/images/cancel-icon.svg @@ -0,0 +1,3 @@ + + +