\n \n {t('formMarketingInformationAgreeText')}\n \n \n \n \n \n
\n \n {disclaimerParagraphs}\n \n setStep(step - 1)} error={data.error}/>\n >\n }\n >\n );\n};\n\nFormStep6.propTypes = {\n step: PropTypes.number.isRequired,\n setStep: PropTypes.func.isRequired,\n data: PropTypes.object.isRequired,\n setData: PropTypes.func.isRequired,\n};\n\nexport default FormStep6;\n","import React from 'react';\nimport styled from 'styled-components';\nimport {useTranslation} from 'react-i18next';\nimport Theme from '../../commons/theme';\nimport PropTypes from \"prop-types\";\n\nconst Button = styled.button`\n position: relative;\n padding: 14px 32px 14px 56px;\n display: inline-block;\n text-align: center;\n vertical-align: middle;\n border: 1px solid ${props => props.theme.colors.brandColor};\n background-color: ${props => props.theme.colors.brandColor};\n transition: background-color .5s,color .5s,border-color .5s,color .5s;\n white-space: nowrap;\n \n &:hover {\n cursor: pointer;\n background-color: ${props => props.theme.colors.brandColorLight};\n border-color: ${props => props.theme.colors.brandColorLight};\n }\n`;\n\nconst TextContainer = styled.span`\n font-size: 16px;\n line-height: 16px;\n font-family: 'NouvelRBold';\n`;\n\nconst Svg = styled.svg`\n position: absolute;\n top: 50%;\n left: 16px;\n transform: translateY(-50%);\n width: 22px;\n fill: ${props => props.theme.colors.black};\n`;\n\nconst ButtonSearchMap = ({onClickFunc}) => {\n const { t } = useTranslation();\n\n return (\n \n \n \n );\n};\n\nButtonSearchMap.propTypes = {\n onClickFunc: PropTypes.func\n};\n\nexport default ButtonSearchMap;\n","import React from 'react';\nimport {useTranslation} from 'react-i18next';\nimport styled from 'styled-components';\nimport {RaportDL} from \"../_shared/DataLayer\";\nimport PropTypes from 'prop-types';\n\nconst DealerBoxWrapper = styled.li`\n display: flex;\n padding: 16px 8px;\n border-bottom: 1px solid ${props => props.theme.colors.darkWhite};\n color: ${props => props.theme.colors.black};\n \n &:hover {\n background-color: ${props => props.theme.colors.darkWhite};\n }\n \n &.is-active {\n background-color: ${props => props.theme.colors.darkWhite};\n }\n`;\n\nconst DealerBoxPinWrapper = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n margin-right: 8px;\n min-width: 35px;\n`;\n\nconst DealerBoxPin = styled.div`\n position: relative;\n display: inline-block;\n z-index: 1;\n`;\n\nconst DealerBoxPinElement = styled.div`\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n margin-bottom: 16px;\n border: 0 solid;\n border-radius: 50%;\n background-color: ${props => props.theme.colors.brandColor};\n \n &:after {\n position: absolute;\n left: 50%;\n bottom: -10px;\n width: 0;\n height: 0;\n content: \"\";\n z-index: -1;\n border-style: solid;\n border-width: 16px 11px 0;\n transform: translate3d(-50%, 0, 0);\n transition: border-color .5s ease;\n border-color: ${props => props.theme.colors.brandColor} transparent transparent;\n }\n`;\n\nconst DealerBoxPinElementText = styled.div`\n color: ${props => props.theme.colors.black};\n font-family: NouvelRBold;\n font-size: 13px;\n line-height: 18px;\n`;\n\nconst DealerBoxDistance = styled.p`\n margin: 0;\n font-size: 12px;\n line-height: 17px;\n`;\n\nconst DealerBoxDistanceNumber = styled.span`\n font-family: NouvelRBold;\n`;\n\nconst DealerBoxInfo = styled.div`\n flex: 1;\n`;\n\nconst DealerBoxInfoAddress = styled.div`\n display: flex;\n`;\n\nconst DealerBoxInfoAddressBox = styled.div`\n flex: 2;\n margin-right: 8px;\n`;\n\nconst DealerBoxInfoAddressBoxName = styled.div`\n margin: 4px 0;\n font-family: NouvelRBold;\n font-size: 14px;\n line-height: 17px;\n text-transform: uppercase;\n`;\n\nconst DealerBoxInfoAddressBoxAddress = styled.p`\n margin-top: 12px;\n font-size: 14px;\n line-height: 17px;\n text-transform: uppercase;\n`;\n\nconst DealerBoxInfoAddressBoxPhone = styled.p`\n margin-top: 16px;\n font-size: 14px;\n line-height: 17px;\n`;\n\nconst DealerBoxInfoAddressBoxPhoneLink = styled.a`\n color: ${props => props.theme.colors.black};\n text-decoration: underline;\n`;\n\nconst DealerBoxInfoAddressBoxBtnWrapper = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n justify-content: center;\n flex: 1;\n`;\n\nconst DealerBoxInfoAddressBoxBtn = styled.button`\n display: inline-flex;\n align-items: center;\n min-width: 100px;\n min-height: 40px;\n margin-top: 8px;\n padding: 8px;\n font-family: NouvelRBold;\n font-size: 12px;\n line-height: 12px;\n background-color: ${props => props.theme.colors.white};\n border: 1px solid ${props => props.theme.colors.black};\n transition: background-color 0.5s ease 0s, color 0.5s ease 0s, border-color 0.5s ease 0s, color 0.5s ease 0s;\n \n &:hover {\n color: ${props => props.theme.colors.white};\n background-color: ${props => props.theme.colors.black};\n cursor: pointer;\n }\n`;\n\nconst DealerContact = styled.div`\n margin-top: 8px;\n`;\n\nconst DealerContactSvg = styled.svg`\n position: absolute;\n top: 50%;\n left: 50%;\n display: block;\n width: 22px;\n transform: translate(-50%, -50%);\n fill: ${props => props.theme.colors.black};\n`;\n\nconst DealerContactLink = styled.a`\n position: relative;\n display: block;\n width: 8px;\n height: 8px;\n margin: 4px;\n padding: 16px;\n background-color: ${props => props.theme.colors.white};\n border: 1px solid ${props => props.theme.colors.black};\n transition: background-color 0.5s ease 0s, color 0.5s ease 0s, border-color 0.5s ease 0s, color 0.5s ease 0s;\n \n &:hover {\n color: ${props => props.theme.colors.white};\n background-color: ${props => props.theme.colors.black};\n \n ${DealerContactSvg} {\n fill: ${props => props.theme.colors.white};\n }\n }\n`;\n\nconst AddressLink = styled.a`\n color: ${props => props.theme.colors.black};;\n text-decoration: none;\n`;\n\nconst DealerBox = ({i, id, name, street, postalCode, city, phoneNumber, distance, activeDealer, setDealer, lat, lng, step, setStep, data, setData, hoverFunc}) => {\n const { t } = useTranslation();\n\n const setDealerHandler = (e, id) => {\n e.preventDefault();\n setData({\n type: 'UPDATE_DEALER_DATA',\n payload: {\n dealer: id\n },\n });\n\n RaportDL('offer', 'step-11');\n\n setStep(step + 1);\n };\n\n return (\n \n \n \n \n {i + 1}\n \n \n \n {(distance/1000).toFixed(1)} km\n \n \n \n \n \n {name}\n \n {street}
{postalCode} {city}\n \n \n \n {t('phoneShort')} {phoneNumber}\n \n \n \n \n {setDealerHandler(e, id);}}>\n {t('chooseDealer')}\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nDealerBox.defaultProps = {\n i: 0,\n name: '',\n street: '',\n postalCode: '',\n city: '',\n phoneNumber: '',\n distance: '',\n activeDealer: 0\n};\n\nDealerBox.propTypes = {\n i: PropTypes.number,\n name: PropTypes.string,\n street: PropTypes.string,\n postalCode: PropTypes.string,\n city: PropTypes.string,\n phoneNumber: PropTypes.string,\n distance: PropTypes.number,\n activeDealer: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\n\nexport default DealerBox;\n","import React from \"react\";\nimport styled from \"styled-components\";\n\nconst MarkerMapPin = styled.div`\n position: absolute;\n top: 25px;\n display: inline-block;\n transform: translate(-50%, -100%);\n z-index: 2;\n \n &.is-hovered {\n z-index: 3;\n }\n`;\n\nconst MarkerPinInner = styled.div`\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n width: 36px;\n height: 36px;\n margin-bottom: 15px;\n border-radius: 50%;\n font-size: 14px;\n font-weight: 700;\n background: ${props => props.theme.colors.brandColor};\n \n &:after {\n position: absolute;\n left: 50%;\n bottom: -13px;\n content: \"\";\n width: 0;\n height: 0;\n z-index: -1;\n transform: translate3d(-50%,0,0);\n transition: border-color .5s ease;\n border-style: solid;\n border-color: ${props => props.theme.colors.brandColor} transparent transparent;\n border-width: 20px 14px 0;\n }\n \n &.is-hovered {\n width: 46px;\n height: 46px;\n \n &:after {\n bottom: -12px;\n border-width: 20px 18px 0;\n }\n }\n`;\n\nconst Marker = ({ number, activeClass }) => (\n \n \n {number}\n \n \n);\n\nexport default Marker\n","import React, {useEffect, useState} from 'react';\nimport {useTranslation} from 'react-i18next';\nimport styled from 'styled-components';\nimport { breakpoints } from \"../../commons/breakpoints\";\nimport Autocomplete from 'react-google-autocomplete';\nimport GoogleMapReact from 'google-map-react';\nimport PropTypes from 'prop-types';\nimport axios from \"axios\";\nimport ButtonSearchMap from './ButtonSearchMap';\nimport DealerBox from './DealerBox';\nimport Marker from './Marker';\nimport Loader from \"../page-form/_shared/Loader\";\n\nconst DealerLocatorWrapper = styled.div`\n position: relative;\n display: flex;\n flex-direction: column;\n height: 660px;\n min-height: 660px;\n overflow: hidden;\n background-color: ${props => props.theme.colors.black};\n border: 1px solid ${props => props.theme.colors.benefitBoxTitleBorder};\n \n &.is-group {\n height: 592px;\n min-height: 592px;\n }\n`;\n\nconst MapWrapper = styled.div`\n position: realtive;\n display: flex;\n flex-direction: column;\n height: calc(100% - 68px);\n \n @media ${breakpoints.sm} {\n flex-direction: row;\n }\n \n .is-group & {\n height: 100%;\n }\n`;\n\nconst SearchContainer = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n width: calc(100% - 32px);\n padding: 16px;\n background-color: ${props => props.theme.colors.black};\n \n @media ${breakpoints.sm} {\n width: calc(100% - 16px);\n padding: 8px;\n }\n`;\n\nconst SearchInnerContainer = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n max-width: 700px;\n \n @media ${breakpoints.sm} {\n flex-direction: row;\n }\n`;\n\nconst OrSeparator = styled.span`\n margin: 8px 16px;\n color: ${props => props.theme.colors.white};\n font-family: 'NouvelRBold';\n font-size: 14px;\n line-height: 20px;\n text-align: center;\n text-transform: uppercase; \n`;\n\nconst SearchField = styled.div`\n position: relative;\n display: flex;\n flex-direction: row-reverse;\n width: 100%;\n margin: 0;\n border: 0;\n border-radius: 2px;\n`;\n\nconst Svg = styled.svg`\n position: absolute;\n top: 50%;\n right: 0;\n transform: translateY(-50%);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 25px;\n height: 100%;\n padding: 0 15px;\n background-color: ${props => props.theme.colors.brandColor};\n fill: ${props => props.theme.colors.black};\n`;\n\nconst ClearFieldIcon = styled.svg`\n position: absolute;\n top: 50%;\n right: 10px;\n transform: translateY(-50%);\n width: 10px;\n padding: 10px;\n fill: ${props => props.theme.colors.black};\n \n &:hover {\n cursor: pointer;\n }\n`;\n\nconst SearchInput = styled(Autocomplete)`\n display: block;\n width: 100%;\n margin: 0;\n padding: 16px 8px;\n border: 1px solid ${props => props.theme.colors.benefitBoxTitleBorder};\n border-radius: 2px;\n font-family: NouvelRRegular;\n font-size: 16px;\n line-height: 18px;\n \n @media ${breakpoints.sm} {\n max-width: 353px;\n }\n \n &:placeholder {\n font-family: 'NouvelR';\n }\n \n &:focus {\n outline: none;\n }\n`;\n\nconst DealersContainer = styled.div`\n display: flex;\n flex-direction: column;\n overflow: hidden;\n width: 100%;\n transition: width .5s ease;\n will-change: width;\n box-shadow: 0 2px 10px 0 rgb(0 0 0 / 20%);\n \n @media ${breakpoints.sm} {\n position: relative;\n width: 30%;\n min-width: 400px;\n }\n`;\n\nconst DealersContainerHeader = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n height: 47px;\n padding-left: 16px;\n overflow: hidden;\n background-color: ${props => props.theme.colors.brandColor};\n transition: height 1s ease;\n will-change: height;\n`;\n\nconst DealersContainerIconsContainer = styled.div`\n height: 100%;\n border: 0;\n \n @media ${breakpoints.sm} {\n display: none;\n }\n`;\n\nconst DealerContainerIconDealers = styled.button`\n display: inline-flex;\n align-items: center;\n position: relative;\n min-height: 40px;\n height: 100%;\n padding: 0 32px;\n border: 1px solid ${props => props.theme.colors.brandColor};\n background-color: ${props => props.theme.colors.brandColor};\n`;\n\nconst DealerContainerIconMap = styled.button`\n display: inline-flex;\n align-items: center;\n position: relative;\n min-height: 40px;\n height: 100%;\n padding: 0 32px;\n border: 1px solid ${props => props.theme.colors.brandColor};\n background-color: ${props => props.theme.colors.brandColor};\n`;\n\nconst SvgIcon = styled.svg`\n position: absolute;\n top: 50%;\n left: 16px;\n transform: translateY(-50%);\n width: 22px;\n fill: ${props => props.theme.colors.black};\n`;\n\nconst DealersContainerCounter = styled.span`\n flex: 1;\n height: 35px;\n font-family: NouvelRBold;\n font-size: 14px;\n line-height: 35px;\n border-right: 1px solid ${props => props.theme.colors.black};\n \n @media ${breakpoints.sm} {\n border-right: none;\n }\n`;\n\nconst DealersListWrapper = styled.div`\n position: absolute;\n top: 209px;\n width: 100%;\n height: 0;\n transition: height .5s ease;\n will-change: height;\n overflow: hidden;\n \n @media ${breakpoints.sm} {\n position: relative;\n top: 0;\n height: calc(100% - 47px);\n }\n \n &.is-open {\n height: calc(100% - 209px);\n \n .is-group & {\n height: calc(100% - 43px);\n }\n }\n \n .is-group & {\n top: 43px;\n \n @media ${breakpoints.sm} {\n top: 0;\n }\n }\n`;\n\nconst DealersList = styled.ul`\n position: relative;\n flex: 1;\n width: 100%;\n height: 100%;\n margin: 0;\n padding: 0;\n background-color: ${props => props.theme.colors.white};\n overflow: auto;\n z-index: 1;\n`;\n\nconst GOOGLE_MAPS_KEY = process.env.REACT_APP_GOOGLE_MAPS_API_KEY;\nconst API_KEY = process.env.REACT_APP_API_KEY;\nconst API_URL = process.env.REACT_APP_API_URL;\n\nconst DealerLocator = ({center, zoom, dealers, googlePlace, setGooglePlace, data, setData, step, setStep, errorFunc}) => {\n const { t } = useTranslation();\n\n let dealerBoxes;\n let markers;\n\n const [mapCenter, setMapCenter] = useState(center);\n const [mapZoom, setMapZoom] = useState(zoom);\n const [activeDealer, setActiveDealer] = useState(0);\n const [mobileDealers, setMobileDealers] = useState(false);\n const [googlePlaceValue, setGooglePlaceValue] = useState('');\n\n const dealerGroup = sessionStorage.getItem('tradeIn-dealerGroup') || '';\n\n let newCar = (data.userData.buyCar === \"new\") ? \"VN\" : \"VO\";\n if (data.userData.buyCar === \"no\") {\n newCar = null;\n }\n\n useEffect(() => {\n resetMap();\n\n if (dealerGroup) {\n setData({\n type: 'UPDATE_LOADER',\n payload: {\n loader: true,\n },\n });\n\n axios.get(`${API_URL}get-dealers?searchModel.pageSize=25&searchModel.carType=${newCar}&searchModel.brand=Renault&searchModel.groupName=${dealerGroup}`, {\n headers: {\n 'apiKey': `${API_KEY}`\n }\n })\n .then(function (response) {\n setData({\n type: 'UPDATE_DEALER_DATA',\n payload: {\n dealers: response.data\n },\n });\n setData({\n type: 'UPDATE_LOADER',\n payload: {\n loader: false,\n },\n });\n errorFunc(null);\n })\n .catch(function (error) {\n console.log(error);\n errorFunc(t('responseErrorDefault'));\n setData({\n type: 'UPDATE_LOADER',\n payload: {\n loader: false,\n },\n });\n });\n } else {\n if (googlePlace) {\n setData({\n type: 'UPDATE_LOADER',\n payload: {\n loader: true,\n },\n });\n\n axios.get(`${API_URL}get-dealers?searchModel.pageSize=25&searchModel.carType=${newCar}&searchModel.brand=Renault&searchModel.geolocation=${googlePlace}`, {\n headers: {\n 'apiKey': `${API_KEY}`\n }\n })\n .then(function (response) {\n setData({\n type: 'UPDATE_DEALER_DATA',\n payload: {\n dealers: response.data\n },\n });\n setData({\n type: 'UPDATE_LOADER',\n payload: {\n loader: false,\n },\n });\n errorFunc(null);\n resetMapParam();\n scrollListToStart();\n })\n .catch(function (error) {\n console.log(error);\n errorFunc(t('responseErrorDefault'));\n setData({\n type: 'UPDATE_LOADER',\n payload: {\n loader: false,\n },\n });\n });\n }\n }\n }, [googlePlace]); // eslint-disable-line react-hooks/exhaustive-deps\n\n const geolocationsHandler = () => {\n if (navigator.geolocation) {\n navigator.geolocation.getCurrentPosition((position) => {\n setGooglePlace(`${position.coords.latitude};${position.coords.longitude}`);\n setGooglePlaceValue('');\n resetMapParam();\n scrollListToStart();\n });\n }\n };\n\n const googlePlaceValueHandler = (e) => {\n setGooglePlaceValue(e.target.value);\n };\n\n const clearSearchHandler = () => {\n setGooglePlaceValue('');\n resetMap();\n };\n\n const resetMapParam = () => {\n setMapZoom(zoom);\n setMapCenter(center);\n };\n\n const resetMap = () => {\n setData({\n type: 'CLEAR_DEALER_DATA'\n });\n resetMapParam();\n };\n\n const setActiveBox = (id) => {\n const box = document.getElementById(id);\n const topPos = box.offsetTop;\n const list = document.getElementById('dealerList');\n list.scrollTop = topPos;\n };\n\n const scrollListToStart = () => {\n const list = document.getElementById('dealerList');\n if (list) {\n list.scrollTop = 0;\n }\n };\n\n const _onChildClick = (key, childProps) => {\n setActiveDealer(key);\n setMapZoom(14);\n setMapCenter({lat: childProps.lat, lng: childProps.lng});\n setActiveBox(key);\n };\n\n const _onChildMouseEnter = (key) => {\n setActiveDealer(key);\n };\n\n const hoverBoxHandler = (e) => {\n setActiveDealer(e.currentTarget.getAttribute('id'));\n };\n\n const showDealers = () => {\n setMobileDealers(true);\n };\n\n const hideDealers = () => {\n setMobileDealers(false);\n };\n\n if (data.dealerData.dealers && data.dealerData.dealers.Locations) {\n markers = data.dealerData.dealers.Locations.map(({Id, Lat, Lng}, i) => (\n \n ));\n\n dealerBoxes = data.dealerData.dealers.Locations.map(({Id, Name, Street, PostalCode, City, PhoneNumber, Distance, Lat, Lng}, i) => (\n \n ));\n }\n\n return (\n \n \n {!dealerGroup &&\n \n \n \n \n {t('dealerLocatorOr')}\n \n \n {!googlePlaceValue &&\n \n }\n {googlePlaceValue &&\n \n \n \n }\n {\n setGooglePlace(`${place.geometry.location.lat()};${place.geometry.location.lng()}`);\n }} />\n \n \n \n }\n \n {data.dealerData.dealers && data.dealerData.dealers.Locations &&\n \n \n \n {data.dealerData.dealers.Locations.length} {t('dealerLocatorCountPostfix')}\n \n \n {!mobileDealers &&\n \n \n \n }\n {mobileDealers &&\n \n \n \n }\n \n \n \n \n {dealerBoxes}\n \n \n \n }\n \n {markers}\n \n \n \n );\n};\n\nDealerLocator.defaultProps = {\n activeDealer: {},\n dealerList: [],\n center: {lat: 51.919438, lng: 19.145136},\n zoom: 5\n};\n\nDealerLocator.propTypes = {\n activeDealer: PropTypes.object,\n dealerList: PropTypes.array,\n center: PropTypes.shape({\n lat: PropTypes.number,\n lng: PropTypes.number\n }),\n zoom: PropTypes.number\n};\n\nexport default DealerLocator;\n","import React, { useState } from 'react';\nimport {useTranslation} from 'react-i18next';\nimport PropTypes from \"prop-types\";\nimport DealerLocator from '../dealer-locator/DealerLocator';\nimport Title from './_shared/Title';\nimport FormButtons from \"./_shared/FormButtons\";\nimport Error from './Error';\n\nconst FormStep7 = ({step, setStep, data, setData}) => {\n const { t } = useTranslation();\n const [googlePlace, setGooglePlace] = useState();\n const [error, setError] = useState();\n\n const errorHandler = (text) => {\n setError(text);\n };\n\n const validHandler = () => {\n if (!data.dealerData.dealer) {\n setData({\n type: 'UPDATE_ERROR',\n payload: {\n error: true\n },\n });\n } else {\n setData({\n type: 'UPDATE_ERROR',\n payload: {\n error: false\n },\n });\n setData({\n type: 'UPDATE_NEXT_BUTTON',\n payload: {\n buttonStep7: true\n },\n });\n setStep(step + 1);\n }\n };\n\n return (\n <>\n {error &&\n \n }\n {!error &&\n <>\n \n \n setStep(step - 1)} error={data.error}/>\n >\n }\n >\n );\n};\n\nFormStep7.propTypes = {\n step: PropTypes.number.isRequired,\n setStep: PropTypes.func.isRequired,\n data: PropTypes.object.isRequired,\n setData: PropTypes.func.isRequired,\n dealerGroup: PropTypes.string\n};\n\nexport default FormStep7;\n","import React, { useEffect, useState } from 'react';\nimport {useTranslation} from 'react-i18next';\nimport styled from 'styled-components';\nimport PropTypes from \"prop-types\";\nimport { breakpoints } from \"../../commons/breakpoints\";\nimport Title from './_shared/Title';\nimport Loader from \"./_shared/Loader\";\nimport axios from \"axios\";\nimport GoogleMapReact from 'google-map-react';\nimport Marker from './../dealer-locator/Marker';\nimport Error from './Error';\n\nconst OfferContainer = styled.div`\n margin-bottom: 32px;\n \n @media ${breakpoints.sm} {\n display: flex;\n }\n`;\n\nconst ResultBox = styled.div`\n width: 100%;\n \n @media ${breakpoints.sm} {\n flex: 1 1 0%;\n width: 50%;\n min-width: 500px;\n }\n`;\n\nconst HeadBox = styled.div`\n margin-bottom: 32px;\n`;\n\nconst Paragraph = styled.p`\n font-size: 11px;\n line-height: 16px;\n \n @media ${breakpoints.sm} {\n font-size: 16px;\n line-height: 23px;\n }\n`;\n\nconst CarImage = styled.img`\n display: block;\n max-width: 100%;\n height: auto;\n margin: 0 auto 16px;\n`;\n\nconst InfoBox = styled.div`\n position: relative;\n padding: 23px 23px 23px 39px;\n border: 1px solid ${props => props.theme.colors.benefitBoxTitleBorder};\n background-color: ${props => props.theme.colors.darkWhite};\n`;\n\nconst InfoContainer = styled.div`\n display: flex;\n align-items: center;\n margin: 8px 0;\n \n @media ${breakpoints.sm} {\n margin: 16px 0;\n }\n \n ${Paragraph} {\n flex: 1 1 0%;\n margin: 0;\n }\n`;\n\nconst Svg = styled.svg`\n width: 50px;\n max-width: 100%;\n margin-right: 16px;\n`;\n\nconst CarTableContainer = styled.div`\n @media ${breakpoints.sm} {\n display: flex;\n }\n`;\n\nconst CarTable = styled.table`\n width: 100%;\n text-align: left;\n border-collapse: collapse;\n font-size: 11px;\n line-height: 16px;\n \n @media ${breakpoints.sm} {\n width: 50%; \n font-size: 14px;\n line-height: 20px;\n }\n`;\n\nconst CarTableBody = styled.tbody`\n box-shadow: rgba(0, 0, 0, 0.25) 0px 1px 1px 0px;\n`;\n\nconst CarTableRow = styled.tr`\n border-top: 1px solid ${props => props.theme.colors.darkWhite};\n`;\n\nconst CarTableCell = styled.td`\n padding: 12px 16px;\n border-right: 1px solid ${props => props.theme.colors.darkWhite};\n \n &:nth-child(2) {\n width: 40%;\n }\n \n &.bold {\n font-family: NouvelRBold;\n }\n`;\n\nconst DealerSection = styled.div`\n display: flex;\n justify-content: space-between;\n flex-direction: column;\n margin-bottom: 64px;\n \n @media ${breakpoints.md} {\n flex-direction: row;\n }\n`;\n\nconst DealerInfo = styled.div`\n display: block;\n flex: 1 1 0%;\n padding: 32px;\n color: ${props => props.theme.colors.white};\n background-color: ${props => props.theme.colors.black};\n`;\n\nconst DealerMap = styled.div`\n display: block;\n width: 100%;\n height: 500px;\n min-height: 350px;\n \n @media ${breakpoints.md} {\n width: 30%;\n height: auto;\n }\n`;\n\nconst DealerInfoTitle = styled.p`\n margin: 0 0 32px 0;\n font-size: 24px;\n line-height: 34px;\n`;\n\nconst DealerInfoName = styled.p`\n margin: 0;\n font-family: NouvelRBold;\n font-size: 16px;\n line-height: 23px;\n`;\n\nconst DealerAddress = styled.div`\n margin: 32px 0;\n`;\n\nconst DealerAddressLine = styled.div`\n display: flex;\n align-items: center;\n margin-bottom: 16px;\n`;\n\nconst DealerAddressSvg = styled.svg`\n width: 24px;\n height: 24px;\n margin-right: 8px;\n fill: ${props => props.theme.colors.white};\n`;\n\nconst DealerAddressLink = styled.a`\n color: ${props => props.theme.colors.white};\n text-decoration: none;\n`;\n\nconst BonusWrapper = styled.div`\n p:first-child {\n margin-bottom: 0;\n margin-top: 20px;\n \n @media ${breakpoints.md} {\n margin-top: 30px;\n }\n }\n ${Paragraph} {\n margin: 0;\n padding-left: 20px;\n }\n`;\n\nconst Button = styled.a`\n display: inline-block;\n width: calc(100% - 32px);\n padding: 16px;\n color: ${props => props.theme.colors.black};\n font-size: 13px;\n line-height: 13px;\n font-family: 'NouvelRBold';\n text-align: center;\n text-decoration: none;\n background-color: ${props => props.theme.colors.brandColor};\n border: 1px solid ${props => props.theme.colors.brandColor};\n vertical-align: middle;\n transition: background-color 0.5s ease 0s, color 0.5s ease 0s, border-color 0.5s ease 0s, color 0.5s ease 0s;\n cursor: pointer;\n \n @media ${breakpoints.sm} {\n width: 90%;\n font-size: 14px;\n line-height: 14px;\n }\n \n &:hover {\n color: ${props => props.theme.colors.white};\n background-color: ${props => props.theme.colors.black};\n border-color: ${props => props.theme.colors.black};\n }\n`;\n\nconst GOOGLE_MAPS_KEY = process.env.REACT_APP_GOOGLE_MAPS_API_KEY;\nconst API_KEY = process.env.REACT_APP_API_KEY;\nconst API_URL = process.env.REACT_APP_API_URL;\n\nconst FormStep8 = ({step, setStep, data, setData}) => {\n const { t } = useTranslation();\n const [quotation, setQuotation] = useState({});\n const [pricingId, setPricingId] = useState(null);\n const [error, setError] = useState(null);\n const selectedModel = data.carData.models.filter(el => el.Key.toString() === data.carData.model.toString());\n const selectedFuel = data.carData.fuels.filter(el => el.Key.toString() === data.carData.fuel.toString());\n const selectDealer = data.dealerData.dealers.Locations.filter(el => el.Id === data.dealerData.dealer);\n const dealerLat = selectDealer[0].Lat;\n const dealerLng = selectDealer[0].Lng;\n const carImageAlt = `${data.carData.brand.label} ${selectedModel[0].Value}`;\n const campaign = sessionStorage.getItem('tradeIn-campaign') || '';\n const origin = sessionStorage.getItem('tradeIn-origin') || '';\n let selectedMonth = data.carData.monthIndex;\n let newCar = (data.userData.buyCar === \"new\") ? \"VN\" : \"VO\";\n let interestCar = data.userData.newCar;\n let GACLIENTID = '';\n const GATRACKID = 'UA-19959194-2';\n const marketingOptinStatusEmail = data.userData.rEmail ? 'y' : 'n';\n const marketingOptinStatusTelephone = data.userData.rPhone ? 'y' : 'n';\n const marketingOptinStatusSms = data.userData.rSms ? 'y' : 'n';\n const marketingOptinStatus = `general: y, email: ${marketingOptinStatusEmail}, telephone: ${marketingOptinStatusTelephone}, sms: ${marketingOptinStatusSms}`;\n\n if (window.ga && window.ga !== undefined && typeof window.ga.getAll === 'function') {\n const tracker = window.ga.getAll()[0];\n const clientId = tracker.get('clientId');\n GACLIENTID = clientId;\n }\n\n if (data.carData.monthIndex < 10) {\n selectedMonth = '0' + data.carData.monthIndex;\n }\n\n if (data.userData.buyCar === \"no\") {\n newCar = null;\n }\n\n const deviceType = () => {\n const ua = navigator.userAgent;\n if (/(tablet|ipad|playbook|silk)|(android(?!.*mobi))/i.test(ua)) {\n return \"tablet\";\n }\n else if (/Mobile|Android|iP(hone|od)|IEMobile|BlackBerry|Kindle|Silk-Accelerated|(hpw|web)OS|Opera M(obi|ini)/.test(ua)) {\n return \"mobile\";\n }\n return \"desktop\";\n };\n\n useEffect(() => {\n setData({\n type: 'UPDATE_LOADER',\n payload: {\n loader: true,\n },\n });\n\n axios.post(`${API_URL}add-tradeid-pricing`,\n {\n \"EcCode\": data.carData.car,\n \"FirstRegistrationDate\": `${data.carData.year}-${data.carData.monthIndex}`,\n \"Mileage\": data.carData.mileage,\n \"ClientRequestDescription\": \"\",\n \"TypeOfInterest\": newCar,\n \"ModelOfInterest\": interestCar,\n \"DealerId\": selectDealer[0].Bir,\n \"Customer\": {\n \"CustomerType\": \"Customer\",\n \"CompanyName\": \"string\",\n \"ContactPerson\": \"string\",\n \"FirstName\": data.userData.name,\n \"LastName\": data.userData.surname,\n \"Email\": data.userData.email,\n \"Phone\": data.userData.phone,\n \"DataProcessing\": true,\n \"DataProcessingText\": t('formCheckboxOWU'),\n \"ContactByPhone\": data.userData.rPhone,\n \"ContactByPhoneText\": t('formRPhoneTitle'),\n \"ContactByEmail\": data.userData.rEmail,\n \"ContactByEmailText\": t('formREmailTitle'),\n \"ContactBySms\": data.userData.rSms,\n \"ContactBySmsText\": t('formRSmsTitle')\n },\n \"AdditionalInfo\": {\n \"GaClientID\": GACLIENTID,\n \"GaTrackID\": GATRACKID,\n \"GaUserID\": null,\n \"Campaign\": campaign,\n \"Device\": deviceType(),\n \"Origin\": origin\n },\n },\n {\n headers: {\n 'apiKey': `${API_KEY}`\n }\n })\n .then(function(response) {\n if (response.data.Success) {\n setQuotation(response.data);\n setPricingId(response.data.Data.PricingId);\n setError(null);\n\n let dataLayer = window.dataLayer = window.dataLayer || [];\n dataLayer.push({\n pageName: \"form/Wycena\",\n pageType: \"form\",\n businessType: \"used-car\",\n formName: \"ML-TI2S\",\n formType: \"trade_in_request\",\n formCategory: \"lead_usedcar\",\n formStepName: \"complete\",\n formStepNumber: \"8\",\n leadId: response.data.Data.LeadId,\n marketingOptinStatus: marketingOptinStatus,\n event: \"formValidate\",\n eventCategory: \"Leadform Validations\",\n eventAction: \"lead_vn\",\n eventLabel: \"ML-TI2S\",\n dealerName: selectDealer[0].Name,\n dealerId: selectDealer[0].Bir,\n vehicleModel: selectedModel[0].Value,\n vehicleId: selectedModel[0].Key\n });\n\n } else {\n setError(response.data.Errors[0]);\n }\n setData({\n type: 'UPDATE_LOADER',\n payload: {\n loader: false,\n },\n });\n })\n .catch(function(error) {\n console.log(error);\n setError(t('responseErrorDefault'));\n setData({\n type: 'UPDATE_LOADER',\n payload: {\n loader: false,\n },\n });\n });\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n return (\n <>\n \n {error &&\n \n }\n {!error &&\n <>\n \n \n \n \n {t('finalStepCarParagraph1')} {data.carData.brand.label} {selectedModel[0].Value}.\n \n \n \n {!pricingId &&\n <>\n
\n \n \n \n {t('finalStepFailContent')}\n \n \n >\n }\n {pricingId &&\n <>\n \n \n \n \n {t('finalStepCarParagraph2')}\n \n \n >\n }\n \n {quotation.Success && quotation.Data.BonusInfo &&\n \n \n \n \n }\n \n \n {quotation.Success &&\n \n }\n
\n \n \n \n \n \n \n \n {t('finalStepBrandLiteral')}\n \n \n {data.carData.brand.label}\n \n \n \n \n {t('finalStepModelLiteral')}\n \n \n {selectedModel[0].Value}\n \n \n \n \n \n \n \n \n {t('finalStepDriveLiteral')}\n \n \n {selectedFuel[0].Value}\n \n \n \n \n {t('finalStepRegistrationDateLiteral')}\n \n \n {selectedMonth}/{data.carData.year}\n \n \n \n \n \n \n \n \n {t('finalStepDealerTitle')}\n \n \n {selectDealer[0].Name}\n \n \n \n \n \n \n \n {`${selectDealer[0].Street}, ${selectDealer[0].PostalCode} ${selectDealer[0].City}`}\n \n \n \n \n \n \n \n {selectDealer[0].PhoneNumber}\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n >\n }\n >\n );\n};\n\nFormStep8.propTypes = {\n step: PropTypes.number.isRequired,\n setStep: PropTypes.func.isRequired,\n data: PropTypes.object.isRequired,\n setData: PropTypes.func.isRequired,\n};\n\nexport default FormStep8;\n","import React from 'react'\nimport FormStep1 from './FormStep1'\nimport FormStep2 from './FormStep2'\nimport FormStep3 from './FormStep3'\nimport FormStep4 from './FormStep4'\nimport FormStep5 from './FormStep5'\nimport FormStep6 from './FormStep6'\nimport FormStep7 from './FormStep7'\nimport FormStep8 from './FormStep8'\n\n\nconst FormSteps = (step, setStep, data, setData) => [\n {\n activeStep: '1',\n accomplish: '1/6',\n accomplishStep: '1',\n content: (\n \n ),\n },\n {\n activeStep: '1',\n accomplish: '2/6',\n accomplishStep: '1',\n content: (\n \n ),\n },\n {\n activeStep: '1',\n accomplish: '3/6',\n accomplishStep: '1',\n content: (\n \n ),\n },\n {\n activeStep: '1',\n accomplish: '4/6',\n accomplishStep: '1',\n content: (\n \n ),\n },\n {\n activeStep: '1',\n accomplish: '5/6',\n accomplishStep: '1',\n content: (\n \n ),\n },\n {\n activeStep: '2',\n accomplish: '',\n accomplishStep: '2',\n content: (\n \n ),\n },\n {\n activeStep: '2',\n accomplish: '1/2',\n accomplishStep: '2',\n content: (\n \n ),\n },\n {\n activeStep: '3',\n accomplish: '',\n accomplishStep: '3',\n content: (\n \n ),\n },\n];\n\nexport default FormSteps;\n","import React from 'react';\nimport styled from 'styled-components';\nimport {useTranslation} from \"react-i18next\";\nimport { breakpoints } from \"../../../commons/breakpoints\";\nimport PropTypes from 'prop-types';\n\nconst Wrapper = styled.div`\n margin-bottom: 48px;\n border-bottom: 1px solid ${props => props.theme.colors.darkWhite};\n \n @media ${breakpoints.sm} {\n margin-bottom: 40px;\n }\n`;\n\nconst Svg = styled.svg`\n position: absolute;\n bottom: -6px;\n left: calc(50% - 6px);\n z-index: 2;\n display: none;\n height: 12px;\n`;\n\nconst List = styled.ul`\n display: flex;\n justify-content: center;\n align-items: flex-end;\n margin: 0;\n padding: 32px 8px 8px;\n counter-reset: step;\n \n @media ${breakpoints.sm} {\n padding: 5px 8px 8px;\n }\n`;\n\nconst ListItem = styled.li`\n flex: 1 1 0%;\n position: relative;\n max-width: 180px;\n margin-bottom: 16px;\n color: ${props => props.theme.colors.benefitBoxTitleBorder};\n text-align: center;\n list-style: none;\n \n &:before {\n position: absolute;\n bottom: 0;\n left: -50%;\n content: \"\";\n width: 100%;\n border-bottom: 1px solid;\n }\n \n &:first-child {\n &:before {\n display: none;\n }\n }\n \n &:after {\n position: absolute;\n bottom: -10px;\n left: calc(50% - 10px);\n z-index: 1;\n display: flex;\n flex-direction: column;\n justify-content: center;\n width: 18px;\n height: 18px;\n counter-increment: step;\n content: counter(step);\n border: 1px solid ${props => props.theme.colors.benefitBoxTitleBorder};\n background-color: ${props => props.theme.colors.white};\n color: ${props => props.theme.colors.benefitBoxTitleBorder};\n font-size: 10px;\n border-radius: 50%;\n }\n \n &.is-active {\n font-family: 'NouvelRBold';\n \n &:after {\n bottom: -12px;\n left: calc(50% - 12px);\n width: 24px;\n height: 24px;\n color: ${props => props.theme.colors.black};\n background-color: ${props => props.theme.colors.brandColor};\n border: none;\n }\n }\n \n &.is-complete {\n &:after {\n color: ${props => props.theme.colors.darkWhite};\n border-color: ${props => props.theme.colors.darkWhite};\n background-color: ${props => props.theme.colors.darkWhite};\n }\n \n ${Svg} {\n display: block;\n }\n }\n`;\n\nconst ListItemTitle = styled.span`\n display: none;\n padding-bottom: 16px;\n color: ${props => props.theme.colors.benefitBoxTitleBorder};\n font-size: 10px;\n line-height: 14px;\n \n @media ${breakpoints.sm} {\n display: inline-block;\n }\n \n &.is-active {\n color: ${props => props.theme.colors.black};\n }\n \n .is-complete & {\n font-family: 'NouvelRBold';\n }\n`;\n\nconst ListAccommplish = styled.span`\n position: absolute;\n bottom: 0;\n left: -50%;\n border-bottom: 1px solid ${props => props.theme.colors.brandColor};\n\n &:after {\n position: absolute;\n right: 0;\n bottom: 6px;\n width: 0;\n height: 0;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n border-width: 6px 6px 0;\n border-top-color: ${props => props.theme.colors.brandColor};\n transform: translateX(50%);\n }\n`;\n\nfunction Stepper({activeStep, accomplish, accomplishStep}) {\n const { t } = useTranslation();\n let accomplishStepTab;\n let accomplishPercent;\n\n if (accomplish) {\n accomplishStepTab = accomplish.split('/');\n accomplishPercent = ((accomplishStepTab[0] / accomplishStepTab[1]) * 100).toFixed(4);\n }\n\n const steps = t('stepperTitles', { returnObjects: true }).map(({title}, i) =>\n \n {title}\n {(accomplish && Number(accomplishStep) + 1 === i + 1) ? : null}\n \n \n );\n\n return (\n \n \n {steps}\n
\n \n );\n}\nStepper.defaultProps = {\n activeStep: '1'\n};\n\nStepper.propTypes = {\n activeStep: PropTypes.string.isRequired,\n accomplish: PropTypes.string,\n accomplishStep: PropTypes.string\n};\n\nexport default Stepper;\n","import React, { useReducer, useState } from 'react';\nimport styled from \"styled-components\";\nimport {breakpoints} from \"../../commons/breakpoints\";\nimport FormLayout from './FormLayout';\nimport {DataReducer, DefaultData } from './data-reducer';\nimport FormSteps from './FormSteps';\nimport Stepper from \"./_shared/Stepper\";\n\nconst Section = styled.section`\n max-width: ${props => props.theme.sizes.contentWidth};\n margin: 0 8px;\n padding: 0;\n \n @media ${breakpoints.sm} {\n margin: 0 auto;\n }\n \n @media ${breakpoints.lg} {\n min-height: calc(100vh - 271px);\n }\n`;\n\nconst SectionWrapper = styled.div`\n @media ${breakpoints.sm} {\n margin: 0 32px;\n }\n \n @media ${breakpoints.lg} {\n margin: 0;\n }\n`;\n\nexport const Form = () => {\n let [step, setStep] = useState(0);\n const [data, setData] = useReducer(DataReducer, DefaultData);\n let steps = FormSteps(step, setStep, data, setData);\n\n return (\n \n \n \n {steps[`${step}`].content}\n \n \n )\n};\n\nexport default Form\n","import styled from 'styled-components';\nimport { breakpoints } from \"../../commons/breakpoints\";\nimport PropTypes from 'prop-types';\nimport { Link } from \"react-router-dom\";\n\nconst StyledLink = styled(Link)`\n display: block;\n margin: 32px 0 16px;\n padding: 16px;\n color: ${props => props.theme.colors.black};\n font-size: 11px;\n line-height: 11px;\n font-family: 'NouvelRBold';\n text-align: center;\n text-decoration: none;\n background-color: rgba(255, 255, 255, .75);\n vertical-align: middle;\n \n @media ${breakpoints.sm} {\n font-size: 14px;\n line-height: 14px;\n }\n`;\n\nconst LinkButton = ({text, destination}) => {\n return (\n {text}\n );\n};\n\nLinkButton.propTypes = {\n text: PropTypes.string.isRequired,\n destination: PropTypes.string.isRequired\n};\n\nexport default LinkButton;\n","import React from 'react';\nimport styled from 'styled-components';\nimport { breakpoints } from '../../commons/breakpoints';\nimport { useTranslation } from 'react-i18next';\nimport LinkButton from '../_shared/LinkButton';\n\nconst List = styled.ul`\n display: flex;\n flex-direction: column;\n justify-content: center;\n position: relative;\n margin: 16px 0;\n padding: 16px;\n background-color: hsla(0, 0%, 100%, .75);\n border-radius: 4px;\n \n @media ${breakpoints.sm} {\n flex-wrap: wrap;\n }\n`;\n\nconst ListItem = styled.li`\n display: flex;\n flex-grow: 1;\n position: relative;\n font-size: 11px;\n line-height: 16px;\n padding: 0 0 0 32px;\n \n @media ${breakpoints.sm} {\n width: 100%;\n margin: 16px 8px;\n padding-left: 64px;\n font-size: 16px;\n line-height: 20px;\n }\n \n &:after {\n position: absolute;\n left: 0;\n width: 15px;\n height: 15px;\n border-radius: 50%;\n content: \"\";\n background-color: ${props => props.theme.colors.black};\n \n @media ${breakpoints.sm} {\n width: 30px;\n height: 30px;\n }\n }\n`;\n\nconst Svg = styled.svg`\n position: absolute;\n left: 1px;\n z-index: 1;\n display: block;\n width: 15px;\n fill: ${props => props.theme.colors.brandColor};\n \n @media ${breakpoints.sm} {\n top: 4px;\n left: 7px;\n width: 25px;\n }\n`;\n\nconst BenefitTitle = styled.p`\n margin: 0 0 4px;\n font-family: 'NouvelRBold';\n font-size: 14px;\n line-height: 20px;\n text-transform: uppercase;\n`;\n\nconst BenefitDesc = styled.p`\n margin: 0;\n font-size: 14px;\n line-height: 20px;\n`;\n\nconst Benefits = () => {\n const { t } = useTranslation();\n const benefitsMap = t('benefits', { returnObjects: true }).map(({title, desc}, i) =>\n \n \n
\n
{title}\n
{desc}\n
\n \n );\n\n return (\n <>\n \n {benefitsMap}\n
\n \n >\n );\n};\n\nexport default Benefits;\n","import styled from 'styled-components';\nimport { breakpoints } from \"../../commons/breakpoints\";\nimport { useTranslation } from \"react-i18next\";\nimport ButtonPrimary from '../_shared/ButtonPrimary';\nimport {RaportDL} from '../_shared/DataLayer';\n\nconst Wrapper = styled.div`\n position: relative;\n display: flex;\n flex-direction: column;\n justify-content: center;\n margin: 16px 0;\n padding: 16px;\n background-color: hsla(0, 0%, 100%, .75);\n border-radius: 4px;\n`;\n\nconst ButtonWrapper = styled.div`\n margin: 0 auto;\n \n @media ${breakpoints.sm} {\n width: 75%;\n text-align: center;\n }\n`;\n\nconst Title = styled.span`\n position: relative;\n display: block;\n margin-bottom: 16px;\n padding-left: 16px;\n font-family: 'NouvelRBold';\n font-size: 14px;\n line-height: 20px;\n text-transform: uppercase;\n \n &:before {\n position: absolute;\n left: 0;\n width: 4px;\n height: 100%;\n content: \"\";\n background-color: ${props => props.theme.colors.brandColor};\n }\n \n @media ${breakpoints.sm} {\n width: 100%;\n margin-bottom: 32px;\n padding-left: 0;\n font-size: 16px;\n line-height: 23px;\n text-align: center;\n \n &:before {\n display: none;\n }\n }\n`;\n\nconst MainBox = () => {\n const { t } = useTranslation();\n\n const dl = () => {\n RaportDL('registration-year', 'step-1');\n };\n\n return (\n \n \n \n {t('mainBoxTitle')}\n \n \n \n \n );\n};\n\nexport default MainBox;\n","import styled from 'styled-components';\nimport { breakpoints } from \"../../commons/breakpoints\";\nimport { Trans, useTranslation } from \"react-i18next\";\n\nconst Wrapper = styled.div`\n display: flex;\n justify-content: center;\n padding: 16px;\n color: ${props => props.theme.colors.white};\n background-color: ${props => props.theme.colors.black};\n \n @media ${breakpoints.sm} {\n padding: 32px;\n }\n`;\n\nconst Paragraph = styled.p`\n font-size: 10px;\n margin: 0;\n padding: 8px;\n`;\n\nconst Disclaimer = () => {\n const { t } = useTranslation();\n const disclaimerParagraphs = t('disclaimerParagraph', { returnObjects: true }).map(({text}, i) =>\n , p: }}>{text}\n );\n\n return (\n \n \n {disclaimerParagraphs}\n
\n \n );\n};\n\nexport default Disclaimer;\n","import React from \"react\";\nimport styled from 'styled-components';\nimport { breakpoints } from \"../../commons/breakpoints\";\nimport { useTranslation } from \"react-i18next\";\nimport Benefits from './Benefits';\nimport MainBox from './MainBox';\nimport Disclaimer from './Disclaimer';\nimport Footer from '../_shared/Footer';\nimport Header from '../_shared/Header';\n\nconst PageWrapper = styled.div`\n display: flex;\n flex-direction: column;\n flex: 1 1 0%;\n \n @media ${breakpoints.lg} {\n min-height: calc(100vh - 168px);\n }\n`;\n\nconst Section = styled.section`\n display: flex;\n min-height: 520px;\n flex: 1 1 0%;\n`;\n\nconst Body = styled.div`\n position: relative;\n flex: 1 1 0%;\n`;\n\nconst Picture = styled.picture`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: ${props => props.theme.colors.black};\n overflow: hidden;\n`;\n\nconst Image = styled.img`\n width: auto;\n min-width: 100%;\n height: auto;\n min-height: 100%;\n opacity: .65;\n`;\n\nconst PageContent = styled.div`\n position: relative;\n max-width: ${props => props.theme.sizes.contentWidth};\n margin: 0 auto;\n padding: 16px;\n \n @media ${breakpoints.sm} {\n display: flex;\n flex-wrap: wrap;\n padding: 0;\n }\n`;\n\nconst Title = styled.p`\n margin: 0;\n color: ${props => props.theme.colors.darkWhite};\n font-size: 17px;\n font-family: 'NouvelRBold';\n line-height: 20px;\n text-align: center;\n text-transform: uppercase;\n \n @media ${breakpoints.sm} {\n flex-grow: 1;\n max-width: calc(60% - 32px);\n margin: 32px 16px;\n font-size: 22px;\n line-height: 25px;\n text-align: left;\n }\n`;\n\nconst InnerContent = styled.div`\n @media ${breakpoints.sm} {\n display: flex;\n justify-content: space-evenly;\n width: 100%;\n }\n`;\n\nconst LeftContent = styled.div`\n flex: 1;\n margin: 16px;\n`;\n\nconst RightContent = styled.div`\n margin: 16px;\n flex-basis: calc(40% - 32px);\n`;\n\nconst img375 = process.env.PUBLIC_URL + '/mainpage/main-page-bg-375.webp';\nconst img640 = process.env.PUBLIC_URL + '/mainpage/main-page-bg-640.webp';\nconst img750 = process.env.PUBLIC_URL + '/mainpage/main-page-bg-750.webp';\nconst img1024 = process.env.PUBLIC_URL + '/mainpage/main-page-bg-1024.webp';\nconst img1280 = process.env.PUBLIC_URL + '/mainpage/main-page-bg-1280.webp';\nconst img2048 = process.env.PUBLIC_URL + '/mainpage/main-page-bg-2049.webp';\nconst img2560 = process.env.PUBLIC_URL + '/mainpage/main-page-bg-2560.webp';\n\nconst MainPage = () => {\n const { t } = useTranslation();\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n {t('mainPageTitle')}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n >\n );\n};\n\nexport default MainPage;\n","import React from 'react';\nimport { BrowserRouter as Router, Switch, Route } from 'react-router-dom';\nimport Theme from './commons/theme';\nimport BenefitsPage from './components/page-benefits/BenefitsPage';\nimport FormPage from './components/page-form/Form';\nimport MainPage from './components/main-page/MainPage';\nimport './fonts/NouvelR-Regular.woff2';\n\nconst url = new URL(window.location.href);\nconst dealer = url.searchParams.get('dealer');\nconst campaign = url.searchParams.get('campaign');\nconst CAMPAIGN = url.searchParams.get('CAMPAIGN');\nconst origin = url.searchParams.get('origin');\nconst ORIGIN = url.searchParams.get('ORIGIN');\n\nif (dealer) {\n sessionStorage.setItem('tradeIn-dealerGroup', dealer);\n}\n\nif (campaign) {\n sessionStorage.setItem('tradeIn-campaign', campaign);\n}\n\nif (CAMPAIGN) {\n sessionStorage.setItem('tradeIn-campaign', CAMPAIGN);\n}\n\nif (origin) {\n sessionStorage.setItem('tradeIn-origin', origin);\n}\n\nif (ORIGIN) {\n sessionStorage.setItem('tradeIn-origin', ORIGIN);\n}\n\nfunction App() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n );\n}\n\nexport default App;\n","export default __webpack_public_path__ + \"static/media/NouvelR-Regular.f31cb6c5.woff2\";","export const HTML_BASE_NAME = `${process.env.PUBLIC_URL.replace(/\\/$/, '')}` || '';\nexport const LOCALES = {\n 'pl-PL': {id: 'pl-PL', lang: 'pl', label: 'Polish', fetchDateFnsLocale: () => import('date-fns/locale/pl')}\n};\n\n// WARNING: changing this will reset everybody's default language settings\nexport const I18N_LS_KEY = 'i18nextLng';\n\n","// export default (path, withOrigin = false) =>\n// `${withOrigin ? window.location.origin : ''}${process.env.PUBLIC_URL}${path}`;\n\nconst path = (path, withOrigin = false) => `${withOrigin ? window.location.origin : ''}${process.env.PUBLIC_URL}${path}`;\nexport default path;\n","import i18n from 'i18next';\nimport Backend from 'i18next-xhr-backend';\nimport _ from 'lodash';\nimport {initReactI18next} from 'react-i18next';\nimport LanguageDetector from 'i18next-browser-languagedetector';\n\nimport {LOCALES, I18N_LS_KEY} from './commons/constants';\nimport path from './commons/path';\n\nif (!localStorage[I18N_LS_KEY]) { // Entry point of default language.\n localStorage[I18N_LS_KEY] = LOCALES['pl-PL'].lang;\n}\n\nconst detectionOptions = {\n order: ['path', 'cookie', 'navigator', 'localStorage', 'subdomain', 'queryString', 'htmlTag'],\n lookupFromPathIndex: 1\n};\n\ni18n\n // load translation using xhr -> see /public/locales\n // learn more: https://github.com/i18next/i18next-xhr-backend\n .use(Backend)\n // detect user language\n // learn more: https://github.com/i18next/i18next-browser-languageDetector\n // .use(LanguageDetector)\n // pass the i18n instance to react-i18next.\n .use(LanguageDetector)\n .use(initReactI18next)\n // init i18next\n // for all options read: https://www.i18next.com/overview/configuration-options\n .init({\n fallbackLng: LOCALES['pl-PL'].lang,\n // debug: process.env.NODE_ENV !== 'master',\n debug: false,\n detection: detectionOptions,\n whitelist: _.map(LOCALES, locale => locale.lang),\n transSupportBasicHtmlNodes: true,\n interpolation: {\n escapeValue: false\n },\n backend: {\n loadPath: path('/locales/{{lng}}/{{ns}}.json')\n }\n });\n\nexport default i18n;\n","import React, {Suspense} from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport i18n from './i18n';\n\ni18n.init().then(\n () => ReactDOM.render(\n }>\n \n ,\n document.getElementById('root'))\n);\n"],"sourceRoot":""}