{"version":3,"sources":["assets/styles/Colors.js","assets/styles/Breakpoints.js","assets/fonts/OpenSans-Bold.ttf","assets/fonts/OpenSans-Light.ttf","assets/fonts/OpenSans-Regular.ttf","assets/fonts/OpenSans-Semibold.ttf","assets/fonts/OpenSans-Italic.ttf","assets/styles/Typography.js","assets/images/downloadIcon.svg","assets/styles/GlobalStyles.js","assets/images/right-arrow.svg","assets/images/down-arrow.svg","assets/images/angled-arrow.svg","assets/styles/ButtonStyles.js","assets/styles/Filters.js","assets/images/icons/Filters.js","assets/data/PageCopy.js","assets/images/down-chevron.svg","components/Glance/GlanceStyles.js","components/Glance/RespondentsChartDesktop.js","components/Glance/RespondentsChartMobile.js","components/Glance/GlanceTabs.js","assets/data/Filters.js","components/Glance/index.js","components/Hero/HeroStyles.js","assets/images/hero-image.png","components/Hero/index.js","components/Layout.js","components/Trends/TrendsStyles.js","assets/images/trend-1.svg","assets/images/trend-2.svg","assets/images/trend-3.svg","assets/images/trend-4.svg","assets/images/trend-5.svg","assets/images/trend-6.svg","assets/images/trend-7.svg","components/Trends/index.js","components/Intro/IntroStyles.js","components/Intro/index.js","components/ChartFooter/ChartFooterStyles.js","components/ChartFooter/index.js","components/HR/HRStyles.js","components/HR/index.js","components/Growing/GrowingStyles.js","assets/images/growing-with-purpose-bg-notext.png","components/Growing/GrowthChartDesktop.js","components/Growing/GrowthChartMobile.js","components/Growing/index.js","components/Navigation/NavigationStyles.js","assets/images/icons/Social.js","components/Navigation/index.js","assets/images/de-i-banner.png","components/DEI/DEIStyles.js","components/DEI/DEIChartDesktop.js","components/DEI/DEIChartMobile.js","components/DEI/index.js","assets/images/intelligent-banner.png","components/Intelligent/IntelligentStyles.js","components/Intelligent/IntelligentChartDesktop.js","components/Intelligent/IntelligentChartMobile.js","components/Intelligent/index.js","assets/images/cookieless-bg.png","components/Cookieless/CookielessStyles.js","components/Cookieless/CookielessChartDesktop.js","components/Cookieless/index.js","assets/images/HumanFirst-banner.png","components/HumanFirst/HumanFirstStyles.js","components/HumanFirst/HumanFirstChart.js","components/HumanFirst/index.js","components/Hybrid/TankCircleGraphStyle.js","components/Hybrid/TankCircleGraph.js","assets/images/Hybrid-banner.png","components/Hybrid/HybridStyles.js","components/Hybrid/index.js","components/HumanService/HumanServiceStyles.js","components/HumanService/Heatmap.js","assets/images/HumanServiceBanner.png","components/HumanService/index.js","components/Archives/ArchivesStyles.js","components/Archives/index.js","components/Methodology/MethodologyStyles.js","components/Methodology/index.js","components/Form/FormStyles.js","components/DownloadTheReport/DownloadTheReportStyles.js","components/Form/index.js","assets/images/form-background.png","components/DownloadTheReport/index.js","pages/form.js","pages/home.js","assets/images/trends-bg@2x.png","App.js","utils/ScrollToTop.js","index.js"],"names":["colors","size","mobileS","mobileM","mobileL","tablet","laptop","laptopL","desktopL","device","desktop","typeScale","mobileTypeScale","Typography","createGlobalStyle","openSansRegular","openSansLight","openSansBold","openSansSemiBold","openSansItalic","GlobalStyles","normalize","CONTAINER_MODIFIERS","flex","mobileColumn","alignCenter","spaceBetween","flexWrap","Container","styled","div","applyStyleModifiers","ChartContainer","EYEBROW_MODIFIERS","uppercase","teal","black","Eyebrow","p","DownloadButton","button","DownloadIcon","white","SECTION_CHART_HEADER_MODIFIERS","stackedColumn","SectionChartHeaders","BUTTON_MODIFIERS","arrow","rightArrow","RightArrow","downArrow","DownArrow","downloadIcon","textCenter","justifyContentCenter","blackOutlined","angledArrow","AngleArrow","baseButtonStyles","css","PrimaryButtonLink","a","ReactLink","AnchorScrollButton","Link","SecondaryButton","CMOFilter","Select","noBottomRadius","noRadius","noTopRadius","hidden","SelectCarat","xmlns","viewBox","dataName","fill","stroke","strokeMiterlimit","strokeWidth","d","CheckboxChecked","CheckboxUnchecked","page_copy","hero","eyebrow","mainHeading","description","buttonLabel","pageAnchorLink","glanceSection","demographicsTitle","growthSection","heading","analyticsHeading","imageAltText","imageStat","imageStatSuffix","imageCopy","chartHeading","downloadButtonLabel","chartDownloadTitle","chartFootnote","deiSection","linkLabel","intelligentSection","cookielessSection","humanFirstSection","chartSubHeading","hybridSection","superChargeSection","trendArchivesSection","moreButtonLabel","moreButtonLabelEnd","methodologySection","lgText","colOnePara","colTwoParaOne","colTwoParaTwo","formPage","headline","subhead","GlanceMain","section","GlanceCopy","GlanceSurvey","GlanceHeader","GlanceChart","SelectDownArrow","GlanceTabsWrapper","TabControls","ul","TabButton","TabHeading","li","TabPanel","RespondentsChart","props","useState","dataSeries","setDataSeries","dataLabels","setDataLabels","chartData","setChartData","chartColors","chartOpts","chart","type","stacked","stackType","toolbar","show","enabled","formatter","val","opt","Math","round","style","fontSize","offsetX","plotOptions","bar","horizontal","position","hideOverflowingLabels","tooltip","grid","legend","horizontalAlign","markers","fillColors","xaxis","labels","axisBorder","yaxis","useEffect","chartDataArray","i","length","dataPoint","name","data","push","options","series","height","className","RespondentsMobileChart","setOptions","chartHeight","setChartHeight","sparkline","w","globals","dataPointIndex","textAnchor","offsetY","distributed","barHeight","columnWidth","categories","setTimeout","$","attr","setInterval","window","width","GlanceTabs","children","initialTab","handleSetFilterType","label","activeTab","setActiveTab","map","tab","onClick","e","newActiveTab","preventDefault","handleClick","numberOfSurveyed","surveyedGroupName","tabPanel","exec_filters","key","subfilters","consumer_filters","exec_filter_opts","consumer_filter_opts","Glance","query","activeFilter","setActiveFilter","activeFilterType","setActiveFilterType","filterOpts","setFilterOpts","isDesktop","setDesktop","handleExecFilterChange","event","value","target","tabName","filter","filterOpt","console","log","showAnalytics","filterType","labelArray","dataArray","belowExecs","executiveData","executive","aboveExecs","parseInt","negGrowth","midGrowth","posGrowth","exec_filter","forEach","subfilter","searchKey","filterExecs","toString","youngConsumers","consumerData","consumer","midConsumers","oldConsumers","consumer_filter","filterConsumers","innerWidth","updateMedia","addEventListener","removeEventListener","id","copy","modifiers","FormControl","fullWidth","sx","border","InputLabel","visuallyHidden","labelId","renderValue","onChange","IconComponent","filter_opt","MenuItem","getInitialProps","HeroElm","HeroImg","HeroCopy","Hero","src","HeroBgImage","alt","to","smooth","spy","duration","tabIndex","Layout","activeAnchorStyles","TrendsMain","TrendsAnchors","TrendNumber","Trends","anchors","number","TrendOne","analyticsLabel","anchorId","TrendTwo","TrendThree","TrendFour","TrendFive","TrendSix","TrendSeven","activeAnchor","setActiveAnchor","item","href","split","slice","join","replace","trim","triggerAnchor","IntroMain","IntroCopy","IntroImage","Intro","body","linkAnchor","imageSrc","imageAlt","imagePosition","textColor","head","link","analytics","open","CHART_FOOTER_MODS","ChartFooterMain","ChartFooter","color","HRMODS","cookieless","HrElm","HorizontalRule","borderColor","borderTopColor","GrowingMain","GrowthChart","optionsArray","seriesIndex","fontWeight","textAlign","ranges","from","axisTicks","rotate","fontFamily","cssClass","lines","pattern","annotations","y","strokeDashArray","linecap","text","background","states","hover","GrowthChartDesktop","setSeries","min","max","align","floating","borderWidth","GrowthChartMobile","Growing","componentRef","useRef","exec_include","orig_filters","orig_filter","includes","activeSubFilter","setActiveSubFilter","newActiveFilter","handleSubFilterChange","sub_filter","handleClearFilters","dataSet","posGrowDataSet","negGrowDataSet","chartKeys","posGrowFilterDataSet","chartKey","negGrowFilterDataSet","posStats","negStats","negStat","GrowingBG","HR","ref","displayEmpty","downloadButton","currentTarget","downloadChart","document","getElementById","domtoimage","toBlob","getBoundingClientRect","margin","node","then","blob","saveAs","NavMain","NavContainer","NavLinkList","NavLink","NavSocial","NavDownload","activateDownloadIconPulsingAnimation","IconSocial","cx","cy","r","x1","y1","x2","y2","IconSocialFb","IconSocialTw","IconSocialLi","getDimensions","ele","offsetTop","offsetBottom","Navigation","navActive","setNavActive","visibleSection","setVisibleSection","setActivateDownloadIconPulsingAnimation","scrollY","setY","handleNavigation","useCallback","top","navBarTop","offset","scroll","scrollTop","right","navRef","sectionRefs","navLinks","linkNumber","linkHref","mobileLabel","setMobileLabel","handleNavActivate","handleSetActive","navFilter","handleScroll","headerHeight","current","scrollPosition","selected","find","undefined","handleNavClose","onSetActive","FacebookShareButton","stopPropagation","url","location","TwitterShareButton","LinkedinShareButton","DEIMain","DEIChart","DEIChartDesktop","chartLabels","setLabels","DEIChartMobile","enabledOnSeries","dei_topics","DEI","setChartLabels","activeTopics","setActiveTopics","React","handleTopicChange","valueArray","unique","obj","indexOf","dei_topic","renderTopicLabel","topicCount","topicPre","topicLabel","chartTopics","chartTopic","topicNumber","padStart","middle","ceil","nextDot","lastIndexOf","substr","DEIBannerImg","multiple","MenuProps","PaperProps","maxHeight","disabled","Checkbox","checked","activeTopic","icon","checkedIcon","inputProps","ListItemText","primary","IntelligentMain","maxItems","IntelligentChartDesktop","padding","IntelligentChartMobile","Intelligent","industryDataSets","industryVal","skillDemandDataSet","skillDemand","industryDataSet","filteredSet","IntelligentBG","CookielessMain","CircleChart","CIRCLE_MODIFIERS","small","medium","large","blue","green","CookielessChart","domain","x","domainPadding","animate","axis","ticks","tickLabels","bubbleProperty","maxBubbleSize","minBubbleSize","labelComponent","dx","dy","datum","amount","Cookieless","posGrowthFiltered","Q16a","midGrowthFiltered","negGrowthFiltered","chartDataSet","CookielessBG","HumanFirstMain","ChartContainers","ChartControls","DataGrid","activeAndHoverStyle","GridCell","Graphs","GraphContainer","SurveryScore","ChartTitle","HumanFirstGraph","hfGraphBarColor","HumanFirstChart","left","setStyle","bars","activeBars","setWindowStyle","bottom","dataCells","HumanFirst","filter_include","handleFilterChange","active","setActive","helpfulData","setHelpfulData","creepyData","setCreepyData","delta","setDelta","helpfulDataSet","creepyDataSet","helpfulPercent","creepyPercent","HumanFirstBG","cell","TankCircle","TankCircleGraph","percent","setPercent","setName","setColor","HybridMain","HybridChartsWrapper","hybrid_topics","Hybrid","hybrid_topic","answeredDataSet","filteredDataSet","HybridBanner","chartItem","HumanServiceMain","StyledSuperchargeAiHeatmapContainer","createData","calories","fat","carbs","protein","rows","tiers","backgroundColor","Card","content","tier","cardStyle","cardPadding","outerStyle","transition","innerStyle","display","justifyContent","alignItems","TableCell","borderBottom","tableHeaderData","Heatmap","TableContainer","Table","minWidth","TableHead","TableRow","component","scope","marginRight","lineHeight","marginBottom","TableBody","row","paddingLeft","paddingRight","chartRow","HumanService","column","categorySet","helpKey","helpArray","answeredSet","helpSet","HumanServiceBannerImg","ArchivesMain","ArchivesHeader","FlexColumnOnMobileWrapper","Archive","MethodMain","MethodHeading","MethodColumns","index","cssInput","h2","h3","input","half","select","span","CSS","yup","shape","firstName","required","lastName","email","company","title","mailingList","acceptTermsOfUse","oneOf","font","contentBox","FormIntroSectionWrapper","BackLink","DownloadTheReportCopy","GridTemplateAreasWrapper","StyledHeading","EyebrowWithMargin","TrendGridAreaWrapper","StyledTextWidth80","SocialGridAreaWrapper","SocialHeading","SocialGroup","SocialIconWrapper","SpiderWebBgWrapper","spiderBgImgUrl","DownloadTheReport","fontStyle","FormPage","BgImage","HomePage","setQuery","useLocation","URLSearchParams","search","get","parent","hide","Methodology","App","exact","path","ScrollToTop","prevProps","this","pathname","scrollTo","Component","withRouter","ReactDOM","render","StrictMode"],"mappings":"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","file":"static/js/main.3bdc23ee.chunk.js","sourcesContent":["\r\nexport const colors = {\r\n blue100: \"#A0DCFF\",\r\n blue200: \"#E8F6FF\",\r\n blue300: \"#042750\",\r\n teal100: \"#00ABAB\",\r\n teal200: \"#9DD4CF\",\r\n teal300: \"#31747E\",\r\n green100: \"#86BC25\",\r\n green200: \"#F0F7E5\",\r\n black: \"#000000\",\r\n charcoal: \"#414042\",\r\n lightGray: \"#F4F4F4\",\r\n midGray: \"#B0B3B4\",\r\n white: \"#FFFFFF\",\r\n white200: \"#F1F1F1\",\r\n };","const size = {\r\n mobileS: '320px',\r\n mobileM: '375px',\r\n mobileL: '425px',\r\n tablet: '768px',\r\n laptop: '1024px',\r\n laptopL: '1440px',\r\n desktopL: '2560px'\r\n}\r\n\r\nexport const device = {\r\n mobileS: `(min-width: ${size.mobileS})`,\r\n mobileM: `(min-width: ${size.mobileM})`,\r\n mobileL: `(min-width: ${size.mobileL})`,\r\n tablet: `(min-width: ${size.tablet})`,\r\n laptop: `(min-width: ${size.laptop})`,\r\n laptopL: `(min-width: ${size.laptopL})`,\r\n desktopL: `(min-width: ${size.desktop})`\r\n};","export default __webpack_public_path__ + \"static/media/OpenSans-Bold.043771c9.ttf\";","export default __webpack_public_path__ + \"static/media/OpenSans-Light.3d5923f9.ttf\";","export default __webpack_public_path__ + \"static/media/OpenSans-Regular.17e98b9e.ttf\";","export default __webpack_public_path__ + \"static/media/OpenSans-Semibold.029b9bc9.ttf\";","export default __webpack_public_path__ + \"static/media/OpenSans-Italic.95855802.ttf\";","\r\nimport { createGlobalStyle } from \"styled-components\"\r\nimport { device } from \".\";\r\nimport openSansBold from \"../fonts/OpenSans-Bold.ttf\"\r\nimport openSansLight from \"../fonts/OpenSans-Light.ttf\"\r\nimport openSansRegular from \"../fonts/OpenSans-Regular.ttf\"\r\nimport openSansSemiBold from \"../fonts/OpenSans-Semibold.ttf\"\r\nimport openSansItalic from \"../fonts/OpenSans-Italic.ttf\"\r\n\r\nexport const typeScale = {\r\n h1: \"4rem\",\r\n h2: \"3.250rem\",\r\n h3: \"2.250rem\",\r\n h4: \"2rem\",\r\n h5: \"1.5rem\",\r\n paragraph: \"1rem\",\r\n bodyTextHead: \"1.125rem\",\r\n captions: \"0.875rem\",\r\n largeNumber: \"3.125rem\",\r\n};\r\n\r\nexport const mobileTypeScale = {\r\n h1: \"3.250rem\",\r\n h2: \"3.250rem\",\r\n h3: \"2.250rem\",\r\n h4: \"1.625rem\",\r\n h5: \"1.250rem\",\r\n paragraph: \"1rem\",\r\n bodyTextHead: \"1.125rem\",\r\n captions: \"0.875rem\",\r\n largeNumber: \"2.500rem\",\r\n};\r\n\r\nexport const Typography = createGlobalStyle`\r\n @font-face {\r\n font-family: openSansRegular;\r\n src: url(${openSansRegular});\r\n }\r\n\r\n @font-face {\r\n font-family: openSansLight;\r\n src: url(${openSansLight});\r\n }\r\n\r\n @font-face {\r\n font-family: openSansBold;\r\n src: url(${openSansBold});\r\n }\r\n\r\n @font-face {\r\n font-family: openSansSemiBold;\r\n src: url(${openSansSemiBold});\r\n }\r\n\r\n @font-face {\r\n font-family: openSansItalic;\r\n src: url(${openSansItalic});\r\n }\r\n\r\n body, #root {\r\n font-family: openSansRegular, 'Open Sans', sans-serif;\r\n line-height: 1.5; \r\n -webkit-font-smoothing: antialiased;\r\n -moz-osx-font-smoothing: grayscale;\r\n }\r\n\r\n #root {\r\n h3, .h3,\r\n h4, .h4,\r\n h5, .h5 {\r\n /*font-family: openSansLight;*/\r\n font-weight: 300;\r\n }\r\n\r\n h1, .h1 {\r\n /*font-family: openSansRegular;*/\r\n font-size: ${mobileTypeScale.h1};\r\n font-weight: 400;\r\n line-height: 62px;\r\n\r\n @media ${device.tablet} {\r\n font-size: ${typeScale.h1};\r\n line-height: 72px;\r\n }\r\n }\r\n\r\n h2, .h2 {\r\n /*font-family: openSansRegular;*/\r\n font-weight: 400;\r\n line-height: 1.2;\r\n font-size: 2.75rem;\r\n @media ${device.mobileM} {\r\n font-size: ${typeScale.h2};\r\n }\r\n }\r\n\r\n h3, .h3 {\r\n font-size: ${typeScale.h3};\r\n line-height: 1.3;\r\n }\r\n\r\n h4, .h4 {\r\n font-size: ${mobileTypeScale.h4};\r\n line-height: 40px;\r\n\r\n @media ${device.tablet} {\r\n font-size: ${typeScale.h4};\r\n line-height: 46px;\r\n }\r\n }\r\n\r\n h5, .h5 {\r\n font-size: ${mobileTypeScale.h5};\r\n line-height: 30px;\r\n\r\n @media ${device.tablet} {\r\n font-size: ${typeScale.h5};\r\n line-height: 38px;\r\n }\r\n }\r\n\r\n .body-text-head {\r\n /*font-family: openSansBold;*/\r\n font-size: ${typeScale.bodyTextHead};\r\n font-weight: 700;\r\n }\r\n\r\n .caption {\r\n /*font-family: openSansRegular;*/\r\n font-size: ${typeScale.captions};\r\n }\r\n\r\n p {\r\n margin: 1em 0;\r\n line-height: 1.5;\r\n }\r\n\r\n li {\r\n margin: 0;\r\n }\r\n\r\n button {\r\n color: inherit;\r\n font-size: 1rem;\r\n }\r\n\r\n a {\r\n color: inherit;\r\n &:hover, &:focus {\r\n text-decoration: none;\r\n color: inherit;\r\n }\r\n }\r\n }\r\n`\r\n","export default __webpack_public_path__ + \"static/media/downloadIcon.bd257ee4.svg\";","import styled, { createGlobalStyle } from 'styled-components'\r\nimport { colors, device, typeScale } from '.'\r\nimport { normalize } from 'styled-normalize'\r\nimport { applyStyleModifiers } from 'styled-components-modifiers'\r\nimport DownloadIcon from '../images/downloadIcon.svg'\r\n\r\nexport const GlobalStyles = createGlobalStyle`\r\n ${normalize};\r\n\r\n html {\r\n box-sizing: border-box;\r\n }\r\n\r\n body {\r\n font-size: 16px;\r\n overflow-x: hidden;\r\n }\r\n\r\n *, *:before, *:after {\r\n box-sizing: inherit;\r\n }\r\n\r\n \r\n &::selection {\r\n background: ${colors.black};\r\n color: ${colors.white};\r\n }\r\n\r\n #root & {\r\n h1, h2, h3, h4, h5, h6 {\r\n margin: 0;\r\n padding: 0;\r\n }\r\n ul {\r\n margin: 0;\r\n padding: 0;\r\n list-style: none;\r\n }\r\n\r\n ol {\r\n padding-left: 15px;\r\n }\r\n\r\n a {\r\n color: inherit;\r\n text-decoration: none;\r\n }\r\n\r\n img {\r\n height: auto;\r\n width: 100%;\r\n }\r\n }\r\n\r\n .centered {\r\n text-align: center;\r\n }\r\n\r\n .sticky {\r\n position: sticky;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n z-index: 10;\r\n }\r\n\r\n .MuiMenuItem-root {\r\n .MuiCheckbox-root {\r\n svg {\r\n width: 21px;\r\n height: 21px;\r\n transition: background-color 0.3s;\r\n }\r\n }\r\n &.Mui-selected {\r\n .MuiCheckbox-root {\r\n svg {\r\n background-color: ${colors.black}\r\n }\r\n }\r\n }\r\n }\r\n\r\n .MuiFormControl-root {\r\n &.is-hidden {\r\n display: none;\r\n &.is-visible {\r\n display: inline-flex;\r\n }\r\n }\r\n }\r\n\r\n .MuiOutlinedInput-root {\r\n legend {\r\n width: auto;\r\n }\r\n }\r\n`\r\n\r\nconst CONTAINER_MODIFIERS = {\r\n flex: () => `\r\n display: flex;\r\n `,\r\n mobileColumn: () => `\r\n flex-direction: column;\r\n @media ${device.laptop} {\r\n flex-direction: row;\r\n }\r\n `,\r\n alignCenter: () => `\r\n align-items: center;\r\n `,\r\n spaceBetween: () => `\r\n justify-content: space-between;\r\n `,\r\n flexWrap: () => `\r\n flex-wrap: wrap;\r\n `\r\n}\r\n\r\nexport const Container = styled.div`\r\n margin: 0 auto;\r\n max-width: 1270px;\r\n padding-left: 16px;\r\n padding-right: 16px;\r\n width: 100%;\r\n\r\n ${applyStyleModifiers(CONTAINER_MODIFIERS)}\r\n`\r\n\r\nexport const ChartContainer = styled(Container)`\r\n margin: 0 auto;\r\n max-width: 1270px;\r\n padding-left: 16px;\r\n padding-right: 16px;\r\n width: 100%;\r\n padding-top: 20px;\r\n padding-bottom: 20px;\r\n background-color: inherit;\r\n`\r\n\r\nconst EYEBROW_MODIFIERS = {\r\n uppercase: () => `\r\n text-transform: uppercase;\r\n `,\r\n teal: () => `\r\n color: ${colors.teal300};\r\n `,\r\n black: () => `\r\n color: ${colors.black};\r\n `,\r\n}\r\n\r\nexport const Eyebrow = styled.p`\r\n #root & {\r\n margin: 0;\r\n /*font-family: openSansBold;*/\r\n font-size: ${typeScale.bodyTextHead};\r\n font-weight: 700;\r\n }\r\n\r\n ${applyStyleModifiers(EYEBROW_MODIFIERS)}\r\n`\r\n\r\nexport const DOWNLOAD_MODIFIERS = {\r\n black: () => `\r\n color: #000;\r\n `,\r\n white: () => `\r\n color: #FFF;\r\n\r\n &::after {\r\n filter: brightness(0) invert(1);\r\n }\r\n `,\r\n}\r\nexport const DownloadButton = styled.button`\r\n #root & {\r\n position: relative;\r\n height: 25px;\r\n padding: 0 30px 0 0;\r\n background: none;\r\n border: none;\r\n cursor: pointer;\r\n /*font-family: openSansSemiBold;*/\r\n font-weight: 500;\r\n letter-spacing: 1px; \r\n text-transform: uppercase;\r\n text-decoration: none;\r\n white-space: nowrap;\r\n\r\n @media ${device.tablet} {\r\n letter-spacing: 2px; \r\n }\r\n\r\n &::before {\r\n content: \"\";\r\n position: absolute;\r\n left: 0;\r\n bottom: 0;\r\n display: block;\r\n width: 0;\r\n height: 2px;\r\n background-color: currentColor;\r\n transition: width 0.3s;\r\n }\r\n\r\n &::after {\r\n position: absolute;\r\n right: 0;\r\n top: 3px;\r\n height: 20px;\r\n width: 20px;\r\n background: url(${DownloadIcon}) center right / cover no-repeat;\r\n content: \"\";\r\n transition: transform 0.3s;\r\n }\r\n\r\n @media(hover: hover) and (pointer: fine) {\r\n &:hover, &:focus {\r\n background: transparent;\r\n &::before {\r\n width: calc(100% - 30px);\r\n }\r\n &::after {\r\n transform: translateX(8px);\r\n }\r\n }\r\n }\r\n\r\n &:hover {\r\n background: none;\r\n text-decoration: none;\r\n }\r\n }\r\n\r\n ${applyStyleModifiers(DOWNLOAD_MODIFIERS)}\r\n`\r\n\r\nconst SECTION_CHART_HEADER_MODIFIERS = {\r\n stackedColumn: () => `\r\n @media ${device.laptop} {\r\n flex-direction: column;\r\n justify-content: flex-start;\r\n h3 {\r\n width: auto;\r\n flex: 0;\r\n #root & { margin-bottom: 30px; }\r\n }\r\n .cmo-chart-filters {\r\n margin-left: 0;\r\n margin-right: 0;\r\n flex: 0;\r\n }\r\n }\r\n `\r\n}\r\n\r\nexport const SectionChartHeaders = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n align-items: flex-start;\r\n\r\n h3,\r\n h3.h3,\r\n h3.h3.section-chart-h3 {\r\n font-size: ${typeScale.h3};\r\n line-height: 1.3;\r\n\r\n br {\r\n display: none;\r\n }\r\n }\r\n\r\n .cmo-chart-filters {\r\n width: 100%;\r\n margin-top: 30px;\r\n text-align: right;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: flex-end;\r\n .cmo-chart-filters-clear {\r\n cursor: pointer;\r\n display: inline-block;\r\n margin-top: 10px;\r\n appearance: none;\r\n border: 0;\r\n border-radius: 0;\r\n background-color: transparent;\r\n text-decoration: underline;\r\n color: inherit;\r\n &:hover, &:focus {\r\n text-decoration: none;\r\n }\r\n }\r\n }\r\n\r\n @media ${device.tablet} {\r\n flex-direction: row;\r\n justify-content: center;\r\n flex-wrap: wrap;\r\n h3 {\r\n width: 48%;\r\n flex: 48% 0 0;\r\n margin: 0 1%;\r\n br {\r\n display: block;\r\n }\r\n }\r\n .cmo-chart-filters {\r\n width: 48%;\r\n flex: 48% 0 0;\r\n margin: 0 1% 30px;\r\n }\r\n }\r\n\r\n @media ${device.laptopL} {\r\n flex-wrap: none;\r\n justify-content: space-between;\r\n h3 {\r\n width: 50%;\r\n flex: 50% 0 0;\r\n margin: 0;\r\n }\r\n .cmo-chart-filters {\r\n width: 350px;\r\n flex: 1 0 0;\r\n margin-top: 0;\r\n margin-left: 30px;\r\n margin-right: 30px;\r\n }\r\n }\r\n\r\n ${DownloadButton} {\r\n margin: 25px auto;\r\n\r\n @media ${device.tablet} {\r\n margin: 20px 0 0 0;\r\n }\r\n }\r\n\r\n h3 {\r\n @media ${device.tablet} {\r\n max-width: 500px;\r\n }\r\n }\r\n\r\n ${applyStyleModifiers(SECTION_CHART_HEADER_MODIFIERS)}\r\n`\r\n","export default __webpack_public_path__ + \"static/media/right-arrow.08507222.svg\";","export default __webpack_public_path__ + \"static/media/down-arrow.56feb763.svg\";","export default __webpack_public_path__ + \"static/media/angled-arrow.b55a3d41.svg\";","import styled, { css } from 'styled-components'\r\nimport { colors, device } from '.'\r\nimport { applyStyleModifiers } from 'styled-components-modifiers'\r\nimport { Link } from 'react-scroll'\r\nimport { Link as ReactLink } from 'react-router-dom'\r\n// Images\r\nimport RightArrow from '../images/right-arrow.svg'\r\nimport DownArrow from '../images/down-arrow.svg'\r\nimport AngleArrow from '../images/angled-arrow.svg'\r\nimport DownloadIcon from '../images/downloadIcon.svg'\r\n\r\nconst BUTTON_MODIFIERS = {\r\n arrow: () => `\r\n display: flex;\r\n align-items: center;\r\n\r\n @media ${device.tablet} {\r\n display: inline-flex;\r\n }\r\n\r\n &::after {\r\n display: block;\r\n height: 18px;\r\n width: 18px;\r\n margin-left: 8px;\r\n content: \"\";\r\n transition: linear 0.25s;\r\n }\r\n `,\r\n rightArrow: () => `\r\n &:after { \r\n background: url(${RightArrow}) 0 0 no-repeat;\r\n }\r\n\r\n @media(hover: hover) and (pointer: fine) {\r\n &:hover {\r\n &::after {\r\n margin-left: 15px;\r\n }\r\n }\r\n }\r\n `,\r\n downArrow: () => `\r\n &:after { \r\n background: url(${DownArrow}) 0 0 no-repeat;\r\n }\r\n\r\n @media(hover: hover) and (pointer: fine) {\r\n &:hover {\r\n &::after {\r\n margin-left: 15px;\r\n }\r\n }\r\n }\r\n `,\r\n downloadIcon: () => `\r\n &:after {\r\n background: url(${DownloadIcon}) 0 0 no-repeat;\r\n }\r\n\r\n @media(hover: hover) and (pointer: fine) {\r\n &:hover {\r\n &::after {\r\n margin-left: 15px;\r\n }\r\n }\r\n }\r\n `,\r\n textCenter: () => `\r\n text-align: center;\r\n `,\r\n justifyContentCenter: () => `\r\n justify-content: center;\r\n `, //for some reason, text-align works in forms, but not on home. this is the quick fix\r\n blackOutlined: () => `\r\n border: 2px solid ${colors.black};\r\n color: ${colors.black};\r\n\r\n @media(hover: hover) and (pointer: fine) {\r\n &:hover {\r\n #root & {\r\n background: ${colors.black} !important;\r\n color: ${colors.white};\r\n }\r\n transform: scale(1.05);\r\n\r\n &::after {\r\n filter: brightness(0) invert(1);\r\n }\r\n }\r\n }\r\n `,\r\n angledArrow: () => `\r\n &::before {\r\n content: \"\";\r\n position: absolute;\r\n left: 0;\r\n bottom: 0;\r\n display: block;\r\n width: 0;\r\n height: 2px;\r\n background-color: currentColor;\r\n transition: width 0.3s;\r\n }\r\n &:after {\r\n background: url(${AngleArrow}) 0 0 no-repeat;\r\n }\r\n @media(hover: hover) and (pointer: fine) {\r\n &:hover, &:focus {\r\n &::before {\r\n width: calc(100% - 30px);\r\n }\r\n &::after {\r\n transform: translateX(8px);\r\n }\r\n }\r\n }\r\n `,\r\n black: () => `\r\n color: ${colors.black};\r\n &:after {\r\n filter: brightness(1) invert(0);\r\n }\r\n `,\r\n white: () => `\r\n color: ${colors.white};\r\n &:after {\r\n filter: brightness(100) invert(0);\r\n }\r\n `,\r\n}\r\n\r\nconst baseButtonStyles = css`\r\n position: relative;\r\n display: block;\r\n white-space: nowrap;\r\n padding: 16px;\r\n border-radius: 32px;\r\n cursor: pointer;\r\n /*font-family: openSansSemiBold;*/\r\n font-size: 14px;\r\n font-weight: 600;\r\n letter-spacing: 1px;\r\n text-transform: uppercase;\r\n transition: linear 0.25s;\r\n\r\n @media ${device.mobileM} {\r\n font-size: 16px;\r\n }\r\n\r\n @media ${device.tablet} {\r\n display: inline-block;\r\n padding: 16px 32px;\r\n }\r\n\r\n @media (hover: hover) and (pointer: fine) {\r\n &:hover {\r\n transform: scale(1.05);\r\n #root & {\r\n color: ${colors.white}\r\n }\r\n }\r\n }\r\n`\r\n\r\nexport const PrimaryButton = styled.a`\r\n ${baseButtonStyles};\r\n ${applyStyleModifiers(BUTTON_MODIFIERS)};\r\n`\r\n\r\nexport const PrimaryButtonLink = styled(ReactLink)`\r\n ${baseButtonStyles};\r\n ${applyStyleModifiers(BUTTON_MODIFIERS)};\r\n`\r\n\r\nexport const AnchorScrollButton = styled(Link)`\r\n // Link = Using react-scroll\r\n ${baseButtonStyles};\r\n ${applyStyleModifiers(BUTTON_MODIFIERS)};\r\n`\r\n\r\nexport const SecondaryButton = styled(Link)`\r\n // Link = Using react-scroll\r\n position: relative;\r\n color: inherit;\r\n cursor: pointer;\r\n /*font-family: openSansSemiBold;*/\r\n font-size: 16px;\r\n font-weight: 600;\r\n letter-spacing: 2px;\r\n text-transform: uppercase;\r\n ${applyStyleModifiers(BUTTON_MODIFIERS)};\r\n\r\n span {\r\n display: inline-block;\r\n /*font-family: openSansLight;*/\r\n font-weight: 100;\r\n }\r\n`\r\n\r\nexport const BaseButton = styled.button`\r\n ${baseButtonStyles};\r\n ${applyStyleModifiers(BUTTON_MODIFIERS)};\r\n`\r\n","import styled from 'styled-components'\r\nimport { applyStyleModifiers } from 'styled-components-modifiers'\r\nimport { colors } from '.'\r\nimport Select from \"@mui/material/Select\";\r\n\r\nconst SELECT_MODS = {\r\n noBottomRadius: () => `\r\n && {\r\n border-radius: 30px 30px 0 0;\r\n }\r\n `,\r\n noRadius: () => `\r\n && {\r\n border-radius: 0;\r\n }\r\n `,\r\n noTopRadius: () => `\r\n && {\r\n border-radius: 0 0 30px 30px;\r\n }\r\n `,\r\n hidden: () => `\r\n && {\r\n visibility: hidden;\r\n opacity: 0;\r\n transform: translateY(-100%);\r\n transition: visibility 0.3s, opacity 0.3s, transform 0.3s;\r\n &.is-visible {\r\n visibility: visible;\r\n opacity: 1;\r\n transform: translateY(0);\r\n }\r\n }\r\n `\r\n}\r\n\r\nexport const CMOFilter = styled(Select)`\r\n && {\r\n background-color: ${colors.white};\r\n color: ${colors.black};\r\n border: 0;\r\n border-radius: 30px;\r\n min-height: 60px;\r\n transition: border-radius 0.3s;\r\n text-align: left;\r\n width: 100%;\r\n .MuiSelect-select {\r\n padding: 18.5px 50px 18.5px 20px !important;\r\n span {\r\n display: inline-block;\r\n width: 30px;\r\n height: 30px;\r\n line-height: 30px;\r\n text-align: center;\r\n background-color: #dededf;\r\n border-radius: 50%;\r\n margin-left: 5px;\r\n }\r\n }\r\n svg {\r\n width: 21px;\r\n height: 12px;\r\n position: absolute;\r\n top: initial;\r\n right: 18px;\r\n pointer-events: none;\r\n }\r\n }\r\n ${applyStyleModifiers(SELECT_MODS)};\r\n`","export function SelectCarat() {\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport function CheckboxChecked() {\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport function CheckboxUnchecked() {\r\n return (\r\n \r\n )\r\n}","export const page_copy = [\r\n {\r\n hero: {\r\n eyebrow: \"2022 Global Marketing Trends\",\r\n mainHeading: \"Prosperar com foco no cliente\",\r\n description: \"As tendências de marketing macro, como a integração de canais digitais e físicos ou a reforma dos cookies de terceiros, estão a criar barreiras à função do marketing. O que podem as marcas aprender com os principais players do mercado para também prosperar?\",\r\n buttonLabel: \"Obter uma visão geral\",\r\n pageAnchorLink: \"trends\",\r\n },\r\n glanceSection: {\r\n eyebrow: \"Em resumo\",\r\n description: \"Os marketers estão em constante evolução a par com o mundo à sua volta. Se o ano passado o desafio foi responder a um choque sem precedentes, este ano o foco será na recuperação e, para aqueles que já tem as bases do seu posicionamento criadas, o foco será agora centrado no cliente.\",\r\n demographicsTitle: \"2022 levantamento demográfico\",\r\n },\r\n growthSection: {\r\n heading: [`Propósito - um farol `,
, `para o crescimento`],\r\n analyticsHeading: \"Propósito - um farol para o crescimento\",\r\n description: \"Eliminar o ruído, permite destacar se através de um compromisso holístico com o seu propósito e missão esta com a qual o cliente se identifica. Veja como as marcas com maior crescimento alcançam uma vantagem competitiva através de um propósito holístico.\",\r\n buttonLabel: \"LER A TENDÊNCIA COMPLETA\",\r\n pageAnchorLink: \"https://www2.deloitte.com/us/en/insights/topics/marketing-and-sales-operations/global-marketing-trends/2022/brand-purpose-as-a-competitive-advantage.html\",\r\n imageAltText: \"As marcas com maior crescimento são 66% mais favoráveis para orientar a tomada de decisão dos colaboradores\",\r\n imageStat: \"66\",\r\n imageStatSuffix: %,\r\n imageCopy: \"As marcas com maior crescimento são 66% mais favoráveis para orientar a tomada de decisão dos colaboradores\",\r\n chartHeading: \"Como as marcas com maior crescimento estão a ativar o propósito versus os pares de crescimento negativo\",\r\n downloadButtonLabel: \"DESCARREGAR ESTE GRÁFICO (jpg)\",\r\n chartDownloadTitle: \"Propósito - um farol para o crescimento\",\r\n chartFootnote: \"Qual das seguintes declarações reflete o que a finalidade da empresa significa para a sua organização?\",\r\n },\r\n deiSection: {\r\nheading: ['Marketing ',autenticamente, ` inclusivo`],\r\nanalyticsHeading: \"Marketing autenticamente inclusivo\",\r\ndescription: \"Os consumidores compram mais com marcas que se comprometem a enfrentar as desigualdades sociais. Conquistar o seu futuro cliente assume um compromisso com o DEI, tanto em frente como atrás da câmara.\",\r\nlinkLabel: \"LEIA A TENDÊNCIA COMPLETA\",\r\npageAnchorLink: \"https://www2.deloitte.com/us/en/insights/topics/marketing-and-sales-operations/global-marketing-trends/2022/diversity-and-inclusion-in-marketing.html\",\r\nimageAltText: \"Marcas com maior crescimento têm 1.9 vezes mais probabilidades de ter objetivos de talento relacionados com o DEI do que marcas de crescimento negativo.\",\r\n imageStat: \"1.9\",\r\n imageStatSuffix: x,\r\n imageCopy: \"Marcas com maior crescimento têm 1.9 vezes mais probabilidades de ter objetivos de talento relacionados com o DEI do que marcas de crescimento negativo.\",\r\n chartHeading: \"Onde estão as marcas com maior crescimento a medir o DEI\",\r\n downloadButtonLabel: \"DESCARREGAR ESTE GRÁFICO (jpg)\",\r\n chartDownloadTitle: \"Marketing autenticamente inclusivo\",\r\n chartFootnote: \"A sua organização estabeleceu métricas de desempenho importantes para qualquer um dos seguintes objetivos do DEI?\",\r\n },\r\n intelligentSection: {\r\n heading: \"Construir o motor criativo inteligente\",\r\nanalyticsHeading: \"Construir o motor criativo inteligente\",\r\ndescription: \"A maioria da força de trabalho com formação universitária mudou para o trabalho remoto durante a pandemia. Os profissionais de marketing podem integrar este novo pool de talentos para preencher lacunas de habilidades, trazer pensamentos diferentes e aproximar-se geograficamente dos seus parceiros de negócios.\",\r\nlinkLabel: \"LEIA A TENDÊNCIA COMPLETA\",\r\npageAnchorLink: \"https://www2.deloitte.com/us/en/insights/topics/marketing-and-sales-operations/global-marketing-trends/2022/finding-unconventional-talent-to-redesign-your-marketing-strategy.html\",\r\nimageAltText: \"63% dos colaboradores com formação universitária estão a trabalhar remotamente.\",\r\n imageStat: \"63\",\r\n imageStatSuffix: %,\r\n imageCopy: \"dos colaboradores com formação universitária estão a trabalhar remotamente\",\r\n chartHeading: \"O que está a contribuir para um maior desempenho dos colaboradores?\",\r\n downloadButtonLabel: \"DESCARREGAR ESTE GRÁFICO (jpg)\",\r\n chartDownloadTitle: \"Construir o motor criativo inteligente\",\r\n chartFootnote: \"Tendo em conta o desempenho, selecione as competências que acredita serem responsáveis pelo seu crescimento.\",\r\n },\r\n cookielessSection: {\r\n heading: \"Conhecer clientes num mundo sem cookies\",\r\nanalyticsHeading: \"Conhecer clientes num mundo sem cookies\",\r\ndescription: \"As organizações líderes estão a repensar o marketing de clientes e a estratégia de dados num mundo digital em rápida mutação que se irá deslocar cada vez mais para estratégias de dados em primeira mão.\",\r\nlinkLabel: \"LEIA A TENDÊNCIA COMPLETA\",\r\npageAnchorLink: \"https://www2.deloitte.com/us/en/insights/topics/marketing-and-sales-operations/global-marketing-trends/2022/the-future-of-marketing-in-a-third-party-cookieless-world.html\",\r\nimageAltText: \"61% das marcas com maior crescimento estão a mudar para uma estratégia de dados em primeira mão.\",\r\n imageStat: \"61\",\r\n imageStatSuffix: %,\r\n imageCopy: \"das marcas com maior crescimento estão a mudar para uma estratégia de dados em primeira mão.\",\r\n chartHeading: \"Veja qual a percentagem de empresas com maior crescimento que estão a liderar a mudança para uma estratégia de dados em primeira mão\",\r\n downloadButtonLabel: \"DESCARREGAR ESTE GRÁFICO (jpg)\",\r\n chartDownloadTitle: \"Conhecer clientes num mundo sem cookies\",\r\n chartFootnote: \"A sua organização planeia mudar a sua estratégia de dados?\",\r\n },\r\n humanFirstSection: {\r\n heading: \"Desenhar uma experiência mais humana\",\r\nanalyticsHeading: \"Desenhar uma experiência mais humana\",\r\ndescription: \"Há um equilíbrio delicado entre ser útil e invasivo quando se trata de dados do consumidor. Para os profissionais de marketing, isto significa desenhar cuidadosamente experiências orientadas que gerem confiança e criem valor para o cliente.\",\r\nlinkLabel: \"LEIA A TENDÊNCIA COMPLETA\",\r\npageAnchorLink: \"https://www2.deloitte.com/us/en/insights/topics/marketing-and-sales-operations/global-marketing-trends/2022/using-customer-data-to-build-trust-helpful-or-creepy.html\",\r\nimageAltText: \"53% dos consumidores indica que a monitorização ativa dos seus disposítivos é \\\"assustadora\\\".\",\r\n imageStat: \"53\",\r\n imageStatSuffix: %,\r\n imageCopy: \"dos consumidores indica que a monitorização ativa dos seus disposítivos é \\\"assustadora\\\".\",\r\n chartHeading: \"Classificámos 10 cenários que envolvem dados pessoais, e pedimos aos consumidores que indicassem o quão \\\"útil\\\" ou \\\"assustador\\\" deles é cada um deles\",\r\n chartSubHeading: \"Selecione uma prática para ver como os consumidores se sentem:\",\r\n downloadButtonLabel: \"DESCARREGAR ESTE GRÁFICO (jpg)\",\r\n chartDownloadTitle: \"Desenhar uma experiência mais humana\",\r\n chartFootnote: [`Por favor indique o quão \"útil\" ou \"assustador\" lhe parece cada cenário.`,
,`As pontuações são calculadas subtraindo a percentagem que indicou que o cenário é assustador das que o indicaram como útil.`],\r\n },\r\n hybridSection: {\r\n heading: \"Elevar a experiência híbrida\",\r\nanalyticsHeading: \"Elevar a experiência híbrida\",\r\ndescription: \"Os executivos estão à procura de experiências híbridas para criar mais personalização, inovação e ligação. Os consumidores, especialmente os mais jovens, estão a interagir com as marcas e a comprá-las em canais emergentes.\",\r\nlinkLabel: \"LEIA A TENDÊNCIA COMPLETA\",\r\npageAnchorLink: \"https://www2.deloitte.com/us/en/insights/topics/marketing-and-sales-operations/global-marketing-trends/2022/hybrid-experiences-with-human-centered-design.html\",\r\nimageAltText: \"75% dos executivos disseram que vão investir em mais experiências híbridas nos próximos 12 meses\",\r\n imageStat: \"75\",\r\n imageStatSuffix: %,\r\n imageCopy: \"dos executivos disseram que vão investir em mais experiências híbridas nos próximos 12 meses.\",\r\n chartHeading: \"Principais razões pelas quais as marcas estão a investir mais em experiências híbridas\",\r\n downloadButtonLabel: \"DESCARREGAR ESTE GRÁFICO (jpg)\",\r\n chartDownloadTitle: \"Elevar a experiência híbrida\",\r\n chartFootnote: \"Por que está a aumentar o investimento em experiências híbridas?\",\r\n },\r\n superChargeSection: {\r\n heading: \"Serviço de super atendimento ao cliente com Inteligência Artificial\",\r\nanalyticsHeading: \"Serviço de super atendimento ao cliente com Inteligência Artificial\",\r\ndescription: \"As marcas podem combinar Inteligência Artificial e serviço ao cliente para proporcionar uma verdadeira experiência de ponta a ponta.\",\r\nlinkLabel: \"LEIA A TENDÊNCIA COMPLETA\",\r\npageAnchorLink: \"https://www2.deloitte.com/us/en/insights/topics/marketing-and-sales-operations/global-marketing-trends/2022/end-to-end-customer-experience-ai.html\",\r\nimageAltText: \"Ofertas oportunas e atendimento ao cliente experiente são os mais úteis para a experiência de compra .\",\r\n imageStat: \"\",\r\n imageStatSuffix: \"\",\r\n imageCopy: <>Ofertas oportunas e atendimento ao cliente experiente são os mais úteis para a experiência de compra.,\r\n chartHeading: \"Explore que táticas são mais úteis aos consumidores para fazer compras em oito categorias de produtos diferentes.\",\r\n downloadButtonLabel: \"DESCARREGAR ESTE GRÁFICO (jpg)\",\r\n chartDownloadTitle: \"Serviço de super atendimento ao cliente com Inteligência Artificial\",\r\n chartFootnote: \"Alguma das seguintes opções o ajudou a tomar a sua decisão de compra?\",\r\n },\r\n trendArchivesSection: {\r\n heading: \"Leia o relatório completo ou uma versão especializada do relatório Global Marketing Trends 2022\",\r\n buttonLabel: \"DESCARREGAR O RELATÓRIO\",\r\n moreButtonLabel: \"À PROCURA DE MAIS?\",\r\n moreButtonLabelEnd: \"EXPLORE OS ARQUIVOS DE GLOBAL MARKETING TRENDS\",\r\n },\r\n methodologySection: {\r\n lgText: \"Para assegurar uma compreensão global relevante e interteórica do marketing e da experiência do cliente, foram realizados dois inquéritos globais e 18 entrevistas com executivos globais.\",\r\n colOnePara: \"O Global Marketing Trends Executive Survey sondou 1.099 executivos de C-level de empresas globais localizadas nos Estados Unidos, Reino Unido, França, Japão, e Países Baixos em Abril de 2021. Este inquérito questionou: o chefe executivo, marketing, informação, finanças, operacionais, legais e responsáveis de recursos humanos as suas ideias sobre uma variedade de tópicos que impulsionam a evolução da função de marketing. Como este relatório é focado nos líderes de marketing e de experiência do cliente, 50% dos inquiridos eram compostos por chefes de marketing ou com títulos semelhantes (tais como chefe de experiência e chefe de crescimento), com uma distribuição quase igual entre as outras funções de C-level.\",\r\n colTwoParaOne: \"O Global Marketing Trends Consumer Survey sondou 11.500 consumidores globais, com idade igual ou superior a 18 anos, em Maio de 2021 em 19 países: Estados Unidos, Canadá, México, Brasil, Chile, África do Sul, Suécia, Reino Unido, Itália, Irlanda, França, Espanha, Turquia, Suíça, Dinamarca, Portugal, Japão, Índia, e China.\",\r\n colTwoParaTwo: \"Separadamente, foram realizadas entrevistas ao longo de 2021 que envolveram 18 executivos que desempenham ou desempenhavam funções de chefe de marketing, experiência de cliente, ou de diretor executivo. Os seus testemunhos foram fundamentais para prever as tendências incluídas neste relatório.\",\r\n },\r\n formPage: {\r\n headline: \"Download a specialized data insights report\",\r\n subhead: \"Gain immediate access to detailed data customized to your interests\",\r\n }\r\n },\r\n]","export default __webpack_public_path__ + \"static/media/down-chevron.ac487c10.svg\";","import styled from 'styled-components'\r\nimport { colors, Container, device, mobileTypeScale, typeScale } from '../../assets/styles'\r\nimport SelectDownArrow from '../../assets/images/down-chevron.svg'\r\n\r\nexport const GlanceMain = styled.section`\r\n display: flex;\r\n flex-direction: column;\r\n padding: 32px 0;\r\n background: ${colors.blue200};\r\n \r\n @media ${device.tablet} {\r\n flex-direction: row;\r\n padding: 96px 0 50px;\r\n }\r\n\r\n .eyebrow {\r\n margin-bottom: 10px;\r\n @media ${device.tablet} {\r\n margin-bottom: 20px;\r\n }\r\n }\r\n\r\n // Keep content on top of background image\r\n ${Container} {\r\n position: relative;\r\n z-index: 2;\r\n }\r\n`\r\n\r\nexport const GlanceCopy = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n margin-bottom: 20px;\r\n\r\n @media ${device.tablet} {\r\n width: 45%;\r\n }\r\n\r\n h4 {\r\n margin-bottom: 75px;\r\n font-size: ${mobileTypeScale.h4};\r\n line-height: 40px;\r\n\r\n @media ${device.tablet} {\r\n margin-bottom: 0;\r\n max-width: 440px;\r\n font-size: ${typeScale.h4};\r\n line-height: 46px;\r\n }\r\n }\r\n`\r\n\r\nexport const GlanceSurvey = styled.div`\r\n width: 100%;\r\n @media ${device.tablet} {\r\n width: 55%;\r\n }\r\n`\r\n\r\nexport const GlanceHeader = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n \r\n @media ${device.tablet} {\r\n flex-direction: row;\r\n justify-content: space-between;\r\n align-items: center;\r\n > div {\r\n width: 50%;\r\n }\r\n }\r\n\r\n h4 {\r\n #root & { \r\n margin-bottom: 26px;\r\n }\r\n @media ${device.tablet} {\r\n #root & { \r\n max-width: 210px;\r\n margin-bottom: 0;\r\n }\r\n }\r\n }\r\n`\r\n\r\nexport const GlanceSelect = styled.div`\r\n\tdisplay: block;\r\n height: 60px;\r\n margin: 10px 0 0;\r\n\tmax-width: 100%;\r\n padding: 10px 20px;\r\n\twidth: 100%;\r\n\tappearance: none;\r\n\tbackground-color: ${colors.white};\r\n\tbackground-image: url(${SelectDownArrow});\r\n\tbackground-repeat: no-repeat;\r\n\tbackground-position: right 20px top 25px;\r\n\tbackground-size: 20px 10px;\r\n border: none;\r\n border-radius: 32px;\r\n box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.04);\r\n box-sizing: border-box;\r\n font-size: 1rem;\r\n\r\n @media ${device.tablet} {\r\n width: 50%;\r\n }\r\n`\r\n\r\nexport const GlanceChart = styled.div`\r\n position: relative;\r\n width: 100%;\r\n\r\n .chart {\r\n /* max-width: 850px; */\r\n /* border-left: 1px solid ${colors.charcoal}; */\r\n }\r\n\r\n .apexcharts-bar-series.apexcharts-plot-series {\r\n width: 100%;\r\n }\r\n`\r\n\r\nexport const GlanceTabsWrapper = styled.div`\r\n\r\n`\r\n\r\nexport const TabControls = styled.ul`\r\n position: relative;\r\n display: flex;\r\n padding: 0;\r\n border-bottom: 2px solid ${colors.midGray};\r\n list-style: none;\r\n \r\n\r\n .sliding-border {\r\n position: absolute;\r\n bottom: -5px;\r\n left: 2px;\r\n height: 8px;\r\n margin: 0;\r\n width: 50%;\r\n background: ${colors.green100};\r\n transition: left 0.25s ease-in-out;\r\n z-index: 1;\r\n }\r\n`\r\n\r\nexport const TabButton = styled.button`\r\n display: flex;\r\n flex-direction: column;\r\n padding: 16px;\r\n width: 100%;\r\n background: none;\r\n border: none;\r\n color: ${colors.black};\r\n cursor: pointer;\r\n font-size: ${typeScale.paragraph};\r\n line-height: 1.4;\r\n text-align: left;\r\n\r\n #root & {\r\n &:hover, &:focus {\r\n background: none;\r\n }\r\n } \r\n\r\n @media ${device.tablet} {\r\n flex-direction: row;\r\n align-items: center;\r\n padding: 20px 25px;\r\n }\r\n\r\n @media(hover: hover) and (pointer: fine) {\r\n &:hover {\r\n background: ${colors.blue200};\r\n }\r\n }\r\n\r\n span {\r\n display: inline-block;\r\n font-size: ${mobileTypeScale.largeNumber};\r\n\r\n @media ${device.tablet} {\r\n padding-right: 16px;\r\n font-size: ${typeScale.largeNumber};\r\n }\r\n }\r\n`\r\n\r\nexport const TabHeading = styled.li`\r\n width: 50%;\r\n border-bottom: 3px solid ${colors.lightGray};\r\n\r\n &.current {\r\n &:first-of-type {\r\n &~ .sliding-border {\r\n left: 0;\r\n }\r\n }\r\n &:nth-of-type(2) {\r\n &~ .sliding-border {\r\n left: 50%;\r\n }\r\n }\r\n }\r\n`\r\n\r\nexport const TabPanel = styled.div`\r\n padding: 60px 0 0;\r\n`\r\n","import React, { useState, useEffect } from \"react\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\n\r\nconst RespondentsChart = (props) => {\r\n\r\n const [dataSeries, setDataSeries] = useState(props.dataSeries);\r\n const [dataLabels, setDataLabels] = useState(props.dataLabels);\r\n const [chartData, setChartData] = useState();\r\n\r\n const chartColors = [\r\n \"#2E747F\",\r\n \"#245F63\",\r\n \"#000000\",\r\n \"#414042\",\r\n \"#737373\",\r\n \"#005587\",\r\n \"#041E42\",\r\n \"#2E747F\",\r\n \"#245F63\",\r\n \"#000000\",\r\n \"#414042\",\r\n \"#737373\",\r\n \"#005587\",\r\n \"#041E42\",\r\n \"#2E747F\",\r\n \"#245F63\",\r\n \"#000000\",\r\n \"#414042\",\r\n \"#737373\",\r\n \"#005587\",\r\n \"#041E42\",\r\n ]\r\n\r\n const chartOpts = {\r\n chart: {\r\n type: \"bar\",\r\n stacked: true,\r\n stackType: '100%',\r\n toolbar: {\r\n show: false,\r\n },\r\n // events: {\r\n // mounted: (chart) => {\r\n // chart.windowResizeHandler();\r\n // },\r\n // },\r\n },\r\n dataLabels: {\r\n enabled: true,\r\n formatter: function (val, opt) {\r\n return `${Math.round(val)}%`;\r\n },\r\n style: {\r\n fontSize: \"15px\",\r\n },\r\n offsetX: -58,\r\n },\r\n \r\n plotOptions: {\r\n bar: {\r\n horizontal: true,\r\n dataLabels: {\r\n position: \"bottom\",\r\n hideOverflowingLabels: false,\r\n },\r\n },\r\n },\r\n fill: {\r\n colors: chartColors,\r\n },\r\n tooltip: {\r\n enabled: false,\r\n },\r\n grid: {\r\n show: false,\r\n },\r\n legend: {\r\n position: 'bottom',\r\n horizontalAlign: 'left',\r\n offsetX: -8,\r\n markers: {\r\n fillColors: chartColors,\r\n }\r\n },\r\n xaxis: {\r\n labels: {\r\n show: false,\r\n },\r\n axisBorder: {\r\n show: false,\r\n },\r\n },\r\n yaxis: {\r\n labels: {\r\n show: false,\r\n },\r\n axisBorder: {\r\n show: false,\r\n },\r\n },\r\n };\r\n\r\n useEffect( () => {\r\n setDataSeries(props.dataSeries);\r\n setDataLabels(props.dataLabels);\r\n\r\n if(props.dataSeries && props.dataLabels) {\r\n const chartDataArray = [];\r\n for( let i = 0; i < props.dataSeries.length; i++ ) {\r\n const dataPoint = {\r\n name: `${props.dataLabels[i]} (${Math.round(props.dataSeries[i])}%)`,\r\n data: [props.dataSeries[i]],\r\n }\r\n chartDataArray.push(dataPoint);\r\n }\r\n setChartData(chartDataArray);\r\n }\r\n\r\n }, [props.dataLabels, props.dataSeries]);\r\n\r\n if(chartData && chartOpts) {\r\n return (\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n};\r\n\r\nexport default RespondentsChart;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\nimport $ from 'jquery';\r\n\r\nconst RespondentsMobileChart = (props) => {\r\n\r\n const [dataSeries, setDataSeries] = useState(props.dataSeries);\r\n const [dataLabels, setDataLabels] = useState(props.dataLabels);\r\n const [options, setOptions] = useState();\r\n const [chartHeight, setChartHeight] = useState(800);\r\n\r\n useEffect( () => {\r\n setDataSeries(props.dataSeries);\r\n setDataLabels(props.dataLabels);\r\n\r\n if(props.dataSeries && props.dataLabels) {\r\n\r\n const chartColors = [\r\n \"#2E747F\",\r\n \"#245F63\",\r\n \"#000000\",\r\n \"#414042\",\r\n \"#737373\",\r\n \"#005587\",\r\n \"#041E42\",\r\n \"#2E747F\",\r\n \"#245F63\",\r\n \"#000000\",\r\n \"#414042\",\r\n \"#737373\",\r\n \"#005587\",\r\n \"#041E42\",\r\n \"#2E747F\",\r\n \"#245F63\",\r\n \"#000000\",\r\n \"#414042\",\r\n \"#737373\",\r\n \"#005587\",\r\n \"#041E42\",\r\n ]\r\n\r\n const chartOpts = {\r\n chart: {\r\n type: \"bar\",\r\n height: 1000,\r\n sparkline: {\r\n enabled: true,\r\n },\r\n },\r\n dataLabels: {\r\n enabled: true,\r\n formatter: function (val, opt) {\r\n return opt.w.globals.labels[opt.dataPointIndex] + \": \" + Math.round(val) + \"%\";\r\n },\r\n style: {\r\n colors: ['#000'],\r\n fontSize: \"14px\",\r\n },\r\n textAnchor: 'start',\r\n offsetX: -65,\r\n offsetY: -35,\r\n },\r\n plotOptions: {\r\n bar: {\r\n horizontal: true,\r\n distributed: true,\r\n barHeight: '60%',\r\n columnWidth: \"100%\",\r\n dataLabels: {\r\n position: 'bottom',\r\n },\r\n },\r\n },\r\n colors: chartColors,\r\n tooltip: {\r\n enabled: false,\r\n },\r\n xaxis: {\r\n labels: {\r\n show: false,\r\n },\r\n axisBorder: {\r\n show: false,\r\n },\r\n },\r\n yaxis: {\r\n labels: {\r\n show: false,\r\n },\r\n axisBorder: {\r\n show: false,\r\n },\r\n },\r\n }\r\n chartOpts.xaxis.categories = props.dataLabels;\r\n setOptions( chartOpts );\r\n setChartHeight( 85 * props.dataSeries.length );\r\n setTimeout(()=>{\r\n $('#glance .apexcharts-data-labels text').attr('x',0)\r\n })\r\n }\r\n }, [props.dataLabels, props.dataSeries]);\r\n\r\n useEffect(()=>{\r\n setInterval(()=>{\r\n if($(window).width()<769)\r\n $('#glance .apexcharts-data-labels text').attr('x',0)\r\n })\r\n })\r\n\r\n\r\n\r\n if(dataSeries && options) {\r\n return (\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n\r\n};\r\n\r\nexport default RespondentsMobileChart;\r\n","import { useState, useEffect } from \"react\";\r\nimport {\r\n GlanceTabsWrapper,\r\n TabButton,\r\n TabControls,\r\n TabHeading,\r\n TabPanel,\r\n} from \"./GlanceStyles\";\r\n\r\nconst GlanceTabs = ({ children, initialTab, handleSetFilterType }) => {\r\n const [activeTab, setActiveTab] = useState(children[0].props.label);\r\n\r\n const handleClick = (e, newActiveTab) => {\r\n e.preventDefault();\r\n setActiveTab(newActiveTab);\r\n handleSetFilterType( newActiveTab === \"tab1\" ? \"exec\" : \"consumer\",e );\r\n };\r\n\r\n useEffect(() => {\r\n if (initialTab) {\r\n setActiveTab(initialTab);\r\n }\r\n }, [initialTab]);\r\n\r\n return (\r\n \r\n \r\n {children.map((tab) => {\r\n const label = tab.props.label;\r\n return (\r\n \r\n {\r\n handleClick(e, label);\r\n }}\r\n >\r\n {tab.props.numberOfSurveyed}\r\n {tab.props.surveyedGroupName}\r\n \r\n \r\n );\r\n })}\r\n
  • \r\n \r\n {children.map((tabPanel) => {\r\n if (tabPanel.props.label === activeTab)\r\n return (\r\n \r\n {tabPanel.props.children}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nexport default GlanceTabs;\r\n","export const exec_filters = [\r\n {\r\n key: '',\r\n label: 'Selecionar',\r\n subfilters: [\r\n ],\r\n },\r\n {\r\n key: 'Q4',\r\n label: 'Tipo',\r\n subfilters: [\r\n {\r\n key: '',\r\n label: 'Total',\r\n },\r\n {\r\n key: 4,\r\n label: \"CMO\",\r\n },\r\n {\r\n key: 6,\r\n label: \"COO\",\r\n },\r\n {\r\n key: 5,\r\n label: \"CHRO\",\r\n },\r\n {\r\n key: 7,\r\n label: \"CLO\",\r\n },\r\n {\r\n key: 1,\r\n label: \"CEO\",\r\n },\r\n {\r\n key: 2,\r\n label: \"CFO\",\r\n },\r\n {\r\n key: 3,\r\n label: \"CIO\",\r\n },\r\n ],\r\n },\r\n {\r\n key: 'Q4b',\r\n label: 'Tipo',\r\n subfilters: [\r\n {\r\n key: '',\r\n label: 'Total',\r\n },\r\n {\r\n key: 1,\r\n label: \"CMO\",\r\n },\r\n {\r\n key: 2,\r\n label: \"Restantes C-suite\",\r\n },\r\n ],\r\n },\r\n {\r\n key: 'Q2',\r\n label: 'Indústria',\r\n subfilters: [\r\n {\r\n key: '',\r\n label: 'Total',\r\n },\r\n {\r\n key: 1,\r\n label: \"Consumidor\",\r\n },\r\n {\r\n key: 6,\r\n label: \"Meios tecnológicos e telecomunicações\",\r\n },\r\n {\r\n key: 3,\r\n label: \"Serviços financeiros\",\r\n },\r\n {\r\n key: 4,\r\n label: \"Saúde e ciências da vida\",\r\n },\r\n {\r\n key: 2,\r\n label: \"Recursos energéticos e industriais\",\r\n },\r\n // {\r\n // key: 5,\r\n // label: \"Government and public sector\",\r\n // },\r\n ],\r\n },\r\n {\r\n key: 'Q2b',\r\n label: 'Indústria',\r\n subfilters: [\r\n {\r\n key: '',\r\n label: 'Total',\r\n },\r\n {\r\n key: 1,\r\n label: \"Consumidor\",\r\n },\r\n {\r\n key: 6,\r\n label: \"Meios tecnológicos e telecomunicações\",\r\n },\r\n {\r\n key: 3,\r\n label: \"Serviços financeiros\",\r\n },\r\n {\r\n key: 4,\r\n label: \"Saúde e ciências da vida\",\r\n },\r\n {\r\n key: 2,\r\n label: \"Recursos energéticos e industriais\",\r\n },\r\n {\r\n key: 5,\r\n label: \"Setor público\",\r\n },\r\n ],\r\n },\r\n {\r\n key: 'Country',\r\n label: 'País',\r\n subfilters: [\r\n {\r\n key: '',\r\n label: 'Total',\r\n },\r\n {\r\n key: 'EUA',\r\n label: 'Estados Unidos da América',\r\n },\r\n {\r\n key: 'UK',\r\n label: 'Reino Unido',\r\n },\r\n {\r\n key: 'Holanda',\r\n label: 'Holanda',\r\n },\r\n {\r\n key: 'França',\r\n label: 'França',\r\n },\r\n {\r\n key: 'Japão',\r\n label: 'Japão',\r\n },\r\n ],\r\n },\r\n\r\n {\r\n key: 'Q6',\r\n label: 'Negócio',\r\n subfilters: [\r\n {\r\n key: 3,\r\n label: \"Mistura de B2B/B2C\",\r\n },\r\n {\r\n key: 1,\r\n label: \"B2B\",\r\n },\r\n {\r\n key: 2,\r\n label: \"B2C\",\r\n },\r\n ],\r\n },\r\n {\r\n key: 'Q5',\r\n label: 'Receita anual',\r\n subfilters: [\r\n {\r\n key: '',\r\n label: 'Total',\r\n },\r\n {\r\n key: 1,\r\n label: 'Superior a $5 mil milhões',\r\n },\r\n {\r\n key: 2,\r\n label: 'Inferior a $5 mil milhões',\r\n },\r\n // {\r\n // key: 1,\r\n // label: 'Less than $250 million',\r\n // },\r\n // {\r\n // key: 2,\r\n // label: '$250 million to less than $500 million',\r\n // },\r\n // {\r\n // key: 3,\r\n // label: '$500 million to less than $1 billion',\r\n // },\r\n // {\r\n // key: 4,\r\n // label: '$1 billion to less than $5 billion',\r\n // },\r\n // {\r\n // key: 5,\r\n // label: '$5 billion to less than $25 billion',\r\n // },\r\n // {\r\n // key: 6,\r\n // label: '$25 billion or more',\r\n // },\r\n ],\r\n },\r\n];\r\n\r\nexport const consumer_filters = [\r\n {\r\n key: '',\r\n label: 'Selecionar',\r\n subfilters: [\r\n ],\r\n },\r\n {\r\n key: 'Q2',\r\n label: 'Faixa etária',\r\n subfilters: [\r\n {\r\n key: '',\r\n label: 'Total',\r\n },\r\n {\r\n key: 1,\r\n label: \"18-25\",\r\n },\r\n {\r\n key: 2,\r\n label: \"26-45\",\r\n },\r\n {\r\n key: 3,\r\n label: \"46+\",\r\n },\r\n ],\r\n },\r\n {\r\n key: 'Q1',\r\n label: 'Género',\r\n subfilters: [\r\n {\r\n key: '',\r\n label: 'Total',\r\n },\r\n {\r\n key: 1,\r\n label: \"Masculino\",\r\n },\r\n {\r\n key: 2,\r\n label: \"Feminino\",\r\n },\r\n {\r\n key: 3,\r\n label: \"Prefiro não dizer\",\r\n },\r\n ],\r\n },\r\n {\r\n key: 'Q8',\r\n label: 'Grau académico',\r\n subfilters: [\r\n {\r\n key: '',\r\n label: 'Total',\r\n },\r\n {\r\n key: 1,\r\n label: \"9º ano\",\r\n },\r\n {\r\n key: 2,\r\n label: \"Ensino secundário\",\r\n },\r\n {\r\n key: 3,\r\n label: \"Bacharelato\",\r\n },\r\n {\r\n key: 4,\r\n label: \"Licenciatura\",\r\n },\r\n {\r\n key: 5,\r\n label: \"Pós-graduação\",\r\n },\r\n {\r\n key: 6,\r\n label: \"Outro\",\r\n },\r\n ],\r\n },\r\n {\r\n key: 'HCountry',\r\n label: 'País',\r\n subfilters: [\r\n {\r\n key: '',\r\n label: 'Total',\r\n },\r\n {\r\n key: 1,\r\n label: \"EUA\",\r\n },\r\n {\r\n key: 2,\r\n label: \"Reino Unido\",\r\n },\r\n {\r\n key: 3,\r\n label: \"México\",\r\n },\r\n {\r\n key: 4,\r\n label: \"China\",\r\n },\r\n {\r\n key: 5,\r\n label: \"África do Sul\",\r\n },\r\n {\r\n key: 6,\r\n label: \"França\",\r\n },\r\n {\r\n key: 7,\r\n label: \"Japão\",\r\n },\r\n {\r\n key: 8,\r\n label: \"Canadá\",\r\n },\r\n {\r\n key: 9,\r\n label: \"Brasil\",\r\n },\r\n {\r\n key: 10,\r\n label: \"Chile\",\r\n },\r\n {\r\n key: 11,\r\n label: \"Dinamarca\",\r\n },\r\n {\r\n key: 12,\r\n label: \"Irlanda\",\r\n },\r\n {\r\n key: 13,\r\n label: \"Itália\",\r\n },\r\n {\r\n key: 14,\r\n label: \"Portugal\",\r\n },\r\n {\r\n key: 15,\r\n label: \"Espanha\",\r\n },\r\n {\r\n key: 16,\r\n label: \"Suécia\",\r\n },\r\n {\r\n key: 17,\r\n label: \"Suíça\",\r\n },\r\n {\r\n key: 18,\r\n label: \"Turquia\",\r\n },\r\n // {\r\n // key: 19,\r\n // label: \"Australia\",\r\n // },\r\n {\r\n key: 20,\r\n label: \"Índia\",\r\n },\r\n ],\r\n },\r\n]","import React, { useEffect, useState } from \"react\";\r\nimport { CMOFilter, Container, Eyebrow } from \"../../assets/styles\";\r\nimport InputLabel from '@mui/material/InputLabel';\r\nimport MenuItem from \"@mui/material/MenuItem\";\r\nimport FormControl from \"@mui/material/FormControl\";\r\nimport { SelectCarat } from \"../../assets/images/icons/Filters\";\r\nimport { visuallyHidden } from '@mui/utils'\r\nimport { page_copy } from '../../assets/data/PageCopy'\r\nimport {\r\n GlanceMain,\r\n GlanceCopy,\r\n GlanceSurvey,\r\n GlanceHeader,\r\n GlanceChart,\r\n} from \"./GlanceStyles\";\r\nimport RespondentsChart from \"./RespondentsChartDesktop\";\r\nimport RespondentsMobileChart from \"./RespondentsChartMobile\";\r\nimport GlanceTabs from \"./GlanceTabs\";\r\n\r\nimport { exec_filters, consumer_filters } from \"../../assets/data/Filters\";\r\nimport executiveData from \"../../assets/data/exec_data.json\";\r\nimport consumerData from \"../../assets/data/consumer_data.json\";\r\n\r\nconst exec_filter_opts = [\r\n {\r\n key: 'Q4',\r\n label: 'Função',\r\n },\r\n {\r\n key: 'Country',\r\n label: 'País',\r\n },\r\n {\r\n key: 'Q2b',\r\n label: 'Indústria',\r\n },\r\n {\r\n key: 'Q6',\r\n label: 'Negócio',\r\n },\r\n {\r\n key: 'Q5',\r\n label: 'Receita Anual',\r\n },\r\n {\r\n key: 'Q9',\r\n label: 'Crescimento Anual',\r\n },\r\n]\r\n\r\nconst consumer_filter_opts = [\r\n {\r\n key: 'Q2',\r\n label: 'Faixa Etária',\r\n },\r\n {\r\n key: 'Q1',\r\n label: 'Género',\r\n },\r\n {\r\n key: 'Q8',\r\n label: 'Grau Académico',\r\n },\r\n {\r\n key: 'HCountry',\r\n label: 'País',\r\n },\r\n]\r\n\r\nconst Glance = (props, query) => {\r\n\r\n const [dataSeries, setDataSeries] = useState();\r\n const [dataLabels, setDataLabels] = useState();\r\n const [activeFilter, setActiveFilter] = useState(exec_filter_opts[0]);\r\n const [activeFilterType, setActiveFilterType] = useState(\"exec\");\r\n const [filterOpts, setFilterOpts] = useState(exec_filter_opts);\r\n const [isDesktop, setDesktop] = useState(false);\r\n\r\n const handleExecFilterChange = (event) => {\r\n const {\r\n target: { value },\r\n } = event;\r\n const tabName = 'At-a-glance:'+filterOpts.filter(filterOpt => filterOpt.key === value)[0].label\r\n console.log(tabName)\r\n window.showAnalytics(tabName,event);\r\n setActiveFilter(filterOpts.filter(filterOpt => filterOpt.key === value)[0]);\r\n }\r\n\r\n const handleSetFilterType = (filterType = \"exec\",event) => {\r\n setActiveFilterType(filterType);\r\n let tabName = 'At-a-glance:tab-executive-data'\r\n if (filterType === \"exec\") {\r\n setActiveFilter(exec_filter_opts[0]);\r\n setFilterOpts(exec_filter_opts)\r\n } else {\r\n tabName = 'At-a-glance:tab-consumer-data'\r\n setActiveFilter(consumer_filter_opts[0]);\r\n setFilterOpts(consumer_filter_opts)\r\n }\r\n console.log(tabName,event)\r\n window.showAnalytics(tabName,event);\r\n }\r\n\r\n useEffect(() => {\r\n\r\n // Empty arrays for label and data info\r\n const labelArray = [];\r\n const dataArray = [];\r\n\r\n // Set up the chart data\r\n if (activeFilterType === \"exec\") {\r\n // Set up executive chart data\r\n if (activeFilter.key === \"Q5\") {\r\n // Split into above or below 5 Billion\r\n const belowExecs = executiveData.filter(executive => executive[\"Q5\"] === \"2\" || executive[\"Q5\"] === \"3\");\r\n const aboveExecs = executiveData.filter(executive => parseInt(executive[\"Q5\"]) >= 4);\r\n dataArray.push( belowExecs.length / executiveData.length * 100 );\r\n dataArray.push( aboveExecs.length / executiveData.length * 100 );\r\n labelArray.push(\"$250M - $1B\", \"+1B\");\r\n } else if (activeFilter.key === \"Q9\") {\r\n // Calculate Positive and negative growth\r\n const negGrowth = executiveData.filter(executive => parseInt(executive[\"Q9\"]) <= 0);\r\n const midGrowth = executiveData.filter(executive => parseInt(executive[\"Q9\"]) <= 10 && parseInt(executive[\"Q9\"]) > 0);\r\n const posGrowth = executiveData.filter(executive => parseInt(executive[\"Q9\"]) > 10);\r\n dataArray.push( negGrowth.length / executiveData.length * 100 );\r\n dataArray.push( midGrowth.length / executiveData.length * 100 );\r\n dataArray.push( posGrowth.length / executiveData.length * 100 );\r\n labelArray.push(\"Negativo\", \"1-10%\", \"+10%\");\r\n } else {\r\n const filterInfo = exec_filters.filter(exec_filter => exec_filter.key === activeFilter.key)[0];\r\n filterInfo.subfilters.forEach(subfilter => {\r\n if (subfilter.key !== \"\") {\r\n let searchKey = activeFilter.key === \"Q2b\" ? \"Q2\" : activeFilter.key;\r\n const filterExecs = executiveData.filter(executive => executive[searchKey.toString()] === subfilter.key.toString());\r\n dataArray.push( filterExecs.length / executiveData.length * 100 );\r\n labelArray.push(subfilter.label);\r\n }\r\n });\r\n }\r\n } else {\r\n // Set up consumer chart data\r\n if (activeFilter.key === \"Q2\") {\r\n const youngConsumers = consumerData.filter(consumer => parseInt(consumer[\"Q2\"]) < 26);\r\n const midConsumers = consumerData.filter(consumer => (parseInt(consumer[\"Q2\"]) >= 26 && parseInt(consumer[\"Q2\"]) < 46));\r\n const oldConsumers = consumerData.filter(consumer => parseInt(consumer[\"Q2\"]) >= 46);\r\n dataArray.push( youngConsumers.length / consumerData.length * 100 );\r\n dataArray.push( midConsumers.length / consumerData.length * 100 );\r\n dataArray.push( oldConsumers.length / consumerData.length * 100 );\r\n labelArray.push(\"18-25\",\"26-46\",\"46+\");\r\n } else {\r\n const filterInfo = consumer_filters.filter(consumer_filter => consumer_filter.key === activeFilter.key)[0];\r\n filterInfo.subfilters.forEach(subfilter => {\r\n if (subfilter.key !== \"\") {\r\n const filterConsumers = consumerData.filter(consumer => consumer[activeFilter.key.toString()] === subfilter.key.toString());\r\n dataArray.push( filterConsumers.length / consumerData.length * 100 );\r\n labelArray.push(subfilter.label);\r\n }\r\n });\r\n }\r\n }\r\n\r\n setDataSeries(dataArray);\r\n setDataLabels(labelArray);\r\n\r\n if (window.innerWidth > 768) {\r\n setDesktop(true);\r\n } else {\r\n setDesktop(false);\r\n }\r\n const updateMedia = () => {\r\n if (window.innerWidth > 768) {\r\n setDesktop(true);\r\n } else {\r\n setDesktop(false);\r\n }\r\n };\r\n\r\n window.addEventListener(\"resize\", updateMedia);\r\n return () => window.removeEventListener(\"resize\", updateMedia);\r\n }, [activeFilter, activeFilterType]);\r\n\r\n if (page_copy) {\r\n return (\r\n \r\n {page_copy.map(copy => (\r\n \r\n \r\n {copy.glanceSection.eyebrow}\r\n

    \r\n {copy.glanceSection.description}\r\n

    \r\n
    \r\n \r\n \r\n

    {copy.glanceSection.demographicsTitle}

    \r\n <>\r\n
    \r\n \r\n Filtrar por:\r\n <>Filtrar por: {activeFilter.label}}\r\n onChange={handleExecFilterChange}\r\n IconComponent={SelectCarat}\r\n >\r\n {\r\n filterOpts.map((filter_opt) => (\r\n {filter_opt.label}\r\n ))\r\n }\r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n {isDesktop ? : }\r\n \r\n
    \r\n
    \r\n ))}\r\n
    \r\n );\r\n }\r\n};\r\n\r\nexport default Glance;\r\n\r\nGlance.getInitialProps = ({ query }) => {\r\n return { query };\r\n};","import styled from 'styled-components'\r\nimport { colors, device } from '../../assets/styles';\r\n\r\nexport const HeroElm = styled.section`\r\n display: flex;\r\n flex-direction: column;\r\n padding: 50px 16px 32px;\r\n background: ${colors.blue200};\r\n\r\n @media ${device.tablet} {\r\n flex-direction: row;\r\n padding: 72px 0 0;\r\n }\r\n`;\r\n\r\nexport const HeroImg = styled.div`\r\n @media ${device.tablet} {\r\n padding-right: 40px;\r\n width: 50%;\r\n }\r\n img {\r\n position: relative;\r\n left: -55px;\r\n height: 100%;\r\n width: 100vw;\r\n object-fit: contain;\r\n @media ${device.tablet} {\r\n left: -150px;\r\n width: 100%;\r\n }\r\n }\r\n`;\r\n\r\nexport const HeroCopy = styled.div`\r\n padding-top: 40px;\r\n\r\n @media ${device.tablet} {\r\n padding-top: 60px;\r\n width: 50%;\r\n }\r\n\r\n h1, p {\r\n @media ${device.tablet} {\r\n max-width: 600px;\r\n }\r\n }\r\n\r\n .eyebrow {\r\n margin: 0 0 5px;\r\n }\r\n\r\n .h5 {\r\n margin-bottom: 20px;\r\n @media ${device.tablet} {\r\n margin-bottom: 45px;\r\n }\r\n }\r\n`;","export default __webpack_public_path__ + \"static/media/hero-image.dfab80f5.png\";","import React from 'react'\r\nimport { AnchorScrollButton, Eyebrow } from '../../assets/styles'\r\nimport { HeroCopy, HeroElm, HeroImg } from './HeroStyles'\r\nimport HeroBgImage from '../../assets/images/hero-image.png'\r\nimport { page_copy } from '../../assets/data/PageCopy'\r\n\r\nconst Hero = () => {\r\n if (page_copy) {\r\n return (\r\n \r\n \r\n {``}\r\n \r\n {page_copy.map((copy) => (\r\n \r\n \r\n {copy.hero.eyebrow}\r\n \r\n

    {copy.hero.mainHeading}

    \r\n

    {copy.hero.description}

    \r\n \r\n {copy.hero.buttonLabel}\r\n \r\n
    \r\n ))}\r\n
    \r\n )\r\n }\r\n}\r\n\r\nexport default Hero\r\n","import React from 'react'\r\nimport { GlobalStyles, Typography } from '../assets/styles'\r\n\r\nconst Layout = ({children}) => {\r\n return (\r\n <>\r\n \r\n \r\n {children}\r\n \r\n )\r\n}\r\n\r\nexport default Layout\r\n","import styled, { css } from 'styled-components'\r\nimport { colors, Container, device } from '../../assets/styles'\r\n\r\nconst activeAnchorStyles = css`\r\n background: ${colors.teal300};\r\n color: ${colors.white};\r\n /*font-family: openSansItalic;*/\r\n font-weight: 400;\r\n font-style: italic;\r\n text-decoration: none;\r\n`\r\n\r\nexport const TrendsMain = styled.section`\r\n padding: 32px 0;\r\n\r\n @media ${device.tablet} {\r\n padding: 96px 0 55px;\r\n }\r\n\r\n // Keep content on top of background image\r\n ${Container} {\r\n position: relative;\r\n z-index: 2;\r\n }\r\n`\r\n\r\nexport const TrendsAnchors = styled.ul`\r\n #root & {\r\n margin-top: 16px;\r\n\r\n @media ${device.tablet} {\r\n padding-left: 150px;\r\n }\r\n\r\n li {\r\n a {\r\n display: inline-flex;\r\n align-items: center;\r\n padding: 8px 0;\r\n transition: background-color 0.3s, color 0.3s;\r\n\r\n img {\r\n transition: filter 0.3s;\r\n }\r\n\r\n @media ${device.tablet} {\r\n padding: 16px;\r\n }\r\n\r\n &.active {\r\n ${activeAnchorStyles};\r\n }\r\n\r\n br {\r\n display: none;\r\n }\r\n \r\n @media(hover: hover) and (pointer: fine) {\r\n &:hover {\r\n ${activeAnchorStyles};\r\n\r\n img {\r\n filter: brightness(0) invert(1);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n`\r\n\r\nexport const TrendNumber = styled.div`\r\n #root & {\r\n display: inline-block;\r\n height: 32px;\r\n margin-right: 16px;\r\n min-width: 40px;\r\n width: 40px;\r\n\r\n @media ${device.tablet} {\r\n height: 42px;\r\n margin-right: 20px;\r\n min-width: 50px;\r\n width: 50px;\r\n }\r\n }\r\n`","export default __webpack_public_path__ + \"static/media/trend-1.e6c8df3a.svg\";","export default __webpack_public_path__ + \"static/media/trend-2.1937d7ca.svg\";","export default __webpack_public_path__ + \"static/media/trend-3.2a107701.svg\";","export default __webpack_public_path__ + \"static/media/trend-4.65b6c0cd.svg\";","export default __webpack_public_path__ + \"static/media/trend-5.0d284ac9.svg\";","export default __webpack_public_path__ + \"static/media/trend-6.ec6903e5.svg\";","export default __webpack_public_path__ + \"static/media/trend-7.7cf71775.svg\";","import React, { useState } from 'react'\r\nimport { Link } from 'react-scroll'\r\nimport { Container, Eyebrow } from '../../assets/styles'\r\nimport { TrendsAnchors, TrendsMain, TrendNumber } from './TrendsStyles'\r\nimport { page_copy } from '../../assets/data/PageCopy';\r\n// Images\r\nimport TrendOne from '../../assets/images/trend-1.svg'\r\nimport TrendTwo from '../../assets/images/trend-2.svg'\r\nimport TrendThree from '../../assets/images/trend-3.svg'\r\nimport TrendFour from '../../assets/images/trend-4.svg'\r\nimport TrendFive from '../../assets/images/trend-5.svg'\r\nimport TrendSix from '../../assets/images/trend-6.svg'\r\nimport TrendSeven from '../../assets/images/trend-7.svg'\r\n\r\nconst Trends = () => {\r\n const anchors = [\r\n {\r\n number: `${TrendOne}`,\r\n label: page_copy[0].growthSection.heading,\r\n analyticsLabel: page_copy[0].growthSection.analyticsHeading,\r\n anchorId: \"growing\",\r\n },\r\n {\r\n number: `${TrendTwo}`,\r\n label: page_copy[0].deiSection.heading,\r\n analyticsLabel: page_copy[0].deiSection.analyticsHeading,\r\n anchorId: \"dei\",\r\n },\r\n {\r\n number: `${TrendThree}`,\r\n label: page_copy[0].intelligentSection.heading,\r\n analyticsLabel: page_copy[0].intelligentSection.analyticsHeading,\r\n anchorId: \"intelligent\",\r\n },\r\n {\r\n number: `${TrendFour}`,\r\n label: page_copy[0].cookielessSection.heading,\r\n analyticsLabel: page_copy[0].cookielessSection.analyticsHeading,\r\n anchorId: \"cookieless\",\r\n },\r\n {\r\n number: `${TrendFive}`,\r\n label: page_copy[0].humanFirstSection.heading,\r\n analyticsLabel: page_copy[0].humanFirstSection.analyticsHeading,\r\n anchorId: \"humanFirst\",\r\n },\r\n {\r\n number: `${TrendSix}`,\r\n label: page_copy[0].hybridSection.heading,\r\n analyticsLabel: page_copy[0].hybridSection.analyticsHeading,\r\n anchorId: \"hybrid\",\r\n },\r\n {\r\n number: `${TrendSeven}`,\r\n label: page_copy[0].superChargeSection.heading,\r\n analyticsLabel: page_copy[0].superChargeSection.analyticsHeading,\r\n anchorId: \"humanService\",\r\n },\r\n ]\r\n\r\n const [activeAnchor, setActiveAnchor] = useState();\r\n\r\n const triggerAnchor = (e,label) =>{\r\n let tabName = \"2022-global-marketing-trends:\"+label.toString().split(/\\s+/).slice(0,5).join(\"-\").replace(',[object-Object],', '').trim()\r\n console.log(tabName)\r\n window.showAnalytics(tabName,e)\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n 2022 Global Marketing Trends\r\n \r\n \r\n {anchors.map(item => (\r\n
  • \r\n {setActiveAnchor(item.label);triggerAnchor(e,item.analyticsLabel)}}\r\n className={activeAnchor === item.label ? \"is-active\" : \"\"}\r\n to={`${item.anchorId}`}\r\n spy={true}\r\n smooth={true}\r\n duration={500}\r\n >\r\n \r\n {``}\r\n \r\n {item.label}\r\n \r\n
  • \r\n ))}\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default Trends\r\n","import styled from 'styled-components'\r\nimport { colors, device, mobileTypeScale, typeScale } from '../../assets/styles'\r\n\r\nexport const IntroMain = styled.div`\r\n #root & {\r\n display: flex;\r\n flex-direction: column-reverse;\r\n position: relative;\r\n @media ${device.laptop} {\r\n display: block;\r\n }\r\n }\r\n\r\n &.section-growing {\r\n .intro-image-copy {\r\n @media ${device.tablet} {\r\n color: ${colors.white};\r\n }\r\n }\r\n }\r\n\r\n &.section-dei {\r\n .intro-image-copy {\r\n color: ${colors.white};\r\n &__text {\r\n span {\r\n background-color: ${colors.white};\r\n color: ${colors.teal300};\r\n }\r\n }\r\n @media ${device.tablet} {\r\n left: 0;\r\n }\r\n }\r\n }\r\n\r\n &.section-intelligent {\r\n .intro-image-copy {\r\n &__stat {\r\n color: ${colors.teal300};\r\n }\r\n @media ${device.laptop} {\r\n left: 82%;\r\n top: 50%;\r\n width: 20%;\r\n }\r\n }\r\n }\r\n\r\n &.section-cookieless {\r\n .intro-image-copy {\r\n &__stat {\r\n color: ${colors.teal300};\r\n }\r\n @media ${device.tablet} {\r\n left: 0;\r\n }\r\n }\r\n }\r\n\r\n &.section-humanfirst {\r\n .intro-image-copy {\r\n color: ${colors.white};\r\n @media ${device.tablet} {\r\n top: 50%;\r\n &__stat {\r\n color: ${colors.charcoal};\r\n }\r\n }\r\n }\r\n }\r\n\r\n &.section-hybrid {\r\n .intro-image-copy {\r\n &__stat {\r\n color: ${colors.teal300};\r\n }\r\n @media ${device.tablet} {\r\n left: 0;\r\n top: 50%;\r\n }\r\n }\r\n }\r\n\r\n &.section-supercharge {\r\n .intro-image-copy {\r\n &__text {\r\n span {\r\n background-color: ${colors.white};\r\n color: ${colors.teal300};\r\n }\r\n }\r\n @media ${device.tablet} {\r\n top: 55%;\r\n width: 22%;\r\n }\r\n }\r\n }\r\n`\r\n\r\nexport const IntroCopy = styled.div`\r\n #root & {\r\n @media ${device.laptop} {\r\n position: absolute;\r\n z-index: 1;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n display: flex;\r\n align-items: center;\r\n .intro-content {\r\n max-width: 600px;\r\n width: 50%;\r\n padding: 50px 0;\r\n }\r\n }\r\n\r\n h2 {\r\n margin-bottom: 20px;\r\n }\r\n\r\n h5 {\r\n margin-bottom: 26px;\r\n }\r\n }\r\n #root .img-left & {\r\n @media ${device.laptop} {\r\n justify-content: flex-end;\r\n .intro-content {\r\n width: 50%;\r\n }\r\n }\r\n }\r\n\r\n h2.h2 {\r\n margin-bottom: 20px;\r\n /*font-family: openSansRegular;*/\r\n font-size: 2.75rem;\r\n font-weight: 400;\r\n line-height: 1.2;\r\n @media ${device.mobileM} {\r\n font-size: ${typeScale.h2};\r\n }\r\n }\r\n\r\n h5.h5 {\r\n margin-bottom: 26px;\r\n font-size: ${mobileTypeScale.h5};\r\n line-height: 30px;\r\n\r\n @media ${device.tablet} {\r\n font-size: ${typeScale.h5};\r\n line-height: 38px;\r\n }\r\n }\r\n`\r\n\r\nexport const IntroImage = styled.div`\r\n position: relative;\r\n margin-bottom: 60px;\r\n\r\n #root & {\r\n img {\r\n width: 140%;\r\n }\r\n @media ${device.tablet} {\r\n img {\r\n width: 100%;\r\n margin: 0;\r\n }\r\n }\r\n @media ${device.laptop} {\r\n text-align: right;\r\n img {\r\n width: auto;\r\n height: auto;\r\n max-width: 100%;\r\n }\r\n }\r\n \r\n }\r\n #root .img-right & {\r\n img {\r\n transform: translateX(-33%);\r\n }\r\n @media ${device.tablet} {\r\n img {\r\n transform: translateX(0);\r\n }\r\n }\r\n }\r\n #root .img-left & {\r\n @media ${device.tablet} {\r\n text-align: left;\r\n img {\r\n transform: translateX(0);\r\n }\r\n }\r\n }\r\n\r\n .intro-image-copy {\r\n color: ${colors.black};\r\n text-align: left;\r\n &__stat {\r\n font-size: 72px;\r\n line-height: 76px;\r\n /*font-family: openSansLight, \"Open Sans\", sans-serif;*/\r\n font-style: italic;\r\n font-weight: 300;\r\n sup {\r\n font-size: .5em;\r\n top: -.7em;\r\n }\r\n sub {\r\n font-size: .5em;\r\n bottom: 0;\r\n }\r\n }\r\n &__text {\r\n font-size: 14px;\r\n line-height: 25px;\r\n /*font-family: openSansRegular, \"Open Sans\", sans-serif;*/\r\n font-style: italic;\r\n font-weight: 400;\r\n span {\r\n padding: 0 2px;\r\n background-color: ${colors.teal300};\r\n color: ${colors.white};\r\n }\r\n }\r\n }\r\n\r\n @media ${device.tablet} {\r\n margin-bottom: 0;\r\n .intro-image-copy {\r\n position: absolute;\r\n top: 50%;\r\n left: 66%;\r\n width: 33%;\r\n }\r\n }\r\n\r\n @media ${device.laptop} {\r\n .intro-image-copy {\r\n left: 77%;\r\n width: 21%;\r\n top: 43%;\r\n &__stat {\r\n font-size: 120px;\r\n line-height: 144px;\r\n text-indent: -0.05em;\r\n sup {\r\n font-size: .3em;\r\n top: -1.7em;\r\n margin-left: 10px;\r\n }\r\n }\r\n &__text {\r\n font-size: 16px;\r\n line-height: 28px;\r\n }\r\n }\r\n }\r\n`","import React from 'react'\r\nimport { SecondaryButton } from '../../assets/styles'\r\nimport { IntroCopy, IntroImage, IntroMain } from './IntroStyles'\r\n\r\nconst Intro = ({\r\n heading,\r\n analyticsHeading,\r\n body,\r\n linkLabel,\r\n linkAnchor,\r\n imageSrc,\r\n imageAlt,\r\n imagePosition,\r\n imageStat,\r\n imageStatSuffix,\r\n imageCopy,\r\n textColor,\r\n}) => {\r\n const analytics = (e)=>{\r\n console.log(analyticsHeading,linkLabel)\r\n let head = analyticsHeading.toString();\r\n let link = linkLabel.toString();\r\n let tabName=head.toString().split(/\\s+/).slice(0,5).join(\"-\").replace( ',[object-Object],', '')+\":\"+link.toString().split(/\\s+/).slice(0,5).join(\"-\")\r\n console.log(tabName)\r\n window.showAnalytics(tabName)\r\n }\r\n return (\r\n // Image Position accepts a string, e.g., img-left that will either\r\n // position the image on the left or right. By\r\n // default the image is on the right side\r\n \r\n \r\n
    \r\n

    \r\n {heading}\r\n

    \r\n
    \r\n {body}\r\n
    \r\n {analytics(e);window.open(linkAnchor,'_blank')}} \r\n modifiers={['arrow', 'angledArrow', `${textColor}`]}\r\n >\r\n {linkLabel}\r\n \r\n
    \r\n
    \r\n \r\n {imageAlt}\r\n
    \r\n
    \r\n {imageStat}{imageStatSuffix}\r\n
    \r\n
    \r\n {imageCopy}\r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport default Intro\r\n","import styled from 'styled-components'\r\nimport { applyStyleModifiers } from 'styled-components-modifiers'\r\nimport { colors, device } from '../../assets/styles'\r\n\r\nconst CHART_FOOTER_MODS = {\r\n white: () => `\r\n color: ${colors.white}\r\n `,\r\n}\r\n\r\nexport const ChartFooterMain = styled.div`\r\n width: 100%;\r\n opacity: 0.5;\r\n margin-top: 80px;\r\n padding: 15px 0;\r\n border-top: 1px solid currentColor;\r\n color: ${colors.black}\r\n\r\n // This needed to be declared twice to work. I don't know why.\r\n .chart-footer__main {}\r\n\r\n .chart-footer__main {\r\n margin-bottom: 20px;\r\n font-size: 16px;\r\n }\r\n\r\n .chart-footer__callout {\r\n display: block;\r\n #root & {\r\n font-size: 14px;\r\n line-height: 16px;\r\n white-space: nowrap;\r\n &:hover, &:focus {\r\n text-decoration: underline;\r\n }\r\n }\r\n }\r\n\r\n @media ${device.laptop} {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: baseline;\r\n .chart-footer__main {\r\n max-width: 60%;\r\n padding-right: 20px;\r\n margin-bottom: 0;\r\n }\r\n }\r\n\r\n ${applyStyleModifiers(CHART_FOOTER_MODS)}\r\n`","import React from 'react'\r\nimport { ChartFooterMain } from './ChartFooterStyles'\r\n\r\nconst ChartFooter = ({\r\n body,\r\n color,\r\n}) => {\r\n return (\r\n \r\n
    {body}
    \r\n Deloitte Insights | deloitte.com/insights\r\n
    \r\n )\r\n}\r\n\r\nexport default ChartFooter\r\n","import styled from 'styled-components'\r\nimport { applyStyleModifiers } from 'styled-components-modifiers'\r\nimport { colors, device } from '../../assets/styles'\r\n\r\nconst HRMODS = {\r\n cookieless: () => `\r\n @media ${device.laptop} {\r\n margin-top: -14px;\r\n }\r\n `\r\n}\r\n\r\nexport const HrElm = styled.div`\r\n margin: 35px 0;\r\n \r\n hr {\r\n border: none;\r\n border-top-width: 1px;\r\n border-top-style: solid;\r\n border-top-color: ${colors.black};\r\n }\r\n\r\n ${applyStyleModifiers(HRMODS)};\r\n`"," \r\nimport React from 'react';\r\nimport { Container } from '../../assets/styles';\r\nimport { HrElm } from './HRStyles';\r\n\r\nconst HorizontalRule = ({borderColor, modifiers}) => {\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\t);\r\n};\r\n\r\nexport default HorizontalRule;","import styled from 'styled-components'\r\nimport { colors, device } from '../../assets/styles'\r\nimport DownArrow from '../../assets/images/down-arrow.svg'\r\n\r\nexport const GrowingMain = styled.section`\r\n padding: 60px 0;\r\n background: ${colors.teal200};\r\n`\r\n\r\nexport const GrowthChart = styled.div`\r\n @media ${device.tablet} {\r\n padding: 20px;\r\n }\r\n\r\n .growth-chart-label {\r\n text-anchor: start;\r\n > tspan:first-of-type {\r\n font-weight: bold;\r\n }\r\n }\r\n\r\n .growth-chart-label-mobile {\r\n > tspan:first-of-type {\r\n font-weight: bold;\r\n }\r\n transform: translateY(60px);\r\n }\r\n\r\n .growth-chart-mobile {\r\n .apexcharts-yaxis-texts-g {\r\n transform: translateX(50vw) !important;\r\n }\r\n .apexcharts-bar-series {\r\n .apexcharts-datalabels {\r\n transform: translateX(-5px);\r\n &:last-of-type {\r\n transform: translateX(5px);\r\n }\r\n }\r\n }\r\n }\r\n`","export default __webpack_public_path__ + \"static/media/growing-with-purpose-bg-notext.31c38552.png\";","import React, { useEffect, useState } from \"react\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\n\r\nconst optionsArray = {\r\n chart: {\r\n type: \"bar\",\r\n height: 350,\r\n stacked: true,\r\n toolbar: {\r\n show: false,\r\n }\r\n },\r\n dataLabels: {\r\n enabled: true,\r\n formatter: function (value, { seriesIndex, dataPointIndex, w }) {\r\n\r\n return Math.round( (value < 0) ? (value * -1) : value ) + \"%\";\r\n },\r\n position: \"top\",\r\n textAnchor: \"middle\",\r\n offsetY: -30,\r\n offsetX: 0,\r\n style: {\r\n fontSize: \"17px\",\r\n fontWeight: \"bold\",\r\n textAlign: \"center\",\r\n colors: ['#000']\r\n },\r\n },\r\n plotOptions: {\r\n bar: {\r\n colors: {\r\n ranges: [\r\n {\r\n from: 0,\r\n to: 999999999,\r\n color: \"#0C5D67\",\r\n },\r\n {\r\n from: -100,\r\n to: 0,\r\n color: \"#000\",\r\n },\r\n ],\r\n },\r\n columnWidth: \"35%\",\r\n distributed: true,\r\n dataLabels: {\r\n hideOverflowingLabels: false,\r\n position: 'top',\r\n },\r\n },\r\n },\r\n tooltip: {\r\n enabled: false,\r\n },\r\n legend: {\r\n show: false,\r\n },\r\n xaxis: {\r\n categories: [\r\n [\"01\",\"Inspira como a\", \"organização fornece\", \"serviços e produtos\"], \r\n [\"02\",\"Impulsiona a estratégia\", \"de investimento em\", \"responsabilidade corporativa\"], \r\n [\"03\",\"Articula um conjunto de\", \"valores para orientar a tomada\", \"de decisão dos colaboradores\"], \r\n [\"04\",\"É fundamental para\", \"as mensagens de marca\"],\r\n ],\r\n axisBorder: {\r\n show: false\r\n },\r\n axisTicks: {\r\n show: false\r\n },\r\n labels: {\r\n rotate: 0,\r\n offsetX: -17,\r\n style: {\r\n fontSize: '15px',\r\n fontFamily: 'openSansRegular, Open Sans, sans-serif',\r\n fontWeight: '400',\r\n cssClass: 'growth-chart-label',\r\n },\r\n },\r\n },\r\n yaxis: {\r\n labels: {\r\n show: false,\r\n },\r\n },\r\n grid: {\r\n yaxis: {\r\n lines: {\r\n show: false,\r\n },\r\n },\r\n },\r\n fill: {\r\n type: \"pattern\",\r\n pattern: {\r\n style: \"slantedLines\",\r\n width: 5,\r\n height: 5,\r\n strokeWidth: 6,\r\n },\r\n },\r\n annotations: {\r\n yaxis: [\r\n {\r\n y: 0,\r\n strokeDashArray: 3,\r\n linecap: \"round\",\r\n borderColor: \"#0C5D67\",\r\n },\r\n {\r\n y: 0,\r\n borderColor: 'rgba(255, 255, 255, 0)',\r\n label: {\r\n borderColor: 'rgba(255, 255, 255, 0)',\r\n offsetY: -22,\r\n text: ['↑ +10%','crescimento'],\r\n style: {\r\n color: '#000',\r\n background: 'none',\r\n },\r\n },\r\n stroke: \"none\",\r\n strokeWidth: 10,\r\n },\r\n {\r\n y: 0,\r\n borderColor: 'rgba(255, 255, 255, 0)',\r\n label: {\r\n borderColor: 'rgba(255, 255, 255, 0)',\r\n offsetY: 33,\r\n text: ['↓ Crescimento','negativo'],\r\n style: {\r\n color: '#000',\r\n background: 'none',\r\n },\r\n },\r\n }\r\n ],\r\n },\r\n states: {\r\n hover: {\r\n filter: {\r\n type: 'none',\r\n }\r\n },\r\n }\r\n};\r\n\r\nconst GrowthChartDesktop = (props) => {\r\n\r\n const [series, setSeries] = useState(props.chartData);\r\n\r\n useEffect(() => {\r\n setSeries(props.chartData);\r\n }, [props.chartData]);\r\n\r\n if(series) {\r\n return (\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n};\r\n\r\nexport default GrowthChartDesktop;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\n\r\nconst optionsArray = {\r\n chart: {\r\n type: \"bar\",\r\n stacked: true,\r\n toolbar: {\r\n show: false,\r\n }\r\n },\r\n dataLabels: {\r\n enabled: true,\r\n // formatter: function (value, { seriesIndex, dataPointIndex, w }) {\r\n // return Math.round(value) + \"%\";\r\n // },\r\n formatter: function (value, { seriesIndex, dataPointIndex, w }) {\r\n return Math.round( (value < 0) ? (value * -1) : value ) + \"%\";\r\n },\r\n position: \"top\",\r\n textAnchor: \"end\",\r\n offsetY: 0,\r\n offsetX: 0,\r\n style: {\r\n fontSize: \"14px\",\r\n fontWeight: \"bold\",\r\n },\r\n },\r\n fill: {\r\n type: \"pattern\",\r\n pattern: {\r\n style: \"slantedLines\",\r\n width: 5,\r\n height: 5,\r\n strokeWidth: 6,\r\n },\r\n },\r\n grid: {\r\n show: false,\r\n },\r\n legend: {\r\n show: false,\r\n },\r\n plotOptions: {\r\n bar: {\r\n barHeight: '35%',\r\n colors: {\r\n ranges: [\r\n {\r\n from: 0,\r\n to: 999999999,\r\n color: \"#0C5D67\",\r\n },\r\n {\r\n from: -999999999,\r\n to: 0,\r\n color: \"#000\",\r\n },\r\n ],\r\n },\r\n distributed: true,\r\n horizontal: true,\r\n dataLabels: {\r\n position: 'middle',\r\n },\r\n },\r\n },\r\n tooltip: {\r\n enabled: false,\r\n },\r\n xaxis: {\r\n categories: [\r\n [\"01\", \"Inspira como a\", \"organização fornece\", \"serviços e produtos\"],\r\n [\"02\", \"Impulsiona a estratégia\", \"de investimento em\", \"responsabilidade corporativa\"],\r\n [\"03\", \"Articula um conjunto de\", \"valores para orientar a tomada\", \"de decisão dos colaboradores\"],\r\n [\"04\", \"É fundamental para\", \"as mensagens de marca\"],\r\n ],\r\n axisBorder: {\r\n show: false,\r\n },\r\n axisTicks: {\r\n show: false,\r\n },\r\n labels: {\r\n show: false,\r\n },\r\n min: -100,\r\n max: 100,\r\n },\r\n yaxis: {\r\n categories: [\r\n [\"01\", \"Inspira como a\", \"organização fornece\", \"serviços e produtos\"],\r\n [\"02\", \"Impulsiona a estratégia\", \"de investimento em\", \"responsabilidade corporativa\"],\r\n [\"03\", \"Articula um conjunto de\", \"valores para orientar a tomada\", \"de decisão dos colaboradores\"],\r\n [\"04\", \"É fundamental para\", \"as mensagens de marca\"],\r\n ],\r\n axisBorder: {\r\n show: false\r\n },\r\n axisTicks: {\r\n show: false\r\n },\r\n labels: {\r\n rotate: 0,\r\n offsetX: 0,\r\n offsetY: 5,\r\n align: 'left',\r\n style: {\r\n fontSize: '14px',\r\n fontFamily: 'openSansRegular, Open Sans, sans-serif',\r\n fontWeight: '400',\r\n cssClass: 'growth-chart-label-mobile',\r\n },\r\n },\r\n floating: true,\r\n },\r\n annotations: {\r\n xaxis: [\r\n {\r\n y: 0,\r\n strokeDashArray: 3,\r\n linecap: \"round\",\r\n borderColor: \"#0C5D67\",\r\n },\r\n ],\r\n yaxis: [\r\n {\r\n y: 0,\r\n borderWidth: 0,\r\n label: {\r\n borderColor: 'none',\r\n style: {\r\n background: 'none',\r\n color: '#000',\r\n cssClass: 'apexcharts-yaxis-annotation-label-positive',\r\n fontSize: 14,\r\n },\r\n text: '↑ +10% crescimento',\r\n },\r\n\r\n },\r\n {\r\n y: 0,\r\n \r\n borderWidth: 0,\r\n label: {\r\n borderColor: 'none',\r\n style: {\r\n background: 'none',\r\n color: '#000',\r\n cssClass: 'apexcharts-yaxis-annotation-label-negative',\r\n fontSize: 14,\r\n },\r\n text: '↓ Crescimento negativo',\r\n position: 'left',\r\n textAnchor: 'start',\r\n },\r\n },\r\n ],\r\n },\r\n states: {\r\n hover: {\r\n filter: {\r\n type: 'none',\r\n }\r\n },\r\n }\r\n};\r\n\r\nconst GrowthChartMobile = (props) => {\r\n\r\n const [series, setSeries] = useState(props.chartData);\r\n\r\n useEffect(() => {\r\n setSeries(props.chartData);\r\n }, [props.chartData]);\r\n\r\n if (series) {\r\n return (\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n};\r\n\r\nexport default GrowthChartMobile;\r\n","import React, { useEffect, useRef, useState } from 'react'\r\nimport { CMOFilter, Container, ChartContainer, DownloadButton, SectionChartHeaders } from '../../assets/styles'\r\nimport Intro from '../Intro'\r\nimport ChartFooter from '../ChartFooter'\r\nimport HR from '../HR'\r\nimport { GrowingMain, GrowthChart } from './GrowingStyles'\r\n// Images\r\nimport GrowingBG from '../../assets/images/growing-with-purpose-bg-notext.png'\r\nimport GrowthChartDesktop from './GrowthChartDesktop'\r\n// import {\r\n// exportComponentAsJPEG,\r\n// } from 'react-component-export-image';\r\nimport domtoimage from 'dom-to-image';\r\nimport { saveAs } from 'file-saver';\r\nimport { page_copy } from '../../assets/data/PageCopy';\r\nimport { exec_filters as orig_filters } from '../../assets/data/Filters'\r\nimport InputLabel from '@mui/material/InputLabel';\r\nimport MenuItem from '@mui/material/MenuItem';\r\nimport FormControl from '@mui/material/FormControl';\r\nimport { SelectCarat } from \"../../assets/images/icons/Filters\";\r\nimport { visuallyHidden } from '@mui/utils'\r\nimport GrowthChartMobile from './GrowthChartMobile'\r\nimport executiveData from \"../../assets/data/exec_data.json\";\r\n\r\nconst Growing = () => {\r\n const componentRef = useRef();\r\n\r\n const exec_include = [\"\", \"Q2\", \"Country\", \"Q4b\"]\r\n const exec_filters = orig_filters.filter((orig_filter) =>\r\n exec_include.includes(orig_filter.key)\r\n )\r\n\r\n const [isDesktop, setDesktop] = useState(false);\r\n const [chartData, setChartData] = useState([]);\r\n const [activeFilter, setActiveFilter] = useState(exec_filters[0]);\r\n const [activeSubFilter, setActiveSubFilter] = useState({});\r\n\r\n const handleExecFilterChange = (event) => {\r\n const {\r\n target: { value },\r\n } = event;\r\n const newActiveFilter = exec_filters.filter(exec_filter => exec_filter.key === value)[0]\r\n let tabName = 'Growing:filter-by-'+newActiveFilter.label.toString().split(/\\s+/).slice(0,5).join(\"-\")\r\n console.log(tabName)\r\n window.showAnalytics(tabName,event)\r\n setActiveFilter(newActiveFilter);\r\n setActiveSubFilter(newActiveFilter.subfilters[0]);\r\n }\r\n\r\n const handleSubFilterChange = (event) => {\r\n const {\r\n target: { value },\r\n } = event;\r\n let tabName = 'Growing:sub-filter-'+activeFilter.subfilters.filter(sub_filter => sub_filter.key === value)[0].label.toString().split(/\\s+/).slice(0,5).join(\"-\")\r\n console.log(tabName)\r\n window.showAnalytics(tabName,event)\r\n setActiveSubFilter(activeFilter.subfilters.filter(sub_filter => sub_filter.key === value)[0]);\r\n }\r\n\r\n const handleClearFilters = (e) => {\r\n e.preventDefault();\r\n let tabName = 'Growing:reset-filter'\r\n console.log(tabName)\r\n window.showAnalytics(tabName,e)\r\n setActiveFilter(exec_filters[0]);\r\n setActiveSubFilter({});\r\n }\r\n\r\n useEffect(() => {\r\n\r\n // Get the four filtered data sets for Company Purpose\r\n let dataSet = executiveData;\r\n // let dataSet = executiveData.filter( \r\n // (executive) => {\r\n // return executive[\"Q2\"] !== \"5\" //&& \r\n // // parseInt(executive[\"Q9\"]) && \r\n // // (parseInt(executive[\"Q9\"]) > 10 || parseInt(executive[\"Q9\"]) <= 0 )\r\n // } \r\n // );\r\n\r\n if(activeFilter.key && activeSubFilter.key) {\r\n // Apply the selected filter to the datasets\r\n if(activeFilter.key === \"Q4b\") {\r\n dataSet = (activeSubFilter.key === 1) ?\r\n dataSet.filter( executive => executive[\"Q4\"] === \"4\") :\r\n dataSet.filter( executive => executive[\"Q4\"] !== \"4\")\r\n } else if(activeFilter.key === \"Q5\") {\r\n // Filter by above or below 5 Billion\r\n if(activeSubFilter.key === 1) {\r\n dataSet = dataSet.filter( executive => parseInt(executive[\"Q5\"]) > 4 );\r\n } else if(activeSubFilter.key === 2) {\r\n dataSet = dataSet.filter( executive => parseInt(executive[\"Q5\"]) <= 4 );\r\n }\r\n } else {\r\n dataSet = dataSet.filter( executive => executive[activeFilter.key] === activeSubFilter.key.toString() );\r\n }\r\n }\r\n\r\n const posGrowDataSet = dataSet.filter( executive => parseInt(executive[\"Q9\"]) > 10 );\r\n const negGrowDataSet = dataSet.filter( executive => parseInt(executive[\"Q9\"]) <= 0 );\r\n \r\n const chartKeys = [\"Q13r3\",\"Q13r4\",\"Q13r1\",\"Q13r2\"];\r\n const posGrowFilterDataSet = chartKeys.map( chartKey => posGrowDataSet.filter( executive => executive[chartKey] === \"1\" ) );\r\n const negGrowFilterDataSet = chartKeys.map( chartKey => negGrowDataSet.filter( executive => executive[chartKey] === \"1\" ) );\r\n\r\n const posStats = [];\r\n const negStats = [];\r\n for( let i = 0; i < chartKeys.length; i++ ) {\r\n posStats.push( posGrowFilterDataSet[i].length / posGrowDataSet.length * 100 );\r\n const negStat = negGrowFilterDataSet[i].length / negGrowDataSet.length * 100;\r\n negStats.push( (negStat > 0) ? (negStat * -1) : -0.0001 );\r\n }\r\n\r\n const chartDataSet = [\r\n {\r\n data: posStats,\r\n name: [\"Crescimento Positivo\"],\r\n },\r\n {\r\n data: negStats,\r\n name: [\"Crescimento Negativo\"]\r\n }\r\n ];\r\n\r\n setChartData(chartDataSet);\r\n\r\n if (window.innerWidth > 768) {\r\n setDesktop(true);\r\n } else {\r\n setDesktop(false);\r\n }\r\n const updateMedia = () => {\r\n if (window.innerWidth > 768) {\r\n setDesktop(true);\r\n } else {\r\n setDesktop(false);\r\n }\r\n };\r\n\r\n window.addEventListener(\"resize\", updateMedia);\r\n return () => window.removeEventListener(\"resize\", updateMedia);\r\n }, [activeFilter,activeSubFilter]);\r\n\r\n return (\r\n \r\n {page_copy.map((copy) => (\r\n <>\r\n \r\n \r\n \r\n
    \r\n \r\n \r\n

    {copy.growthSection.chartHeading}

    \r\n
    \r\n \r\n Filtrar por:\r\n <>Filtrar por: {activeFilter.label}}\r\n onChange={handleExecFilterChange}\r\n IconComponent={SelectCarat}\r\n modifiers={activeFilter.key ? ['noBottomRadius'] : ['']}\r\n >\r\n {exec_filters.map((exec_filter) => (\r\n {exec_filter.label}\r\n ))}\r\n \r\n \r\n \r\n {activeFilter.label}:\r\n <>{activeFilter.label}: {activeSubFilter ? activeSubFilter.label : 'Total'}}\r\n onChange={handleSubFilterChange}\r\n IconComponent={SelectCarat}\r\n modifiers={['noTopRadius']}\r\n >\r\n {activeFilter.subfilters.map((sub_filter) => (\r\n {sub_filter.label}\r\n ))}\r\n \r\n \r\n { activeFilter.key ? : '' }\r\n
    \r\n exportComponentAsJPEG(\r\n // componentRef, \r\n // { \r\n // fileName: \"Prioritizing Purpose Chart\",\r\n // html2CanvasOptions: {\r\n // windowWidth: 1440,\r\n // windowHeight: 1200,\r\n // }\r\n // }\r\n // )}\r\n onClick={(event) => {\r\n event.preventDefault();\r\n const downloadButton = event.currentTarget;\r\n const downloadChart = document.getElementById('growingChartContainer');\r\n domtoimage.toBlob(\r\n downloadChart, \r\n { \r\n width: downloadChart.getBoundingClientRect().width,\r\n height: downloadChart.getBoundingClientRect().height,\r\n style: {\r\n margin: 0,\r\n },\r\n filter: (node) => {\r\n return node !== downloadButton;\r\n }\r\n }\r\n )\r\n .then(function (blob) {\r\n saveAs(blob, `${copy.growthSection.chartDownloadTitle}.jpeg`);\r\n console.log('growing:download-Prioritizing-Purpose-Chart');\r\n window.showAnalytics('growing:download-Prioritizing-Purpose-Chart',event);\r\n });\r\n }}\r\n data-html2canvas-ignore\r\n >\r\n {copy.growthSection.downloadButtonLabel}\r\n \r\n
    \r\n \r\n {isDesktop ? : }\r\n \r\n \r\n
    \r\n \r\n ))}\r\n
    \r\n )\r\n}\r\n\r\nexport default Growing\r\n","import styled from 'styled-components'\r\nimport { Link } from 'react-scroll'\r\nimport { Link as ReactLink } from 'react-router-dom'\r\nimport { colors, Container, device, typeScale } from '../../assets/styles'\r\n\r\nexport const NavMain = styled.section`\r\n #root & {\r\n position: sticky;\r\n top: 0px;\r\n left: 0;\r\n height: 55px;\r\n background: ${colors.teal300};\r\n box-shadow: 0 4px 4px -2px rgba(0, 0, 0, 0.25);\r\n z-index: 9;\r\n\r\n @media ${device.laptop} {\r\n background: ${colors.white};\r\n top:99px !important;\r\n position:sticky !important;\r\n }\r\n\r\n .nav-mobile-label {\r\n display: flex;\r\n align-items: center;\r\n color: ${colors.white};\r\n padding-right: 30px;\r\n font-size: 16px;\r\n img {\r\n filter: brightness(0) invert(1);\r\n width: 40px;\r\n margin-right: 16px;\r\n }\r\n }\r\n\r\n .nav-mobile-open,\r\n .nav-mobile-close {\r\n cursor: pointer;\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n width: 45px;\r\n height: 55px;\r\n border: 0;\r\n border-left: 1px solid ${colors.teal200};\r\n background: center center no-repeat transparent;\r\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6.17 26.88'%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill:%23fff%7D%3C/style%3E%3C/defs%3E%3Cg id='Layer_2' data-name='Layer 2'%3E%3Cg id='Layer_1-2' data-name='Layer 1'%3E%3Ccircle class='cls-1' cx='3.08' cy='3.08' r='3.08'/%3E%3Ccircle class='cls-1' cx='3.08' cy='13.53' r='3.08'/%3E%3Ccircle class='cls-1' cx='3.08' cy='23.8' r='3.08'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E\");\r\n background-size: 6.17px 26.88px;\r\n }\r\n .nav-mobile-close {\r\n border-left: none;\r\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 21.13 21.13'%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill:none;stroke:%23fff;stroke-miterlimit:10;stroke-width:3px%7D%3C/style%3E%3C/defs%3E%3Cg id='Layer_2' data-name='Layer 2'%3E%3Cg id='Layer_1-2' data-name='Layer 1'%3E%3Cpath class='cls-1' d='M20.07 1.06 1.06 20.07M1.06 1.06l19.01 19.01'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E\");\r\n background-size: 21.13px 21.13px;\r\n }\r\n\r\n @media ${device.laptop} {\r\n .nav-mobile-label,\r\n .nav-mobile-open,\r\n .nav-mobile-close {\r\n display: none;\r\n }\r\n }\r\n }\r\n`\r\n\r\nexport const NavContainer = styled(Container)`\r\n #root & {\r\n height: 100%;\r\n }\r\n`\r\n\r\nexport const NavLinkList = styled.div`\r\n #root & {\r\n position: fixed;\r\n z-index: 50;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n padding: 12px 16px;\r\n background: ${colors.teal300};\r\n transition: transform 0.3s;\r\n transform: translateX(100%);\r\n pointer-events: none;\r\n\r\n &.is-open {\r\n transform: translateX(0);\r\n pointer-events: all;\r\n }\r\n\r\n p {\r\n margin: 0;\r\n color: ${colors.white};\r\n br {\r\n display: none;\r\n }\r\n }\r\n\r\n .nav-links {\r\n padding-bottom: 20px;\r\n border-bottom: 1px solid ${colors.white};\r\n margin-bottom: 20px;\r\n \r\n li {\r\n margin-top: 16px;\r\n margin-bottom: 0;\r\n }\r\n }\r\n\r\n @media ${device.laptop} {\r\n position: static;\r\n transform: translateX(0);\r\n background: transparent;\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n padding: 0;\r\n pointer-events: all;\r\n\r\n .nav-main,\r\n .nav-util {\r\n display: flex;\r\n align-items: center;\r\n height: 100%;\r\n }\r\n\r\n p {\r\n width: 150px;\r\n color: ${colors.black};\r\n font-size: ${typeScale.paragraph};\r\n margin-right: 20px;\r\n white-space: nowrap;\r\n br {\r\n display: block;\r\n }\r\n }\r\n\r\n .nav-links {\r\n height: 100%;\r\n padding-bottom: 0;\r\n border-bottom: 0;\r\n margin-bottom: 0;\r\n display: flex;\r\n align-items: center;\r\n &:hover,\r\n &:focus-within {\r\n a.active {\r\n span {\r\n max-width: 0px;\r\n visibility: hidden;\r\n opacity: 0;\r\n margin: 0;\r\n padding: 0;\r\n }\r\n }\r\n }\r\n li {\r\n margin-top: 0;\r\n height: 100%;\r\n }\r\n }\r\n }\r\n }\r\n`\r\n\r\nexport const NavLink = styled(Link)`\r\n // Link = Using react-scroll\r\n #root & {\r\n cursor: pointer;\r\n display: flex;\r\n align-items: center;\r\n transition: all linear 0.2s;\r\n padding: 5px; //so the active highlighter has some spacing\r\n color: ${colors.white};\r\n\r\n &.active,\r\n &:hover {\r\n background: ${colors.white};\r\n color: ${colors.teal300};\r\n\r\n img {\r\n filter: brightness(0) invert(0);\r\n\r\n @media ${device.laptop} {\r\n filter: brightness(0) invert(1);\r\n }\r\n }\r\n\r\n @media ${device.laptop} {\r\n background: ${colors.teal300};\r\n color: ${colors.white};\r\n }\r\n }\r\n\r\n img {\r\n width: 40px;\r\n transition: filter 0.2s linear;\r\n margin-right: 16px;\r\n filter: brightness(0) invert(1);\r\n\r\n @media ${device.laptop} {\r\n filter: brightness(100) invert(0);\r\n }\r\n }\r\n \r\n @media ${device.laptop} {\r\n height: 100%;\r\n padding: 0 20px;\r\n img {\r\n width: 27px;\r\n margin: 0;\r\n }\r\n span {\r\n max-width: 0px;\r\n font-size: ${typeScale.paragraph};\r\n line-height: 1;\r\n visibility: hidden;\r\n opacity: 0;\r\n transition: all 0.6s;\r\n white-space: nowrap;\r\n color: ${colors.white};\r\n }\r\n }\r\n\r\n @media ${device.laptop} {\r\n &.active {\r\n span {\r\n max-width: 500px;\r\n margin-left: 16px;\r\n border-left: 1px solid ${colors.white};\r\n padding-left: 16px;\r\n visibility: visible;\r\n opacity: 1;\r\n }\r\n }\r\n &:hover,\r\n &:focus,\r\n &.active:hover,\r\n &.active:focus {\r\n span {\r\n max-width: 500px !important;\r\n margin-left: 16px !important;\r\n border-left: 1px solid ${colors.white};\r\n padding-left: 16px !important;\r\n visibility: visible !important;\r\n opacity: 1 !important;\r\n }\r\n }\r\n }\r\n }\r\n`\r\n\r\nexport const NavSocial = styled.div`\r\n #root & {\r\n display: flex;\r\n align-items: center;\r\n margin: 20px 0;\r\n > svg {\r\n width: 22px;\r\n height: 22px;\r\n margin-right: 20px;\r\n }\r\n ul {\r\n display: flex;\r\n align-items: center;\r\n li {\r\n margin-right: 20px;\r\n margin-bottom: -4px;\r\n }\r\n button {\r\n width: 22px;\r\n height: 22px;\r\n border-radius: 50%;\r\n transition: all 0.2s linear;\r\n &:hover, &:focus { \r\n transform: scale(1.2);\r\n }\r\n }\r\n }\r\n @media ${device.laptop} {\r\n margin: 0;\r\n > svg {\r\n circle, line {\r\n stroke: ${colors.black};\r\n }\r\n }\r\n ul {\r\n pointer-events: none;\r\n max-width: 0px;\r\n visibility: hidden;\r\n opacity: 0;\r\n transition: all 0.6s;\r\n button {\r\n svg {\r\n path {\r\n fill: ${colors.teal300};\r\n transition: fill 0.3s;\r\n }\r\n }\r\n &:hover, &:focus {\r\n transform: scale(1);\r\n background-color: ${colors.teal300} !important;\r\n svg .is-inner {\r\n fill: ${colors.white};\r\n }\r\n }\r\n }\r\n }\r\n &:hover, &:focus, &:focus-within {\r\n ul {\r\n pointer-events: all;\r\n max-width 200px;\r\n visibility: visible;\r\n opacity: 1;\r\n }\r\n }\r\n }\r\n }\r\n`\r\n\r\nexport const NavDownload = styled(ReactLink)`\r\n #root & {\r\n display: inline-flex;\r\n align-items: center;\r\n color: ${colors.white};\r\n cursor: pointer;\r\n &::before {\r\n content: '';\r\n display: block;\r\n width: 25px;\r\n height: 26px;\r\n margin-right: 18px;\r\n background: center no-repeat transparent;\r\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 25.03 26.08'%3E%3Cdefs%3E%3Cstyle%3E.cls-2%7Bfill:none;stroke:%23fff;stroke-width:2.32px%7D%3C/style%3E%3C/defs%3E%3Cg id='Layer_2' data-name='Layer 2'%3E%3Cg id='Layer_1-2' data-name='Layer 1'%3E%3Cpath stroke-width='2.5' fill='none' stroke='%23fff' d='M0 24.83h25.03'/%3E%3Cpath class='cls-2' d='M12.51 0v18.2M20.33 10.86l-7.82 7.82-7.81-7.82'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E\");\r\n background-size: contain;\r\n }\r\n &::after {\r\n content: '';\r\n position: absolute;\r\n z-index: -1;\r\n display: block;\r\n width: 25px;\r\n height: 26px;\r\n margin-right: 18px;\r\n border-radius: 50%;\r\n box-shadow: 0 0 0 0 rgba(0, 0, 0, 1);\r\n transform: scale(1);\r\n animation: ${(props) =>\r\n props.activateDownloadIconPulsingAnimation\r\n ? 'pulse 2.5s linear 3'\r\n : ''};\r\n }\r\n span {\r\n font-size: 14px;\r\n /*font-family: openSansSemiBold;*/\r\n font-weight: 500;\r\n text-transform: uppercase;\r\n }\r\n @media ${device.laptop} {\r\n &::before {\r\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 25.03 26.08'%3E%3Cdefs%3E%3Cstyle%3E.cls-2%7Bfill:none;stroke:%23000;stroke-width:2.32px%7D%3C/style%3E%3C/defs%3E%3Cg id='Layer_2' data-name='Layer 2'%3E%3Cg id='Layer_1-2' data-name='Layer 1'%3E%3Cpath stroke-width='2.5' fill='none' stroke='%23000' d='M0 24.83h25.03'/%3E%3Cpath class='cls-2' d='M12.51 0v18.2M20.33 10.86l-7.82 7.82-7.81-7.82'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E\");\r\n }\r\n span {\r\n pointer-events: none;\r\n max-width: 0px;\r\n visibility: hidden;\r\n opacity: 0;\r\n transition: all 0.6s;\r\n white-space: nowrap;\r\n color: ${colors.black};\r\n }\r\n &:hover,\r\n &:focus {\r\n span {\r\n pointer-events: all;\r\n max-width: 300px;\r\n visibility: visible;\r\n opacity: 1;\r\n }\r\n }\r\n }\r\n }\r\n \r\n\r\n @keyframes pulse {\r\n 0% {\r\n transform: scale(0.7);\r\n box-shadow: 0 0 0 0 rgb(157, 212, 207, 0.7),\r\n 0 0 0 0 rgb(157, 212, 207, 0.7);\r\n }\r\n 40% {\r\n transform: scale(1.2);\r\n box-shadow: 0 0 0 16px rgb(157, 212, 207, 0),\r\n 0 0 0 0 rgb(157, 212, 207, 0.7);\r\n }\r\n 80% {\r\n transform: scale(1.2);\r\n box-shadow: 0 0 0 16px rgb(157, 212, 207, 0),\r\n 0 0 0 16px rgb(157, 212, 207, 0);\r\n }\r\n 100% {\r\n transform: scale(0.95);\r\n box-shadow: 0 0 0 0 rgb(157, 212, 207, 0),\r\n 0 0 0 16px rgb(157, 212, 207, 0);\r\n }\r\n }\r\n`\r\n","export function IconSocial() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport function IconSocialFb() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport function IconSocialTw() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport function IconSocialLi() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n","import React, { useCallback, useEffect, useRef, useState } from \"react\"\r\nimport {\r\n FacebookShareButton,\r\n LinkedinShareButton,\r\n TwitterShareButton,\r\n} from \"react-share\"\r\nimport {\r\n NavContainer,\r\n NavDownload,\r\n NavLink,\r\n NavLinkList,\r\n NavMain,\r\n NavSocial,\r\n} from \"./NavigationStyles\";\r\nimport $ from 'jquery';\r\n\r\n// Images\r\nimport TrendOne from \"../../assets/images/trend-1.svg\"\r\nimport TrendTwo from \"../../assets/images/trend-2.svg\"\r\nimport TrendThree from \"../../assets/images/trend-3.svg\"\r\nimport TrendFour from \"../../assets/images/trend-4.svg\"\r\nimport TrendFive from \"../../assets/images/trend-5.svg\"\r\nimport TrendSix from \"../../assets/images/trend-6.svg\"\r\nimport TrendSeven from \"../../assets/images/trend-7.svg\"\r\n\r\n// Social Icons\r\nimport {\r\n IconSocial,\r\n IconSocialFb,\r\n IconSocialTw,\r\n IconSocialLi,\r\n} from \"../../assets/images/icons/Social\"\r\n\r\nconst getDimensions = (ele) => {\r\n const { height } = ele.getBoundingClientRect()\r\n const offsetTop = ele.offsetTop\r\n const offsetBottom = offsetTop + height\r\n\r\n return {\r\n height,\r\n offsetTop,\r\n offsetBottom,\r\n }\r\n}\r\n\r\nconst scrollTo = (ele) => {\r\n ele.scrollIntoView({\r\n behavior: \"smooth\",\r\n block: \"start\",\r\n })\r\n}\r\n\r\nconst Navigation = () => {\r\n const [navActive, setNavActive] = useState(false)\r\n const [visibleSection, setVisibleSection] = useState()\r\n const [\r\n activateDownloadIconPulsingAnimation,\r\n setActivateDownloadIconPulsingAnimation,\r\n ] = useState(false)\r\n\r\n const [y, setY] = useState(window.scrollY)\r\n\r\n const handleNavigation = useCallback(\r\n (e) => {\r\n const window = e.currentTarget;\r\n if($(window).innerWidth()<769){\r\n if (y > window.scrollY) {\r\n $('#navbar').css({top:'70px'})\r\n $('#navbarContent.is-open').css({top:'70px'})\r\n } else if (y < window.scrollY) {\r\n $('#navbar').css({top:'0px'})\r\n $('#navbarContent.is-open').css({top:'0px'})\r\n }\r\n }\r\n setY(window.scrollY)\r\n },\r\n [y]\r\n )\r\n\r\n useEffect(() => {\r\n setY(window.scrollY)\r\n window.addEventListener(\"scroll\", handleNavigation)\r\n\r\n return () => {\r\n window.removeEventListener(\"scroll\", handleNavigation)\r\n }\r\n }, [handleNavigation])\r\n\r\n useEffect(()=>{\r\n var navBarTop=$('#navbar').offset().top\r\n $(window).scroll(function(){\r\n if($(window).innerWidth()<769)\r\n if($(window).scrollTop()>navBarTop){\r\n $('#navbar').css({position:'fixed',right:0})\r\n } else {\r\n $('#navbar').css({position:'sticky',right:0})\r\n }\r\n })\r\n },[])\r\n\r\n // Refs for sticky nav\r\n const navRef = useRef(null)\r\n const trendOneRef = useRef(null)\r\n const trendTwoRef = useRef(null)\r\n const trendThreeRef = useRef(null)\r\n const trendFourRef = useRef(null)\r\n const trendFiveRef = useRef(null)\r\n const trendSixRef = useRef(null)\r\n const trendSevenRef = useRef(null)\r\n\r\n const sectionRefs = [\r\n { section: \"growing\", ref: trendOneRef },\r\n { section: \"dei\", ref: trendTwoRef },\r\n { section: \"intelligent\", ref: trendThreeRef },\r\n { section: \"cookieless\", ref: trendFourRef },\r\n { section: \"humanFirst\", ref: trendFiveRef },\r\n { section: \"hybrid\", ref: trendSixRef },\r\n { section: \"humanService\", ref: trendSevenRef },\r\n ]\r\n\r\n const navLinks = [\r\n {\r\n linkNumber: `${TrendOne}`,\r\n linkLabel: \"Propósito - um farol para o crescimento\",\r\n linkHref: \"growing\",\r\n },\r\n {\r\n linkNumber: `${TrendTwo}`,\r\n linkLabel: \"Marketing autenticamente inclusivo\",\r\n linkHref: \"dei\",\r\n },\r\n {\r\n linkNumber: `${TrendThree}`,\r\n linkLabel: \"Construir o motor criativo inteligente\",\r\n linkHref: \"intelligent\",\r\n },\r\n {\r\n linkNumber: `${TrendFour}`,\r\n linkLabel: \"Conhecer clientes num mundo sem cookies\",\r\n linkHref: \"cookieless\",\r\n },\r\n {\r\n linkNumber: `${TrendFive}`,\r\n linkLabel: \"Desenhar uma experiência de dados humana\",\r\n linkHref: \"humanFirst\",\r\n },\r\n {\r\n linkNumber: `${TrendSix}`,\r\n linkLabel: \"Elevar a experiência híbrida\",\r\n linkHref: \"hybrid\",\r\n },\r\n {\r\n linkNumber: `${TrendSeven}`,\r\n linkLabel: \"Serviço de atendimento ao cliente potenciado pela AI\",\r\n linkHref: \"humanService\",\r\n },\r\n ]\r\n\r\n const [mobileLabel, setMobileLabel] = useState(navLinks[0])\r\n\r\n const handleNavActivate = (e) => {\r\n e.preventDefault()\r\n setNavActive(!navActive)\r\n }\r\n\r\n const handleNavClose = (label, e) => {\r\n const tabName =\r\n \"sub-nav:\" +\r\n label.toString().split(/\\s+/).slice(0, 5).join(\"-\").trim()\r\n console.log(tabName)\r\n window.showAnalytics(tabName, e)\r\n setNavActive(false)\r\n }\r\n\r\n const handleSetActive = (to) => {\r\n if (to === \"growing\") {\r\n setActivateDownloadIconPulsingAnimation(true)\r\n }\r\n setMobileLabel(\r\n navLinks.filter((navFilter) => navFilter.linkHref === to)[0]\r\n )\r\n }\r\n\r\n useEffect(() => {\r\n const handleScroll = () => {\r\n const { height: headerHeight } = getDimensions(navRef.current)\r\n const scrollPosition = window.scrollY + headerHeight\r\n\r\n const selected = sectionRefs.find(({ section, ref }) => {\r\n const ele = ref.current\r\n if (ele) {\r\n const { offsetBottom, offsetTop } = getDimensions(ele)\r\n return (\r\n scrollPosition > offsetTop &&\r\n scrollPosition < offsetBottom\r\n )\r\n }\r\n })\r\n\r\n if (selected && selected.section !== visibleSection) {\r\n setVisibleSection(selected.section)\r\n } else if (!selected && visibleSection) {\r\n setVisibleSection(undefined)\r\n }\r\n }\r\n\r\n handleScroll()\r\n window.addEventListener(\"scroll\", handleScroll)\r\n return () => {\r\n window.removeEventListener(\"scroll\", handleScroll)\r\n }\r\n }, [visibleSection])\r\n\r\n return (\r\n \r\n \r\n
    \r\n \"\"\r\n {mobileLabel.linkLabel}\r\n
    \r\n \r\n \r\n
    \r\n

    \r\n 2022 Global
    \r\n Marketing Trends\r\n

    \r\n \r\n
      \r\n {navLinks.map((link) => {\r\n return (\r\n
    • \r\n {\r\n handleNavClose(\r\n link.linkLabel,\r\n e\r\n )\r\n }}\r\n onSetActive={handleSetActive}\r\n >\r\n \"\"\r\n \r\n {link.linkLabel}\r\n \r\n \r\n
    • \r\n )\r\n })}\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
      \r\n
    • \r\n {\r\n e.stopPropagation()\r\n console.log(\r\n \"sub-nav:link-linktofacebook-share\"\r\n )\r\n window.showAnalytics(\r\n \"sub-nav:link-linktofacebook-share\",\r\n e\r\n )\r\n }}\r\n url={window.location.href}\r\n >\r\n \r\n \r\n
    • \r\n
    • \r\n {\r\n e.stopPropagation()\r\n console.log(\r\n \"sub-nav:link-linktotwitter-share\"\r\n )\r\n window.showAnalytics(\r\n \"sub-nav:link-linktotwitter-share\",\r\n e\r\n )\r\n }}\r\n url={window.location.href}\r\n >\r\n \r\n \r\n
    • \r\n
    • \r\n {\r\n e.stopPropagation()\r\n console.log(\r\n \"sub-nav:link-linktolinkedin-share\"\r\n )\r\n window.showAnalytics(\r\n \"sub-nav:link-linktolinkedin-share\",\r\n e\r\n )\r\n }}\r\n url={window.location.href}\r\n >\r\n \r\n \r\n
    • \r\n
    \r\n
    \r\n {\r\n e.stopPropagation()\r\n console.log(\"sub-nav:download-the-report\")\r\n window.showAnalytics(\r\n \"sub-nav:download-the-report\",\r\n e\r\n )\r\n }}\r\n className={\r\n activateDownloadIconPulsingAnimation\r\n ? \"active-animation\"\r\n : \"\"\r\n }\r\n >\r\n Descarregue o relatório\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport default Navigation\r\n","export default __webpack_public_path__ + \"static/media/de-i-banner.4a4506ff.png\";","import styled from 'styled-components'\r\nimport { colors, device } from '../../assets/styles'\r\n\r\nexport const DEIMain = styled.section`\r\n padding: 60px 0;\r\n background: ${colors.teal300};\r\n color: ${colors.white};\r\n`\r\n\r\nexport const DEIChart = styled.div`\r\n @media ${device.tablet} {\r\n padding: 20px;\r\n }\r\n\r\n .dei-chart-label {\r\n text-anchor: start;\r\n > tspan:first-of-type {\r\n font-weight: bold;\r\n }\r\n }\r\n\r\n .dei-chart-label-mobile {\r\n > tspan:first-of-type {\r\n font-weight: bold;\r\n }\r\n transform: translateY(60px);\r\n }\r\n\r\n .dei-chart-mobile {\r\n .apexcharts-yaxis-texts-g {\r\n transform: translateX(50vw) !important;\r\n }\r\n .apexcharts-bar-series {\r\n .apexcharts-datalabels {\r\n transform: translateX(5px);\r\n &:last-of-type {\r\n transform: translateX(-5px);\r\n }\r\n }\r\n }\r\n }\r\n`","import React, { useEffect, useState } from \"react\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\n\r\nconst DEIChartDesktop = (props) => {\r\n\r\n const [series, setSeries] = useState(props.chartData);\r\n const [labels, setLabels] = useState(props.chartLabels);\r\n const [options, setOptions] = useState();\r\n\r\n useEffect(() => {\r\n setSeries(props.chartData);\r\n setLabels(props.chartLabels);\r\n if (props.chartData && props.chartLabels) {\r\n const chartOpts = {\r\n chart: {\r\n type: \"bar\",\r\n background: '#31747E',\r\n height: 350,\r\n stacked: true,\r\n toolbar: {\r\n show: false,\r\n }\r\n },\r\n dataLabels: {\r\n enabled: true,\r\n formatter: function (value, { seriesIndex, dataPointIndex, w }) {\r\n return Math.round( (value < 0) ? (value * -1) : value ) + \"%\";\r\n },\r\n position: \"top\",\r\n textAnchor: \"middle\",\r\n offsetY: -30,\r\n offsetX: 0,\r\n style: {\r\n fontSize: \"17px\",\r\n fontWeight: \"bold\",\r\n textAlign: \"center\",\r\n fontFamily: 'openSansRegular, Open Sans, sans-serif',\r\n },\r\n },\r\n plotOptions: {\r\n bar: {\r\n colors: {\r\n ranges: [\r\n {\r\n from: 0,\r\n to: 999999999,\r\n color: \"#FFFFFF\",\r\n },\r\n {\r\n from: -100,\r\n to: 0,\r\n color: \"#000\",\r\n },\r\n ],\r\n },\r\n columnWidth: \"35%\",\r\n distributed: true,\r\n dataLabels: {\r\n hideOverflowingLabels: false,\r\n position: 'top',\r\n },\r\n },\r\n },\r\n tooltip: {\r\n enabled: false,\r\n },\r\n legend: {\r\n show: false,\r\n },\r\n xaxis: {\r\n axisBorder: {\r\n show: false\r\n },\r\n axisTicks: {\r\n show: false\r\n },\r\n labels: {\r\n rotate: 0,\r\n offsetX: -17,\r\n style: {\r\n colors: \"#FFF\",\r\n fontSize: '15px',\r\n fontFamily: 'openSansRegular, Open Sans, sans-serif',\r\n fontWeight: '400',\r\n cssClass: 'dei-chart-label',\r\n },\r\n },\r\n },\r\n yaxis: {\r\n labels: {\r\n show: false,\r\n },\r\n },\r\n grid: {\r\n yaxis: {\r\n lines: {\r\n show: false,\r\n },\r\n },\r\n },\r\n fill: {\r\n type: \"pattern\",\r\n pattern: {\r\n style: \"slantedLines\",\r\n width: 5,\r\n height: 5,\r\n strokeWidth: 6,\r\n },\r\n },\r\n annotations: {\r\n yaxis: [\r\n {\r\n y: 0,\r\n strokeDashArray: 3,\r\n linecap: \"round\",\r\n borderColor: \"#FFF\",\r\n },\r\n {\r\n y: 0,\r\n borderColor: 'rgba(255, 255, 255, 0)',\r\n label: {\r\n borderColor: 'rgba(255, 255, 255, 0)',\r\n offsetY: -22,\r\n text: ['↑ +10%','crescimento'],\r\n style: {\r\n color: '#FFF',\r\n background: 'none',\r\n },\r\n },\r\n stroke: \"none\",\r\n strokeWidth: 10,\r\n },\r\n {\r\n y: 0,\r\n borderColor: 'rgba(255, 255, 255, 0)',\r\n label: {\r\n borderColor: 'rgba(255, 255, 255, 0)',\r\n offsetY: 33,\r\n text: ['↓ Crescimento','negativo'],\r\n style: {\r\n color: '#FFF',\r\n background: 'none',\r\n },\r\n },\r\n }\r\n ],\r\n },\r\n states: {\r\n hover: {\r\n filter: {\r\n type: 'none',\r\n }\r\n },\r\n }\r\n };\r\n chartOpts.xaxis.categories = props.chartLabels;\r\n setOptions(chartOpts);\r\n }\r\n }, [props]);\r\n\r\n if (series && labels.length && options) {\r\n return (\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n};\r\n\r\nexport default DEIChartDesktop;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\n\r\nconst DEIChartMobile = (props) => {\r\n\r\n const [series, setSeries] = useState(props.chartData);\r\n const [labels, setLabels] = useState(props.chartLabels);\r\n const [options, setOptions] = useState();\r\n const [chartHeight, setChartHeight] = useState(800);\r\n\r\n useEffect(() => {\r\n setSeries(props.chartData);\r\n setLabels(props.chartLabels);\r\n\r\n if (props.chartData && props.chartLabels) {\r\n const chartOpts = {\r\n chart: {\r\n type: \"bar\",\r\n stacked: true,\r\n toolbar: {\r\n show: false,\r\n }\r\n },\r\n dataLabels: {\r\n enabled: true,\r\n enabledOnSeries: [0,1],\r\n formatter: function (value, { seriesIndex, dataPointIndex, w }) {\r\n return Math.round( (value < 0) ? (value * -1) : value ) + \"%\";\r\n },\r\n textAnchor: \"start\",\r\n offsetX: 0,\r\n style: {\r\n fontSize: \"14px\",\r\n fontWeight: \"bold\",\r\n fontFamily: 'openSansRegular, Open Sans, sans-serif',\r\n },\r\n },\r\n fill: {\r\n type: \"pattern\",\r\n pattern: {\r\n style: \"slantedLines\",\r\n width: 5,\r\n height: 5,\r\n strokeWidth: 6,\r\n },\r\n },\r\n grid: {\r\n show: false,\r\n },\r\n legend: {\r\n show: false,\r\n },\r\n plotOptions: {\r\n bar: {\r\n barHeight: '35%',\r\n colors: {\r\n ranges: [\r\n {\r\n from: 0,\r\n to: 999999999,\r\n color: \"#FFFFFF\",\r\n },\r\n {\r\n from: -999999999,\r\n to: 0,\r\n color: \"#000000\",\r\n },\r\n ],\r\n },\r\n distributed: true,\r\n horizontal: true,\r\n dataLabels: {\r\n position: 'middle',\r\n },\r\n },\r\n },\r\n tooltip: {\r\n enabled: false,\r\n },\r\n xaxis: {\r\n categories: props.chartLabels,\r\n axisBorder: {\r\n show: false,\r\n },\r\n axisTicks: {\r\n show: false,\r\n },\r\n labels: {\r\n show: false,\r\n },\r\n min: -100,\r\n max: 100,\r\n },\r\n yaxis: {\r\n categories: props.chartLabels,\r\n axisBorder: {\r\n show: false\r\n },\r\n axisTicks: {\r\n show: false\r\n },\r\n labels: {\r\n rotate: 0,\r\n offsetX: 0,\r\n offsetY: 5,\r\n align: 'left',\r\n style: {\r\n colors: ['#FFF'],\r\n fontSize: '14px',\r\n fontFamily: 'openSansRegular, Open Sans, sans-serif',\r\n fontWeight: '400',\r\n cssClass: 'dei-chart-label-mobile',\r\n },\r\n },\r\n floating: true,\r\n },\r\n annotations: {\r\n xaxis: [\r\n {\r\n y: 0,\r\n strokeDashArray: 3,\r\n linecap: \"round\",\r\n borderColor: \"#FFFFFF\",\r\n },\r\n ],\r\n yaxis: [\r\n {\r\n y: 0,\r\n borderWidth: 0,\r\n label: {\r\n borderColor: 'none',\r\n style: {\r\n background: 'none',\r\n color: '#FFF',\r\n cssClass: 'apexcharts-yaxis-annotation-label-positive',\r\n fontSize: 14,\r\n },\r\n text: '↑ +10% crescimento',\r\n },\r\n \r\n },\r\n {\r\n y: 0,\r\n borderWidth: 0,\r\n label: {\r\n borderColor: 'none',\r\n style: {\r\n background: 'none',\r\n color: '#FFF',\r\n cssClass: 'apexcharts-yaxis-annotation-label-negative',\r\n fontSize: 14,\r\n },\r\n text: '↓ Crescimento negativo',\r\n position: 'left',\r\n textAnchor: 'start',\r\n },\r\n },\r\n ],\r\n },\r\n states: {\r\n hover: {\r\n filter: {\r\n type: 'none',\r\n }\r\n },\r\n }\r\n };\r\n\r\n setOptions(chartOpts);\r\n setChartHeight( 200 * props.chartLabels.length );\r\n\r\n }\r\n\r\n }, [props]);\r\n\r\n if (series && labels.length && options) {\r\n return (\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n};\r\n\r\nexport default DEIChartMobile;\r\n","import React, { useEffect, useRef, useState } from 'react'\r\nimport { CMOFilter, Container, ChartContainer, DownloadButton, SectionChartHeaders } from '../../assets/styles'\r\nimport Intro from '../Intro'\r\nimport ChartFooter from '../ChartFooter'\r\nimport HR from '../HR'\r\n// Images\r\nimport DEIBannerImg from '../../assets/images/de-i-banner.png'\r\nimport { DEIChart, DEIMain } from './DEIStyles'\r\nimport DEIChartDesktop from './DEIChartDesktop'\r\n// import {\r\n// exportComponentAsJPEG,\r\n// } from 'react-component-export-image';\r\nimport domtoimage from 'dom-to-image';\r\nimport { saveAs } from 'file-saver';\r\nimport { page_copy } from '../../assets/data/PageCopy';\r\nimport { exec_filters as orig_filters } from '../../assets/data/Filters'\r\nimport InputLabel from '@mui/material/InputLabel';\r\nimport MenuItem from '@mui/material/MenuItem';\r\nimport FormControl from '@mui/material/FormControl';\r\nimport ListItemText from '@mui/material/ListItemText';\r\nimport Checkbox from '@mui/material/Checkbox';\r\nimport { CheckboxChecked, CheckboxUnchecked, SelectCarat } from \"../../assets/images/icons/Filters\";\r\nimport { visuallyHidden } from '@mui/utils'\r\nimport DEIChartMobile from './DEIChartMobile'\r\nimport executiveData from \"../../assets/data/exec_data.json\";\r\n\r\nconst dei_topics = [\r\n {\r\n key: \"Q31r2\",\r\n label: \"Objetivos de contratação\",\r\n },\r\n {\r\n key: \"Q31r3\",\r\n label: \"Objetivos de retenção de talento\",\r\n },\r\n {\r\n key: \"Q31r11\",\r\n label: \"Imagens de marca e mensagens\",\r\n },\r\n {\r\n key: \"Q31r1\",\r\n label: \"Investimentos comunitários\",\r\n },\r\n {\r\n key: \"Q31r6\",\r\n label: \"Programa de mentoria\",\r\n },\r\n {\r\n key: \"Q31r4\",\r\n label: \"Comportamentos inclusivos de liderança\",\r\n },\r\n {\r\n key: \"Q31r5\",\r\n label: \"Programas de formação\",\r\n },\r\n {\r\n key: \"Q31r10\",\r\n label: \"Diversidade da bases de clientes\",\r\n },\r\n {\r\n key: \"Q31r7\",\r\n label: \"Expetativas de parceria empresarial\",\r\n },\r\n {\r\n key: \"Q31r9\",\r\n label: \"Objetivos de recolha de dados\",\r\n },\r\n {\r\n key: \"Q31r8\",\r\n label: \"Novos objetivos de produto/serviço\",\r\n },\r\n]\r\n\r\nexport const DEI = () => {\r\n const componentRef = useRef();\r\n\r\n const exec_include = [\"\", \"Q2\", \"Country\", \"Q4b\"]\r\n const exec_filters = orig_filters.filter((orig_filter) =>\r\n exec_include.includes(orig_filter.key)\r\n )\r\n\r\n const [isDesktop, setDesktop] = useState(false);\r\n const [chartData, setChartData] = useState([]);\r\n const [chartLabels, setChartLabels] = useState([]);\r\n const [activeTopics, setActiveTopics] = useState(['Q31r2', 'Q31r3', 'Q31r11', 'Q31r1']);\r\n const [activeFilter, setActiveFilter] = React.useState(exec_filters[0]);\r\n const [activeSubFilter, setActiveSubFilter] = React.useState({});\r\n\r\n const handleTopicChange = (event) => {\r\n const {\r\n target: { value },\r\n } = event;\r\n let valueArray = typeof value === 'string' ? value.split(',') : value;\r\n if (valueArray.length > 4) valueArray = valueArray.slice(-4);\r\n if(activeTopics.length>valueArray.length){\r\n let unique = activeTopics.filter(function(obj) { return valueArray.indexOf(obj) == -1; });\r\n let tabName = 'DEI:Topic-'+dei_topics.filter(dei_topic => dei_topic.key === unique[0])[0].label.toString().split(/\\s+/).slice(0,4).join(\"-\")\r\n console.log(tabName)\r\n window.showAnalytics(tabName,event)\r\n } else {\r\n let tabName = 'DEI:Topic-'+dei_topics.filter(dei_topic => dei_topic.key === valueArray[valueArray.length-1])[0].label.toString().split(/\\s+/).slice(0,4).join(\"-\");\r\n console.log(tabName)\r\n window.showAnalytics(tabName,event)\r\n }\r\n setActiveTopics(valueArray);\r\n // If there is no value, unset other filters\r\n if (valueArray.length === 0) {\r\n setActiveFilter(exec_filters[0]);\r\n setActiveSubFilter({})\r\n }\r\n }\r\n\r\n const handleExecFilterChange = (event) => {\r\n const {\r\n target: { value },\r\n } = event;\r\n const newActiveFilter = exec_filters.filter(exec_filter => exec_filter.key === value)[0]\r\n let tabName = 'DEI:filter-by-'+newActiveFilter.label.toString().split(/\\s+/).slice(0,5).join(\"-\")\r\n console.log(tabName)\r\n window.showAnalytics(tabName,event)\r\n setActiveFilter(newActiveFilter);\r\n setActiveSubFilter(newActiveFilter.subfilters[0]);\r\n }\r\n\r\n const handleSubFilterChange = (event) => {\r\n const {\r\n target: { value },\r\n } = event;\r\n let tabName = 'DEI:sub-filter-'+activeFilter.subfilters.filter(sub_filter => sub_filter.key === value)[0].label.toString().split(/\\s+/).slice(0,5).join(\"-\")\r\n console.log(tabName)\r\n window.showAnalytics(tabName,event)\r\n setActiveSubFilter(activeFilter.subfilters.filter(sub_filter => sub_filter.key === value)[0]);\r\n }\r\n\r\n const renderTopicLabel = (selected) => {\r\n const topicPre = Tópico: ;\r\n let topicLabel = 'Selecione até 4';\r\n let topicCount;\r\n if (selected.length === 0) {\r\n return <>{topicPre} {topicLabel}\r\n }\r\n\r\n topicLabel = dei_topics.filter(dei_topic => dei_topic.key === selected[0])[0].label;\r\n if (selected.length > 1) {\r\n topicCount = +{selected.length - 1};\r\n }\r\n return <>{topicPre} {topicLabel} {topicCount}\r\n }\r\n\r\n const handleClearFilters = (e) => {\r\n e.preventDefault();\r\n let tabName = 'DEI:reset-filter'\r\n console.log(tabName)\r\n window.showAnalytics(tabName,e)\r\n setActiveTopics(['Q31r2', 'Q31r3', 'Q31r11', 'Q31r1']);\r\n setActiveFilter(exec_filters[0]);\r\n setActiveSubFilter({});\r\n }\r\n\r\n useEffect(() => {\r\n\r\n if(activeTopics) {\r\n\r\n let dataSet = executiveData;\r\n // let dataSet = executiveData.filter( \r\n // (executive) => {\r\n // return executive[\"Q2\"] !== \"5\" && \r\n // parseInt(executive[\"Q9\"]) && \r\n // (parseInt(executive[\"Q9\"]) > 10 || parseInt(executive[\"Q9\"]) <= 0 )\r\n // } \r\n // );\r\n \r\n if(activeFilter.key && activeSubFilter.key) {\r\n // Apply the selected filter to the datasets\r\n if(activeFilter.key === \"Q4b\") {\r\n dataSet = (activeSubFilter.key === 1) ?\r\n dataSet.filter( executive => executive[\"Q4\"] === \"4\") :\r\n dataSet.filter( executive => executive[\"Q4\"] !== \"4\")\r\n } else if(activeFilter.key === \"Q5\") {\r\n // Filter by above or below 5 Billion\r\n if(activeSubFilter.key === 1) {\r\n dataSet = dataSet.filter( executive => parseInt(executive[\"Q5\"]) > 4 );\r\n } else if(activeSubFilter.key === 2) {\r\n dataSet = dataSet.filter( executive => parseInt(executive[\"Q5\"]) <= 4 );\r\n }\r\n } else {\r\n dataSet = dataSet.filter( executive => executive[activeFilter.key] === activeSubFilter.key.toString() );\r\n }\r\n }\r\n\r\n const posGrowDataSet = dataSet.filter( executive => parseInt(executive[\"Q9\"]) > 10 );\r\n const negGrowDataSet = dataSet.filter( executive => parseInt(executive[\"Q9\"]) <= 0 );\r\n \r\n const chartKeys = activeTopics;\r\n const posGrowFilterDataSet = chartKeys.map( chartKey => posGrowDataSet.filter( executive => executive[chartKey] === \"1\" ) );\r\n const negGrowFilterDataSet = chartKeys.map( chartKey => negGrowDataSet.filter( executive => executive[chartKey] === \"1\" ) );\r\n\r\n const posStats = [];\r\n const negStats = [];\r\n for( let i = 0; i < chartKeys.length; i++ ) {\r\n posStats.push( posGrowFilterDataSet[i].length / posGrowDataSet.length * 100 );\r\n const negStat = negGrowFilterDataSet[i].length / negGrowDataSet.length * 100;\r\n negStats.push( (negStat > 0) ? (negStat * -1) : -0.0001 );\r\n }\r\n\r\n const chartDataSet = [\r\n {\r\n data: posStats,\r\n name: [\"Crescimento Positivo\"],\r\n },\r\n {\r\n data: negStats,\r\n name: [\"Crescimento Negativo\"]\r\n }\r\n ];\r\n\r\n setChartData(chartDataSet);\r\n\r\n // Generate labels\r\n let chartTopics = chartKeys.map( chartKey => dei_topics.filter( dei_topic => dei_topic.key === chartKey )[0].label );\r\n chartTopics = chartTopics.map( (chartTopic, i) => {\r\n let topicNumber = (i+1).toString().padStart(2, 0);\r\n let middle = Math.ceil(chartTopic.length / 2);\r\n let nextDot = chartTopic.lastIndexOf(' ', middle);\r\n nextDot = nextDot <= 0 ? chartTopic.indexOf(' ', middle) : nextDot;\r\n return [topicNumber, chartTopic.substr(0, nextDot), chartTopic.substr(nextDot, chartTopic.length).trim()];\r\n });\r\n setChartLabels(chartTopics);\r\n }\r\n\r\n if (window.innerWidth > 768) {\r\n setDesktop(true);\r\n } else {\r\n setDesktop(false);\r\n }\r\n const updateMedia = () => {\r\n if (window.innerWidth > 768) {\r\n setDesktop(true);\r\n } else {\r\n setDesktop(false);\r\n }\r\n };\r\n\r\n window.addEventListener(\"resize\", updateMedia);\r\n return () => window.removeEventListener(\"resize\", updateMedia);\r\n }, [activeFilter, activeSubFilter, activeTopics]);\r\n\r\n return (\r\n \r\n {page_copy.map((copy) => (\r\n <>\r\n \r\n \r\n \r\n
    \r\n \r\n \r\n

    \r\n {copy.deiSection.chartHeading}\r\n

    \r\n
    \r\n \r\n Tópico\r\n 0 ? 'noBottomRadius' : '']}\r\n MenuProps={{ PaperProps: { style: { maxHeight: 275 } } }}\r\n >\r\n \r\n Selecione até 4:\r\n \r\n {dei_topics.map((dei_topic) => (\r\n \r\n activeTopic.key === dei_topic.key).length > 0}\r\n icon={}\r\n checkedIcon={}\r\n inputProps={{ 'aria-label': dei_topic.label }}\r\n />\r\n \r\n \r\n ))}\r\n \r\n \r\n 0 ? 'is-hidden is-visible' : 'is-hidden'}>\r\n Filtrar por:\r\n <>Filtrar por: {activeFilter.label}}\r\n onChange={handleExecFilterChange}\r\n IconComponent={SelectCarat}\r\n modifiers={activeFilter.key ? ['noRadius'] : ['noTopRadius']}\r\n >\r\n {exec_filters.map((exec_filter) => (\r\n {exec_filter.label}\r\n ))}\r\n \r\n \r\n \r\n {activeFilter.label}:\r\n <>{activeFilter.label}: {activeSubFilter ? activeSubFilter.label : 'Total'}}\r\n onChange={handleSubFilterChange}\r\n IconComponent={SelectCarat}\r\n modifiers={['noTopRadius']}\r\n >\r\n {activeFilter.subfilters.map((sub_filter) => (\r\n {sub_filter.label}\r\n ))}\r\n \r\n \r\n { activeFilter.key ? : '' }\r\n
    \r\n exportComponentAsJPEG(componentRef, { fileName: \"DE&I Progress Chart\" })}\r\n onClick={(event) => {\r\n event.preventDefault();\r\n const downloadButton = event.currentTarget;\r\n const downloadChart = document.getElementById('deiChartContainer');\r\n domtoimage.toBlob(\r\n downloadChart, \r\n { \r\n width: downloadChart.getBoundingClientRect().width,\r\n height: downloadChart.getBoundingClientRect().height,\r\n style: {\r\n margin: 0,\r\n },\r\n filter: (node) => {\r\n return node !== downloadButton;\r\n }\r\n }\r\n )\r\n .then(function (blob) {\r\n saveAs(blob, `${copy.deiSection.chartDownloadTitle}.jpeg`);\r\n console.log('DEI:download-DEI-Progress-Chart');\r\n window.showAnalytics('DEI:download-DEI-Progress-Chart',event);\r\n });\r\n }}\r\n modifiers={[\"white\"]}\r\n data-html2canvas-ignore\r\n >\r\n {copy.deiSection.downloadButtonLabel}\r\n \r\n
    \r\n \r\n {isDesktop ? : }\r\n \r\n \r\n
    \r\n \r\n ))}\r\n
    \r\n )\r\n}\r\n","export default __webpack_public_path__ + \"static/media/intelligent-banner.adaa4e5a.png\";","import styled from 'styled-components'\r\nimport { colors, device, typeScale } from '../../assets/styles'\r\n\r\nexport const IntelligentMain = styled.section`\r\n padding: 60px 0;\r\n background: ${colors.white200};\r\n\r\n .apexcharts-legend {\r\n flex-direction: column;\r\n padding: 10px 15px;\r\n border: 1px solid ${colors.teal100};\r\n border-radius: 4px;\r\n overflow: hidden;\r\n\r\n &:before {\r\n display: block;\r\n padding-left: 5px;\r\n content: \"Key\";\r\n /*font-family: openSansBold;*/\r\n font-weight: 700;\r\n font-size: ${typeScale.captions};\r\n text-transform: uppercase;\r\n }\r\n\r\n @media ${device.tablet} {\r\n max-height: 121px;\r\n }\r\n }\r\n`","import React, { useEffect, useState } from \"react\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\n\r\nconst optionsArray = {\r\n chart: {\r\n type: \"bar\",\r\n toolbar: {\r\n show: false,\r\n },\r\n },\r\n dataLabels: {\r\n enabled: true,\r\n formatter: function (value, { seriesIndex, dataPointIndex, w }) {\r\n return Math.round(value) + \"%\";\r\n },\r\n offsetX: 30,\r\n style: {\r\n colors: [\"#000\"],\r\n fontSize: '15px',\r\n fontFamily: 'openSansRegular, Open Sans, sans-serif',\r\n fontWeight: '400',\r\n },\r\n },\r\n fill: {\r\n type: \"pattern\",\r\n colors: [\r\n \"#86BC25\",\r\n \"#042750\",\r\n \"#31747E\"\r\n ],\r\n pattern: {\r\n style: \"slantedLines\",\r\n width: 5,\r\n height: 5,\r\n strokeWidth: 6,\r\n },\r\n },\r\n grid: {\r\n show: true,\r\n borderColor: '#90A4AE',\r\n strokeDashArray: 2,\r\n position: 'back',\r\n xaxis: {\r\n lines: {\r\n show: true\r\n }\r\n },\r\n yaxis: {\r\n lines: {\r\n show: false\r\n }\r\n },\r\n },\r\n legend: {\r\n show: true,\r\n position: 'right',\r\n fontFamily: 'openSansRegular, Open Sans, sans-serif',\r\n markers: {\r\n fillColors: [\r\n \"#86BC25\",\r\n \"#042750\",\r\n \"#31747E\"\r\n ],\r\n }\r\n },\r\n plotOptions: {\r\n bar: {\r\n horizontal: true,\r\n barHeight: \"60px\",\r\n dataLabels: {\r\n position: 'top',\r\n maxItems: 100,\r\n hideOverflowingLabels: false,\r\n },\r\n },\r\n },\r\n stroke: {\r\n show: true,\r\n width: 1,\r\n colors: ['#F1F1F1']\r\n },\r\n tooltip: {\r\n enabled: false,\r\n },\r\n xaxis: {\r\n show: true,\r\n categories: [\r\n ['Recursos energéticos', 'e industriais'],\r\n ['Saúde e', 'ciências da vida'],\r\n 'Serviços financeiros',\r\n ['Meios tecnológicos', 'e telecomunicações'],\r\n 'Consumidor',\r\n 'Total'\r\n ],\r\n axisBorder: {\r\n show: false,\r\n },\r\n labels: {\r\n formatter: function (value) {\r\n return value + \"%\";\r\n }\r\n },\r\n },\r\n yaxis: {\r\n show: true,\r\n categories: ['0%', '10%', '20%', '30%', '40%'],\r\n min: 0,\r\n max: 40,\r\n axisBorder: {\r\n show: true,\r\n },\r\n },\r\n states: {\r\n hover: {\r\n filter: {\r\n type: 'none',\r\n }\r\n },\r\n }\r\n};\r\n\r\nconst IntelligentChartDesktop = (props) => {\r\n\r\n const [series, setSeries] = useState(props.chartData);\r\n\r\n useEffect(() => {\r\n setSeries(props.chartData);\r\n }, [props.chartData]);\r\n\r\n if (series) {\r\n return (\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n};\r\n\r\nexport default IntelligentChartDesktop;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\n\r\nconst optionsArray = {\r\n chart: {\r\n type: \"bar\",\r\n sparkline: {\r\n enabled: false,\r\n },\r\n toolbar: {\r\n show: false,\r\n }\r\n },\r\n dataLabels: {\r\n enabled: true,\r\n formatter: function (value, { seriesIndex, dataPointIndex, w }) {\r\n return Math.round( value ) + \"%\";\r\n },\r\n offsetX: 40,\r\n style: {\r\n colors: [\"#000\"],\r\n fontSize: '15px',\r\n fontFamily: 'openSansRegular, Open Sans, sans-serif',\r\n fontWeight: '400',\r\n },\r\n },\r\n fill: {\r\n type: \"pattern\",\r\n colors: [\r\n \"#86BC25\",\r\n \"#042750\",\r\n \"#31747E\"\r\n ],\r\n pattern: {\r\n style: \"slantedLines\",\r\n width: 5,\r\n height: 5,\r\n strokeWidth: 6,\r\n },\r\n },\r\n grid: {\r\n show: true,\r\n borderColor: '#90A4AE',\r\n strokeDashArray: 2,\r\n position: 'back',\r\n padding: {\r\n top: 0,\r\n },\r\n xaxis: {\r\n lines: {\r\n show: true\r\n }\r\n }, \r\n yaxis: {\r\n lines: {\r\n show: false\r\n }\r\n }, \r\n },\r\n legend: {\r\n show: true,\r\n fontFamily: 'openSansRegular, Open Sans, sans-serif',\r\n markers: {\r\n fillColors: [\r\n \"#86BC25\",\r\n \"#042750\",\r\n \"#31747E\"\r\n ],\r\n },\r\n position: \"top\",\r\n },\r\n plotOptions: {\r\n bar: {\r\n horizontal: true,\r\n barHeight: \"60px\",\r\n dataLabels: {\r\n position: 'top',\r\n maxItems: 100,\r\n hideOverflowingLabels: true,\r\n },\r\n },\r\n },\r\n stroke: {\r\n show: true,\r\n width: 1,\r\n colors: ['#F1F1F1']\r\n },\r\n tooltip: {\r\n enabled: false,\r\n },\r\n xaxis: {\r\n categories: [\r\n ['Recursos energéticos', 'e industriais'],\r\n ['Saúde e', 'ciências da vida'],\r\n 'Serviços financeiros',\r\n ['Meios tecnológicos', 'e telecomunicações'],\r\n 'Consumidor',\r\n 'Total'\r\n ],\r\n axisBorder: {\r\n show: false,\r\n },\r\n axisTicks: {\r\n show: false,\r\n },\r\n labels: {\r\n show: false,\r\n },\r\n },\r\n yaxis: {\r\n // categories: [\r\n // \"0%\",\r\n // \"10%\",\r\n // \"20%\",\r\n // \"30%\",\r\n // \"40%\"\r\n // ],\r\n axisBorder: {\r\n show: true,\r\n },\r\n },\r\n states: {\r\n hover: {\r\n filter: {\r\n type: 'none',\r\n }\r\n },\r\n }\r\n};\r\n\r\nconst IntelligentChartMobile = (props) => {\r\n\r\n const [series, setSeries] = useState(props.chartData);\r\n\r\n useEffect(() => {\r\n setSeries(props.chartData);\r\n }, [props.chartData]);\r\n\r\n if(series) {\r\n return (\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n};\r\n\r\nexport default IntelligentChartMobile;\r\n","import React, { useEffect, useRef, useState } from 'react'\r\nimport { CMOFilter, Container, ChartContainer, DownloadButton, SectionChartHeaders } from '../../assets/styles'\r\nimport Intro from '../Intro'\r\nimport ChartFooter from '../ChartFooter'\r\nimport HR from '../HR'\r\n// Images\r\nimport IntelligentBG from '../../assets/images/intelligent-banner.png'\r\nimport { IntelligentMain } from './IntelligentStyles'\r\n// import {\r\n// exportComponentAsJPEG,\r\n// } from 'react-component-export-image';\r\nimport domtoimage from 'dom-to-image';\r\nimport { saveAs } from 'file-saver';\r\nimport { page_copy } from '../../assets/data/PageCopy';\r\nimport IntelligentChartDesktop from './IntelligentChartDesktop'\r\nimport IntelligentChartMobile from './IntelligentChartMobile'\r\nimport { exec_filters as orig_filters } from '../../assets/data/Filters'\r\nimport InputLabel from '@mui/material/InputLabel';\r\nimport MenuItem from '@mui/material/MenuItem';\r\nimport FormControl from '@mui/material/FormControl';\r\nimport { SelectCarat } from \"../../assets/images/icons/Filters\";\r\nimport { visuallyHidden } from '@mui/utils';\r\nimport executiveData from \"../../assets/data/exec_data.json\";\r\n\r\nconst Intelligent = () => {\r\n const componentRef = useRef();\r\n\r\n const [isDesktop, setDesktop] = useState(false);\r\n const [chartData, setChartData] = useState([]);\r\n\r\n const exec_include = ['', 'Country', 'Q4b'];\r\n const exec_filters = orig_filters.filter( orig_filter => exec_include.includes(orig_filter.key) );\r\n\r\n const [activeFilter, setActiveFilter] = React.useState(exec_filters[0]);\r\n const handleExecFilterChange = (event) => {\r\n const {\r\n target: { value },\r\n } = event;\r\n const newActiveFilter = exec_filters.filter(exec_filter => exec_filter.key === value)[0]\r\n let tabName = 'Intelligent:filter-by-'+newActiveFilter.label.toString().split(/\\s+/).slice(0,5).join(\"-\")\r\n console.log(tabName)\r\n window.showAnalytics(tabName,event)\r\n setActiveFilter(newActiveFilter);\r\n setActiveSubFilter(newActiveFilter.subfilters[0]);\r\n }\r\n\r\n const [activeSubFilter, setActiveSubFilter] = React.useState({});\r\n const handleSubFilterChange = (event) => {\r\n const {\r\n target: { value },\r\n } = event;\r\n let tabName = 'Intelligent:sub-filter-'+activeFilter.subfilters.filter(sub_filter => sub_filter.key === value)[0].label.toString().split(/\\s+/).slice(0,5).join(\"-\")\r\n console.log(tabName)\r\n window.showAnalytics(tabName,event)\r\n setActiveSubFilter(activeFilter.subfilters.filter(sub_filter => sub_filter.key === value)[0]);\r\n }\r\n\r\n const handleClearFilters = (e) => {\r\n e.preventDefault();\r\n let tabName = 'Intelligent:reset-filter'\r\n console.log(tabName)\r\n window.showAnalytics(tabName,e)\r\n setActiveFilter(exec_filters[0]);\r\n setActiveSubFilter({});\r\n }\r\n\r\n useEffect(() => {\r\n\r\n const skillDemandData = [\r\n {\r\n key: 'Q27r4',\r\n label: 'Experiência analítica'\r\n },\r\n {\r\n key: 'Q27r5',\r\n label: 'Experiência criativa'\r\n },\r\n {\r\n key: 'Q27r6',\r\n label: 'Fortes competências de colaboração'\r\n },\r\n ]\r\n\r\n let dataSet = executiveData.filter( executive => executive[\"Q2\"] !== \"5\" );\r\n\r\n if(activeFilter.key && activeSubFilter.key) {\r\n if(activeFilter.key === \"Q4b\") {\r\n dataSet = (activeSubFilter.key === 1) ?\r\n dataSet.filter( executive => executive[\"Q4\"] === \"4\") :\r\n dataSet.filter( executive => executive[\"Q4\"] !== \"4\")\r\n } else {\r\n dataSet = dataSet.filter( executive => executive[activeFilter.key] === activeSubFilter.key.toString() );\r\n }\r\n }\r\n\r\n const industryVals = [2,4,3,6,1,0];\r\n let industryDataSets = industryVals.map( industryVal => industryVal ? dataSet.filter( executive => parseInt(executive[\"Q2\"]) === industryVal ) : dataSet );\r\n\r\n const skillDemandDataSet = skillDemandData.map( skillDemand => {\r\n return {\r\n name: skillDemand.label,\r\n data: industryDataSets.map( industryDataSet => {\r\n const filteredSet = industryDataSet.filter( executive => executive[skillDemand.key] === \"1\" );\r\n return Math.round( filteredSet.length / industryDataSet.length * 100 );\r\n }),\r\n };\r\n });\r\n\r\n setChartData(skillDemandDataSet);\r\n\r\n if (window.innerWidth > 768) {\r\n setDesktop(true);\r\n } else {\r\n setDesktop(false);\r\n }\r\n const updateMedia = () => {\r\n if (window.innerWidth > 768) {\r\n setDesktop(true);\r\n } else {\r\n setDesktop(false);\r\n }\r\n };\r\n\r\n window.addEventListener(\"resize\", updateMedia);\r\n return () => window.removeEventListener(\"resize\", updateMedia);\r\n }, [activeFilter, activeSubFilter]);\r\n\r\n return (\r\n \r\n {page_copy.map(copy => (\r\n <>\r\n \r\n \r\n \r\n
    \r\n \r\n \r\n

    \r\n {copy.intelligentSection.chartHeading}\r\n

    \r\n
    \r\n \r\n Filtrar por:\r\n <>Filtrar por: {activeFilter.label}}\r\n onChange={handleExecFilterChange}\r\n IconComponent={SelectCarat}\r\n modifiers={activeFilter.key ? ['noBottomRadius'] : ['']}\r\n >\r\n {exec_filters.map((exec_filter) => (\r\n {exec_filter.label}\r\n ))}\r\n \r\n \r\n \r\n {activeFilter.label}:\r\n <>{activeFilter.label}: {activeSubFilter ? activeSubFilter.label : 'Total'}}\r\n onChange={handleSubFilterChange}\r\n IconComponent={SelectCarat}\r\n modifiers={['noTopRadius','hidden']}\r\n className={activeFilter.key ? 'is-visible' : ''}\r\n >\r\n {activeFilter.subfilters.map((sub_filter) => (\r\n {sub_filter.label}\r\n ))}\r\n \r\n \r\n { activeFilter.key ? : '' }\r\n
    \r\n exportComponentAsJPEG(componentRef, { fileName: \"In Demand Skills Chart\"})} \r\n onClick={(event) => {\r\n event.preventDefault();\r\n const downloadButton = event.currentTarget;\r\n const downloadChart = document.getElementById('intelligentChartContainer');\r\n domtoimage.toBlob(\r\n downloadChart, \r\n { \r\n width: downloadChart.getBoundingClientRect().width,\r\n height: downloadChart.getBoundingClientRect().height,\r\n style: {\r\n margin: 0,\r\n },\r\n filter: (node) => {\r\n return node !== downloadButton;\r\n }\r\n }\r\n )\r\n .then(function (blob) {\r\n saveAs(blob, `${copy.intelligentSection.chartDownloadTitle}.jpeg`);\r\n console.log(\"Intelligent:download-In-Demand-Skills-Chart\");\r\n window.showAnalytics(\"Intelligent:download-In-Demand-Skills-Chart\", event);\r\n });\r\n }}\r\n data-html2canvas-ignore\r\n >\r\n {copy.intelligentSection.downloadButtonLabel}\r\n \r\n
    \r\n
    \r\n {isDesktop ? : }\r\n
    \r\n \r\n
    \r\n \r\n ))}\r\n
    \r\n )\r\n}\r\n\r\nexport default Intelligent\r\n","export default __webpack_public_path__ + \"static/media/cookieless-bg.850667a0.png\";","import styled from 'styled-components'\r\nimport { applyStyleModifiers } from 'styled-components-modifiers'\r\nimport { colors, device, DownloadButton } from '../../assets/styles'\r\n\r\nexport const CookielessMain = styled.section`\r\n padding: 60px 0;\r\n background: #ABDAFA;\r\n\r\n ${DownloadButton} {\r\n margin: 30px 0;\r\n \r\n @media ${device.tablet} {\r\n margin-top: 100px;\r\n }\r\n }\r\n`\r\n\r\nexport const CircleChart = styled.div`\r\n margin: 0 auto;\r\n max-height: 600px;\r\n /*font-family: openSansLight;*/\r\n font-weight: 100;\r\n\r\n @media ${device.laptop} {\r\n max-width: 680px;\r\n width: 60%;\r\n }\r\n`\r\n\r\nconst CIRCLE_MODIFIERS = {\r\n small: () => `\r\n height: 130px;\r\n width: 130px;\r\n grid-area: three;\r\n align-self: start;\r\n justify-self: center;\r\n margin-left: -30px;\r\n margin-top: -20px;\r\n\r\n @media ${device.tablet} {\r\n height: 225px;\r\n margin-top: -50px;\r\n margin-left: -70px;\r\n width: 225px;\r\n }\r\n `,\r\n medium: () => `\r\n height: 148px;\r\n width: 148px;\r\n grid-area: one;\r\n align-self: flex-end;\r\n justify-self: flex-end;\r\n\r\n @media ${device.tablet} {\r\n height: 295px;\r\n width: 295px;\r\n }\r\n `,\r\n large: () => `\r\n height: 195px;\r\n width: 195px;\r\n grid-area: two;\r\n align-self: flex-end;\r\n\r\n @media ${device.tablet} {\r\n height: 390px;\r\n width: 390px;\r\n }\r\n `,\r\n blue: () => `\r\n background: ${colors.blue300};\r\n `,\r\n teal: () => `\r\n background: ${colors.teal300};\r\n `,\r\n green: () => `\r\n background: ${colors.green100};\r\n `,\r\n}\r\n\r\nexport const Circle = styled.div`\r\n display: flex;\r\n align-items: center;\r\n flex-direction: column;\r\n justify-content: center;\r\n border-radius: 50%;\r\n transition: ease .25s;\r\n\r\n @media(hover: hover) and (pointer: fine) {\r\n &:hover {\r\n opacity: .8;\r\n }\r\n }\r\n\r\n p {\r\n margin: 0;\r\n color: ${colors.white};\r\n /*font-family: openSansRegular;*/\r\n font-weight: 400;\r\n font-size: 14px;\r\n\r\n @media ${device.tablet} {\r\n font-size: 16px;\r\n }\r\n\r\n &.largeNum {\r\n margin-bottom: 20px;\r\n /*font-family: openSansLight;*/\r\n font-weight: 100;\r\n font-size: 45px;\r\n line-height: .5;\r\n\r\n @media ${device.tablet} {\r\n font-size: 80px;\r\n }\r\n\r\n sup {\r\n position: relative;\r\n top: -25px;\r\n left: 4px;\r\n font-size: 20px;\r\n\r\n @media ${device.tablet} {\r\n top: -35px;\r\n font-size: 30px;\r\n }\r\n }\r\n }\r\n }\r\n\r\n ${applyStyleModifiers(CIRCLE_MODIFIERS)}\r\n`","import React, { useEffect, useState } from \"react\"\r\nimport { VictoryScatter, VictoryChart, VictoryAxis, VictoryLabel } from 'victory'\r\n\r\n// import { Circle } from \"./CookielessStyles\"\r\n// import CountUp from \"react-countup\"\r\n\r\nconst CookielessChart = (props) => {\r\n const [isDesktop, setDesktop] = useState(false);\r\n const [chartData, setChartData] = useState(props.chartData)\r\n\r\n useEffect(() => {\r\n setChartData(props.chartData);\r\n\r\n if (window.innerWidth > 1212) {\r\n setDesktop(true);\r\n } else {\r\n setDesktop(false);\r\n }\r\n const updateMedia = () => {\r\n if (window.innerWidth > 1212) {\r\n setDesktop(true);\r\n } else {\r\n setDesktop(false);\r\n }\r\n };\r\n\r\n window.addEventListener(\"resize\", updateMedia);\r\n return () => window.removeEventListener(\"resize\", updateMedia);\r\n\r\n }, [props.chartData])\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n }\r\n style={{\r\n data: {\r\n fill: ({ datum }) => (datum.x === 1.9) ? \"#042750\" : (datum.x === 9) ? \"#31747E\" : \"#86BC25\",\r\n },\r\n labels: {\r\n fontFamily: \"helvetica\",\r\n }\r\n }}\r\n data={[\r\n { x: 1.9, y: 8, amount: `${chartData[0]}` },\r\n { x: 9, y: 8.4, amount: `${chartData[1]}` },\r\n { x: 4.5, y: 3, amount: `${chartData[2]}` },\r\n ]}\r\n />\r\n \r\n \r\n )\r\n}\r\n\r\nexport default CookielessChart\r\n","import React, { useEffect, useRef, useState } from \"react\"\r\nimport {\r\n CMOFilter,\r\n Container,\r\n ChartContainer,\r\n DownloadButton,\r\n SectionChartHeaders,\r\n} from \"../../assets/styles\"\r\nimport Intro from \"../Intro\"\r\nimport ChartFooter from '../ChartFooter'\r\nimport HR from \"../HR\"\r\n// Images\r\nimport CookielessBG from \"../../assets/images/cookieless-bg.png\"\r\nimport { CircleChart, CookielessMain } from \"./CookielessStyles\"\r\nimport CookielessChart from \"./CookielessChartDesktop\"\r\nimport domtoimage from 'dom-to-image';\r\nimport { saveAs } from 'file-saver';\r\nimport { page_copy } from \"../../assets/data/PageCopy\"\r\nimport { exec_filters as orig_filters } from \"../../assets/data/Filters\"\r\nimport InputLabel from \"@mui/material/InputLabel\"\r\nimport MenuItem from \"@mui/material/MenuItem\"\r\nimport FormControl from \"@mui/material/FormControl\"\r\nimport { SelectCarat } from \"../../assets/images/icons/Filters\"\r\nimport { visuallyHidden } from \"@mui/utils\"\r\nimport executiveData from \"../../assets/data/exec_data.json\"\r\n\r\nconst Cookieless = () => {\r\n const componentRef = useRef()\r\n\r\n const [chartData, setChartData] = useState([])\r\n\r\n const exec_include = [\"\", \"Q2\", \"Q4b\"]\r\n const exec_filters = orig_filters.filter((orig_filter) =>\r\n exec_include.includes(orig_filter.key)\r\n )\r\n\r\n const [activeFilter, setActiveFilter] = useState(exec_filters[0])\r\n const handleExecFilterChange = (event) => {\r\n const {\r\n target: { value },\r\n } = event\r\n const newActiveFilter = exec_filters.filter(\r\n (exec_filter) => exec_filter.key === value\r\n )[0]\r\n let tabName = 'Cookieless:filter-by-'+newActiveFilter.label.toString().split(/\\s+/).slice(0,5).join(\"-\")\r\n console.log(tabName)\r\n window.showAnalytics(tabName,event)\r\n setActiveFilter(newActiveFilter)\r\n setActiveSubFilter(newActiveFilter.subfilters[0])\r\n }\r\n\r\n const [activeSubFilter, setActiveSubFilter] = useState({})\r\n const handleSubFilterChange = (event) => {\r\n const {\r\n target: { value },\r\n } = event\r\n let tabName = 'Cookieless:sub-filter-'+activeFilter.subfilters.filter(sub_filter => sub_filter.key === value)[0].label.toString().split(/\\s+/).slice(0,5).join(\"-\")\r\n console.log(tabName)\r\n window.showAnalytics(tabName,event)\r\n setActiveSubFilter(\r\n activeFilter.subfilters.filter(\r\n (sub_filter) => sub_filter.key === value\r\n )[0]\r\n )\r\n }\r\n\r\n const handleClearFilters = (e) => {\r\n e.preventDefault();\r\n let tabName = 'Cookieless:reset-filter'\r\n console.log(tabName)\r\n window.showAnalytics(tabName,e)\r\n setActiveFilter(exec_filters[0]);\r\n setActiveSubFilter({});\r\n }\r\n\r\n useEffect(() => {\r\n // const dataSet =\r\n // activeFilter.key && activeSubFilter.key\r\n // ? executiveData.filter(\r\n // (executive) =>\r\n // executive[activeFilter.key] ===\r\n // activeSubFilter.key.toString()\r\n // )\r\n // : executiveData\r\n\r\n let dataSet = executiveData;\r\n if(activeFilter.key && activeSubFilter.key) {\r\n if(activeFilter.key === \"Q4b\") {\r\n dataSet = (activeSubFilter.key === 1) ?\r\n dataSet.filter( executive => executive[\"Q4\"] === \"4\") :\r\n dataSet.filter( executive => executive[\"Q4\"] !== \"4\")\r\n } else {\r\n dataSet = dataSet.filter( executive => executive[activeFilter.key] === activeSubFilter.key.toString() )\r\n }\r\n }\r\n\r\n const posGrowth = dataSet.filter(\r\n (executive) => parseInt(executive[\"Q9\"]) > 10\r\n )\r\n const midGrowth = dataSet.filter(\r\n (executive) =>\r\n parseInt(executive[\"Q9\"]) <= 10 && parseInt(executive[\"Q9\"]) > 0\r\n )\r\n const negGrowth = dataSet.filter(\r\n (executive) => parseInt(executive[\"Q9\"]) <= 0\r\n )\r\n\r\n // need to check the set and filter only those who answered yes on Q16a.\r\n // this was the missing piece originally\r\n\r\n const posGrowthFiltered = posGrowth.filter(\r\n (executive) => executive.Q16a === \"1\"\r\n )\r\n const midGrowthFiltered = midGrowth.filter(\r\n (executive) => executive.Q16a === \"1\"\r\n )\r\n const negGrowthFiltered = negGrowth.filter(\r\n (executive) => executive.Q16a === \"1\"\r\n )\r\n\r\n // position is important. had to flip the first two so they went in the right bubble\r\n const chartDataSet = [\r\n Math.round((midGrowthFiltered.length / midGrowth.length) * 100),\r\n Math.round((posGrowthFiltered.length / posGrowth.length) * 100),\r\n Math.round((negGrowthFiltered.length / negGrowth.length) * 100),\r\n ]\r\n\r\n setChartData(chartDataSet)\r\n }, [activeFilter, activeSubFilter])\r\n\r\n return (\r\n \r\n {page_copy.map((copy) => (\r\n <>\r\n \r\n \r\n \r\n
    \r\n \r\n \r\n

    {copy.cookielessSection.chartHeading}

    \r\n
    \r\n \r\n \r\n Filtrar por:\r\n \r\n (\r\n <>\r\n Filtrar por:{\" \"}\r\n {activeFilter.label}\r\n \r\n )}\r\n onChange={handleExecFilterChange}\r\n IconComponent={SelectCarat}\r\n modifiers={\r\n activeFilter.key\r\n ? [\"noBottomRadius\"]\r\n : [\"\"]\r\n }\r\n >\r\n {exec_filters.map((exec_filter) => (\r\n \r\n {exec_filter.label}\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n {activeFilter.label}:\r\n \r\n (\r\n <>\r\n \r\n {activeFilter.label}:\r\n {\" \"}\r\n {activeSubFilter\r\n ? activeSubFilter.label\r\n : \"Total\"}\r\n \r\n )}\r\n onChange={handleSubFilterChange}\r\n IconComponent={SelectCarat}\r\n modifiers={[\"noTopRadius\", \"hidden\"]}\r\n className={\r\n activeFilter.key ? \"is-visible\" : \"\"\r\n }\r\n >\r\n {activeFilter.subfilters.map(\r\n (sub_filter) => (\r\n \r\n {sub_filter.label}\r\n \r\n )\r\n )}\r\n \r\n \r\n { activeFilter.key ? : '' }\r\n
    \r\n {\r\n event.preventDefault();\r\n const downloadButton = event.currentTarget;\r\n const downloadChart = document.getElementById('cookielessChartContainer');\r\n domtoimage.toBlob(\r\n downloadChart, \r\n { \r\n width: downloadChart.getBoundingClientRect().width,\r\n height: downloadChart.getBoundingClientRect().height,\r\n style: {\r\n margin: 0,\r\n },\r\n filter: (node) => {\r\n return node !== downloadButton;\r\n }\r\n }\r\n )\r\n .then(function (blob) {\r\n saveAs(blob, `${copy.cookielessSection.chartDownloadTitle}.jpeg`);\r\n console.log('Cookieless:download-Meeting-the-customer');\r\n window.showAnalytics('Cookieless:download-Meeting-the-customer',event)\r\n });\r\n }}\r\n modifiers={[\"black\"]}\r\n >\r\n {copy.cookielessSection.downloadButtonLabel}\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n
    \r\n )\r\n}\r\n\r\nexport default Cookieless\r\n","export default __webpack_public_path__ + \"static/media/HumanFirst-banner.a12d1941.png\";","import styled, { css } from 'styled-components'\r\nimport { colors, device } from '../../assets/styles'\r\n\r\nexport const HumanFirstMain = styled.section`\r\n padding: 60px 0;\r\n background-color: ${colors.charcoal};\r\n color: ${colors.white};\r\n #root & {\r\n p {\r\n color: inherit;\r\n }\r\n }\r\n`\r\n\r\nexport const ChartContainers = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n margin-top: 50px;\r\n \r\n .apexcharts-svg {\r\n overflow: visible;\r\n }\r\n\r\n .apexcharts-data-labels {\r\n transform: translateY(10px);\r\n }\r\n\r\n @media ${device.tablet} {\r\n flex-direction: row;\r\n justify-content: space-between;\r\n }\r\n\r\n .counter {\r\n color: ${colors.white};\r\n }\r\n`\r\n\r\nexport const ChartControls = styled.div`\r\n @media ${device.tablet} {\r\n width: 40%;\r\n }\r\n`\r\n\r\nexport const DataGrid = styled.div`\r\n display: flex;\r\n flex-wrap: wrap;\r\n justify-content: center;\r\n margin: 40px auto;\r\n border-top: 1px solid ${colors.white};\r\n\r\n @media ${device.tablet} {\r\n max-width: 620px;\r\n }\r\n`\r\n\r\nconst activeAndHoverStyle = css`\r\n background: ${colors.green100};\r\n color: ${colors.black};\r\n`\r\n\r\nexport const GridCell = styled.div`\r\n #root & {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n padding: 8px;\r\n width: 50%;\r\n background: ${colors.charcoal};\r\n border-bottom: 1px solid ${colors.white};\r\n border-right: 1px solid ${colors.white};\r\n cursor: pointer;\r\n font-size: 12px;\r\n text-align: center;\r\n transition: linear 0.25s;\r\n\r\n &:nth-child(odd) {\r\n border-left: 1px solid ${colors.white}\r\n }\r\n\r\n @media ${device.mobileM} {\r\n width: 50%;\r\n }\r\n\r\n @media ${device.mobileL} {\r\n font-size: 13px;\r\n }\r\n\r\n @media ${device.tablet} {\r\n font-size: 14px;\r\n }\r\n\r\n p {\r\n max-width: 150px;\r\n margin-left: auto;\r\n margin-right: auto;\r\n white-space: normal;\r\n font-size: 1em;\r\n margin: 1em 0;\r\n }\r\n\r\n &.active {\r\n ${activeAndHoverStyle};\r\n }\r\n\r\n @media(hover: hover) and (pointer: fine) {\r\n &:hover {\r\n ${activeAndHoverStyle};\r\n }\r\n }\r\n }\r\n`\r\n\r\nexport const Graphs = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n background: ${colors.charcoal}; // for screenshot so its not on a white background\r\n\r\n .chart {\r\n position: relative;\r\n padding-bottom: 40px;\r\n &:before {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n height: 72px;\r\n width: 100%;\r\n background: linear-gradient(\r\n to right,\r\n #4B4A4C,\r\n #4B4A4C 25%,\r\n #414042 25%,\r\n #414042\r\n );\r\n background-size: 20px 72px;\r\n content: \"\";\r\n }\r\n }\r\n\r\n @media ${device.tablet} {\r\n width: 50%;\r\n flex-direction: row;\r\n .chart {\r\n padding-bottom: 0;\r\n height: 500px;\r\n &:before {\r\n height: 100%;\r\n background: linear-gradient(\r\n to bottom,\r\n #4B4A4C,\r\n #4B4A4C 25%,\r\n #414042 25%,\r\n #414042\r\n );\r\n background-size: 100% 20px;\r\n }\r\n }\r\n }\r\n`\r\n\r\nexport const GraphContainer = styled.div`\r\n @media ${device.tablet} {\r\n width: 33.333%;\r\n }\r\n`\r\n\r\nexport const SurveryScore = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n height: 100%;\r\n text-align: center;\r\n\r\n @media ${device.tablet} {\r\n width: 33.333%;\r\n }\r\n\r\n span {\r\n display: block;\r\n }\r\n`\r\nexport const ChartTitle = styled.p`\r\n margin-bottom: 24px;\r\n\r\n span {\r\n // display: inline-block;\r\n // padding: 0 2px;\r\n // background: ${colors.white};\r\n // color: ${colors.black};\r\n /*font-family: openSansBold, \"Open Sans\", sans-serif;*/\r\n font-weight: bold;\r\n text-transform: uppercase;\r\n }\r\n`\r\n\r\nconst hfGraphBarColors = [\"#87BC25\", \"#8EB724\", \"#94B324\", \"#9BAF23\", \"#A2AB23\", \"#A8A722\", \"#AFA222\", \"#B59E21\", \"#BC9A20\", \"#C39620\", \"#C9921F\", \"#D08E1F\", \"#D7891E\", \"#DD851E\", \"#E4811D\", \"#E47E1E\", \"#E37920\", \"#E27522\", \"#E27024\", \"#E16B26\", \"#E16528\", \"#E0602A\", \"#DF5A2C\", \"#DE542F\", \"#DE4E31\", \"#DD4833\", \"#DC4236\"];\r\n\r\nexport const HumanFirstGraph = styled.div`\r\n position: relative;\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n padding-bottom: 35px;\r\n\r\n span {\r\n display: block;\r\n width: 4px;\r\n height: 72px;\r\n border-radius: 2px;\r\n background: rgba(255,255,255,0.15);\r\n transition: background 0.5s;\r\n &.is-active {\r\n background: #86BC25;\r\n \r\n }\r\n ${hfGraphBarColors.map( (hfGraphBarColor, i) => {\r\n return `\r\n &:nth-child(${i}) {\r\n transition-delay: ${i * 0.01}s;\r\n &.is-active {\r\n background: ${hfGraphBarColor};\r\n }\r\n }\r\n `\r\n })}\r\n }\r\n\r\n .indicator {\r\n position: absolute;\r\n bottom: 0;\r\n left: 0;\r\n transform: translateX(-50%);\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n transition: left 0.5s ease-in-out;\r\n font-size: 16px;\r\n &::before {\r\n content: \"\";\r\n width: 0; \r\n height: 0; \r\n border-left: 5px solid transparent;\r\n border-right: 5px solid transparent;\r\n border-bottom: 5px solid ${colors.white};\r\n }\r\n }\r\n\r\n @media ${device.tablet} {\r\n flex-direction: column-reverse;\r\n height: 500px;\r\n padding-bottom: 0;\r\n span {\r\n width: 100%;\r\n height: 4px;\r\n }\r\n .indicator {\r\n bottom: 100%;\r\n left: -5px;\r\n transform: translate(-100%,calc(100% - 5px));\r\n align-items: flex-end;\r\n transition: bottom 0.5s ease-in-out;\r\n &::before {\r\n border-top: 5px solid transparent;\r\n border-bottom: 5px solid transparent;\r\n border-left: 5px solid ${colors.white};\r\n border-right: none;\r\n }\r\n }\r\n }\r\n`\r\n\r\nexport const humanFirstChartOpts = {\r\n chart: {\r\n type: \"bar\",\r\n height: \"500px\",\r\n sparkline: {\r\n enabled: true,\r\n },\r\n toolbar: {\r\n show: false,\r\n },\r\n animations: {\r\n enabled: true,\r\n easing: 'easeinout',\r\n speed: 3000,\r\n }\r\n },\r\n dataLabels: {\r\n enabled: true,\r\n formatter: function (value, { seriesIndex, dataPointIndex, w }) {\r\n return Math.round(value) + \"%\";\r\n },\r\n style: {\r\n fontSize: \"20px\",\r\n fontWeight: \"300\",\r\n fontFamily: 'openSansRegular, Open Sans, sans-serif',\r\n textAlign: \"left\",\r\n },\r\n textAnchor: \"end\",\r\n offsetX: '-52%',\r\n offsetY: -10,\r\n },\r\n plotOptions: {\r\n bar: {\r\n columnWidth: \"100%\",\r\n dataLabels: {\r\n position: 'top',\r\n },\r\n },\r\n },\r\n legend: {\r\n show: false,\r\n },\r\n tooltip: {\r\n enabled: false,\r\n },\r\n xaxis: {\r\n categories: [\"01\"],\r\n labels: {\r\n show: false,\r\n },\r\n min: 0,\r\n max: 100,\r\n },\r\n yaxis: {\r\n labels: {\r\n show: false,\r\n },\r\n min: 0,\r\n max: 100,\r\n },\r\n grid: {\r\n yaxis: {\r\n lines: {\r\n show: false,\r\n },\r\n },\r\n },\r\n fill: {\r\n type: \"gradient\",\r\n colors: ['#86BC25','#C06906'],\r\n gradient: {\r\n colorFrom: '#86BC25',\r\n colorTo: '#C06906',\r\n shadeIntensity: 1,\r\n type: \"vertical\",\r\n opacityFrom: 0.7,\r\n opacityTo: 1,\r\n colorStops: [\r\n {\r\n offset: 0,\r\n color: '#C06906',\r\n opacity: 1\r\n },\r\n {\r\n offset: 100,\r\n color: '#86BC25',\r\n opacity: 1\r\n },\r\n ]\r\n }\r\n },\r\n responsive: [\r\n {\r\n breakpoint: 768,\r\n options: {\r\n chart: {\r\n height: 72,\r\n },\r\n plotOptions: {\r\n bar: {\r\n horizontal: true,\r\n barHeight: '100%',\r\n dataLabels: {\r\n position: 'top',\r\n hideOverflowingLabels: false,\r\n },\r\n }\r\n },\r\n dataLabels: {\r\n style: {\r\n fontSize: \"20px\",\r\n fontWeight: \"300\",\r\n fontFamily: \"openSansRegular\",\r\n textAlign: \"right\",\r\n },\r\n textAnchor: \"start\",\r\n offsetX: 80,\r\n offsetY: 80,\r\n },\r\n fill: {\r\n type: \"gradient\",\r\n gradient: {\r\n type: \"horizontal\",\r\n }\r\n },\r\n }\r\n }\r\n ],\r\n states: {\r\n hover: {\r\n filter: {\r\n type: 'none',\r\n }\r\n },\r\n }\r\n};","import React, { useEffect, useState } from \"react\";\r\nimport { HumanFirstGraph } from \"./HumanFirstStyles\";\r\n\r\nconst HumanFirstChart = (props) => {\r\n\r\n const [series, setSeries] = useState();\r\n const [isDesktop, setDesktop] = useState(false);\r\n const [style, setStyle] = useState({ left: 0 });\r\n\r\n const bars = [];\r\n const activeBars = Math.ceil(27 * (series / 100));\r\n\r\n for (let i = 1; i <= 27; i++) {\r\n bars.push();\r\n }\r\n\r\n\r\n\r\n useEffect(() => {\r\n setSeries(props.series);\r\n\r\n const setWindowStyle = () => {\r\n if (window.innerWidth > 768) {\r\n setDesktop(true);\r\n setStyle({ bottom: `${Math.round(props.series)}%` })\r\n } else {\r\n setDesktop(false);\r\n setStyle({ left: `${Math.round(props.series)}%` })\r\n }\r\n }\r\n\r\n setWindowStyle();\r\n\r\n window.addEventListener(\"resize\", setWindowStyle);\r\n return () => window.removeEventListener(\"resize\", setWindowStyle);\r\n }, [props]);\r\n\r\n if (series) {\r\n return (\r\n \r\n {bars}\r\n
    {Math.round(series)}%
    \r\n
    \r\n );\r\n } else {\r\n return null;\r\n }\r\n};\r\n\r\nexport default HumanFirstChart;\r\n","import React, { useEffect, useRef, useState } from 'react'\r\n// import {\r\n// exportComponentAsJPEG,\r\n// } from 'react-component-export-image';\r\nimport domtoimage from 'dom-to-image';\r\nimport { saveAs } from 'file-saver';\r\nimport { CMOFilter, Container, ChartContainer, DownloadButton, Eyebrow, SectionChartHeaders } from '../../assets/styles'\r\nimport Intro from '../Intro'\r\nimport ChartFooter from '../ChartFooter'\r\nimport HR from '../HR'\r\n// Images\r\nimport HumanFirstBG from '../../assets/images/HumanFirst-banner.png'\r\nimport { ChartContainers, ChartControls, ChartTitle, DataGrid, GraphContainer, Graphs, GridCell, HumanFirstMain, SurveryScore } from './HumanFirstStyles'\r\nimport HumanFirstChart from './HumanFirstChart';\r\nimport consumerData from \"../../assets/data/consumer_data.json\";\r\nimport { page_copy } from '../../assets/data/PageCopy';\r\n\r\nimport { consumer_filters as orig_filters } from '../../assets/data/Filters'\r\nimport InputLabel from '@mui/material/InputLabel';\r\nimport MenuItem from '@mui/material/MenuItem';\r\nimport FormControl from '@mui/material/FormControl';\r\nimport { SelectCarat } from \"../../assets/images/icons/Filters\";\r\nimport { visuallyHidden } from '@mui/utils';\r\n\r\nconst dataCells = [\r\n {\r\n key: \"Q23r1\",\r\n name: \"Oferta a partir de dispositivos inteligentes que \\\"ouvem\\\" a conversa\"\r\n },\r\n {\r\n key: \"Q23r8\",\r\n name: \"Recomendações por georreferencia de marcas inesperadas\"\r\n },\r\n {\r\n key: \"Q23r9\",\r\n name: \"Recomendações por georreferencia da marca preferida\"\r\n },\r\n {\r\n key: \"Q23r2\",\r\n name: \"Anúncios de cookies seguindo o histórico da web\"\r\n },\r\n {\r\n key: \"Q23r5\",\r\n name: \"Recomendação de compra baseada em Wearables\"\r\n },\r\n {\r\n key: \"Q23r7\",\r\n name: \"Oferta por e-mail ao cliente após a realização de pesquisa da marca\"\r\n },\r\n {\r\n key: \"Q23r4\",\r\n name: \"Recomendação de compra com base em sensores IoT\"\r\n },\r\n {\r\n key: \"Q23r6\",\r\n name: \"Alerta da marca quando os artigos podem estar a esgotar\"\r\n },\r\n {\r\n key: \"Q23r10\",\r\n name: \"Marca preferida com oferta móvel enquanto navega no site dentro de uma loja\"\r\n },\r\n {\r\n key: \"Q23r3\",\r\n name: \"Alertas de vendas da marca regularmente frequentada\"\r\n }\r\n]\r\n\r\nconst HumanFirst = () => {\r\n const componentRef = useRef();\r\n\r\n const filter_include = ['', 'Q2', 'HCountry'];\r\n const consumer_filters = orig_filters.filter(orig_filter => filter_include.includes(orig_filter.key));\r\n\r\n const [activeFilter, setActiveFilter] = useState(consumer_filters[0]);\r\n const handleFilterChange = (event) => {\r\n const {\r\n target: { value },\r\n } = event;\r\n const newActiveFilter = consumer_filters.filter(exec_filter => exec_filter.key === value)[0]\r\n let tabName = 'HumanFirst:filter-by-'+newActiveFilter.label.toString().split(/\\s+/).slice(0,5).join(\"-\")\r\n console.log(tabName)\r\n window.showAnalytics(tabName,event)\r\n setActiveFilter(newActiveFilter);\r\n setActiveSubFilter(newActiveFilter.subfilters[0]);\r\n }\r\n\r\n const [activeSubFilter, setActiveSubFilter] = useState({});\r\n const handleSubFilterChange = (event) => {\r\n const {\r\n target: { value },\r\n } = event;\r\n let tabName = 'HumanFirst:sub-filter-'+activeFilter.subfilters.filter(sub_filter => sub_filter.key === value)[0].label.toString().split(/\\s+/).slice(0,5).join(\"-\")\r\n console.log(tabName)\r\n window.showAnalytics(tabName,event)\r\n setActiveSubFilter(activeFilter.subfilters.filter(sub_filter => sub_filter.key === value)[0]);\r\n }\r\n\r\n const [active, setActive] = useState(0);\r\n const [helpfulData, setHelpfulData] = useState(0);\r\n const [creepyData, setCreepyData] = useState(0);\r\n const [delta, setDelta] = useState(0);\r\n\r\n const handleClearFilters = (e) => {\r\n e.preventDefault();\r\n let tabName = 'HumanFirst:reset-filter'\r\n console.log(tabName)\r\n window.showAnalytics(tabName,e)\r\n setActiveFilter(consumer_filters[0]);\r\n setActiveSubFilter({});\r\n }\r\n\r\n useEffect(() => {\r\n\r\n let dataSet = consumerData;\r\n\r\n if (activeFilter.key && activeSubFilter.key) {\r\n if (activeFilter.key === \"Q2\") {\r\n if (activeSubFilter.key === 1) dataSet = dataSet.filter(consumer => parseInt(consumer[\"Q2\"]) < 26);\r\n if (activeSubFilter.key === 2) dataSet = dataSet.filter(consumer => (parseInt(consumer[\"Q2\"]) >= 26 && parseInt(consumer[\"Q2\"]) < 46));\r\n if (activeSubFilter.key === 3) dataSet = dataSet.filter(consumer => parseInt(consumer[\"Q2\"]) >= 46);\r\n } else {\r\n dataSet = dataSet.filter(consumer => consumer[activeFilter.key] === activeSubFilter.key.toString());\r\n }\r\n }\r\n\r\n dataSet = dataSet.filter(consumer => consumer[dataCells[active].key]);\r\n const helpfulDataSet = dataSet.filter(consumer => consumer[dataCells[active].key] === \"4\" || consumer[dataCells[active].key] === \"5\");\r\n const creepyDataSet = dataSet.filter(consumer => consumer[dataCells[active].key] === \"1\" || consumer[dataCells[active].key] === \"2\");\r\n\r\n const helpfulPercent = helpfulDataSet.length / dataSet.length * 100;\r\n const creepyPercent = creepyDataSet.length / dataSet.length * 100\r\n setHelpfulData(helpfulPercent);\r\n setCreepyData(creepyPercent);\r\n setDelta( Math.round(helpfulPercent - creepyPercent) );\r\n\r\n }, [active, activeFilter, activeSubFilter]);\r\n\r\n return (\r\n \r\n {page_copy.map(copy => (\r\n <>\r\n \r\n \r\n \r\n
    \r\n \r\n \r\n

    \r\n {copy.humanFirstSection.chartHeading}\r\n

    \r\n
    \r\n \r\n Filtrar por: \r\n <>Filtrar por: {activeFilter.label}}\r\n onChange={handleFilterChange}\r\n IconComponent={SelectCarat}\r\n modifiers={activeFilter.key ? ['noBottomRadius'] : ['']}\r\n >\r\n {consumer_filters.map((consumer_filter) => (\r\n {consumer_filter.label}\r\n ))}\r\n \r\n \r\n \r\n {activeFilter.label}: \r\n <>{activeFilter.label}: {activeSubFilter ? activeSubFilter.label : 'Total'}}\r\n onChange={handleSubFilterChange}\r\n IconComponent={SelectCarat}\r\n modifiers={['noTopRadius', 'hidden']}\r\n className={activeFilter.key ? 'is-visible' : ''}\r\n >\r\n {activeFilter.subfilters.map((sub_filter) => (\r\n {sub_filter.label}\r\n ))}\r\n \r\n \r\n { activeFilter.key ? : '' }\r\n
    \r\n exportComponentAsJPEG(componentRef, { fileName: \"Designing a human-first data experience chart\" })}\r\n onClick={(event) => {\r\n event.preventDefault();\r\n const downloadButton = event.currentTarget;\r\n const downloadChart = document.getElementById('humanFirstChartContainer');\r\n domtoimage.toBlob(\r\n downloadChart, \r\n { \r\n width: downloadChart.getBoundingClientRect().width,\r\n height: downloadChart.getBoundingClientRect().height,\r\n style: {\r\n margin: 0,\r\n },\r\n filter: (node) => {\r\n return node !== downloadButton;\r\n }\r\n }\r\n )\r\n .then(function (blob) {\r\n saveAs(blob, `${copy.humanFirstSection.chartDownloadTitle}.jpeg`);\r\n console.log(\"Human-first:download-Designing-a-human-first\");\r\n window.showAnalytics(\"Human-first:download-Designing-a-human-first\", event);\r\n });\r\n }}\r\n data-html2canvas-ignore\r\n >\r\n {copy.humanFirstSection.downloadButtonLabel}\r\n \r\n
    \r\n \r\n \r\n

    {copy.humanFirstSection.chartSubHeading}

    \r\n \r\n {dataCells.map((cell, id) => {\r\n return (\r\n {\r\n setActive(id);\r\n console.log(\"Human-first:\" + cell.name.toString().split(/\\s+/).slice(0, 5).join(\"-\"));\r\n window.showAnalytics(\"Human-first:\" + cell.name.toString().split(/\\s+/).slice(0, 5).join(\"-\"));\r\n }}\r\n className={`${active === id ? \"active\" : \"\"}`}\r\n >\r\n

    \r\n {cell.name}\r\n

    \r\n \r\n );\r\n })}\r\n
    \r\n
    \r\n \r\n \r\n \r\n Percentagem que pensa que a prática é ÚTIL:\r\n \r\n \r\n \r\n \r\n

    \r\n \r\n {delta}%\r\n \r\n Resultado líquido
    útil\r\n

    \r\n
    \r\n \r\n \r\n Percentagem que pensa que a prática é ASSUSTADORA:\r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n ))}\r\n
    \r\n )\r\n}\r\n\r\nexport default HumanFirst\r\n","import styled from 'styled-components'\r\nimport { colors, device } from '../../assets/styles'\r\n\r\nexport const TankCircle = styled.div`\r\nmargin: 0 20px 20px;\r\nmax-width: 250px;\r\nwidth: calc(50% - 40px);\r\ntext-align: center;\r\ntransition: ease .25s;\r\ntext-align: center;\r\nposition: relative;\r\n\r\np {\r\n #root & {\r\n margin: 16px auto 0;\r\n }\r\n max-width: 170px;\r\n /*font-family: openSansBold;*/\r\n font-weight: 700;\r\n}\r\n\r\n@media ${device.tablet} {\r\n margin: 0 40px;\r\n width: calc(25% - 80px);\r\n}\r\n\r\n.c100 {\r\n margin: 0 auto;\r\n position: relative;\r\n font-size: 120px !important;\r\n width: 1em;\r\n height: 1em;\r\n border-radius: 50%;\r\n @media ${device.mobileM} {\r\n font-size: 150px !important;\r\n }\r\n @media ${device.tablet} {\r\n font-size: 200px !important;\r\n }\r\n @media ${device.laptopL} {\r\n font-size: 250px !important;\r\n }\r\n}\r\n.c100 *,\r\n.c100 :after,\r\n.c100 :before {\r\n box-sizing:content-box!important\r\n}\r\n.c100 .data {\r\n font-size: 40px;\r\n position: absolute;\r\n z-index: 1;\r\n left: 0;\r\n top: 0;\r\n width: 100%;\r\n height: 100%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n transition-property: all;\r\n transition-duration: .2s;\r\n transition-timing-function: ease-out;\r\n sup {\r\n font-size: 0.5em;\r\n }\r\n @media ${device.tablet} {\r\n font-size: 60px;\r\n }\r\n @media ${device.laptopL} {\r\n font-size: 80px;\r\n }\r\n}\r\n.c100:before {\r\n content: '';\r\n position: absolute;\r\n top: .04em;\r\n left: .04em;\r\n width: .92em;\r\n height: .92em;\r\n border-radius: 50%;\r\n border: 1px solid #6D6D6D;\r\n}\r\n// .c100:after {\r\n// position:absolute;\r\n// top:.08em;\r\n// left:.08em;\r\n// display:block;\r\n// content:\" \";\r\n// border-radius:50%;\r\n// background-color: inherit;\r\n// width:.84em;\r\n// height:.84em;\r\n// transition-property:all;\r\n// transition-duration:.2s;\r\n// transition-timing-function:ease-in;\r\n// background-color: ${colors.green200}\r\n// }\r\n.c100 {\r\n .slice, .bar, .fill {\r\n transition: all 0.3s;\r\n }\r\n}\r\n.c100 .slice {\r\n position:absolute;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n clip:rect(0,1em,1em,.5em)\r\n}\r\n.c100.p100 .slice,\r\n.c100.p51 .slice,\r\n.c100.p52 .slice,\r\n.c100.p53 .slice,\r\n.c100.p54 .slice,\r\n.c100.p55 .slice,\r\n.c100.p56 .slice,\r\n.c100.p57 .slice,\r\n.c100.p58 .slice,\r\n.c100.p59 .slice,\r\n.c100.p60 .slice,\r\n.c100.p61 .slice,\r\n.c100.p62 .slice,\r\n.c100.p63 .slice,\r\n.c100.p64 .slice,\r\n.c100.p65 .slice,\r\n.c100.p66 .slice,\r\n.c100.p67 .slice,\r\n.c100.p68 .slice,\r\n.c100.p69 .slice,\r\n.c100.p70 .slice,\r\n.c100.p71 .slice,\r\n.c100.p72 .slice,\r\n.c100.p73 .slice,\r\n.c100.p74 .slice,\r\n.c100.p75 .slice,\r\n.c100.p76 .slice,\r\n.c100.p77 .slice,\r\n.c100.p78 .slice,\r\n.c100.p79 .slice,\r\n.c100.p80 .slice,\r\n.c100.p81 .slice,\r\n.c100.p82 .slice,\r\n.c100.p83 .slice,\r\n.c100.p84 .slice,\r\n.c100.p85 .slice,\r\n.c100.p86 .slice,\r\n.c100.p87 .slice,\r\n.c100.p88 .slice,\r\n.c100.p89 .slice,\r\n.c100.p90 .slice,\r\n.c100.p91 .slice,\r\n.c100.p92 .slice,\r\n.c100.p93 .slice,\r\n.c100.p94 .slice,\r\n.c100.p95 .slice,\r\n.c100.p96 .slice,\r\n.c100.p97 .slice,\r\n.c100.p98 .slice,\r\n.c100.p99 .slice,\r\n.rect-auto {\r\n clip:rect(auto,auto,auto,auto)\r\n}\r\n.c100 .bar,\r\n.c100.p100 .fill,\r\n.c100.p51 .fill,\r\n.c100.p52 .fill,\r\n.c100.p53 .fill,\r\n.c100.p54 .fill,\r\n.c100.p55 .fill,\r\n.c100.p56 .fill,\r\n.c100.p57 .fill,\r\n.c100.p58 .fill,\r\n.c100.p59 .fill,\r\n.c100.p60 .fill,\r\n.c100.p61 .fill,\r\n.c100.p62 .fill,\r\n.c100.p63 .fill,\r\n.c100.p64 .fill,\r\n.c100.p65 .fill,\r\n.c100.p66 .fill,\r\n.c100.p67 .fill,\r\n.c100.p68 .fill,\r\n.c100.p69 .fill,\r\n.c100.p70 .fill,\r\n.c100.p71 .fill,\r\n.c100.p72 .fill,\r\n.c100.p73 .fill,\r\n.c100.p74 .fill,\r\n.c100.p75 .fill,\r\n.c100.p76 .fill,\r\n.c100.p77 .fill,\r\n.c100.p78 .fill,\r\n.c100.p79 .fill,\r\n.c100.p80 .fill,\r\n.c100.p81 .fill,\r\n.c100.p82 .fill,\r\n.c100.p83 .fill,\r\n.c100.p84 .fill,\r\n.c100.p85 .fill,\r\n.c100.p86 .fill,\r\n.c100.p87 .fill,\r\n.c100.p88 .fill,\r\n.c100.p89 .fill,\r\n.c100.p90 .fill,\r\n.c100.p91 .fill,\r\n.c100.p92 .fill,\r\n.c100.p93 .fill,\r\n.c100.p94 .fill,\r\n.c100.p95 .fill,\r\n.c100.p96 .fill,\r\n.c100.p97 .fill,\r\n.c100.p98 .fill,\r\n.c100.p99 .fill,\r\n.pie {\r\n position:absolute;\r\n border: .08em solid #23307c;\r\n width:.84em;\r\n height:.84em;\r\n clip:rect(0,.5em,1em,0);\r\n border-radius:50%;\r\n transform:rotate(0) !important\r\n}\r\n.c100.p100 .fill,\r\n.c100.p100.bar:after,\r\n.c100.p51 .fill,\r\n.c100.p51.bar:after,\r\n.c100.p52 .fill,\r\n.c100.p52.bar:after,\r\n.c100.p53 .fill,\r\n.c100.p53.bar:after,\r\n.c100.p54 .fill,\r\n.c100.p54.bar:after,\r\n.c100.p55 .fill,\r\n.c100.p55.bar:after,\r\n.c100.p56 .fill,\r\n.c100.p56.bar:after,\r\n.c100.p57 .fill,\r\n.c100.p57.bar:after,\r\n.c100.p58 .fill,\r\n.c100.p58.bar:after,\r\n.c100.p59 .fill,\r\n.c100.p59.bar:after,\r\n.c100.p60 .fill,\r\n.c100.p60.bar:after,\r\n.c100.p61 .fill,\r\n.c100.p61.bar:after,\r\n.c100.p62 .fill,\r\n.c100.p62.bar:after,\r\n.c100.p63 .fill,\r\n.c100.p63.bar:after,\r\n.c100.p64 .fill,\r\n.c100.p64.bar:after,\r\n.c100.p65 .fill,\r\n.c100.p65.bar:after,\r\n.c100.p66 .fill,\r\n.c100.p66.bar:after,\r\n.c100.p67 .fill,\r\n.c100.p67.bar:after,\r\n.c100.p68 .fill,\r\n.c100.p68.bar:after,\r\n.c100.p69 .fill,\r\n.c100.p69.bar:after,\r\n.c100.p70 .fill,\r\n.c100.p70.bar:after,\r\n.c100.p71 .fill,\r\n.c100.p71.bar:after,\r\n.c100.p72 .fill,\r\n.c100.p72.bar:after,\r\n.c100.p73 .fill,\r\n.c100.p73.bar:after,\r\n.c100.p74 .fill,\r\n.c100.p74.bar:after,\r\n.c100.p75 .fill,\r\n.c100.p75.bar:after,\r\n.c100.p76 .fill,\r\n.c100.p76.bar:after,\r\n.c100.p77 .fill,\r\n.c100.p77.bar:after,\r\n.c100.p78 .fill,\r\n.c100.p78.bar:after,\r\n.c100.p79 .fill,\r\n.c100.p79.bar:after,\r\n.c100.p80 .fill,\r\n.c100.p80.bar:after,\r\n.c100.p81 .fill,\r\n.c100.p81.bar:after,\r\n.c100.p82 .fill,\r\n.c100.p82.bar:after,\r\n.c100.p83 .fill,\r\n.c100.p83.bar:after,\r\n.c100.p84 .fill,\r\n.c100.p84.bar:after,\r\n.c100.p85 .fill,\r\n.c100.p85.bar:after,\r\n.c100.p86 .fill,\r\n.c100.p86.bar:after,\r\n.c100.p87 .fill,\r\n.c100.p87.bar:after,\r\n.c100.p88 .fill,\r\n.c100.p88.bar:after,\r\n.c100.p89 .fill,\r\n.c100.p89.bar:after,\r\n.c100.p90 .fill,\r\n.c100.p90.bar:after,\r\n.c100.p91 .fill,\r\n.c100.p91.bar:after,\r\n.c100.p92 .fill,\r\n.c100.p92.bar:after,\r\n.c100.p93 .fill,\r\n.c100.p93.bar:after,\r\n.c100.p94 .fill,\r\n.c100.p94.bar:after,\r\n.c100.p95 .fill,\r\n.c100.p95.bar:after,\r\n.c100.p96 .fill,\r\n.c100.p96.bar:after,\r\n.c100.p97 .fill,\r\n.c100.p97.bar:after,\r\n.c100.p98 .fill,\r\n.c100.p98.bar:after,\r\n.c100.p99 .fill,\r\n.c100.p99.bar:after,\r\n.pie-fill {\r\n transform:rotate(180deg) !important\r\n}\r\n.c100.p1 .bar {\r\n transform:rotate(3.6deg) !important\r\n}\r\n.c100.p2 .bar {\r\n transform:rotate(7.2deg) !important\r\n}\r\n.c100.p3 .bar {\r\n transform:rotate(10.8deg) !important\r\n}\r\n.c100.p4 .bar {\r\n transform:rotate(14.4deg) !important\r\n}\r\n.c100.p5 .bar {\r\n transform:rotate(18deg) !important\r\n}\r\n.c100.p6 .bar {\r\n transform:rotate(21.6deg) !important\r\n}\r\n.c100.p7 .bar {\r\n transform:rotate(25.2deg) !important\r\n}\r\n.c100.p8 .bar {\r\n transform:rotate(28.8deg) !important\r\n}\r\n.c100.p9 .bar {\r\n transform:rotate(32.4deg) !important\r\n}\r\n.c100.p10 .bar {\r\n transform:rotate(36deg) !important\r\n}\r\n.c100.p11 .bar {\r\n transform:rotate(39.6deg) !important\r\n}\r\n.c100.p12 .bar {\r\n transform:rotate(43.2deg) !important\r\n}\r\n.c100.p13 .bar {\r\n transform:rotate(46.8deg) !important\r\n}\r\n.c100.p14 .bar {\r\n transform:rotate(50.4deg) !important\r\n}\r\n.c100.p15 .bar {\r\n transform:rotate(54deg) !important\r\n}\r\n.c100.p16 .bar {\r\n transform:rotate(57.6deg) !important\r\n}\r\n.c100.p17 .bar {\r\n transform:rotate(61.2deg) !important\r\n}\r\n.c100.p18 .bar {\r\n transform:rotate(64.8deg) !important\r\n}\r\n.c100.p19 .bar {\r\n transform:rotate(68.4deg) !important\r\n}\r\n.c100.p20 .bar {\r\n transform:rotate(72deg) !important\r\n}\r\n.c100.p21 .bar {\r\n transform:rotate(75.6deg) !important\r\n}\r\n.c100.p22 .bar {\r\n transform:rotate(79.2deg) !important\r\n}\r\n.c100.p23 .bar {\r\n transform:rotate(82.8deg) !important\r\n}\r\n.c100.p24 .bar {\r\n transform:rotate(86.4deg) !important\r\n}\r\n.c100.p25 .bar {\r\n transform:rotate(90deg) !important\r\n}\r\n.c100.p26 .bar {\r\n transform:rotate(93.6deg) !important\r\n}\r\n.c100.p27 .bar {\r\n transform:rotate(97.2deg) !important\r\n}\r\n.c100.p28 .bar {\r\n transform:rotate(100.8deg) !important\r\n}\r\n.c100.p29 .bar {\r\n transform:rotate(104.4deg) !important\r\n}\r\n.c100.p30 .bar {\r\n transform:rotate(108deg) !important\r\n}\r\n.c100.p31 .bar {\r\n transform:rotate(111.6deg) !important\r\n}\r\n.c100.p32 .bar {\r\n transform:rotate(115.2deg) !important\r\n}\r\n.c100.p33 .bar {\r\n transform:rotate(118.8deg) !important\r\n}\r\n.c100.p34 .bar {\r\n transform:rotate(122.4deg) !important\r\n}\r\n.c100.p35 .bar {\r\n transform:rotate(126deg) !important\r\n}\r\n.c100.p36 .bar {\r\n transform:rotate(129.6deg) !important\r\n}\r\n.c100.p37 .bar {\r\n transform:rotate(133.2deg) !important\r\n}\r\n.c100.p38 .bar {\r\n transform:rotate(136.8deg) !important\r\n}\r\n.c100.p39 .bar {\r\n transform:rotate(140.4deg) !important\r\n}\r\n.c100.p40 .bar {\r\n transform:rotate(144deg) !important\r\n}\r\n.c100.p41 .bar {\r\n transform:rotate(147.6deg) !important\r\n}\r\n.c100.p42 .bar {\r\n transform:rotate(151.2deg) !important\r\n}\r\n.c100.p43 .bar {\r\n transform:rotate(154.8deg) !important\r\n}\r\n.c100.p44 .bar {\r\n transform:rotate(158.4deg) !important\r\n}\r\n.c100.p45 .bar {\r\n transform:rotate(162deg) !important\r\n}\r\n.c100.p46 .bar {\r\n transform:rotate(165.6deg) !important\r\n}\r\n.c100.p47 .bar {\r\n transform:rotate(169.2deg) !important\r\n}\r\n.c100.p48 .bar {\r\n transform:rotate(172.8deg) !important\r\n}\r\n.c100.p49 .bar {\r\n transform:rotate(176.4deg) !important\r\n}\r\n.c100.p50 .bar {\r\n transform:rotate(180deg) !important\r\n}\r\n.c100.p51 .bar {\r\n transform:rotate(183.6deg) !important\r\n}\r\n.c100.p52 .bar {\r\n transform:rotate(187.2deg) !important\r\n}\r\n.c100.p53 .bar {\r\n transform:rotate(190.8deg) !important\r\n}\r\n.c100.p54 .bar {\r\n transform:rotate(194.4deg) !important\r\n}\r\n.c100.p55 .bar {\r\n transform:rotate(198deg) !important\r\n}\r\n.c100.p56 .bar {\r\n transform:rotate(201.6deg) !important\r\n}\r\n.c100.p57 .bar {\r\n transform:rotate(205.2deg) !important\r\n}\r\n.c100.p58 .bar {\r\n transform:rotate(208.8deg) !important\r\n}\r\n.c100.p59 .bar {\r\n transform:rotate(212.4deg) !important\r\n}\r\n.c100.p60 .bar {\r\n transform:rotate(216deg) !important\r\n}\r\n.c100.p61 .bar {\r\n transform:rotate(219.6deg) !important\r\n}\r\n.c100.p62 .bar {\r\n transform:rotate(223.2deg) !important\r\n}\r\n.c100.p63 .bar {\r\n transform:rotate(226.8deg) !important\r\n}\r\n.c100.p64 .bar {\r\n transform:rotate(230.4deg) !important\r\n}\r\n.c100.p65 .bar {\r\n transform:rotate(234deg) !important\r\n}\r\n.c100.p66 .bar {\r\n transform:rotate(237.6deg) !important\r\n}\r\n.c100.p67 .bar {\r\n transform:rotate(241.2deg) !important\r\n}\r\n.c100.p68 .bar {\r\n transform:rotate(244.8deg) !important\r\n}\r\n.c100.p69 .bar {\r\n transform:rotate(248.4deg) !important\r\n}\r\n.c100.p70 .bar {\r\n transform:rotate(252deg) !important\r\n}\r\n.c100.p71 .bar {\r\n transform:rotate(255.6deg) !important\r\n}\r\n.c100.p72 .bar {\r\n transform:rotate(259.2deg) !important\r\n}\r\n.c100.p73 .bar {\r\n transform:rotate(262.8deg) !important\r\n}\r\n.c100.p74 .bar {\r\n transform:rotate(266.4deg) !important\r\n}\r\n.c100.p75 .bar {\r\n transform:rotate(270deg) !important\r\n}\r\n.c100.p76 .bar {\r\n transform:rotate(273.6deg) !important\r\n}\r\n.c100.p77 .bar {\r\n transform:rotate(277.2deg) !important\r\n}\r\n.c100.p78 .bar {\r\n transform:rotate(280.8deg) !important\r\n}\r\n.c100.p79 .bar {\r\n transform:rotate(284.4deg) !important\r\n}\r\n.c100.p80 .bar {\r\n transform:rotate(288deg) !important\r\n}\r\n.c100.p81 .bar {\r\n transform:rotate(291.6deg) !important\r\n}\r\n.c100.p82 .bar {\r\n transform:rotate(295.2deg) !important\r\n}\r\n.c100.p83 .bar {\r\n transform:rotate(298.8deg) !important\r\n}\r\n.c100.p84 .bar {\r\n transform:rotate(302.4deg) !important\r\n}\r\n.c100.p85 .bar {\r\n transform:rotate(306deg) !important\r\n}\r\n.c100.p86 .bar {\r\n transform:rotate(309.6deg) !important\r\n}\r\n.c100.p87 .bar {\r\n transform:rotate(313.2deg) !important\r\n}\r\n.c100.p88 .bar {\r\n transform:rotate(316.8deg) !important\r\n}\r\n.c100.p89 .bar {\r\n transform:rotate(320.4deg) !important\r\n}\r\n.c100.p90 .bar {\r\n transform:rotate(324deg) !important\r\n}\r\n.c100.p91 .bar {\r\n transform:rotate(327.6deg) !important\r\n}\r\n.c100.p92 .bar {\r\n transform:rotate(331.2deg) !important\r\n}\r\n.c100.p93 .bar {\r\n transform:rotate(334.8deg) !important\r\n}\r\n.c100.p94 .bar {\r\n transform:rotate(338.4deg) !important\r\n}\r\n.c100.p95 .bar {\r\n transform:rotate(342deg) !important\r\n}\r\n.c100.p96 .bar {\r\n transform:rotate(345.6deg) !important\r\n}\r\n.c100.p97 .bar {\r\n transform:rotate(349.2deg) !important\r\n}\r\n.c100.p98 .bar {\r\n transform:rotate(352.8deg) !important\r\n}\r\n.c100.p99 .bar {\r\n transform:rotate(356.4deg) !important\r\n}\r\n.c100.p100 .bar {\r\n transform:rotate(360deg) !important\r\n}\r\n`","import React, { useEffect, useState } from \"react\";\r\nimport { TankCircle } from \"./TankCircleGraphStyle\";\r\n\r\nconst TankCircleGraph = (props) => {\r\n\r\n const [percent, setPercent] = useState();\r\n const [name, setName] = useState();\r\n const [color, setColor] = useState();\r\n\r\n useEffect(() => {\r\n setPercent(props.percent);\r\n setName(props.name);\r\n setColor(props.color);\r\n }, [props]);\r\n\r\n if (percent) {\r\n return (\r\n \r\n
    \r\n
    {percent}%
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    {name}

    \r\n
    \r\n );\r\n } else {\r\n return null;\r\n }\r\n};\r\n\r\nexport default TankCircleGraph;","export default __webpack_public_path__ + \"static/media/Hybrid-banner.adf8d410.png\";","import styled from 'styled-components'\r\nimport { colors, device } from '../../assets/styles'\r\n\r\nexport const HybridMain = styled.section`\r\n padding: 0 0 60px;\r\n background: ${colors.green200};\r\n color: ${colors.black};\r\n`\r\n\r\nexport const HybridChartsWrapper = styled.div`\r\n display: flex;\r\n flex-wrap: wrap;\r\n justify-content: center;\r\n padding: 50px 0;\r\n margin: 0 -20px;\r\n background: ${colors.green200};\r\n\r\n .CircularProgressbar-trail {\r\n stroke-width: 0.031em;\r\n }\r\n\r\n @media ${device.tablet} {\r\n margin: 0 -40px;\r\n }\r\n`\r\n\r\nexport const CircleChart = styled.div`\r\n margin: 0 20px 20px;\r\n max-width: 250px;\r\n width: calc(50% - 40px);\r\n text-align: center;\r\n transition: ease .25s;\r\n\r\n p {\r\n margin: 16px auto 0;\r\n max-width: 170px;\r\n /*font-family: openSansBold;*/\r\n font-weight: 700;\r\n }\r\n\r\n @media ${device.tablet} {\r\n margin: 0 40px;\r\n width: calc(25% - 80px);\r\n }\r\n`","import React, { useRef, useEffect, useState } from 'react'\r\n// import { CircularProgressbar, buildStyles } from 'react-circular-progressbar';\r\n// import 'react-circular-progressbar/dist/styles.css';\r\nimport { CMOFilter, Container, ChartContainer, DownloadButton, SectionChartHeaders } from '../../assets/styles'\r\nimport TankCircleGraph from \"./TankCircleGraph\";\r\nimport Intro from '../Intro'\r\nimport ChartFooter from '../ChartFooter'\r\nimport HR from '../HR'\r\n// Images\r\nimport HybridBanner from '../../assets/images/Hybrid-banner.png'\r\nimport { HybridChartsWrapper, HybridMain, CircleChart } from './HybridStyles'\r\nimport domtoimage from 'dom-to-image';\r\nimport { saveAs } from 'file-saver';\r\nimport { page_copy } from '../../assets/data/PageCopy';\r\nimport { exec_filters as orig_filters } from '../../assets/data/Filters'\r\nimport InputLabel from '@mui/material/InputLabel';\r\nimport MenuItem from '@mui/material/MenuItem';\r\nimport FormControl from '@mui/material/FormControl';\r\nimport ListItemText from '@mui/material/ListItemText';\r\nimport Checkbox from '@mui/material/Checkbox';\r\nimport { CheckboxChecked, CheckboxUnchecked, SelectCarat } from \"../../assets/images/icons/Filters\";\r\nimport { visuallyHidden } from '@mui/utils';\r\nimport executiveData from \"../../assets/data/exec_data.json\";\r\n\r\nconst hybrid_topics = [\r\n {\r\n key: \"Q22r8\",\r\n label: \"Maior personalização de serviços/produtos\",\r\n },\r\n {\r\n key: \"Q22r9\",\r\n label: \"Oportunidade para ofertas inovadoras\",\r\n },\r\n {\r\n key: \"Q22r3\",\r\n label: \"Ajudar as pessoas a sentirem-se mais conectadas\",\r\n },\r\n {\r\n key: \"Q22r10\",\r\n label: \"Oferecer experiências mais inclusivas\",\r\n },\r\n {\r\n key: \"Q22r5\",\r\n label: \"As ofertas digitais só por si não proporcionaram uma experiência holística\",\r\n },\r\n {\r\n key: \"Q22r4\",\r\n label: \"Os stakeholders esperam opções físicas e digitais\",\r\n },\r\n {\r\n key: \"Q22r6\",\r\n label: \"As ofertas físicas só por si não proporcionaram uma experiência holística\",\r\n },\r\n {\r\n key: \"Q22r1\",\r\n label: \"Aumento dos custos digitais\",\r\n },\r\n {\r\n key: \"Q22r7\",\r\n label: \"Responde a preocupações de segurança\",\r\n },\r\n {\r\n key: \"Q22r2\",\r\n label: \"Prevenir o desgaste da cultura corporativa\",\r\n },\r\n]\r\n\r\nconst Hybrid = () => {\r\n const componentRef = useRef();\r\n\r\n const [chartData, setChartData] = useState([]);\r\n const chartColors = [\"#31747E\",\"#86BC25\",\"#6D6D6D\",\"#1B1718\"];\r\n\r\n const exec_include = ['', 'Q4b', 'Q2', 'Country'];\r\n const exec_filters = orig_filters.filter( orig_filter => exec_include.includes(orig_filter.key) );\r\n\r\n const [activeTopics, setActiveTopics] = useState(['Q22r8','Q22r9','Q22r3','Q22r10']);\r\n const handleTopicChange = (event) => {\r\n const {\r\n target: { value },\r\n } = event;\r\n let valueArray = typeof value === 'string' ? value.split(',') : value;\r\n if(valueArray.length > 4) valueArray = valueArray.slice(-4);\r\n \r\n if(activeTopics.length>valueArray.length){\r\n let unique = activeTopics.filter(function(obj) { return valueArray.indexOf(obj) == -1; });\r\n let tabName = 'Hybrid:Topic-'+hybrid_topics.filter(dei_topic => dei_topic.key === unique[0])[0].label.toString().split(/\\s+/).slice(0,4).join(\"-\")\r\n console.log(tabName)\r\n window.showAnalytics(tabName,event)\r\n } else {\r\n let tabName = 'Hybrid:Topic-'+hybrid_topics.filter(dei_topic => dei_topic.key === valueArray[valueArray.length-1])[0].label.toString().split(/\\s+/).slice(0,4).join(\"-\");\r\n console.log(tabName)\r\n window.showAnalytics(tabName,event)\r\n }\r\n setActiveTopics(valueArray);\r\n\r\n\r\n\r\n // If there is no value, unset other filters\r\n if(valueArray.length === 0) {\r\n setActiveFilter(exec_filters[0]);\r\n setActiveSubFilter({})\r\n }\r\n }\r\n\r\n const [activeFilter, setActiveFilter] = useState(exec_filters[0]);\r\n const handleExecFilterChange = (event) => {\r\n const {\r\n target: { value },\r\n } = event;\r\n const newActiveFilter = exec_filters.filter(exec_filter => exec_filter.key === value)[0]\r\n let tabName = 'Hybrid:filter-by-'+newActiveFilter.label.toString().split(/\\s+/).slice(0,5).join(\"-\")\r\n console.log(tabName)\r\n window.showAnalytics(tabName,event)\r\n setActiveFilter(newActiveFilter);\r\n setActiveSubFilter(newActiveFilter.subfilters[0]);\r\n }\r\n\r\n const [activeSubFilter, setActiveSubFilter] = useState({});\r\n const handleSubFilterChange = (event) => {\r\n const {\r\n target: { value },\r\n } = event;\r\n let tabName = 'Hybrid:sub-filter-'+activeFilter.subfilters.filter(sub_filter => sub_filter.key === value)[0].label.toString().split(/\\s+/).slice(0,5).join(\"-\")\r\n console.log(tabName)\r\n window.showAnalytics(tabName,event)\r\n setActiveSubFilter(activeFilter.subfilters.filter(sub_filter => sub_filter.key === value)[0]);\r\n }\r\n\r\n const renderTopicLabel = (selected) => {\r\n const topicPre = Tópico: ;\r\n let topicLabel = 'Selecione até 4';\r\n let topicCount;\r\n if (selected.length === 0) {\r\n return <>{topicPre} {topicLabel}\r\n }\r\n\r\n topicLabel = hybrid_topics.filter(hybrid_topic => hybrid_topic.key === selected[0])[0].label;\r\n if (selected.length > 1) {\r\n topicCount = +{selected.length - 1};\r\n }\r\n return <>{topicPre} {topicLabel} {topicCount}\r\n }\r\n\r\n const handleClearFilters = (e) => {\r\n e.preventDefault();\r\n let tabName = 'Hybrid:reset-filter'\r\n console.log(tabName)\r\n window.showAnalytics(tabName,e)\r\n setActiveTopics(['Q22r8','Q22r9','Q22r3','Q22r10']);\r\n setActiveFilter(exec_filters[0]);\r\n setActiveSubFilter({});\r\n }\r\n\r\n useEffect(() => {\r\n\r\n let chartDataSet = [];\r\n\r\n if(activeTopics) {\r\n let dataSet = executiveData;\r\n\r\n if(activeFilter.key && activeSubFilter.key) {\r\n // Apply the selected filter to the datasets\r\n if(activeFilter.key === \"Q4b\") {\r\n dataSet = (activeSubFilter.key === 1) ?\r\n dataSet.filter( executive => executive[\"Q4\"] === \"4\") :\r\n dataSet.filter( executive => executive[\"Q4\"] !== \"4\")\r\n } else {\r\n dataSet = dataSet.filter( executive => executive[activeFilter.key] === activeSubFilter.key.toString() );\r\n }\r\n }\r\n\r\n chartDataSet = activeTopics.map( activeTopic => {\r\n const answeredDataSet = dataSet.filter( executive => executive[activeTopic] === \"0\" || executive[activeTopic] === \"1\" );\r\n const filteredDataSet = dataSet.filter( executive => parseInt(executive[activeTopic]) === 1 );\r\n return {\r\n name: hybrid_topics.filter( hybrid_topic => hybrid_topic.key === activeTopic )[0].label,\r\n percent: Math.round( filteredDataSet.length / answeredDataSet.length * 100 ),\r\n };\r\n });\r\n }\r\n\r\n setChartData(chartDataSet);\r\n\r\n }, [activeTopics, activeFilter, activeSubFilter]);\r\n\r\n return (\r\n \r\n {page_copy.map(copy => (\r\n <>\r\n \r\n \r\n \r\n
    \r\n \r\n \r\n

    \r\n {copy.hybridSection.chartHeading}\r\n

    \r\n
    \r\n \r\n Tópico\r\n 0 ? 'noBottomRadius' : '']}\r\n MenuProps={{PaperProps: { style: { maxHeight: 275 } } }}\r\n >\r\n \r\n Selecione até 4:\r\n \r\n {hybrid_topics.map((hybrid_topic) => (\r\n \r\n activeTopic.key === hybrid_topic.key).length > 0}\r\n icon={}\r\n checkedIcon={}\r\n />\r\n \r\n \r\n ))}\r\n \r\n \r\n 0 ? 'is-hidden is-visible' : 'is-hidden'}>\r\n Filtrar por:\r\n <>Filtrar por: {activeFilter.label}}\r\n onChange={handleExecFilterChange}\r\n IconComponent={SelectCarat}\r\n modifiers={activeFilter.key ? ['noRadius'] : ['noTopRadius']}\r\n >\r\n {exec_filters.map((exec_filter) => (\r\n {exec_filter.label}\r\n ))}\r\n \r\n \r\n \r\n {activeFilter.label}:\r\n <>{activeFilter.label}: {activeSubFilter ? activeSubFilter.label : 'Total'}}\r\n onChange={handleSubFilterChange}\r\n IconComponent={SelectCarat}\r\n modifiers={['noTopRadius']}\r\n >\r\n {activeFilter.subfilters.map((sub_filter) => (\r\n {sub_filter.label}\r\n ))}\r\n \r\n \r\n { activeFilter.key ? : '' }\r\n
    \r\n {\r\n event.preventDefault();\r\n const downloadButton = event.currentTarget;\r\n const downloadChart = document.getElementById('hybridChartContainer');\r\n domtoimage.toBlob(\r\n downloadChart, \r\n { \r\n width: downloadChart.getBoundingClientRect().width,\r\n height: downloadChart.getBoundingClientRect().height,\r\n style: {\r\n margin: 0,\r\n },\r\n filter: (node) => {\r\n return node !== downloadButton;\r\n }\r\n }\r\n )\r\n .then(function (blob) {\r\n saveAs(blob, `${copy.hybridSection.chartDownloadTitle}.jpeg`);\r\n console.log(\"Hybrid:download-Elevating-the-hybrid-experience\");\r\n window.showAnalytics(\"Hybrid:download-Elevating-the-hybrid-experience\", event);\r\n });\r\n }}\r\n modifiers={[\"black\"]}\r\n data-html2canvas-ignore\r\n >\r\n {copy.hybridSection.downloadButtonLabel}\r\n \r\n
    \r\n
    \r\n \r\n {chartData.map( (chartItem, i) => (\r\n // \r\n // \r\n //

    {chartItem.name}

    \r\n //
    \r\n \r\n ))}\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n ))} \r\n
    \r\n )\r\n}\r\n\r\nexport default Hybrid\r\n","import styled from 'styled-components';\r\nimport { colors, device, Container } from '../../assets/styles';\r\n\r\nexport const HumanServiceMain = styled.section`\r\n padding: 60px 0;\r\n background: ${colors.teal300};\r\n color: ${colors.white};\r\n`;\r\n\r\n// This is just to remove the left and right padding from Container\r\n// because on mobile, when horizontal scrolling, the teal cards leak through the\r\n// padding gap that exists on the Container\r\nexport const StyledSuperchargeAiHeatmapContainer = styled.div`\r\n margin-left: -16px;\r\n margin-right: -16px;\r\n margin-top: 90px;\r\n\r\n tbody th.MuiTableCell-root {\r\n &::after {\r\n content: \"\";\r\n position: absolute;\r\n top: -1px;\r\n left: 100%;\r\n display: block;\r\n width: 10px;\r\n height: calc(100% + 1px);\r\n background: linear-gradient( to right, rgba(0,0,0,0.25), rgba(0,0,0,0) );\r\n pointer-events: none;\r\n\r\n @media ${device.laptop} {\r\n display: none;\r\n }\r\n }\r\n }\r\n`;\r\n","import React, { useEffect, useState } from 'react';\r\nimport Table from \"@mui/material/Table\";\r\nimport TableBody from \"@mui/material/TableBody\";\r\nimport TableCell from \"@mui/material/TableCell\";\r\nimport TableContainer from \"@mui/material/TableContainer\";\r\nimport TableHead from \"@mui/material/TableHead\";\r\nimport TableRow from \"@mui/material/TableRow\";\r\n\r\nimport { Markup } from \"interweave\";\r\n\r\nfunction createData(name, calories, fat, carbs, protein) {\r\n return { name, calories, fat, carbs, protein };\r\n}\r\n\r\nconst rows = [\r\n createData(\"Oferta atempada\"),\r\n createData(\"Serviço ao cliente
    com conhecimento\"),\r\n createData(\"Política de devolução sem complicações\"),\r\n createData(\"A tecnologia facilitou
    a aprendizagem\"),\r\n createData(\"Recomendações
    personalizadas\"),\r\n createData(\"Teste gratuito ou amostra\"),\r\n];\r\n\r\n/*\r\n86BC25\r\n9DC94E\r\nB4D577\r\nCAE2A0\r\nE1EEC9\r\n\r\nE7F2D3 //last one\r\n*/\r\n\r\nconst tiers = [\r\n {\r\n padding: 0,\r\n backgroundColor: \"#86BC25\",\r\n },\r\n {\r\n padding: 1,\r\n backgroundColor: \"#9DC94E\",\r\n },\r\n {\r\n padding: 2,\r\n backgroundColor: \"#B4D577\",\r\n },\r\n {\r\n padding: 3,\r\n backgroundColor: \"#CAE2A0\",\r\n },\r\n {\r\n padding: 4,\r\n backgroundColor: \"#E7F2D3\",\r\n },\r\n];\r\n\r\nconst Card = ({ content = 0 }) => {\r\n\r\n const percent = parseInt(content);\r\n let tier = 0;\r\n if( percent < 40 ) tier = 1;\r\n if( percent < 30 ) tier = 2;\r\n if( percent < 20 ) tier = 3;\r\n if( percent < 10 ) tier = 4;\r\n\r\n const cardStyle = tiers[tier];\r\n const cardPadding = 8 + cardStyle.padding * 5;\r\n const outerStyle = {\r\n height: \"100%\",\r\n padding: `${cardPadding}px`,\r\n transition: `padding 0.3s`\r\n };\r\n const innerStyle = {\r\n backgroundColor: cardStyle.backgroundColor,\r\n height: \"100%\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n transition: \"background-color 0.3s\"\r\n };\r\n const textStyle = {};\r\n return (\r\n \r\n
    \r\n
    \r\n \r\n {content}%\r\n \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nconst tableHeaderData = [\r\n \"Automóvel\",\r\n \"Viagens\",\r\n \"Vestuário
    e calçado\",\r\n \"Beleza e cuidados  pessoais\",\r\n \"Equipamento doméstico\",\r\n \"Mobiliário\",\r\n \"Produtos eletrónicos\",\r\n \"Produtos bancários
    e serviços\", \r\n];\r\n\r\nfunction Heatmap(props) {\r\n\r\n const [chartData, setChartData] = useState(props.chartData);\r\n\r\n useEffect(() => {\r\n setChartData(props.chartData);\r\n }, [props]);\r\n\r\n if(chartData) {\r\n return (\r\n \r\n \r\n \r\n \r\n {/* Empty Cell - Top Left */}\r\n \r\n {tableHeaderData.map((text) => (\r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n {rows.map((row, i) => (\r\n \r\n \r\n \r\n \r\n {chartData.map( (chartRow) => )}\r\n \r\n ))}\r\n \r\n \r\n \r\n );\r\n } else {\r\n return '';\r\n }\r\n}\r\n\r\nexport default Heatmap;\r\n\r\n/**\r\nNOTES:\r\n\r\n\r\n */\r\n\r\n/**\r\nBUGS:\r\n - in mobile, when scrolling fast horizontally, the cards momentarily overlaps the first row (which is sticky)\r\n\r\n MINOR:\r\n - \"Technology made it easier to learn more\" is too long, wraps to 3 lines in mobile, but if I don't put in a
    , it's too long on desktop\r\n\r\nCLEAMUP:\r\n- remove lodash.countby\r\n */\r\n","export default __webpack_public_path__ + \"static/media/HumanServiceBanner.b0a4303f.png\";","import React, { useEffect, useRef, useState } from 'react';\r\nimport { CMOFilter, Container, ChartContainer, DownloadButton, SectionChartHeaders } from '../../assets/styles';\r\nimport Intro from '../Intro';\r\nimport ChartFooter from '../ChartFooter'\r\nimport HR from '../HR';\r\nimport { HumanServiceMain, StyledSuperchargeAiHeatmapContainer } from './HumanServiceStyles';\r\n// import { exportComponentAsJPEG } from 'react-component-export-image';\r\nimport domtoimage from 'dom-to-image';\r\nimport { saveAs } from 'file-saver';\r\nimport { page_copy } from '../../assets/data/PageCopy';\r\n// Images\r\nimport Heatmap from \"./Heatmap\";\r\nimport HumanServiceBannerImg from '../../assets/images/HumanServiceBanner.png';\r\n\r\nimport { consumer_filters as orig_filters } from '../../assets/data/Filters'\r\nimport InputLabel from '@mui/material/InputLabel';\r\nimport MenuItem from '@mui/material/MenuItem';\r\nimport FormControl from '@mui/material/FormControl';\r\nimport { SelectCarat } from \"../../assets/images/icons/Filters\";\r\nimport { visuallyHidden } from '@mui/utils';\r\nimport consumerData from \"../../assets/data/consumer_data.json\";\r\n\r\nconst HumanService = () => {\r\n const componentRef = useRef();\r\n\r\n const filter_include = ['', 'Q2', 'HCountry'];\r\n const consumer_filters = orig_filters.filter(orig_filter => filter_include.includes(orig_filter.key));\r\n\r\n const [activeFilter, setActiveFilter] = useState(consumer_filters[0]);\r\n const handleFilterChange = (event) => {\r\n const {\r\n target: { value },\r\n } = event;\r\n const newActiveFilter = consumer_filters.filter(exec_filter => exec_filter.key === value)[0]\r\n let tabName = 'Human-service:filter-by-'+newActiveFilter.label.toString().split(/\\s+/).slice(0,5).join(\"-\")\r\n console.log(tabName)\r\n window.showAnalytics(tabName,event)\r\n setActiveFilter(newActiveFilter);\r\n setActiveSubFilter(newActiveFilter.subfilters[0]);\r\n }\r\n\r\n const [activeSubFilter, setActiveSubFilter] = useState({});\r\n const handleSubFilterChange = (event) => {\r\n const {\r\n target: { value },\r\n } = event;\r\n let tabName = 'Human-service:sub-filter-'+activeFilter.subfilters.filter(sub_filter => sub_filter.key === value)[0].label.toString().split(/\\s+/).slice(0,5).join(\"-\")\r\n console.log(tabName)\r\n window.showAnalytics(tabName,event)\r\n setActiveSubFilter(activeFilter.subfilters.filter(sub_filter => sub_filter.key === value)[0]);\r\n }\r\n\r\n const handleClearFilters = (e) => {\r\n e.preventDefault();\r\n let tabName = 'Human-service:reset-filter'\r\n console.log(tabName)\r\n window.showAnalytics(tabName,e)\r\n setActiveFilter(consumer_filters[0]);\r\n setActiveSubFilter({});\r\n }\r\n\r\n const [chartData, setChartData] = useState();\r\n useEffect(() => {\r\n\r\n const chartDataSet = [];\r\n const columns = ['Q9r1', 'Q9r2', 'Q9r3', 'Q9r4', 'Q9r5', 'Q9r6', 'Q9r7', 'Q9r8'];\r\n const rows = ['r4', 'r5', 'r3', 'r6', 'r1', 'r2'];\r\n\r\n // Determine the main dataset\r\n let dataSet = consumerData;\r\n if (activeFilter.key && activeSubFilter.key) {\r\n if (activeFilter.key === \"Q2\") {\r\n if (activeSubFilter.key === 1) dataSet = dataSet.filter(consumer => parseInt(consumer[\"Q2\"]) < 26);\r\n if (activeSubFilter.key === 2) dataSet = dataSet.filter(consumer => (parseInt(consumer[\"Q2\"]) >= 26 && parseInt(consumer[\"Q2\"]) < 46));\r\n if (activeSubFilter.key === 3) dataSet = dataSet.filter(consumer => parseInt(consumer[\"Q2\"]) >= 46);\r\n } else {\r\n dataSet = dataSet.filter(consumer => consumer[activeFilter.key] === activeSubFilter.key.toString());\r\n }\r\n }\r\n\r\n columns.forEach((column, i) => {\r\n // First, filter for consumers who made a purchase in this category\r\n const categorySet = dataSet.filter(consumer => parseInt(consumer[column]) === 1);\r\n // Now, check each influence for this column and create an array\r\n const helpKey = `Q14_${i + 1}`;\r\n const helpArray = rows.map(row => {\r\n const answeredSet = categorySet.filter(consumer => consumer[`${helpKey}${row}`] === \"1\" || consumer[`${helpKey}${row}`] === \"0\");\r\n const helpSet = categorySet.filter(consumer => consumer[`${helpKey}${row}`] === \"1\");\r\n return Math.round(helpSet.length / answeredSet.length * 100);\r\n });\r\n chartDataSet.push(helpArray);\r\n });\r\n\r\n setChartData(chartDataSet);\r\n\r\n }, [activeFilter, activeSubFilter]);\r\n\r\n return (\r\n \r\n {page_copy.map(copy => (\r\n <>\r\n \r\n \r\n \r\n
    \r\n \r\n \r\n

    {copy.superChargeSection.chartHeading}

    \r\n
    \r\n \r\n Filtrar por:\r\n <>Filtrar por: {activeFilter.label}}\r\n onChange={handleFilterChange}\r\n IconComponent={SelectCarat}\r\n modifiers={activeFilter.key ? ['noBottomRadius'] : ['']}\r\n >\r\n {consumer_filters.map((consumer_filter) => (\r\n {consumer_filter.label}\r\n ))}\r\n \r\n \r\n \r\n {activeFilter.label}:\r\n <>{activeFilter.label}: {activeSubFilter ? activeSubFilter.label : 'Total'}}\r\n onChange={handleSubFilterChange}\r\n IconComponent={SelectCarat}\r\n modifiers={['noTopRadius', 'hidden']}\r\n className={activeFilter.key ? 'is-visible' : ''}\r\n >\r\n {activeFilter.subfilters.map((sub_filter) => (\r\n {sub_filter.label}\r\n ))}\r\n \r\n \r\n {activeFilter.key ? : ''}\r\n
    \r\n exportComponentAsJPEG(componentRef, { fileName: \"Supercharging customer service with AI chart\" })}\r\n onClick={(event) => {\r\n event.preventDefault();\r\n const downloadButton = event.currentTarget;\r\n const downloadChart = document.getElementById('superChargeChartContainer');\r\n domtoimage.toBlob(\r\n downloadChart, \r\n { \r\n width: downloadChart.getBoundingClientRect().width,\r\n height: downloadChart.getBoundingClientRect().height,\r\n style: {\r\n margin: 0,\r\n },\r\n filter: (node) => {\r\n return node !== downloadButton;\r\n }\r\n }\r\n )\r\n .then(function (blob) {\r\n saveAs(blob, `${copy.superChargeSection.chartDownloadTitle}.jpeg`);\r\n console.log(\"Human-service:download-Supercharging-customer-service\");\r\n window.showAnalytics(\"Human-service:download-Supercharging-customer-service\", event)\r\n });\r\n }}\r\n data-html2canvas-ignore\r\n >\r\n {copy.superChargeSection.downloadButtonLabel}\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n ))}\r\n
    \r\n );\r\n};\r\n\r\nexport default HumanService;\r\n","import styled from 'styled-components'\r\nimport { colors, device } from '../../assets/styles'\r\n\r\nexport const ArchivesMain = styled.section`\r\n padding: 30px 0 20px;\r\n background: ${colors.green100};\r\n\r\n @media ${device.tablet} {\r\n padding: 40px 0 30px;\r\n }\r\n`\r\n\r\nexport const ArchivesHeader = styled.div`\r\n display: flex;\r\n align-items: flex-start;\r\n flex-direction: column;\r\n\r\n @media ${device.tablet} {\r\n flex-direction: row;\r\n justify-content: space-between;\r\n }\r\n\r\n h3 {\r\n #root & {\r\n margin-bottom: 32px;\r\n @media ${device.tablet} {\r\n margin-bottom: 0;\r\n width: 60%;\r\n }\r\n }\r\n }\r\n`\r\n\r\nexport const FlexColumnOnMobileWrapper = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n\r\n a {\r\n margin-bottom: 16px;\r\n }\r\n\r\n @media ${device.tablet} {\r\n flex-direction: row;\r\n }\r\n`","import React from 'react'\r\nimport HR from '../HR'\r\nimport { Container, PrimaryButtonLink, SecondaryButton } from '../../assets/styles'\r\nimport { ArchivesHeader, ArchivesMain, FlexColumnOnMobileWrapper } from './ArchivesStyles'\r\nimport { page_copy } from '../../assets/data/PageCopy';\r\n\r\nconst Archive = () => {\r\n return (\r\n \r\n {page_copy.map(copy => (\r\n <>\r\n \r\n \r\n

    \r\n {copy.trendArchivesSection.heading}\r\n

    \r\n {const tabName=copy.trendArchivesSection.heading.split(/\\s+/).slice(0,5).join('-')+':'+copy.trendArchivesSection.buttonLabel.split(/\\s+/).slice(0,5).join('-');console.log(tabName);window.showAnalytics(tabName,e)}}\r\n modifiers={['blackOutlined', 'arrow', 'rightArrow']}>\r\n {copy.trendArchivesSection.buttonLabel}\r\n \r\n
    \r\n
    \r\n \r\n {const tabName=copy.trendArchivesSection.heading.split(/\\s+/).slice(0,5).join('-')+':'+copy.trendArchivesSection.moreButtonLabel.split(/\\s+/).slice(0,5).join('-');console.log(tabName);window.showAnalytics(tabName,e)}}\r\n href={`https://www2.deloitte.com/us/en/insights/topics/marketing-and-sales-operations/global-marketing-trends/archive.html`} >\r\n {copy.trendArchivesSection.moreButtonLabel} \r\n \r\n {\r\n window.open('https://www2.deloitte.com/us/en/insights/topics/marketing-and-sales-operations/global-marketing-trends/archive.html','_blank')\r\n const tabName=copy.trendArchivesSection.heading.split(/\\s+/).slice(0,5).join('-')+':'+copy.trendArchivesSection.moreButtonLabelEnd.split(/\\s+/).slice(0,5).join('-');console.log(tabName);window.showAnalytics(tabName,e)}}\r\n href={`/`} modifiers={['arrow', 'angledArrow']}>\r\n {copy.trendArchivesSection.moreButtonLabelEnd}\r\n \r\n \r\n
    \r\n \r\n ))} \r\n
    \r\n )\r\n}\r\n\r\nexport default Archive\r\n","import styled from 'styled-components'\r\nimport { colors, device, mobileTypeScale, typeScale } from '../../assets/styles'\r\n\r\nexport const MethodMain = styled.section`\r\n padding: 40px 0;\r\n\r\n .eyebrow {\r\n color: ${colors.black};\r\n }\r\n`\r\n\r\nexport const MethodHeading = styled.p`\r\n @media ${device.tablet} {\r\n max-width: 780px;\r\n }\r\n\r\n .h5 {\r\n margin: 20px 0;\r\n font-size: ${mobileTypeScale.h5};\r\n line-height: 30px;\r\n\r\n @media ${device.tablet} {\r\n font-size: ${typeScale.h5};\r\n line-height: 38px;\r\n }\r\n }\r\n`\r\n\r\nexport const MethodColumns = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n\r\n @media ${device.tablet} {\r\n flex-direction: row;\r\n justify-content: space-between;\r\n }\r\n\r\n div {\r\n @media ${device.tablet} {\r\n width: 48%;\r\n }\r\n }\r\n\r\n p {\r\n /*font-family: openSansRegular;*/\r\n font-weight: 400;\r\n line-height: 1.5;\r\n }\r\n`","import React from 'react'\r\nimport { Container, Eyebrow } from '../../assets/styles'\r\nimport { MethodMain, MethodHeading, MethodColumns } from './MethodologyStyles'\r\nimport { page_copy } from '../../assets/data/PageCopy';\r\n\r\nconst index = () => {\r\n return (\r\n \r\n {page_copy.map(copy => (\r\n <>\r\n \r\n Metedologia\r\n \r\n {copy.methodologySection.lgText}\r\n \r\n \r\n
    \r\n

    \r\n {copy.methodologySection.colOnePara}\r\n

    \r\n
    \r\n
    \r\n

    \r\n {copy.methodologySection.colTwoParaOne}\r\n

    \r\n

    \r\n {copy.methodologySection.colTwoParaTwo}\r\n

    \r\n
    \r\n
    \r\n
    \r\n \r\n ))} \r\n
    \r\n )\r\n}\r\n\r\nexport default index\r\n","import styled, { css } from 'styled-components'\r\nimport { device } from '../../assets/styles'\r\n\r\nconst cssInput = css`\r\n height: 48px;\r\n font-size: 20px;\r\n border-radius: 3px;\r\n border-width: 0px;\r\n margin-top: 8px;\r\n margin-bottom: 24px;\r\n -webkit-box-sizing: border-box;\r\n -moz-box-sizing: border-box;\r\n box-sizing: border-box;\r\n padding-left: 16px;\r\n`\r\n\r\nexport const StyledFormWrapper = styled.div`\r\n font-family: Helvetica;\r\n font-weight: 500;\r\n font-size: 16px;\r\n\r\n padding-top: 4em;\r\n padding-bottom: 4em;\r\n\r\n @media ${device.laptop} {\r\n width: 75%;\r\n }\r\n`\r\n\r\nexport const StyledHeading = styled.h2`\r\n #root & {\r\n letter-spacing: 2px;\r\n font-weight: 400;\r\n font-size: 56px;\r\n margin-bottom: 0px;\r\n }\r\n`\r\n\r\nexport const StyledSubheading = styled.h3`\r\n #root & {\r\n letter-spacing: 1.5px;\r\n font-weight: 300;\r\n font-size: 32px;\r\n margin-top: 12px;\r\n margin-bottom: 60px;\r\n }\r\n`\r\n\r\nexport const StyledDescription = styled.p`\r\n margin-bottom: 1.5em;\r\n`\r\n\r\nexport const StyledInputHalfWidthWrapper = styled.div`\r\n @media ${device.tablet} {\r\n display: flex;\r\n justify-content: space-between;\r\n width: 100%;\r\n & > .half {\r\n width: 49%;\r\n }\r\n }\r\n`\r\n\r\nexport const StyledLabel = styled.label`\r\n display: inline-block;\r\n font-size: 16px;\r\n letter-spacing: 1.2px;\r\n`\r\n\r\nexport const StyledInput = styled.input`\r\n ${cssInput}\r\n // width: ${(props) => (props.half ? '95%' : '100%')};\r\n width: 100%;\r\n`\r\n\r\nexport const StyledSelect = styled.select`\r\n ${cssInput}\r\n width: 100%;\r\n`\r\n\r\nexport const StyledSubmitButton = styled.button`\r\n font-family: Helvetica;\r\n letter-spacing: 2px;\r\n font-size: 14px;\r\n background-color: transparent;\r\n border: 2px solid black;\r\n border-radius: 25px;\r\n text-transform: uppercase;\r\n padding: 12px 24px;\r\n`\r\n\r\nexport const StyledErrorMessageSpan = styled.span`\r\n color: red;\r\n margin-left: 12px;\r\n`\r\n","import styled, { css } from 'styled-components';\r\nimport { colors, device, Eyebrow } from '../../assets/styles';\r\nimport { Link } from \"react-router-dom\";\r\n\r\nconst CSS = {\r\n font: css`\r\n font-size: 1.25em;\r\n @media ${device.tablet} {\r\n font-size: 1.5em;\r\n }\r\n `,\r\n contentBox: css`\r\n margin-bottom: 2em;\r\n `,\r\n downloadButton: css``,\r\n};\r\n\r\nexport const FormIntroSectionWrapper = styled.div`\r\n margin-top: 16px;\r\n`;\r\n\r\nexport const BackLink = styled(Link)`\r\n color: ${colors.teal300};\r\n font-size: 18px;\r\n font-weight: bold;\r\n & > span {\r\n text-decoration: underline;\r\n }\r\n`;\r\n\r\nexport const DownloadTheReportCopy = styled.div`\r\n margin-top: 40px;\r\n margin-bottom: 16px;\r\n\r\n @media ${device.tablet} {\r\n margin-top: 60px;\r\n }\r\n`;\r\n\r\nexport const GridTemplateAreasWrapper = styled.div`\r\n margin-bottom: 36px;\r\n display: grid;\r\n grid-template-areas:\r\n 'heading heading heading'\r\n 'social social social'\r\n 'trend trend trend'\r\n 'specialized specialized specialized';\r\n\r\n @media ${device.laptop} {\r\n margin: 0 0 4em;\r\n grid-template-columns: 6fr 1fr 6fr 1fr 3fr;\r\n grid-template-areas:\r\n 'heading heading heading heading social'\r\n 'trend . specialized . .'\r\n 'trend . specialized . .';\r\n }\r\n`;\r\n\r\nexport const StyledHeading = styled.h2`\r\n grid-area: heading;\r\n letter-spacing: 1.5px;\r\n line-height: 67px;\r\n margin-bottom: 16px;\r\n\r\n font-size: 56px;\r\n @media ${device.tablet} {\r\n font-size: 80px;\r\n // margin-left: -7px;\r\n }\r\n`;\r\n\r\nexport const EyebrowWithMargin = styled(Eyebrow)`\r\n @media ${device.tablet} {\r\n margin-bottom: 2em;\r\n }\r\n`;\r\n\r\nexport const TrendGridAreaWrapper = styled.div`\r\n ${CSS.contentBox}\r\n grid-area: trend;\r\n`;\r\n\r\nexport const SpecializedGridAreaWrapper = styled.div`\r\n ${CSS.contentBox}\r\n grid-area: specialized;\r\n`;\r\n\r\nexport const StyledTextWidth80 = styled.p`\r\n ${CSS.font}\r\n grid-area: text;\r\n\r\n @media ${device.tablet} {\r\n width: 82%;\r\n margin-bottom: 2em;\r\n }\r\n`;\r\n\r\nexport const SocialGridAreaWrapper = styled.div`\r\n grid-area: social;\r\n margin-bottom: 32px;\r\n`;\r\n\r\nexport const SocialHeading = styled.p`\r\n font-weight: bold;\r\n`;\r\n\r\nexport const SocialGroup = styled.div`\r\n display: flex;\r\n`;\r\n\r\nexport const SocialIconWrapper = styled.div`\r\n height: 24px;\r\n width: 24px;\r\n margin-right: 1em;\r\n svg {\r\n path {\r\n fill: ${colors.teal300};\r\n transition: fill 0.3s;\r\n }\r\n }\r\n & > button {\r\n padding: 1em;\r\n }\r\n`;\r\n","import { useEffect } from 'react'\r\nimport { BaseButton } from '../../assets/styles'\r\nimport {\r\n StyledFormWrapper,\r\n StyledHeading,\r\n StyledSubheading,\r\n StyledDescription,\r\n StyledLabel,\r\n StyledInput,\r\n StyledInputHalfWidthWrapper,\r\n StyledSelect,\r\n StyledErrorMessageSpan,\r\n} from './FormStyles'\r\nimport { locations } from './constants/locations'\r\nimport { page_copy } from '../../assets/data/PageCopy'\r\n\r\nimport { useForm } from 'react-hook-form'\r\nimport { yupResolver } from '@hookform/resolvers/yup'\r\nimport * as yup from 'yup'\r\n\r\nconst schema = yup.object().shape({\r\n firstName: yup.string().required(),\r\n lastName: yup.string().required(),\r\n email: yup.string().email().required(),\r\n company: yup.string(),\r\n title: yup.string(),\r\n location: yup.string().required(),\r\n mailingList: yup.string().required(),\r\n acceptTermsOfUse: yup.boolean().oneOf([true]).required(),\r\n})\r\n\r\nconst Form = () => {\r\n const {\r\n register,\r\n handleSubmit,\r\n formState: { errors },\r\n reset,\r\n } = useForm({\r\n resolver: yupResolver(schema),\r\n defaultValue: {\r\n Checkbox: true,\r\n },\r\n })\r\n const onSubmitHandler = (data) => {\r\n //make the api call here with form data\r\n // console.log('mockApi sent with the following data', data)\r\n reset()\r\n }\r\n\r\n useEffect(() => {\r\n // console.log('Form Errors:', errors)\r\n }, [errors])\r\n\r\n return (\r\n \r\n {page_copy.map(copy => (\r\n <>\r\n {copy.formPage.headline}\r\n {copy.formPage.subhead}\r\n \r\n All required fields are marked with an asterisk (*)\r\n \r\n\r\n
    \r\n \r\n
    \r\n First name*\r\n \r\n {errors.firstName?.message}\r\n \r\n \r\n
    \r\n
    \r\n Last name*\r\n \r\n {errors.lastName?.message}\r\n \r\n \r\n
    \r\n
    \r\n <>\r\n Email*\r\n \r\n {errors.email?.message}\r\n \r\n \r\n \r\n <>\r\n Company\r\n \r\n \r\n <>\r\n Title\r\n \r\n \r\n\r\n
    \r\n <>\r\n Location*\r\n \r\n {errors.location?.message}\r\n \r\n \r\n \r\n {locations.map(({ value, label }, idx) => {\r\n const uniqueKey =\r\n value === 'US' ? value + idx : value // There's 2 US values in data, React doesn't like it\r\n return (\r\n \r\n )\r\n })}\r\n \r\n \r\n
    \r\n\r\n
    \r\n

    \r\n I agree to receive emailed reports, articles, event\r\n invitations and other information related to Deloitte\r\n products and services. I understand I may unsubscribe at\r\n any time by clicking the link included in emails.\r\n

    \r\n \r\n \r\n \r\n \r\n \r\n {errors.mailingList?.message &&\r\n 'please make a selection'}\r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n

    \r\n The submission of personal information through this page\r\n is subject to Deloitte's{' '}\r\n Privacy Statement and{' '}\r\n Legal Terms. I have read and\r\n accept the terms of use.\r\n

    \r\n \r\n \r\n {errors.acceptTermsOfUse?.message &&\r\n 'Acceptance of Terms of Use must be provided to move forward'}\r\n \r\n
    \r\n\r\n \r\n \r\n Submit\r\n \r\n \r\n \r\n \r\n ))}\r\n
    \r\n )\r\n}\r\n\r\nexport default Form\r\n","export default __webpack_public_path__ + \"static/media/form-background.fd41a6e2.png\";","import styled from 'styled-components'\r\nimport {\r\n FacebookShareButton,\r\n LinkedinShareButton,\r\n TwitterShareButton,\r\n} from 'react-share'\r\nimport {\r\n IconSocialFb,\r\n IconSocialTw,\r\n IconSocialLi,\r\n} from '../../assets/images/icons/Social'\r\nimport Form from '../Form'\r\nimport { device, AnchorScrollButton, Container } from '../../assets/styles'\r\nimport {\r\n FormIntroSectionWrapper,\r\n BackLink,\r\n DownloadTheReportCopy,\r\n GridTemplateAreasWrapper,\r\n StyledHeading,\r\n TrendGridAreaWrapper,\r\n EyebrowWithMargin,\r\n SpecializedGridAreaWrapper,\r\n StyledTextWidth80,\r\n SocialGridAreaWrapper,\r\n SocialGroup,\r\n SocialHeading,\r\n SocialIconWrapper,\r\n} from './DownloadTheReportStyles'\r\nimport spiderBgImgUrl from '../../assets/images/form-background.png'\r\n\r\nconst SpiderWebBgWrapper = styled.div`\r\n position: absolute;\r\n pointer-events: none;\r\n height: 100vh;\r\n width: 100vw;\r\n top: 0;\r\n right: 0;\r\n\r\n @media ${device.laptop} {\r\n &::before {\r\n content: '';\r\n background-image: url(${spiderBgImgUrl});\r\n background-position: top right;\r\n background-repeat: no-repeat;\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n height: 100%;\r\n width: 100%;\r\n pointer-events: none;\r\n }\r\n }\r\n`\r\n\r\nconst GreenBackground = styled.div`\r\n background-color: #a7d1ce;\r\n`\r\n\r\nconst DownloadTheReport = () => {\r\n return (\r\n <>\r\n \r\n\r\n \r\n \r\n window.showAnalytics('Form:Back-to-home-page',e)}\r\n >\r\n {'< '}\r\n voltar atrás\r\n \r\n \r\n \r\n 2022 Global Marketing Trends\r\n \r\n\r\n \r\n \r\n Descarregue{' '}\r\n \r\n o relatório\r\n \r\n \r\n \r\n \r\n Descarregue o relatório completo com informações sobre as macro tendências atuais e futuras de marketing.\r\n \r\n {window.open(\"https://www2.deloitte.com/content/dam/insights/articles/us164911_gmt_2022_master/DI_2022-Global-Marketing-Trends.pdf\",'_blank');window.showAnalytics('Form:Download-full-trend-report',e)}}\r\n duration={500}\r\n tabIndex={`0`}\r\n >\r\n Descarregue o relatório completo\r\n \r\n \r\n\r\n {/* \r\n \r\n Are you more interested in getting a more\r\n specialized cut of data for industry, role,\r\n region, and business type?\r\n \r\n \r\n Download a specialized report\r\n \r\n */}\r\n\r\n \r\n Partilhe o relatório\r\n \r\n {window.showAnalytics('Form:link-linktofacebook-share',e)}}\r\n url={window.location.href}\r\n >\r\n \r\n \r\n \r\n \r\n {window.showAnalytics('Form:link-linktotwitter-share',e)}}\r\n url={window.location.href}\r\n >\r\n \r\n \r\n \r\n \r\n {window.showAnalytics('Form:link-linktolinkedin-share',e)}}\r\n url={window.location.href}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {/*\r\n \r\n
    \r\n {/*
    */}\r\n {/*
    \r\n
    \r\n
    */}\r\n \r\n )\r\n}\r\n\r\nexport default DownloadTheReport\r\n","import Layout from \"../components/Layout\";\r\nimport DownloadTheReport from \"../components/DownloadTheReport\";\r\nimport { useEffect } from \"react\";\r\nimport $ from 'jquery';\r\n\r\nconst FormPage = () => {\r\n useEffect(()=>{\r\n $(window).scrollTop(0);\r\n })\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default FormPage;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport styled from \"styled-components\";\r\n// Components\r\nimport Glance from \"../components/Glance\";\r\nimport Hero from \"../components/Hero\";\r\nimport Layout from \"../components/Layout\";\r\nimport Trends from \"../components/Trends\";\r\nimport TrendsBG from \"../assets/images/trends-bg@2x.png\";\r\nimport Growing from \"../components/Growing\";\r\nimport Navigation from \"../components/Navigation\";\r\nimport { DEI } from \"../components/DEI\";\r\nimport { device } from \"../assets/styles\";\r\nimport Intelligent from \"../components/Intelligent\";\r\nimport Cookieless from \"../components/Cookieless\";\r\nimport HumanFirst from \"../components/HumanFirst\";\r\nimport Hybrid from \"../components/Hybrid\";\r\nimport HumanService from \"../components/HumanService\";\r\nimport Archive from \"../components/Archives\";\r\nimport Methodology from \"../components/Methodology\";\r\nimport { useLocation } from \"react-router\";\r\nimport $ from 'jquery';\r\nimport FormPage from './form';\r\n\r\nconst BgImage = styled.div`\r\n /* @media ${device.tablet} { */\r\n position: relative;\r\n display: block;\r\n &::after {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n height: 100%;\r\n width: 50%;\r\n background: url(${TrendsBG}) -260px 237px / 1060px 1077px no-repeat;\r\n content: \"\";\r\n }\r\n /* } */\r\n`;\r\n\r\nconst HomePage = () => {\r\n const [query,setQuery]=useState(true)\r\n let location = useLocation()\r\n \r\n useEffect(()=>{\r\n $(window).scrollTop(0);\r\n const query = new URLSearchParams(location.search);\r\n if(location.search&&query.get('form')){\r\n setQuery(false)\r\n $('#GMTWrapper,#subNav').parent().hide()\r\n $('#GMTForm').parent().show()\r\n\r\n }\r\n else {\r\n $('#GMTWrapper,#subNav').parent().show()\r\n $('#GMTForm').parent().hide()\r\n\r\n setQuery(true)\r\n }\r\n })\r\n return (\r\n <>\r\n {\r\n query?( \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n  \r\n \r\n ):()\r\n }\r\n \r\n );\r\n};\r\n\r\nexport default HomePage;\r\n","export default \"data:image/png;base64,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\"","import React from 'react';\r\nimport { Switch, Route } from 'react-router-dom';\r\n\r\n// Pages\r\nimport HomePage from './pages/home';\r\nimport FormPage from './pages/form';\r\n\r\nconst App = () => {\r\n return (\r\n \r\n \r\n {/* */}\r\n \r\n );\r\n};\r\n\r\nexport default App;\r\n","import React from \"react\";\r\nimport { withRouter } from \"react-router-dom\";\r\n\r\nclass ScrollToTop extends React.Component {\r\n componentDidUpdate(prevProps) {\r\n if (\r\n this.props.location.pathname !== prevProps.location.pathname\r\n ) {\r\n window.scrollTo(0, 0);\r\n }\r\n }\r\n\r\n render() {\r\n return null;\r\n }\r\n}\r\n\r\nexport default withRouter(ScrollToTop);","import React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport { BrowserRouter as Router } from \"react-router-dom\";\r\nimport App from \"./App\";\r\nimport ScrollToTop from \"./utils/ScrollToTop\";\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById(\"root\")\r\n)"],"sourceRoot":""}