{"version":3,"file":"component---src-pages-index-tsx-a1242a3d42fa0c89d083.js","mappings":"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","sources":["webpack://extra-hut/./src/components/Accordion/PlusMinusIcon/index.tsx","webpack://extra-hut/./src/components/Accordion/AccordionItem/index.tsx","webpack://extra-hut/./src/components/CaseStudySection/index.tsx","webpack://extra-hut/./src/components/CaseStudySection/model.ts","webpack://extra-hut/./src/components/HeroSection/index.tsx","webpack://extra-hut/./src/components/HeroSection/model.ts","webpack://extra-hut/./src/pages/index.tsx","webpack://extra-hut/./src/images/minus.svg"],"sourcesContent":["import * as React from 'react'\nimport { IsMobileContext } from '../../../common/Context'\nimport Plus from '../../../images/plus.svg'\nimport Minus from '../../../images/minus.svg'\nimport './style.scss'\n\ninterface PlusMinusIconProps {\n className?: string\n active: boolean\n}\n\nconst PlusMinusIcon: React.FC = ({\n className,\n active,\n}) => {\n const { isMobile } = React.useContext(IsMobileContext)\n const iconSize = isMobile ? '5vw' : '1.25vw'\n\n return (\n
\n \n \n
\n )\n}\n\nexport default PlusMinusIcon\n","import * as React from 'react'\nimport { RichTextElement } from '@kentico/gatsby-kontent-components'\nimport _isFunction from 'lodash/isFunction'\nimport _isUndefined from 'lodash/isUndefined'\nimport PlusMinusIcon from '../PlusMinusIcon'\nimport { AccordionItem as AccordionItemClass } from './model'\nimport { IsMobileContext } from '../../../common/Context'\nimport './style.scss'\n\nexport interface AccordionItemProps extends AccordionItemClass {\n className?: string\n contentClassName?: string\n onToggle?: (active: boolean) => void\n initiallyActive?: boolean\n fullWidthMode?: boolean\n}\n\nconst AccordionItem: React.FC = ({\n title,\n content,\n className,\n contentClassName,\n children,\n onToggle,\n initiallyActive,\n fullWidthMode = false\n}) => {\n const { isMobile } = React.useContext(IsMobileContext)\n const contentDiv = React.useRef(null)\n const [isActive, setIsActive] = React.useState(false)\n const [contentDivHeight, setContentDivHeight] = React.useState('0px')\n\n const fullWidthDesktopMode = fullWidthMode && isMobile === false\n const contentCSS = fullWidthDesktopMode ? 'lg:py-m' : contentClassName\n\n React.useEffect(() => {\n if (!_isUndefined(initiallyActive)) {\n setIsActive(initiallyActive)\n setContentDivHeight(initiallyActive ? `${contentDiv.current?.scrollHeight}px` : '0px')\n }\n }, [initiallyActive])\n\n const isExpandableContent = !!content || !!children\n\n const toggleActive = () => {\n if (isExpandableContent) {\n if (_isFunction(onToggle)) {\n onToggle(!isActive)\n }\n setIsActive(prevState => !prevState)\n setContentDivHeight(isActive ? '0px' : `${contentDiv.current?.scrollHeight}px`)\n }\n }\n\n return (\n
\n
\n \n
{title}
\n {isExpandableContent && }\n \n
\n \n {children\n ? (\n
\n {children}\n
\n )\n : (\n
\n \n
\n )\n }\n \n
\n )\n}\n\nexport default AccordionItem\n","import * as React from 'react'\nimport ImageWithText, { ImageWithTextProps } from '../ImageWithText'\nimport ArrowButton from '../ArrowButton'\nimport { DynamicSitesCategory, ArrowDirection } from '../../common/typings/enums'\nimport { useTranslation } from 'react-i18next'\nimport { sectionStyles } from './model'\nimport './style.scss'\n\nexport interface CaseStudySectionProps {\n caseStudies: ImageWithTextProps[]\n lead?: string\n loadMore?: boolean\n seeMore?: boolean\n casesPerPage?: number\n}\n\nconst CaseStudySection: React.FC = ({ \n caseStudies, \n lead, \n loadMore = false, \n seeMore = false,\n casesPerPage = 8,\n}) => {\n\n const { t } = useTranslation()\n const [casesToLoad, setCasesToLoad] = React.useState(casesPerPage)\n const [limitedCaseStudies, setLimitedCaseStudies] = React.useState([])\n const category = DynamicSitesCategory.WORK\n React.useEffect(() => {\n setLimitedCaseStudies(caseStudies.slice(0, casesToLoad))\n }, [caseStudies, casesToLoad])\n\n const loadMoreHandler = () => {\n setCasesToLoad(previousCount => previousCount + casesPerPage)\n }\n\n const caseStudiesRemainToLoad = caseStudies.length - limitedCaseStudies.length\n\n return (\n
\n {lead &&

{lead}

}\n {limitedCaseStudies &&\n limitedCaseStudies.map((caseStudy, index) => {\n return (\n
\n \n
\n )\n })\n }\n {(loadMore && !!caseStudiesRemainToLoad) &&\n {t('common:loadMoreCases')} {caseStudiesRemainToLoad}\n \n }\n {(seeMore && !!caseStudiesRemainToLoad) &&\n
\n \n
\n }\n
\n )\n}\n\nexport default CaseStudySection\n","import { graphql, useStaticQuery } from 'gatsby'\nimport { ImageItem } from '@kentico/gatsby-kontent-components/dist/image-element'\nimport { filterElementDataByLanguage } from '../../common/serviceHelpers'\nimport { DynamicSitesPath } from '../../common/typings/enums'\nimport _get from 'lodash/get'\n\n/* Kentico model: CaseStudy Section*/\nexport interface KenticoCaseStudySection extends KontentItem {\n caseStudies: KenticoCaseStudySectionElement[]\n}\n\n/* Kentico model: CaseStudy Section Element*/\nexport interface KenticoCaseStudySectionElement extends KontentItem {\n listing_image_or_video: KontentAssetElement,\n listing_parallax: KontentAssetElement[],\n title: KontentTextElement,\n lead: KontentTextElement,\n slugs: KontentTextElement\n}\n\nexport class CaseStudySectionElement {\n image: ImageItem\n videoUrl: string\n parallax: ImageItem[]\n title: string\n description: string\n target: string\n\n constructor(data: KenticoCaseStudySectionElement) {\n const listingAssetType = _get(data, 'listing_image_or_video.value[0].type', '')\n this.image = listingAssetType.includes('image') ? _get(data, 'listing_image_or_video.value[0]') : ''\n this.videoUrl = listingAssetType.includes('video') ? _get(data, 'listing_image_or_video.value[0].url') : ''\n this.parallax = _get(data, 'listing_parallax.value', [])\n this.title = _get(data, 'title.value', '')\n this.description = _get(data, 'subtitle.value', '')\n this.target = _get(data, 'slugs.value', '')\n }\n}\n\nexport class CaseStudySection {\n caseStudies: CaseStudySectionElement[]\n\n constructor(data: KenticoCaseStudySectionElement[]) {\n this.caseStudies = data\n .filter(Boolean)\n .map((element: KenticoCaseStudySectionElement) => {\n return new CaseStudySectionElement(element)\n })\n }\n}\n\nexport const caseStudySectionFragment = graphql`\n query CaseStudySectionQuery {\n allKontentItemCaseStudy(sort: {order: [DESC, DESC], fields: [elements___display_order___value, system___last_modified]}) {\n ...kontent_item_case_studyConnectionFragment\n }\n }\n`\n\nexport const caseStudySectionNodesFragment = graphql`\n fragment kontent_item_case_studyConnectionFragment on kontent_item_case_studyConnection {\n nodes {\n id\n preferred_language\n elements {\n title {\n value\n }\n slugs {\n value\n }\n subtitle {\n value\n }\n listing_image_or_video {\n value {\n url\n description\n height\n name\n size\n type\n width\n }\n }\n listing_parallax {\n value {\n url\n description\n height\n name\n size\n type\n width\n }\n }\n }\n }\n }\n`\n\nexport const useCaseStudySectionData = (language: string) => {\n const data = useStaticQuery(caseStudySectionFragment)\n const caseStudySectionData: KenticoCaseStudySectionElement[] =\n filterElementDataByLanguage(data, language, DynamicSitesPath.WORK).map((caseStudy: any) => caseStudy.elements)\n return new CaseStudySection(caseStudySectionData)\n}\n\n// section styles for Case Study Section\nexport const sectionStyles = {\n containers: [\n 'col-start-1 col-end-13 mt-mobile-l lg:col-start-1 lg:col-end-13 lg:mt-l', //row 1\n 'col-start-1 col-end-13 mt-mobile-l lg:col-start-1 lg:col-end-9 lg:mt-l', //row 2\n 'col-start-1 col-end-13 mt-mobile-l lg:col-start-9 lg:col-end-13 lg:mt-l', //row 2\n 'col-start-1 col-end-13 mt-mobile-l lg:col-start-1 lg:col-end-5 lg:mt-l', //row 3\n 'col-start-1 col-end-13 mt-mobile-l lg:col-start-5 lg:col-end-9 lg:mt-l', //row 3\n 'col-start-1 col-end-13 mt-mobile-l lg:col-start-9 lg:col-end-13 lg:mt-l', //row 3\n 'col-start-1 col-end-13 mt-mobile-l lg:col-start-1 lg:col-end-5 lg:mt-l', //row 4\n 'col-start-1 col-end-13 mt-mobile-l lg:col-start-5 lg:col-end-13 lg:mt-l' //row 4\n ],\n images: [\n 'h-mobile-xxxl lg:h-xxxxl', //row 1\n 'h-mobile-xxxl lg:h-xxxxl', //row 2\n 'h-mobile-xxxl lg:h-xxxl', //row 2\n 'h-mobile-xxxl lg:h-xxxl', //row 3\n 'h-mobile-xxxl lg:h-xxxxl', //row 3\n 'h-mobile-xxxl lg:h-xxxl', //row 3\n 'h-mobile-xxxl lg:h-xxxl', //row 4\n 'h-mobile-xxxl lg:h-xxxxl' //row 4\n ],\n grids: [\n 'lg:grid lg:grid-cols-12 lg:gap-x-m', //row 1\n 'lg:grid lg:grid-cols-8 lg:gap-x-m', //row 2\n 'lg:grid lg:grid-cols-6 lg:gap-x-m', //row 2\n 'lg:grid lg:grid-cols-6 lg:gap-x-m', //row 3\n 'lg:grid lg:grid-cols-6 lg:gap-x-m', //row 3\n 'lg:grid lg:grid-cols-6 lg:gap-x-m', //row 3\n 'lg:grid lg:grid-cols-6 lg:gap-x-m', //row 4\n 'lg:grid lg:grid-cols-8 lg:gap-x-m' //row 4\n ]\n}","import * as React from 'react'\nimport { IsMobileContext } from '../../common/Context'\nimport { ImageElement } from '@kentico/gatsby-kontent-components'\nimport { HeroSection as HeroSectionClass } from './model'\nimport { AnimationService } from '../../common/AnimationService'\nimport { ImageQuality } from '../../common/typings/enums'\nimport { ImageItem } from '@kentico/gatsby-kontent-components/dist/image-element'\nimport './style.scss'\n\ninterface HeroSectionProps extends HeroSectionClass {\n headingColumns: {\n desktop: number\n mobile: number\n }\n descriptionColumns: {\n desktop: number\n mobile: number\n }\n headingClass?: string\n}\n\nconst HeroSection: React.FC = ({\n heading,\n description,\n backgroundDesktop,\n backgroundMobile,\n imageOrVideo,\n children,\n headingColumns,\n descriptionColumns,\n headingClass,\n embeddedVideo\n}) => {\n\n const { isMobile } = React.useContext(IsMobileContext)\n const textRef = React.useRef(null)\n const childrenRef = React.useRef(null)\n const imageOrVideoRef = React.useRef(null)\n const imageQualityOptions = React.useMemo(() => ({ quality: ImageQuality.OPTIMIZED }), [])\n const mobileColumnSpans = [\n '', 'col-span-1', 'col-span-2', 'col-span-3', 'col-span-4', 'col-span-5', 'col-span-6',\n 'col-span-7', 'col-span-8', 'col-span-9', 'col-span-10', 'col-span-11', 'col-span-12',\n ]\n const desktopColumnSpans = [\n '', 'lg:col-span-1', 'lg:col-span-2', 'lg:col-span-3', 'lg:col-span-4', 'lg:col-span-5', 'lg:col-span-6',\n 'lg:col-span-7', 'lg:col-span-8', 'lg:col-span-9', 'lg:col-span-10', 'lg:col-span-11', 'lg:col-span-12',\n ]\n\n React.useEffect(() => {\n if (textRef.current && !AnimationService.isInView(textRef.current)) {\n AnimationService.slideUp(textRef.current)\n }\n if (!AnimationService.isInView(childrenRef.current)) {\n AnimationService.slideUp(childrenRef.current)\n }\n if (imageOrVideoRef.current && !AnimationService.isInView(imageOrVideoRef.current)) {\n AnimationService.slideUp(imageOrVideoRef.current)\n }\n }, [])\n\n const isVideo = (asset: ImageItem) => asset?.type?.includes('video')\n const isImage = (asset: ImageItem) => asset?.type?.includes('image')\n const backgroundAsset = isMobile ? backgroundMobile : backgroundDesktop\n\n return (\n
\n
\n
\n {heading && (\n

\n {heading}\n

\n )}\n {description && (\n

\n {description}\n

\n )}\n
\n {children}\n
\n
\n {(isImage(backgroundAsset)) && (\n \n \n \n )}\n {(isVideo(backgroundAsset)) && (\n \n )}\n {isImage(imageOrVideo) && (\n
\n \n
\n )}\n {isVideo(imageOrVideo) && (\n
\n \n
\n )}\n {embeddedVideo && (\n \n )}\n {backgroundAsset &&
}\n
\n )\n}\n\nexport default HeroSection\n","import { graphql, useStaticQuery } from 'gatsby'\nimport { ImageItem } from '@kentico/gatsby-kontent-components/dist/image-element'\nimport { filterPageDataByLanguage } from '../../common/serviceHelpers'\nimport _get from 'lodash/get'\n\n/* Kentico model: Header Section */\nexport interface KenticoHeaderSection extends KontentItem {\n heading: KontentTextElement\n description: KontentTextElement\n background_desktop: KontentAssetElement\n background_mobile: KontentAssetElement\n image_or_video: KontentAssetElement\n embedded_video: KontentTextElement\n}\n\nexport class HeroSection {\n heading: string\n description: string\n backgroundDesktop: ImageItem\n backgroundMobile: ImageItem\n imageOrVideo: ImageItem\n embeddedVideo: string\n\n constructor(data: KenticoHeaderSection) {\n this.heading = _get(data, 'heading.value', '')\n this.description = _get(data, 'description.value', '')\n this.backgroundDesktop = _get(data, 'background_desktop.value[0]', null)\n this.backgroundMobile = _get(data, 'background_mobile.value[0]', null)\n this.imageOrVideo = _get(data, 'image_or_video.value[0]', null)\n this.embeddedVideo = _get(data, 'embedded_video.value', null)\n }\n}\n\nexport const heroSectionFragment = graphql`\n query HeroSectionQuery {\n allKontentItemPage {\n nodes {\n elements {\n content {\n value {\n ... on kontent_item_hero_section {\n elements {\n ...kontent_item_hero_section_elementsFragment\n }\n preferred_language\n system {\n codename\n }\n }\n }\n }\n }\n system {\n codename\n }\n }\n }\n }\n`\nexport const heroSectionElementsFragment = graphql`\n fragment kontent_item_hero_section_elementsFragment on kontent_item_hero_section_elements {\n background_desktop {\n value {\n url\n description\n height\n name\n size\n type\n width\n }\n }\n background_mobile {\n value {\n url\n description\n height\n name\n size\n type\n width\n }\n }\n image_or_video {\n value {\n url\n description\n height\n name\n size\n type\n width\n }\n }\n description {\n value\n }\n heading {\n value\n }\n embedded_video {\n value\n }\n }\n`\n\nexport const useHeroSectionData = (language: string, pageCodename: string, sectionCodename = '') => {\n const data = useStaticQuery(heroSectionFragment)\n const heroSectionData: KenticoHeaderSection = filterPageDataByLanguage(data.allKontentItemPage, pageCodename, sectionCodename, language)\n return new HeroSection(heroSectionData)\n}\n","import * as React from 'react'\nimport { graphql, PageProps } from 'gatsby'\n\n//components\nimport Layout from '../components/Layout'\nimport InNumbers from '../components/InNumbersSection'\nimport Navbar from '../components/Navbar'\nimport Footer from '../components/Footer'\nimport LinksSection from '../components/LinksSection'\nimport HeroSection from '../components/HeroSection'\nimport FloatingButton from '../components/FloatingButton'\nimport CaseStudySection from '../components/CaseStudySection'\nimport ClientsSection from '../components/ClientsSection'\nimport TestimonialsSection from '../components/TestimonialsSection'\nimport AccordionSection from '../components/AccordionSection'\nimport ImageVideoSection from '../components/ImageVideoSection'\nimport LastArticlesSection from '../components/LastArticlesSection'\n\n//models, hooks\nimport { useSeoData } from '../components/SeoComponent/model'\nimport { IsMobileContext, LanguageContext } from '../common/Context'\nimport { useTranslation } from 'gatsby-plugin-react-i18next'\nimport { useHeroSectionData, HeroSection as HeroSectionClass } from '../components/HeroSection/model'\nimport { useInNumbersSectionData, InNumbersSection } from '../components/InNumbersSection/model'\nimport { useClientsSectionData, ClientsSection as ClientsSectionClass } from '../components/ClientsSection/model'\nimport { useTestimonialsSectionsData, TestimonialsSection as TestimonialsSectionClass } from '../components/TestimonialsSection/model'\nimport { useLastArticlesSectionData, LastArticlesSection as LastArticlesSectionClass } from '../components/LastArticlesSection/model'\nimport { useLinksGridData, LinksGrid } from '../components/LinksGrid/model'\nimport { useNavbarData, Navbar as NavbarClass } from '../components/Navbar/model'\nimport { useCaseStudySectionData, CaseStudySection as CaseStudySectionClass } from '../components/CaseStudySection/model'\nimport { useImageVideoSectionData, ImageVideoSection as ImageVideoSectionClass} from '../components/ImageVideoSection/model'\nimport { useAccordionSectionData, AccordionSection as AccordionSectionClass } from '../components/AccordionSection/model'\nimport { useNavbarDarkMode } from '../hooks/useNavbarInDarkMode'\n\n//other\nimport { ArrowDirection } from '../common/typings/enums'\nimport withSSR from '../hoc/withSSR'\nimport './index.scss'\n\nconst IndexPage: React.FC = ({ location: { pathname } }) => {\n const { language: initialLanguage } = React.useContext(LanguageContext)\n const [language, setLanguage] = React.useState(initialLanguage)\n\n /* For data collecting hooks below (e.g. useLinksGridData), \n You need to know page codename from kentico and optionally section codename.\n Data service is searching query for this elements and collects the right data to components */\n const pageCodename = 'home_page'\n const seoData = useSeoData(language, pageCodename, pathname)\n const pageData = {\n imageVideoSectionData1: useImageVideoSectionData(language, pageCodename, 'image_video_section'),\n imageVideoSectionData2: useImageVideoSectionData(language, pageCodename, 'image_video_section_2'),\n heroSectionData: useHeroSectionData(language, pageCodename),\n inNumbersData: useInNumbersSectionData(language, pageCodename),\n clientsSectionData: useClientsSectionData(language, pageCodename),\n testimonialsSectionData: useTestimonialsSectionsData(language, pageCodename),\n caseStudySectionData: useCaseStudySectionData(language),\n linksGridData: useLinksGridData(language, pageCodename),\n navbarData: useNavbarData(language, pageCodename, pathname),\n accordionSectionData: useAccordionSectionData(language, pageCodename),\n lastArticlesSectionData: useLastArticlesSectionData(language),\n }\n\n return (\n \n \n \n )\n}\n\ninterface IndexPageProps {\n isMobile: boolean\n pageData: {\n imageVideoSectionData1: ImageVideoSectionClass\n imageVideoSectionData2: ImageVideoSectionClass\n heroSectionData: HeroSectionClass\n inNumbersData: InNumbersSection\n clientsSectionData: ClientsSectionClass\n testimonialsSectionData: TestimonialsSectionClass\n caseStudySectionData: CaseStudySectionClass\n linksGridData: LinksGrid\n navbarData: NavbarClass\n accordionSectionData: AccordionSectionClass | null\n lastArticlesSectionData: LastArticlesSectionClass\n }\n}\n\nconst IndexPageTemplate: React.FC = ({\n isMobile,\n pageData: {\n imageVideoSectionData1,\n imageVideoSectionData2,\n heroSectionData,\n inNumbersData,\n clientsSectionData,\n testimonialsSectionData,\n caseStudySectionData,\n linksGridData,\n navbarData,\n accordionSectionData,\n lastArticlesSectionData,\n }\n}) => {\n const { t } = useTranslation()\n const navbarRef = React.useRef>(null)\n const { navbarInDarkMode } = useNavbarDarkMode(isMobile, navbarRef)\n\n return (\n \n
\n \n
\n
\n \n \n \n \n \n {accordionSectionData && }\n \n \n \n \n \n
\n