{"version":3,"sources":["webpack:///./src/hooks/useIntersectionObserver.ts","webpack:///./src/hooks/useInView.ts","webpack:///./src/stories/Widgets/YourSolution/YS/Components/InfoIcon/InfoIcon.styles.ts","webpack:///./src/stories/Widgets/YourSolution/YS/Components/Shared.styles.ts","webpack:///./src/core/api/services/ApiService.ts","webpack:///./src/helpers/global.ts","webpack:///./src/img/icons/chevron-down.svg","webpack:///./src/hoc/withMotion.tsx","webpack:///./src/helpers/fonts.ts","webpack:///./src/stories/Widgets/YourSolution/YS/Components/Shared/Step.styles.ts","webpack:///./src/helpers/theme.ts"],"names":["useIntersectionObserver","callback","options","observerRef","useRef","rootRef","elementRef","useEffect","current","IntersectionObserver","root","observe","disconnect","useInView","reverse","isEditMode","useState","inView","setInView","entries","isIntersecting","InfoIconStyles","Container","styled","div","InfoIcon","m","attrs","whileTap","whileHover","variants","tap","scale","hover","transition","duration","brand","grey","grey35","Box","figure","from","Device","Tablet","invalid","css","BoxInner","red","base","active","primary","light","BoxState","BoxMedia","BoxLabel","label","grey20","ButtonStyles","white","fonts","DaxPro","Regular","TabletLarge","until","grey40","Button","button","type","restart","prev","next","WYSIWYGStyles","Bold","Question","section","initial","animate","exit","hidden","opacity","visible","Avatar","BoxInfo","Materials","grey44","desktop","mobile","MaterialContainer","Material","MaterialMedia","large","MaterialLabel","MaterialTitle","black","Icon","CenterText","p","TitleWithInfoIcon","SharedStyles","ApiService","request","url","this","getUrl","headers","Headers","Accept","isMultipartFormData","delete","requestOptions","method","cache","body","getBody","files","keepalive","keepAlive","undefined","cors","mode","credentials","fetch","response","status","Error","statusText","json","data","slug","controller","length","isStorybook","isSSR","window","location","host","port","process","API_URL","baseUrl","params","querystring","stringify","formData","FormData","append","JSON","index","file","ButtonReset","_path","_extends","Object","assign","target","i","arguments","source","key","prototype","hasOwnProperty","call","apply","SvgChevronDown","props","xmlns","viewBox","d","fill","stroke","strokeLinecap","strokeLinejoin","strokeWidth","withMotion","WrappedComponent","displayName","name","ComponentWithMotion","React","createElement","LazyMotion","features","domAnimation","strict","BoldItalic","Medium","SlightlyLessThanMedium","RegularItalic","Light","MotionBase","Grid","centered","FullWidth","Default","Thin","Wide","StepStyles","Containers","ThemeWrapper","ThemeSwitch","groundforceColour","groundforceColourHover","lighten","generateOpacity","transparentize","groundforcePseudoColourAlt","tpaColour","tpa","tpaColourHover","tpaPseudoColourAlt"],"mappings":"20BA6BeA,MAtBf,SAAiCC,GAAwB,IAAdC,EAAc,uDAAJ,GAC3CC,EAAcC,iBAAO,MACrBC,EAAUD,iBAAO,MACjBE,EAAaF,iBAAO,MAiB1B,OAhBAG,qBAAU,WACN,GAAKD,EAAWE,QAQhB,OALAL,EAAYK,QAAU,IAAIC,qBAAqBR,EAAzB,GAClBS,KAAML,EAAQG,SACXN,IAEPC,EAAYK,QAAQG,QAAQL,EAAWE,SAChC,WACyB,OAAxBL,EAAYK,SAGhBL,EAAYK,QAAQI,gBAEzB,CAACX,EAAUC,IACP,CAAEI,aAAYH,cAAaE,Y,g9BCzB/B,SAASQ,EAAUX,GAA8C,IAArCY,EAAqC,wDAApBC,EAAoB,wDACpE,EAA4BC,oBAAS,GAArC,SAAOC,EAAP,KAAeC,EAAf,KACA,EAAuBlB,GAAwB,SAACmB,GACxCA,EAAQ,GAAGC,eACXF,GAAU,IAEO,IAAZJ,GACLI,GAAU,KAEfhB,GAPKI,EAAR,EAAQA,WAQR,MAAO,CAACA,IAAYS,GAAoBE,K,iCCZ5C,4DA8BaI,EAAiB,CAC1BC,UA5BcC,IAAOC,IAAV,gFAAGD,CAAH,MA6BXE,SA5BaF,YAAOG,IAAEF,KAAKG,OAAM,iBAAO,CACxCC,SAAU,MACVC,WAAY,QACZC,SAAU,CACNC,IAAK,CACDC,MAAO,KAEXC,MAAO,CACHD,MAAO,OAGfE,WAAY,CACRC,SAAU,SAZJ,+EAAGZ,CAAH,mGAmBHa,IAAMC,KAAKC,U,gCCvBtB,qHAMMC,EAAMhB,IAAOiB,OAAV,uEAAGjB,CAAH,oHAKEkB,YAAKC,IAAOC,SAKnB,qBAAGC,SACHC,YADwB,gCAEpB,kBAAMC,IACcV,IAAMW,IAAIC,SAIlC,qBAAGC,QACHJ,YADsB,sPAElB,kBAAMC,IACcV,IAAMc,QAAQC,MACPf,IAAMc,QAAQC,OAGzC,kBAAMC,IASchB,IAAMc,QAAQC,MAEzBV,YAAKC,IAAOC,YAOvBG,EAAWvB,IAAOC,IAAV,4EAAGD,CAAH,8LAUHkB,YAAKC,IAAOC,SAKjBU,EAAW9B,IAAOC,IAAV,4EAAGD,CAAH,8KAKHkB,YAAKC,IAAOC,SAYjBW,EAAW/B,IAAOgC,MAAV,4EAAGhC,CAAH,kIAOHkB,YAAKC,IAAOC,SAKjBS,EAAW7B,IAAOC,IAAV,4EAAGD,CAAH,8JAGQa,IAAMC,KAAKmB,OAKtBf,YAAKC,IAAOC,SAMjBc,EAAeZ,YAAH,uZAIIT,IAAMc,QAAQC,MAGzBf,IAAMsB,MACbC,IAAMC,OAAOC,QASJzB,IAAMsB,MACKtB,IAAMc,QAAQC,MAG3BV,YAAKC,IAAOoB,aAKVC,YAAMrB,IAAOoB,aAGbrB,YAAKC,IAAOoB,aACC1B,IAAMC,KAAK2B,QAK/BC,EAAS1C,IAAO2C,OAAOvC,OAAM,iBAAO,CACtCwC,KAAM,aADE,0EAAG5C,CAAH,oBAGRkC,GAEA,qBAAGW,SACHvB,YADwB,+IAWZT,IAAMsB,MACJtB,IAAMsB,UAIpB,qBAAGW,MACHxB,YADkB,6IAclB,qBAAGyB,MACHzB,YADkB,+HAcT0B,EAAgB1B,YAAH,8OAMbT,IAAMC,KAAKmB,OAClBG,IAAMC,OAAOY,KAYNpC,IAAMc,QAAQC,MAKrBQ,IAAMC,OAAOY,MASbC,EAAWlD,YAAOG,IAAEgD,SAAS/C,OAAM,iBAAO,CAC5CgD,QAAS,SACTC,QAAS,UACTC,KAAM,SACN/C,SAAU,CACNgD,OAAQ,CACJC,QAAS,GAEbC,QAAS,CACLD,QAAS,IAGjB7C,WAAY,CACRC,SAAU,SAbJ,4EAAGZ,CAAH,wIAsBHkB,YAAKC,IAAOoB,aAInBS,GAEEU,EAAS1D,IAAOC,IAAV,0EAAGD,CAAH,6GAEAa,IAAMc,QAAQC,MAMbV,YAAKC,IAAOoB,cAMnBoB,EAAU3D,IAAOC,IAAV,2EAAGD,CAAH,2GAMFkB,YAAKC,IAAOC,SAKjBwC,EAAY5D,IAAOC,IAAV,6EAAGD,CAAH,gOAMJkB,YAAKC,IAAOoB,aACK1B,IAAMC,KAAK+C,QAKnC,qBAAGC,SACHxC,YADwB,8BAEbkB,YAAMrB,IAAOC,YAKxB,qBAAG2C,QACHzC,YADsB,2CAGXJ,YAAKC,IAAOC,WAMhBF,YAAKC,IAAOC,SAMjB4C,EAAoBhE,IAAOC,IAAV,sFAAGD,CAAH,sBACnB,kBAAMiE,KAIJA,EAAWjE,IAAOC,IAAV,6EAAGD,CAAH,kHAOHkB,YAAKC,IAAOC,SAIjB8C,EAAgBlE,IAAOC,IAAV,kFAAGD,CAAH,8IASf,qBAAGmE,OACH7C,YADoB,8CAOlB8C,EAAgBpE,IAAOC,IAAV,kFAAGD,CAAH,qBAGbqE,EAAgBrE,IAAOC,IAAV,kFAAGD,CAAH,kEAERa,IAAMyD,OAIXC,EAAOvE,IAAOC,IAAV,yEAAGD,CAAH,qDAQJwE,EAAaxE,IAAOyE,EAAV,+EAAGzE,CAAH,wBAGV0E,EAAoB1E,IAAOC,IAAV,sFAAGD,CAAH,6KAOZkB,YAAKC,IAAOoB,cAEjB,kBAAMzC,IAAeC,aASd4E,EAAe,CACxB3D,MACAO,WACAO,WACAC,WACAF,WACAa,SACAQ,WACAQ,SACAC,UACAC,YACAK,WACAC,gBACAE,gBACAJ,oBACAK,gBACAE,OACAC,aACAE,sB,y3BC5YEE,E,8MACF,WAAcC,GAAd,uGAEUC,EAAMC,KAAKC,OAAOH,GAElBI,EAAU,IAAIC,QAAQ,CACxB,eAAgB,kCAChBC,OAAQ,sBAEwB,IAAhCN,EAAQO,qBACRH,EAAQI,OAAO,gBAGbC,EAAiB,CACnBC,OAAQV,EAAQU,OAChBN,UACAO,MAAO,UACPC,KAAMV,KAAKW,QAAQb,EAASA,EAAQc,OACpCC,UAAS,UAAEf,EAAQgB,iBAAV,eAEQC,IAAjBjB,EAAQkB,OAAuC,IAAjBlB,EAAQkB,OACtCT,EAAeU,KAAO,OACtBV,EAAeW,YAAc,WArBrC,SAwB2BC,MAAMpB,EAAKQ,GAxBtC,UAyB4B,OADlBa,EAxBV,QAyBiBC,OAzBjB,uBA0BcC,MAAM,GAAD,OAAIF,EAASC,OAAb,aAAwBD,EAASG,aA1BpD,yBA4BwBH,EAASI,OA5BjC,eA4BUC,EA5BV,yBA6BWA,GA7BX,iD,qGA+BA,WAAkB3B,GAAlB,+GAE+BE,KAAKF,QAAQA,GAF5C,cAEcsB,EAFd,yBAGeA,GAHf,yDAMe,MANf,yD,kEASA,SAAOtB,GACH,IAAIC,EAAM,IAAH,OAAOD,EAAQ4B,MAClB5B,EAAQ6B,YAAc7B,EAAQ6B,WAAWC,OAAS,IAClD7B,EAAM,QAAH,OAAWD,EAAQ6B,WAAnB,YAAiC7B,EAAQ4B,OAEhD,IAAIG,GAAc,EAmBlB,OAlBKC,eAC6B,0CAAzBC,OAAOC,SAASC,MACQ,SAAzBF,OAAOC,SAASE,MACS,SAAzBH,OAAOC,SAASE,OAChBC,gCAAYC,UACZP,GAAc,GAGlB/B,EAAQuC,QACRtC,EAAM,GAAH,OAAMD,EAAQuC,SAAd,OAAwBtC,GAEtB8B,IACL9B,EAAM,GAAH,OAAMoC,gCAAYC,SAAlB,OAA4BrC,IAEX,QAAnBD,EAAQU,QAAuC,WAAnBV,EAAQU,SAAwBV,EAAQwC,SACrEvC,GAAO,IACPA,GAAOwC,IAAYC,U,+VAAZ,IAA2B1C,EAAQwC,UAEvCvC,I,qBAEX,SAAQD,EAASc,GACb,GAAuB,QAAnBd,EAAQU,OACR,OAAO,KAEX,IAAoC,IAAhCV,EAAQO,oBAA8B,CACtC,IAAMoC,EAAW,IAAIC,SAErB,GADAD,EAASE,OAAO,SAAUC,KAAKJ,UAAU1C,EAAQwC,SAC7C1B,GAASA,EAAMgB,OAAS,EACxB,IAAK,IAAIiB,EAAQ,EAAGA,EAAQjC,EAAMgB,OAAQiB,IAAS,CAC/C,IAAMC,EAAOlC,EAAMiC,GACnBJ,EAASE,OAAT,gBAAyBE,GAASC,GAG1C,OAAOL,EAEX,OAAOG,KAAKJ,UAAU1C,EAAQwC,a,gCAGvB,QAAIzC,G,gCCvFnB,6CAMakD,EAAcxG,YAAH,8E,iCCNxB,sCAAIyG,EAAJ,OAEA,SAASC,IAA2Q,OAA9PA,EAAWC,OAAOC,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAU1B,OAAQyB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAIG,KAAOD,EAAcL,OAAOO,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQJ,EAAOI,GAAOD,EAAOC,IAAY,OAAOJ,IAA2BQ,MAAM5D,KAAMsD,WAIhT,SAASO,EAAeC,GACtB,OAAoB,gBAAoB,MAAOb,EAAS,CACtDc,MAAO,6BACPC,QAAS,oBACRF,GAAQd,IAAUA,EAAqB,gBAAoB,OAAQ,CACpE,YAAa,WACbiB,EAAG,wCACHC,KAAM,OACNC,OAAQ,eACRC,cAAe,QACfC,eAAgB,QAChBC,YAAa,MAIF,K,8bCnBR,SAASC,EAAWC,GACvB,IAAMC,EAAcD,EAAiBC,aAAeD,EAAiBE,MAAQ,YACvEC,EAAsB,SAACb,GACzB,OAAQc,IAAMC,cAAcC,IAAY,CAAEC,SAAUC,IAAcC,QAAQ,GACtEL,IAAMC,cAAcL,E,+VAApB,IAA2CV,MAGnD,OADAa,EAAoBF,YAApB,qBAAgDA,EAAhD,KACOE,I,+BCTX,6CACatH,EAAQ,CACjBC,OAAQ,CACJY,KAAM3B,YAAF,kFAKJ2I,WAAY3I,YAAF,kFAKV4I,OAAQ5I,YAAF,kFAKN6I,uBAAwB7I,YAAF,kFAKtBgB,QAAShB,YAAF,kFAKP8I,cAAe9I,YAAF,kFAKb+I,MAAO/I,YAAF,qF,gCCjCb,sGAIMgJ,EAAatK,YAAOG,IAAEgD,SAAS/C,OAAM,iBAAO,CAC9CgD,QAAS,SACTC,QAAS,UACTC,KAAM,SACN/C,SAAU,CACNgD,OAAQ,CACJC,QAAS,GAEbC,QAAS,CACLD,QAAS,IAGjB7C,WAAY,CACRC,SAAU,SAbF,4EAAGZ,CAAH,MAiBVuK,EAAOvK,YAAOsK,GAAV,sEAAGtK,CAAH,4IAMCkB,YAAKC,IAAOoB,cAInB,qBAAGiI,UACHlJ,YAD0B,kCAQ1B0B,KAEEyH,EAAYzK,IAAOC,IAAV,2EAAGD,CAAH,wDAGJkB,YAAKC,IAAOoB,cAIjBmI,EAAU1K,IAAOC,IAAV,yEAAGD,CAAH,2EAGFkB,YAAKC,IAAOoB,cAKjBoI,EAAO3K,IAAOC,IAAV,sEAAGD,CAAH,2EAGCkB,YAAKC,IAAOoB,cAKjBqI,EAAO5K,IAAOC,IAAV,sEAAGD,CAAH,6CAIG6K,EAAa,CACtBN,QAESO,EAAa,CACtBL,YACAC,UACAC,OACAC,S,+BC3EJ,6FAGaG,EAAe/K,IAAOC,IAAV,yEAAGD,CAAH,uBAOZgL,EAAc,SAACrM,GAAD,uBAAa2C,YAAZ,CAAD,mIACd3C,EAAQsM,yBADM,QACepK,IAAMc,QAAQF,KAD7B,UAER9C,EAAQuM,8BAFA,QAE0BC,YAAQ,GAAKtK,IAAMc,QAAQF,MAE5E9C,EAAQyM,iBAAR,gCACyBC,YAAe,GAAD,UAAM1M,EAAQsM,yBAAd,QAAmCpK,IAAMc,QAAQF,MADxF,KAGA9C,EAAQ2M,4BAAR,uBAAsD3M,EAAQ2M,2BAA9D,KAPuB,UAWZ3M,EAAQ4M,iBAXI,QAWS1K,IAAM2K,IAAI/J,KAXnB,UAYN9C,EAAQ8M,sBAZF,QAYoBN,YAAQ,GAAKtK,IAAM2K,IAAI/J,MAEhE9C,EAAQyM,iBAAR,gCACuBC,YAAe,GAAD,UAAM1M,EAAQ4M,iBAAd,QAA2B1K,IAAM2K,IAAI/J,MAD1E,KAGA9C,EAAQ+M,oBAAR,uBAA8C/M,EAAQ+M,mBAAtD","file":"default~NewsListing~SiteHeader~YourSolutionRoot-b1b9212b243ec2deccdc.js","sourcesContent":["import { useEffect, useRef } from 'react';\r\n/**\r\n * Use the IntersectionObserver to track visibility of an element in the viewport.\r\n * @param {IntersectionObserverCallback} callback\r\n * @param {IntersectionObserverInit} options\r\n * @returns {UseIntersectionObserverReturn}\r\n */\r\nfunction useIntersectionObserver(callback, options = {}) {\r\n const observerRef = useRef(null);\r\n const rootRef = useRef(null);\r\n const elementRef = useRef(null);\r\n useEffect(() => {\r\n if (!elementRef.current) {\r\n return undefined;\r\n }\r\n observerRef.current = new IntersectionObserver(callback, {\r\n root: rootRef.current,\r\n ...options,\r\n });\r\n observerRef.current.observe(elementRef.current);\r\n return () => {\r\n if (observerRef.current === null) {\r\n return;\r\n }\r\n observerRef.current.disconnect();\r\n };\r\n }, [callback, options]);\r\n return { elementRef, observerRef, rootRef };\r\n}\r\nexport default useIntersectionObserver;\r\n","import { useState } from 'react';\r\nimport useIntersectionObserver from './useIntersectionObserver';\r\nexport function useInView(options, reverse = false, isEditMode = false) {\r\n const [inView, setInView] = useState(false);\r\n const { elementRef } = useIntersectionObserver((entries) => {\r\n if (entries[0].isIntersecting) {\r\n setInView(true);\r\n }\r\n else if (reverse === true) {\r\n setInView(false);\r\n }\r\n }, options);\r\n return [elementRef, isEditMode ? true : inView];\r\n}\r\n","import brand from '@helpers/brand';\r\nimport { m } from 'framer-motion';\r\nimport styled from 'styled-components';\r\nconst Container = styled.div ``;\r\nconst InfoIcon = styled(m.div).attrs(() => ({\r\n whileTap: 'tap',\r\n whileHover: 'hover',\r\n variants: {\r\n tap: {\r\n scale: 0.95,\r\n },\r\n hover: {\r\n scale: 1.05,\r\n },\r\n },\r\n transition: {\r\n duration: 0.25,\r\n },\r\n})) `\r\n position: relative;\r\n width: 25px;\r\n height: 25px;\r\n cursor: pointer;\r\n color: ${brand.grey.grey35};\r\n\r\n svg {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n`;\r\nexport const InfoIconStyles = {\r\n Container,\r\n InfoIcon,\r\n};\r\n","import brand from '@helpers/brand';\r\nimport { fonts } from '@helpers/fonts';\r\nimport { Device, from, until } from '@helpers/media';\r\nimport { m } from 'framer-motion';\r\nimport styled, { css } from 'styled-components';\r\nimport { InfoIconStyles } from './InfoIcon/InfoIcon.styles';\r\nconst Box = styled.figure `\r\n flex: 0 0 auto;\r\n padding: 8px 8px 8px 40px;\r\n position: relative;\r\n\r\n @media ${from(Device.Tablet)} {\r\n padding: 8px 8px 60px 8px;\r\n width: 33%;\r\n }\r\n\r\n ${({ invalid }) => invalid &&\r\n css `\r\n ${() => BoxInner} {\r\n border: 1px solid ${brand.red.base};\r\n }\r\n `}\r\n\r\n ${({ active }) => active &&\r\n css `\r\n ${() => BoxInner} {\r\n border: 1px solid ${brand.primary.light};\r\n border-bottom: 7px solid ${brand.primary.light};\r\n }\r\n\r\n ${() => BoxState}:before {\r\n content: '';\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n width: 14px;\r\n height: 14px;\r\n border-radius: 50%;\r\n transform: translate(-50%, -50%);\r\n background-color: ${brand.primary.light};\r\n\r\n @media ${from(Device.Tablet)} {\r\n width: 20px;\r\n height: 20px;\r\n }\r\n }\r\n `}\r\n`;\r\nconst BoxInner = styled.div `\r\n border: 1px solid #d5d5d5;\r\n padding: 20px 12px;\r\n cursor: pointer;\r\n display: flex;\r\n flex-direction: row;\r\n flex-wrap: nowrap;\r\n align-items: center;\r\n height: 100%;\r\n\r\n @media ${from(Device.Tablet)} {\r\n flex-direction: column;\r\n padding: 12px;\r\n }\r\n`;\r\nconst BoxMedia = styled.div `\r\n position: relative;\r\n flex: 0 0 auto;\r\n max-width: 40%;\r\n\r\n @media ${from(Device.Tablet)} {\r\n margin-bottom: 16px;\r\n max-width: 100%;\r\n }\r\n\r\n img {\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n font-family: 'object-fit: cover';\r\n }\r\n`;\r\nconst BoxLabel = styled.label `\r\n text-align: center;\r\n font-weight: normal;\r\n font-size: 17px;\r\n display: block;\r\n flex: 1 1 auto;\r\n\r\n @media ${from(Device.Tablet)} {\r\n flex: 1 0 auto;\r\n margin-bottom: 50px;\r\n }\r\n`;\r\nconst BoxState = styled.div `\r\n width: 24px;\r\n height: 24px;\r\n border: 1px solid ${brand.grey.grey20};\r\n border-radius: 50%;\r\n position: relative;\r\n flex: 0 0 auto;\r\n\r\n @media ${from(Device.Tablet)} {\r\n margin: 0 auto 20px auto;\r\n width: 30px;\r\n height: 30px;\r\n }\r\n`;\r\nconst ButtonStyles = css `\r\n outline: none;\r\n border: none;\r\n padding: 8px 28px 8px 28px;\r\n background-color: ${brand.primary.light};\r\n display: inline-block;\r\n font-size: 20px;\r\n color: ${brand.white};\r\n ${fonts.DaxPro.Regular};\r\n border-radius: 8px;\r\n position: relative;\r\n cursor: pointer;\r\n user-select: none;\r\n transition: background-color 0.25s ease-in-out;\r\n z-index: 10;\r\n\r\n &:hover {\r\n color: ${brand.white};\r\n background-color: ${brand.primary.light};\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n font-size: 22px;\r\n }\r\n\r\n &:disabled {\r\n @media ${until(Device.TabletLarge)} {\r\n opacity: 0.4;\r\n }\r\n @media ${from(Device.TabletLarge)} {\r\n background-color: ${brand.grey.grey40};\r\n }\r\n cursor: not-allowed;\r\n }\r\n`;\r\nconst Button = styled.button.attrs(() => ({\r\n type: 'button',\r\n})) `\r\n ${ButtonStyles}\r\n\r\n ${({ restart }) => restart &&\r\n css `\r\n padding: 8px 50px 8px 28px;\r\n\r\n svg {\r\n position: absolute;\r\n right: 16px;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n width: 19px;\r\n height: 19px;\r\n fill: ${brand.white};\r\n stroke: ${brand.white};\r\n }\r\n `};\r\n\r\n ${({ prev }) => prev &&\r\n css `\r\n padding: 8px 28px 8px 50px;\r\n\r\n svg {\r\n position: absolute;\r\n left: 16px;\r\n top: 50%;\r\n transform: translateY(-50%) rotate(180deg);\r\n width: 25px;\r\n height: 20px;\r\n }\r\n `}\r\n\r\n ${({ next }) => next &&\r\n css `\r\n padding: 8px 50px 8px 28px;\r\n\r\n svg {\r\n position: absolute;\r\n right: 16px;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n width: 25px;\r\n height: 20px;\r\n }\r\n `}\r\n`;\r\nexport const WYSIWYGStyles = css `\r\n // Need to do h3 because thats what HTML comes out of api..\r\n h2,\r\n h3 {\r\n font-size: 25px;\r\n text-align: center;\r\n color: ${brand.grey.grey20};\r\n ${fonts.DaxPro.Bold};\r\n margin: 0 0 20px 0;\r\n line-height: 1.1;\r\n margin-bottom: 20px;\r\n }\r\n\r\n ol,\r\n ul {\r\n list-style: inside;\r\n }\r\n\r\n a {\r\n color: ${brand.primary.light};\r\n text-decoration: underline;\r\n }\r\n\r\n strong {\r\n ${fonts.DaxPro.Bold};\r\n }\r\n\r\n p {\r\n font-size: 17px;\r\n margin-bottom: 0px;\r\n color: #333333;\r\n }\r\n`;\r\nconst Question = styled(m.section).attrs(() => ({\r\n initial: 'hidden',\r\n animate: 'visible',\r\n exit: 'hidden',\r\n variants: {\r\n hidden: {\r\n opacity: 0,\r\n },\r\n visible: {\r\n opacity: 1,\r\n },\r\n },\r\n transition: {\r\n duration: 0.35,\r\n },\r\n})) `\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: flex-start;\r\n align-items: center;\r\n min-height: 100%;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n margin-right: 15px;\r\n }\r\n\r\n ${WYSIWYGStyles};\r\n`;\r\nconst Avatar = styled.div `\r\n svg {\r\n fill: ${brand.primary.light};\r\n width: 60px;\r\n height: 60px;\r\n display: block;\r\n align-self: center;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n width: 45px;\r\n height: 45px;\r\n }\r\n }\r\n`;\r\nconst BoxInfo = styled.div `\r\n position: absolute;\r\n left: 15px;\r\n bottom: 50%;\r\n transform: translate(-50%, 50%);\r\n\r\n @media ${from(Device.Tablet)} {\r\n left: 50%;\r\n bottom: 30px;\r\n }\r\n`;\r\nconst Materials = styled.div `\r\n width: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n margin-bottom: 30px;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n border-top: 1px solid ${brand.grey.grey44};\r\n padding-top: 25px;\r\n margin-top: 20px;\r\n }\r\n\r\n ${({ desktop }) => desktop &&\r\n css `\r\n @media ${until(Device.Tablet)} {\r\n display: none;\r\n }\r\n `}\r\n\r\n ${({ mobile }) => mobile &&\r\n css `\r\n display: flex;\r\n @media ${from(Device.Tablet)} {\r\n display: none;\r\n }\r\n `}\r\n\r\n\r\n @media ${from(Device.Tablet)} {\r\n flex-direction: row;\r\n flex-wrap: wrap;\r\n justify-content: space-between;\r\n }\r\n`;\r\nconst MaterialContainer = styled.div `\r\n ${() => Material} {\r\n width: 100%;\r\n }\r\n`;\r\nconst Material = styled.div `\r\n display: flex;\r\n flex-direction: row;\r\n flex-wrap: nowrap;\r\n align-items: center;\r\n margin-bottom: 12px;\r\n\r\n @media ${from(Device.Tablet)} {\r\n width: 45%;\r\n }\r\n`;\r\nconst MaterialMedia = styled.div `\r\n width: 32px;\r\n height: 32px;\r\n background-repeat: no-repeat;\r\n background-size: cover;\r\n background-position: 50% 50%;\r\n margin-right: 17px;\r\n flex: 0 0 32px;\r\n\r\n ${({ large }) => large &&\r\n css `\r\n width: 80px;\r\n height: auto;\r\n flex: 0 0 auto;\r\n `}\r\n`;\r\nconst MaterialLabel = styled.div `\r\n font-size: 15px;\r\n`;\r\nconst MaterialTitle = styled.div `\r\n font-size: 15px;\r\n color: ${brand.black};\r\n font-weight: 700;\r\n padding-bottom: 10px;\r\n`;\r\nconst Icon = styled.div `\r\n width: 300px;\r\n margin-bottom: 25px;\r\n\r\n svg {\r\n width: 100%;\r\n }\r\n`;\r\nconst CenterText = styled.p `\r\n text-align: center;\r\n`;\r\nconst TitleWithInfoIcon = styled.div `\r\n display: flex;\r\n flex-direction: column;\r\n gap: 15px;\r\n margin-bottom: 15px;\r\n align-items: center;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n margin-bottom: 25px;\r\n ${() => InfoIconStyles.Container} {\r\n margin-bottom: 15px;\r\n }\r\n }\r\n\r\n h2 {\r\n margin-bottom: 0 !important;\r\n }\r\n`;\r\nexport const SharedStyles = {\r\n Box,\r\n BoxInner,\r\n BoxMedia,\r\n BoxLabel,\r\n BoxState,\r\n Button,\r\n Question,\r\n Avatar,\r\n BoxInfo,\r\n Materials,\r\n Material,\r\n MaterialMedia,\r\n MaterialLabel,\r\n MaterialContainer,\r\n MaterialTitle,\r\n Icon,\r\n CenterText,\r\n TitleWithInfoIcon,\r\n};\r\n","import { isSSR } from '@helpers/ssr';\r\nimport querystring from 'querystring';\r\nclass ApiService {\r\n async request(request) {\r\n // Get the url\r\n const url = this.getUrl(request);\r\n // Headers\r\n const headers = new Headers({\r\n 'Content-Type': 'application/json; charset=utf-8',\r\n Accept: 'application/json',\r\n });\r\n if (request.isMultipartFormData === true) {\r\n headers.delete('Content-Type');\r\n }\r\n // construct a request\r\n const requestOptions = {\r\n method: request.method,\r\n headers,\r\n cache: 'default',\r\n body: this.getBody(request, request.files),\r\n keepalive: request.keepAlive ?? false,\r\n };\r\n if (request.cors === undefined || request.cors === true) {\r\n requestOptions.mode = 'cors';\r\n requestOptions.credentials = 'include';\r\n }\r\n // await the response\r\n const response = await fetch(url, requestOptions);\r\n if (response.status === 500) {\r\n throw Error(`${response.status}: ${response.statusText}`);\r\n }\r\n const data = (await response.json());\r\n return data;\r\n }\r\n async safeRequest(request) {\r\n try {\r\n const response = await this.request(request);\r\n return response;\r\n }\r\n catch {\r\n return null;\r\n }\r\n }\r\n getUrl(request) {\r\n let url = `/${request.slug}`;\r\n if (request.controller && request.controller.length > 0) {\r\n url = `/api/${request.controller}/${request.slug}`;\r\n }\r\n let isStorybook = false;\r\n if (!isSSR()) {\r\n if ((window.location.host === 'styleguide.groundforce.netcprev.co.uk' ||\r\n window.location.port === '4000' ||\r\n window.location.port === '4001') &&\r\n process.env.API_URL) {\r\n isStorybook = true;\r\n }\r\n }\r\n if (request.baseUrl) {\r\n url = `${request.baseUrl}${url}`;\r\n }\r\n else if (isStorybook) {\r\n url = `${process.env.API_URL}${url}`;\r\n }\r\n if ((request.method === 'GET' || request.method === 'DELETE') && request.params) {\r\n url += '?';\r\n url += querystring.stringify({ ...request.params });\r\n }\r\n return url;\r\n }\r\n getBody(request, files) {\r\n if (request.method === 'GET') {\r\n return null;\r\n }\r\n if (request.isMultipartFormData === true) {\r\n const formData = new FormData();\r\n formData.append('params', JSON.stringify(request.params));\r\n if (files && files.length > 0) {\r\n for (let index = 0; index < files.length; index++) {\r\n const file = files[index];\r\n formData.append(`files-${index}`, file);\r\n }\r\n }\r\n return formData;\r\n }\r\n return JSON.stringify(request.params);\r\n }\r\n}\r\nexport default new ApiService();\r\n","import { css } from 'styled-components';\r\nexport default {\r\n navHeight: 107,\r\n navHeightTablet: 80,\r\n navHeightMobile: 59,\r\n};\r\nexport const ButtonReset = css `\r\n border: none;\r\n outline: none;\r\n padding: 0px;\r\n background: none;\r\n border-radius: 0px;\r\n`;\r\n","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgChevronDown(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 13.953 7.977\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 460\",\n d: \"M12.539 1.415L6.977 6.977 1.415 1.415\",\n fill: \"none\",\n stroke: \"currentcolor\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2\n })));\n}\n\nexport default __webpack_public_path__ + \"ab65ba123437ec9096ced875de645192.svg\";\nexport { SvgChevronDown as ReactComponent };","import { domAnimation, LazyMotion } from 'framer-motion';\r\nimport React from 'react';\r\nexport function withMotion(WrappedComponent) {\r\n const displayName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\r\n const ComponentWithMotion = (props) => {\r\n return (React.createElement(LazyMotion, { features: domAnimation, strict: true },\r\n React.createElement(WrappedComponent, { ...props })));\r\n };\r\n ComponentWithMotion.displayName = `withMotion(${displayName})`;\r\n return ComponentWithMotion;\r\n}\r\n","import { css } from 'styled-components';\r\nexport const fonts = {\r\n DaxPro: {\r\n Bold: css `\r\n font-family: 'ff-dax-pro', Arial, sans-serif;\r\n font-style: normal;\r\n font-weight: 700;\r\n `,\r\n BoldItalic: css `\r\n font-family: 'ff-dax-pro', Arial, sans-serif;\r\n font-style: italic;\r\n font-weight: 700;\r\n `,\r\n Medium: css `\r\n font-family: 'ff-dax-pro', Arial, sans-serif;\r\n font-style: normal;\r\n font-weight: 600;\r\n `,\r\n SlightlyLessThanMedium: css `\r\n font-family: 'ff-dax-pro', Arial, sans-serif;\r\n font-style: normal;\r\n font-weight: 500;\r\n `,\r\n Regular: css `\r\n font-family: 'ff-dax-pro', Arial, sans-serif;\r\n font-style: normal;\r\n font-weight: 400;\r\n `,\r\n RegularItalic: css `\r\n font-family: 'ff-dax-pro', Arial, sans-serif;\r\n font-style: italic;\r\n font-weight: 400;\r\n `,\r\n Light: css `\r\n font-family: 'ff-dax-pro', Arial, sans-serif;\r\n font-style: normal;\r\n font-weight: 200;\r\n `,\r\n },\r\n};\r\n","import { m } from 'framer-motion';\r\nimport styled, { css } from 'styled-components';\r\nimport { WYSIWYGStyles } from '@ys/Components/Shared.styles';\r\nimport { Device, from } from '@helpers/media';\r\nconst MotionBase = styled(m.section).attrs(() => ({\r\n initial: 'hidden',\r\n animate: 'visible',\r\n exit: 'hidden',\r\n variants: {\r\n hidden: {\r\n opacity: 0,\r\n },\r\n visible: {\r\n opacity: 1,\r\n },\r\n },\r\n transition: {\r\n duration: 0.35,\r\n },\r\n})) ``;\r\n// Unified interface to add a grid layout to the steps //\r\nconst Grid = styled(MotionBase) `\r\n width: 100%;\r\n margin: auto;\r\n height: 100%;\r\n\r\n max-width: 92vw;\r\n @media ${from(Device.TabletLarge)} {\r\n max-width: 75vw;\r\n }\r\n\r\n ${({ centered }) => centered &&\r\n css `\r\n place-items: center center;\r\n `}\r\n\r\n display: grid;\r\n grid-template-columns: repeat(12, 1fr);\r\n\r\n ${WYSIWYGStyles};\r\n`;\r\nconst FullWidth = styled.div `\r\n grid-column: 1 / -1;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n padding-bottom: 35px;\r\n }\r\n`;\r\nconst Default = styled.div `\r\n grid-column: 2 / 12;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n grid-column: 3 / 11;\r\n padding-bottom: 35px;\r\n }\r\n`;\r\nconst Thin = styled.div `\r\n grid-column: 1 / -1;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n grid-column: 4 / 10;\r\n padding-bottom: 35px;\r\n }\r\n`;\r\nconst Wide = styled.div `\r\n grid-column: 2 / 12;\r\n padding-bottom: 35px;\r\n`;\r\nexport const StepStyles = {\r\n Grid,\r\n};\r\nexport const Containers = {\r\n FullWidth,\r\n Default,\r\n Thin,\r\n Wide,\r\n};\r\n","import styled, { css } from 'styled-components';\r\nimport brand from './brand';\r\nimport { lighten, transparentize } from 'polished';\r\nexport const ThemeWrapper = styled.div `\r\n display: contents;\r\n`;\r\n/**\r\n * Injects the theme switching for Groundforce / TPA.\r\n * Make sure to not include this on a pseudoelement, as they can't query parents for some reason.\r\n */\r\nexport const ThemeSwitch = (options) => css `\r\n --theme: ${options.groundforceColour ?? brand.primary.base};\r\n --theme-hover: ${options.groundforceColourHover ?? lighten(0.1, brand.primary.base)};\r\n\r\n ${options.generateOpacity &&\r\n `--theme-half-opacity: ${transparentize(0.5, options.groundforceColour ?? brand.primary.base)};`}\r\n\r\n ${options.groundforcePseudoColourAlt && `--theme-alt: ${options.groundforcePseudoColourAlt};`}\r\n\r\n [data-theme='tpa'] &,\r\n &[data-theme='tpa'] {\r\n --theme: ${options.tpaColour ?? brand.tpa.base};\r\n --theme-hover: ${options.tpaColourHover ?? lighten(0.1, brand.tpa.base)};\r\n\r\n ${options.generateOpacity &&\r\n `--theme-half-opacity: ${transparentize(0.5, options.tpaColour ?? brand.tpa.base)};`}\r\n\r\n ${options.tpaPseudoColourAlt && `--theme-alt: ${options.tpaPseudoColourAlt};`}\r\n }\r\n`;\r\n"],"sourceRoot":""}