diff --git a/src/images/common/about-us-carousel/media-1.jpg b/src/images/common/about-us-carousel/media-1.jpg new file mode 100644 index 00000000000..7c776c156a3 Binary files /dev/null and b/src/images/common/about-us-carousel/media-1.jpg differ diff --git a/src/images/common/about-us-carousel/media-2.jpg b/src/images/common/about-us-carousel/media-2.jpg new file mode 100644 index 00000000000..dc8fcc14803 Binary files /dev/null and b/src/images/common/about-us-carousel/media-2.jpg differ diff --git a/src/images/common/about-us-carousel/media-3.jpg b/src/images/common/about-us-carousel/media-3.jpg new file mode 100644 index 00000000000..159503cff99 Binary files /dev/null and b/src/images/common/about-us-carousel/media-3.jpg differ diff --git a/src/images/common/about-us-carousel/media-4.jpg b/src/images/common/about-us-carousel/media-4.jpg new file mode 100644 index 00000000000..d29cd0c89f9 Binary files /dev/null and b/src/images/common/about-us-carousel/media-4.jpg differ diff --git a/src/images/common/about-us-carousel/media-5.jpg b/src/images/common/about-us-carousel/media-5.jpg new file mode 100644 index 00000000000..8773cf9397a Binary files /dev/null and b/src/images/common/about-us-carousel/media-5.jpg differ diff --git a/src/images/common/about-us-carousel/media-6.jpg b/src/images/common/about-us-carousel/media-6.jpg new file mode 100644 index 00000000000..374b35bd7b6 Binary files /dev/null and b/src/images/common/about-us-carousel/media-6.jpg differ diff --git a/src/pages/about-us/_MakeTrading.tsx b/src/pages/about-us/_MakeTrading.tsx index 8e21b7bc5b4..8abc91ff17f 100644 --- a/src/pages/about-us/_MakeTrading.tsx +++ b/src/pages/about-us/_MakeTrading.tsx @@ -1,10 +1,10 @@ import React from 'react' import styled from 'styled-components' +import { first_section_texts } from './_data' import { localize } from 'components/localization' import { SectionContainer } from 'components/containers' import { Header } from 'components/elements' import device from 'themes/device' -import { first_section_texts } from './_data' const FirstSectionContainer = styled(SectionContainer)` display: flex; diff --git a/src/pages/about-us/_OurLeadership.tsx b/src/pages/about-us/_OurLeadership.tsx index 29f18f4fa84..2f03a5afa66 100644 --- a/src/pages/about-us/_OurLeadership.tsx +++ b/src/pages/about-us/_OurLeadership.tsx @@ -1,12 +1,12 @@ import React, { FocusEvent } from 'react' import styled from 'styled-components' import { graphql, useStaticQuery } from 'gatsby' +import { ImageDataLike } from 'gatsby-plugin-image' import { localize, LocalizedLink } from 'components/localization' import { SectionContainer, Flex, CssGrid } from 'components/containers' import { Header, QueryImage, ImageWrapper } from 'components/elements' import { ImageWrapperProps } from 'components/elements/query-image' import device from 'themes/device' -import { ImageDataLike } from 'gatsby-plugin-image' import Linkedin from 'images/svg/about-us/linkedin.svg' const query = graphql` diff --git a/src/pages/about-us/_OurPrinciples.tsx b/src/pages/about-us/_OurPrinciples.tsx index ab227d18e1e..401437cbee3 100644 --- a/src/pages/about-us/_OurPrinciples.tsx +++ b/src/pages/about-us/_OurPrinciples.tsx @@ -1,11 +1,11 @@ import React from 'react' import styled from 'styled-components' +import { our_principles } from './_data' import { localize } from 'components/localization' import { SectionContainer, Flex, Box } from 'components/containers' import { Header, Divider } from 'components/elements' import device from 'themes/device' import { LinkButton } from 'components/form' -import { our_principles } from './_data' const StyledSection = styled(SectionContainer)` display: flex; diff --git a/src/pages/about-us/carousel/_Carousel.tsx b/src/pages/about-us/carousel/_Carousel.tsx new file mode 100644 index 00000000000..242dec010af --- /dev/null +++ b/src/pages/about-us/carousel/_Carousel.tsx @@ -0,0 +1,194 @@ +import React, { useState, useEffect, useCallback } from 'react' +import styled from 'styled-components' +import { graphql, useStaticQuery } from 'gatsby' +import { useEmblaCarousel } from 'embla-carousel/react' +import { ImageDataLike } from 'gatsby-plugin-image' +import { QueryImage } from 'components/elements' +import device from 'themes/device' + +const queryCarouselData = graphql` + query { + media1: file(relativePath: { eq: "about-us-carousel/media-1.jpg" }) { + ...fadeIn + } + media2: file(relativePath: { eq: "about-us-carousel/media-2.jpg" }) { + ...fadeIn + } + media3: file(relativePath: { eq: "about-us-carousel/media-3.jpg" }) { + ...fadeIn + } + media4: file(relativePath: { eq: "about-us-carousel/media-4.jpg" }) { + ...fadeIn + } + media5: file(relativePath: { eq: "about-us-carousel/media-5.jpg" }) { + ...fadeIn + } + media6: file(relativePath: { eq: "about-us-carousel/media-6.jpg" }) { + ...fadeIn + } + } +` + +const Carousel = styled.div` + position: relative; + margin-left: auto; + margin-right: auto; + padding-bottom: 50px; +` + +type CarouselViewportType = { + isDragging: boolean +} + +const CarouselViewport = styled.div` + overflow: hidden; + width: 100%; +} +` +const CarouselContainer = styled.div` + display: flex; + user-select: none; + -webkit-touch-callout: none; + -khtml-user-select: none; + -webkit-tap-highlight-color: transparent; + margin-left: -10px; +` + +const CarouselSlide = styled.div` + position: relative; + padding-left: 20px; + + @media ${device.tablet} { + padding-left: 10px; + } + + &:nth-child(1) { + min-width: 384px; + + @media ${device.tablet} { + min-width: 328px; + } + } + + &:nth-child(2) { + min-width: 792px; + + @media ${device.tablet} { + min-width: 328px; + } + } + + &:nth-child(3) { + min-width: 384px; + + @media ${device.tablet} { + min-width: 328px; + } + } + + &:nth-child(4) { + min-width: 792px; + @media ${device.tablet} { + min-width: 328px; + } + } + + &:nth-child(5) { + min-width: 384px; + + @media ${device.tablet} { + min-width: 192px; + } + } + + &:nth-child(6) { + min-width: 384px; + + @media ${device.tablet} { + min-width: 192px; + } + } +` +const StyledImageWrapper = styled.div` + position: relative; + overflow: hidden; + border-radius: 8px; + height: 480px; + + @media ${device.tablet} { + height: 240px; + } +` +const StyledQueryImage = styled(QueryImage)` + position: absolute; + display: block; + top: 50%; + left: 50%; + min-height: 100%; + min-width: 100%; + height: 480px; + transform: translate(-50%, -50%); + + @media ${device.tablet} { + height: 240px; + } + + & .gatsby-image-wrapper img { + height: 480px; + + @media ${device.tablet} { + height: 240px; + } + } +` + +const EmblaCarousel = () => { + const carousel_data = useStaticQuery(queryCarouselData) + const carousel_images: ImageDataLike[] = [ + carousel_data.media1, + carousel_data.media2, + carousel_data.media3, + carousel_data.media4, + carousel_data.media5, + carousel_data.media6, + ] + + const [viewportRef, embla] = useEmblaCarousel({ + containScroll: 'keepSnaps', + dragFree: true, + draggable: true, + }) + + const [, setPrevBtnEnabled] = useState(false) + const [, setNextBtnEnabled] = useState(false) + + const onSelect = useCallback(() => { + if (!embla) return + setPrevBtnEnabled(embla.canScrollPrev()) + setNextBtnEnabled(embla.canScrollNext()) + }, [embla]) + + useEffect(() => { + if (!embla) return + embla.on('select', onSelect) + onSelect() + }, [embla, onSelect]) + + return ( + + + + {carousel_images.map((carouselItem, index) => ( + + + + + + ))} + + + + ) +} + +export default EmblaCarousel diff --git a/src/pages/about-us/index.tsx b/src/pages/about-us/index.tsx index 50f71f19b25..bbffa3fc4f7 100644 --- a/src/pages/about-us/index.tsx +++ b/src/pages/about-us/index.tsx @@ -1,9 +1,5 @@ import React from 'react' import styled from 'styled-components' -import { localize, WithIntl } from 'components/localization' -import Layout from 'components/layout/layout' -import { SEO } from 'components/containers' -import device from 'themes/device' import MakeTrading from './_MakeTrading' import OurValues from './_OurValues' import OurPrinciples from './_OurPrinciples' @@ -11,6 +7,11 @@ import Hero from './components/_hero' import OurLeadership from './_OurLeadership' import AboutUsBanner from './_AboutUsBanner' import DerivNumbers from './_DerivNumbers' +import EmblaCarousel from './carousel/_Carousel' +import device from 'themes/device' +import { SEO } from 'components/containers' +import Layout from 'components/layout/layout' +import { localize, WithIntl } from 'components/localization' const StartSeparator = styled.div` width: 0; @@ -42,7 +43,7 @@ const AboutUs = (): React.ReactNode => { 'Deriv.com - A Binary.com brand, is a pioneer and award-winning online trading platform in the trading market.', )} /> - + {/* */} @@ -51,6 +52,7 @@ const AboutUs = (): React.ReactNode => { + ) } diff --git a/src/pages/our-principles/index.tsx b/src/pages/our-principles/index.tsx index eb9bf942537..18d1b5259cd 100644 --- a/src/pages/our-principles/index.tsx +++ b/src/pages/our-principles/index.tsx @@ -1,11 +1,11 @@ import React from 'react' import styled from 'styled-components' +import { principles } from './_data' import Layout from 'components/layout/layout' import { Header, Text } from 'components/elements' import { SEO, Container, Flex, SectionContainer } from 'components/containers' import { localize, WithIntl } from 'components/localization' import device from 'themes/device' -import { principles } from './_data' type SeparatorInterface = { background: string