{"version":3,"file":"dist/build-client/static/js/Pages-ProductPage-ProductPage.c8d47de1.chunk.js","mappings":"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","sources":["Pages/ProductPage/ProductDescription.tsx","Atoms/Chips/StyledChips.ts","Atoms/Chips/Chips.tsx","Pages/ProductPage/Modal/TradeInModal.tsx","Pages/ProductPage/ProductUSP.tsx","Pages/ProductPage/ProductCTA.tsx","Atoms/Chips/VariantChips.tsx","Pages/ProductPage/ProductVariationPicker.tsx","Pages/ProductPage/ProductPricing.tsx","Pages/ProductPage/ProductTechnical.tsx","Pages/ProductPage/ProductDocument.tsx","Pages/ProductPage/ProductTitle.tsx","Pages/ProductPage/FavoritesSection.tsx","Pages/ProductPage/ProductFitmentBikes.tsx","Pages/ProductPage/AttributeArea.tsx","Pages/ProductPage/ProductImage.tsx","Pages/ProductPage/ProductPage.tsx","Shared/Constants/brand.ts","../node_modules/form-data/lib/browser.js"],"sourcesContent":["import CollapsableSection from 'Molecules/CollapsableSection/CollapsableSection';\r\nimport { styled } from 'stitches.config';\r\nimport XHtmlArea from 'Molecules/XHtmlArea/XHtmlArea';\r\n\r\ntype ProductDescriptionType = {\r\n extendedDescription?: string;\r\n descriptionTitle: string;\r\n};\r\n\r\nfunction ProductDescription({\r\n extendedDescription,\r\n descriptionTitle,\r\n}: ProductDescriptionType) {\r\n if (!extendedDescription) {\r\n return <>;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default styled(ProductDescription);\r\n","import { timings, animation } from '../../Theme/Settings/animation';\r\n\r\nexport const StyledChips = {\r\n display: 'inline-flex',\r\n justifyContent: 'center',\r\n border: '1px solid',\r\n borderColor: 'transparent',\r\n minWidth: 56,\r\n lineHeight: '$lh133',\r\n ls: '$ls1',\r\n fs: 6,\r\n backgroundColor: '$primary2',\r\n width: 'fit-content',\r\n color: '$filterChipsColor',\r\n py: 3,\r\n px: 4,\r\n '&:hover': {\r\n backgroundColor: '$primary1',\r\n },\r\n cursor: 'pointer',\r\n transition: `all ${timings.oneFifth} ${animation.timingFn}`,\r\n variants: {\r\n disabled: {\r\n true: {\r\n backgroundColor: '$primary4',\r\n color: '$primaryLight3',\r\n pointerEvents: 'none',\r\n },\r\n },\r\n isChecked: {\r\n true: {\r\n borderColor: '$JE68GreenPrimary',\r\n },\r\n },\r\n },\r\n};\r\n","import { styled } from 'stitches.config';\r\nimport { StyledChips } from './StyledChips';\r\n\r\ntype PropType = {\r\n isChecked: boolean;\r\n onCheck: React.MouseEventHandler;\r\n text: string;\r\n disabled?: boolean;\r\n};\r\n\r\nfunction Chips({ isChecked, onCheck, text, disabled }: PropType) {\r\n return (\r\n \r\n {text}\r\n \r\n );\r\n}\r\n\r\nconst ChipsWrapper = styled('button', StyledChips);\r\n\r\nexport default Chips;\r\n","import { styled } from 'stitches.config';\r\nimport { H2 } from 'Atoms/Typography/Headings/Heading';\r\nimport Paragraph from 'Atoms/Typography/Paragraph/Paragraph';\r\nimport Modal from 'Organisms/Modal/Modal';\r\nimport { useTranslationData } from 'Shared/Providers/TranslationProvider';\r\nimport { ChangeEvent, useEffect, useRef } from 'react';\r\nimport Input from 'Atoms/Input/Input';\r\nimport { InputValidation } from 'Atoms/Input/InputValidation';\r\nimport { useState } from 'react';\r\nimport { accountFormValidation } from 'Shared/Common/AccountFormValidation';\r\nimport Chips from 'Atoms/Chips/Chips';\r\nimport Button from 'Atoms/Buttons/Button';\r\nimport { useAppSettingsData } from 'Shared/Providers/AppSettingsProvider';\r\nimport KexIconLoader from 'Kex/KexIconLoader';\r\nimport CloseButton from 'Atoms/Buttons/CloseButton';\r\nimport BulletPoint from 'Atoms/BulletPoint/BulletPoint';\r\nimport CircleBackground from 'Atoms/Icons/CircleBackground';\r\nimport FormData from 'form-data';\r\nimport { useUserStateData } from 'Shared/Providers/UserContextProvider';\r\n\r\nconst CheckIcon = KexIconLoader('Checkmark');\r\n\r\ntype PropTypes = {\r\n showModal: boolean;\r\n setShowModal: (arg: boolean) => void;\r\n};\r\n\r\nconst API_URL = '/Email/TradeIn';\r\nconst ACCEPTED_FILE_TYPES = '.png, .jpeg, .jpg';\r\n\r\nconst TradeInModal = ({ showModal, setShowModal }: PropTypes) => {\r\n const [formCondition, setCondition] = useState('');\r\n const [formImages, setImages] = useState([]);\r\n const [inputsValid, setInputsValid] = useState(false);\r\n\r\n const inputRef = useRef(null);\r\n\r\n const {\r\n productLabels: {\r\n tradeInYourMotorcycle,\r\n howToTradeInYourMotorcycle,\r\n yourDetailsMotorcycle,\r\n registrationNumber,\r\n mileage,\r\n conditionMotorcycle,\r\n ok,\r\n good,\r\n veryGood,\r\n uploadYourImages,\r\n upload,\r\n doneUploading,\r\n sendTradeInRequest,\r\n },\r\n commonLabels: {\r\n contactDetails,\r\n fullName,\r\n somethingWentWrong,\r\n messageSent,\r\n thanksForYourMessage,\r\n },\r\n validationLabels: { invalidEmail, isRequired },\r\n accountLabels: { email, phoneNumber },\r\n } = useTranslationData();\r\n\r\n const { languageRoute } = useAppSettingsData();\r\n const { user } = useUserStateData();\r\n\r\n const timerRef = useRef();\r\n\r\n const [status, setStatus] = useState<\r\n 'init' | 'loading' | 'error' | 'success'\r\n >('init');\r\n\r\n useEffect(() => {\r\n if (showModal) setStatus((s) => (s === 'success' ? 'init' : s));\r\n }, [showModal]);\r\n\r\n useEffect(() => {\r\n if (status !== 'success') return;\r\n\r\n timerRef.current = setTimeout(() => {\r\n setCondition('');\r\n setInputsValid(false);\r\n setImages([]);\r\n setShowModal(false);\r\n }, 3000);\r\n\r\n return () => {\r\n if (timerRef.current) clearTimeout(timerRef.current);\r\n };\r\n }, [status, timerRef, setCondition, setInputsValid, setImages, setShowModal]);\r\n\r\n const handleFileChange = (event: ChangeEvent) => {\r\n const input = event.target as HTMLInputElement;\r\n\r\n if (!input.files) return;\r\n\r\n setImages([...formImages, ...Array.from(input.files)]);\r\n };\r\n\r\n const onInputsValid = () => {\r\n setInputsValid(true);\r\n };\r\n\r\n const onInputsInvalid = () => {\r\n setInputsValid(false);\r\n };\r\n\r\n const isFormValid =\r\n inputsValid && formImages.length > 0 && formCondition !== '';\r\n\r\n async function submitForm(): Promise {\r\n try {\r\n setStatus('loading');\r\n const form = new FormData();\r\n\r\n const formContainer = document.querySelector(\r\n '#trade-in-form'\r\n ) as HTMLFormElement;\r\n const formData = new FormData(formContainer) as any;\r\n\r\n for (const value of formData.entries()) {\r\n form.append(value[0], value[1]);\r\n }\r\n\r\n form.append('ratedCondition', formCondition);\r\n form.append('language', languageRoute);\r\n\r\n const obj = await fetch(API_URL, {\r\n method: 'POST',\r\n body: form as any,\r\n }).then((res) => res.json());\r\n\r\n setStatus(obj?.success ? 'success' : 'error');\r\n } catch (error) {\r\n console.error(error);\r\n setStatus('error');\r\n }\r\n }\r\n\r\n if (status === 'success') {\r\n return (\r\n setShowModal(false)}>\r\n

{messageSent}

\r\n \r\n
\r\n );\r\n }\r\n\r\n return (\r\n setShowModal(!showModal)}>\r\n

{tradeInYourMotorcycle}

\r\n {howToTradeInYourMotorcycle}\r\n\r\n e.preventDefault()} id=\"trade-in-form\">\r\n \r\n {yourDetailsMotorcycle}\r\n
\r\n \r\n \r\n
\r\n\r\n {conditionMotorcycle}\r\n \r\n setCondition(ok)}\r\n text={ok.toUpperCase()}\r\n isChecked={formCondition === ok}\r\n />\r\n setCondition(good)}\r\n text={good.toUpperCase()}\r\n isChecked={formCondition === good}\r\n />\r\n setCondition(veryGood)}\r\n text={veryGood.toUpperCase()}\r\n isChecked={formCondition === veryGood}\r\n />\r\n \r\n\r\n \r\n {contactDetails}\r\n \r\n \r\n \r\n \r\n\r\n {uploadYourImages}\r\n \r\n {\r\n inputRef.current?.click();\r\n }}\r\n >\r\n {upload}\r\n \r\n\r\n {formImages.length > 0 && (\r\n \r\n \r\n \r\n \r\n {formImages.length} {doneUploading}\r\n setImages([])}\r\n bgColor=\"primary\"\r\n size=\"s\"\r\n css={{ alignSelf: 'center' }}\r\n >\r\n \r\n )}\r\n\r\n \r\n \r\n\r\n {status === 'error' && {somethingWentWrong}}\r\n\r\n {isFormValid && (\r\n \r\n )}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nconst TradeInForm = styled('form', {});\r\n\r\nconst FormGroupTitle = styled('span', {\r\n fs: 9,\r\n fontFamily: '$fontSecondary400',\r\n lineHeight: '$lh155',\r\n mb: 2,\r\n display: 'block',\r\n});\r\n\r\nconst Details = styled('div', {\r\n mb: 7,\r\n});\r\n\r\nconst Condition = styled('div', {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n gap: 16,\r\n mb: 12,\r\n pt: 2,\r\n});\r\n\r\nconst Contact = styled('div', {\r\n mb: 7,\r\n});\r\n\r\nconst Images = styled('div', {\r\n mb: 7,\r\n pt: 2,\r\n});\r\n\r\nconst UploadedAmount = styled('div', {\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: 8,\r\n mt: 4,\r\n});\r\n\r\nconst Error = styled('div', {\r\n mb: 2,\r\n});\r\n\r\nconst HowToTradeIn = {\r\n mb: 6,\r\n};\r\n\r\nconst TradeInTitle = {\r\n mb: 6,\r\n width: 'auto',\r\n '@mediaMinLarge': {\r\n width: '80%',\r\n },\r\n};\r\nexport default TradeInModal;\r\n","import { styled } from 'stitches.config';\r\nimport BulletPoint from 'Atoms/BulletPoint/BulletPoint';\r\nimport { ReturnIcon, TruckIcon, WrenchIcon } from 'Atoms/Icons';\r\nimport { ProductType } from '../../Enums/ProductType.enum';\r\nimport ProductTranslations from '../../Models/Translations/ProductTranslations.interface';\r\nimport { useState } from 'react';\r\nimport TradeInModal from './Modal/TradeInModal';\r\n\r\ntype ProductUSPType = {\r\n usp: string[];\r\n productType: string;\r\n};\r\n\r\ntype ProductUSPSecondaryType = {\r\n productLabels: ProductTranslations;\r\n productType: string;\r\n isUsed: boolean;\r\n};\r\n\r\nexport function ProductUSP({ usp, productType }: ProductUSPType) {\r\n const isClothing = productType === ProductType.CLOTHING;\r\n\r\n if (!usp || usp.length === 0 || isClothing) {\r\n return <>;\r\n }\r\n\r\n return (\r\n \r\n {usp.slice(0, 3).map((text, index) => (\r\n \r\n ))}\r\n \r\n );\r\n}\r\n\r\nexport function ProductUSPSecondary({\r\n productLabels,\r\n productType,\r\n isUsed,\r\n}: ProductUSPSecondaryType) {\r\n const [showTradeInModal, setShowTradeInModal] = useState(false);\r\n\r\n const {\r\n customizeYourMotorcycleInConfigurator,\r\n doYouWantTradeInYourMotorcycle,\r\n canBeDeliveredWithin,\r\n } = productLabels;\r\n\r\n if (productType !== ProductType.MOTORCYCLES) {\r\n return <>;\r\n }\r\n\r\n return (\r\n <>\r\n \r\n {!isUsed && (\r\n \r\n \r\n {customizeYourMotorcycleInConfigurator}\r\n \r\n )}\r\n \r\n \r\n {canBeDeliveredWithin}\r\n \r\n \r\n \r\n setShowTradeInModal(true)}\r\n >\r\n {doYouWantTradeInYourMotorcycle}\r\n \r\n \r\n \r\n\r\n \r\n \r\n );\r\n}\r\n\r\nconst USPWrapper = styled('div', {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n color: '$textPrimary',\r\n fs: 8,\r\n lineHeight: '$lh125',\r\n gap: 16,\r\n mb: 8,\r\n});\r\n\r\nconst USPSecondaryWrapper = styled('div', {\r\n mb: 12,\r\n variants: {\r\n isUsed: {\r\n true: {\r\n mt: 12,\r\n },\r\n },\r\n },\r\n});\r\n\r\nconst TradeInMotorcycle = styled('button', {\r\n textAlign: 'left',\r\n fs: 7,\r\n fontFamily: '$fontPrimary400',\r\n wordSpacing: '$wordSpacings$fontPrimary',\r\n ls: '$lsn1',\r\n lineHeight: '$lh171',\r\n textUnderlineOffset: '4px',\r\n '@mediaMinMedium': {\r\n fs: 9,\r\n lineHeight: '$lh133',\r\n },\r\n});\r\n\r\nconst USPItem = styled('div', {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n color: '$textPrimary',\r\n fs: 7,\r\n lineHeight: '$lh171',\r\n gap: 16,\r\n mb: 6,\r\n fontFamily: '$fontPrimary400',\r\n ls: '$lsn1',\r\n wordSpacing: '$wordSpacings$fontPrimary',\r\n '&:last-child': {\r\n mb: 0,\r\n },\r\n width: '100%',\r\n '@mediaMinMedium': {\r\n fs: 9,\r\n lineHeight: '$lh133',\r\n },\r\n});\r\n\r\nconst CSSBulletPoint = {\r\n fs: 8,\r\n};\r\n","import { useState, useEffect, useRef, useMemo } from 'react';\r\nimport Button from 'Atoms/Buttons/Button';\r\nimport { styled } from 'stitches.config';\r\nimport { ProductType } from '../../Enums/ProductType.enum';\r\nimport { Variant } from '../../Enums/Variant.enum';\r\nimport VariationModel from 'Models/KexVariation/VariationModel.interface';\r\nimport { useVariantData } from 'Shared/Providers/VariantProvider';\r\nimport QuantitySelector from '../../Atoms/Quantity/QuantitySelector';\r\nimport { GetCart, SetQuantity } from 'Shared/Cart/Cart';\r\nimport { useAppSettingsData } from 'Shared/Providers/AppSettingsProvider';\r\nimport useMedia from 'Shared/Hooks/useMedia';\r\nimport { mediaQueryTypes } from 'Theme/Settings/mediaQueries';\r\nimport { useKexNavigate } from 'Kex/KexRouter/KexRouter';\r\nimport TestDriveModal from 'Organisms/TestDriveModal/TestDriveModal';\r\nimport SubmitInterestModal from 'Organisms/SubmitInterestModal/SubmitInterestModal';\r\nimport ContactModal from 'Organisms/ContactModal/ContactModal';\r\nimport Error from 'Atoms/Error/Error';\r\nimport ProductTranslations from '../../Models/Translations/ProductTranslations.interface';\r\nimport useOutsideClick from 'Shared/Hooks/useOutsideClick';\r\nimport { useUserStateData } from '../../Shared/Providers/UserContextProvider';\r\nimport {\r\n getBikeForLoggedOutUser,\r\n getSelectedModel,\r\n} from '../../Shared/Common/Helpers';\r\n\r\ntype ProductCTAType = {\r\n variationCollection: VariationModel[];\r\n productLabels: ProductTranslations;\r\n isUsed: boolean;\r\n productType: string;\r\n productCode: string;\r\n};\r\n\r\nfunction ProductCTA({\r\n variationCollection,\r\n productLabels,\r\n isUsed,\r\n productType,\r\n productCode,\r\n}: ProductCTAType) {\r\n const [quantity, setQuantity] = useState(1);\r\n const [isShowQuantity, setIsShowQuantity] = useState(false);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [isBuyDisabled, setIsBuyDisabled] = useState(false);\r\n const [showContactModal, setShowContactModal] = useState(false);\r\n const [showTestDriveModal, setShowTestDriveModal] = useState(false);\r\n const [showSubmitInterestModal, setShowSubmitInterestModal] =\r\n useState(false);\r\n const [isAddToCartError, setAddToCartError] = useState(false);\r\n\r\n const errorCartRef = useRef(null);\r\n useOutsideClick(errorCartRef, () => setAddToCartError(false));\r\n\r\n const selectedModel = getSelectedModel();\r\n\r\n const {\r\n user: { primaryBike },\r\n miniCartDispatch,\r\n miniCartIsOpen,\r\n } = useUserStateData();\r\n\r\n const bikeId = useMemo(() => {\r\n if (primaryBike) {\r\n if (primaryBike.modelId === selectedModel) return primaryBike.name;\r\n else return undefined;\r\n }\r\n\r\n const sessionBike = getBikeForLoggedOutUser();\r\n\r\n if (sessionBike && sessionBike.model === selectedModel) {\r\n return `${sessionBike.brand} ${sessionBike.modelName} ${sessionBike.year}`;\r\n }\r\n\r\n return undefined;\r\n }, [primaryBike, selectedModel]);\r\n\r\n const {\r\n testDrive,\r\n contactUs,\r\n configureAndOrder,\r\n order,\r\n errorSelectSize,\r\n submitOfInterest,\r\n } = productLabels;\r\n\r\n const {\r\n languageRoute,\r\n staticPages: { motorcycleConfiguratorPage },\r\n } = useAppSettingsData();\r\n\r\n const { hasMotorCycle } = GetCart(languageRoute);\r\n const { state, variantDispatch } = useVariantData();\r\n const isDesktop = useMedia(mediaQueryTypes.mediaMinLarge);\r\n\r\n const kexNavigate = useKexNavigate();\r\n\r\n useEffect(() => {\r\n const hasBuyables = variationCollection\r\n .filter(\r\n (variant) => variant.color?.key === state.selectedVariant?.color?.key\r\n )\r\n .some((variant) => variant.isBuyable);\r\n\r\n setIsBuyDisabled(!hasBuyables);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [state.selectedVariant]);\r\n\r\n useEffect(() => {\r\n setQuantity(1);\r\n }, [state.selectedVariant]);\r\n\r\n function handleAddToCart(\r\n code: string,\r\n quantity: number,\r\n productType: string\r\n ) {\r\n // user must select size before proceeding to add cart\r\n if (state.hasSizes && !state.hasSelectedSize) {\r\n variantDispatch({\r\n type: Variant.SET_ADD_CART_ERROR,\r\n errorSize: true,\r\n });\r\n return;\r\n }\r\n miniCartDispatch(miniCartIsOpen ? 'closeMiniCart' : 'mountAndOpen');\r\n // allow max 1 motorcycle in cart\r\n if (productType === ProductType.MOTORCYCLES) {\r\n if (hasMotorCycle) {\r\n setAddToCartError(true);\r\n return;\r\n }\r\n }\r\n\r\n setIsLoading(true);\r\n\r\n SetQuantity(code, quantity, languageRoute, bikeId)\r\n .then(() => setIsLoading(false))\r\n .catch(() => setIsLoading(false));\r\n\r\n variantDispatch({\r\n type: Variant.SET_ADD_CART_ERROR,\r\n errorSize: false,\r\n });\r\n }\r\n\r\n const handleConfigurationClick = (variantCode: string) => {\r\n //Redirect user to motorcycle configurator page\r\n kexNavigate(\r\n `${motorcycleConfiguratorPage}?productcode=${productCode}&variantcode=${variantCode}`\r\n );\r\n };\r\n\r\n const isSoonInStock = state.selectedVariant?.stock?.salesStartFormatted;\r\n\r\n const variant = state.selectedVariant;\r\n\r\n const RenderMotorcycleCTA = () => {\r\n return (\r\n <>\r\n \r\n {!isSoonInStock && (\r\n <>\r\n {isUsed ? (\r\n \r\n variant &&\r\n handleAddToCart(variant.code, quantity, variant.productType)\r\n }\r\n isLoading={isLoading}\r\n disabled={isBuyDisabled}\r\n >\r\n {order}\r\n \r\n ) : (\r\n \r\n variant && handleConfigurationClick(variant.code)\r\n }\r\n disabled={isBuyDisabled}\r\n >\r\n {configureAndOrder}\r\n \r\n )}\r\n \r\n )}\r\n \r\n \r\n setShowContactModal(true)}\r\n >\r\n {contactUs}\r\n \r\n \r\n \r\n {isSoonInStock ? (\r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n setShowTestDriveModal(true)}\r\n >\r\n {testDrive}\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n };\r\n\r\n const RenderOtherCTA = () => {\r\n return (\r\n \r\n \r\n {(isShowQuantity || isDesktop) && variant ? (\r\n setQuantity(quantity + 1)}\r\n handleDecrement={() => setQuantity(quantity - 1)}\r\n size=\"l\"\r\n disabled={isBuyDisabled}\r\n />\r\n ) : (\r\n setIsShowQuantity(true)}>\r\n {quantity}\r\n \r\n )}\r\n\r\n \r\n variant &&\r\n handleAddToCart(variant.code, quantity, variant.productType)\r\n }\r\n isLoading={isLoading}\r\n disabled={isBuyDisabled}\r\n >\r\n {order}\r\n \r\n \r\n \r\n );\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n {productType === ProductType.MOTORCYCLES\r\n ? RenderMotorcycleCTA()\r\n : RenderOtherCTA()}\r\n \r\n \r\n\r\n {state.errorSize && }\r\n\r\n {isAddToCartError && (\r\n \r\n )}\r\n \r\n );\r\n}\r\n\r\nconst ProductCTAContainer = styled('div', {\r\n display: 'flex',\r\n width: '100%',\r\n});\r\n\r\nconst ProductCTAWrapper = styled('div', {\r\n display: 'grid',\r\n gridTemplateColumns: 'repeat(12, minmax(0, 1fr))',\r\n width: '100%',\r\n gap: 16,\r\n mb: 4,\r\n});\r\n\r\nconst ProductCTAItem = styled('div', {\r\n gridColumnEnd: 'span 6',\r\n gridColumnStart: 'auto',\r\n});\r\n\r\nconst ProductCTAItemMain = styled('div', {\r\n gridColumnEnd: 'span 12',\r\n gridColumnStart: 'auto',\r\n});\r\n\r\nconst ProductClothing = styled('div', {\r\n display: 'flex',\r\n g: 1,\r\n});\r\n\r\nconst CurrentQuantityWrapper = styled('button', {\r\n backgroundColor: '$quantityBackground',\r\n p: 2,\r\n color: '$secondary2',\r\n lineHeight: '$lh125',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n cursor: 'default',\r\n w: 12,\r\n});\r\n\r\nexport default ProductCTA;\r\n","import ColorOption from 'Atoms/ColorOption/ColorOption';\r\nimport { styled } from 'stitches.config';\r\nimport { StyledChips } from './StyledChips';\r\n\r\ntype PropType = {\r\n isChecked: boolean;\r\n onCheck: React.MouseEventHandler;\r\n text: string;\r\n color?: string;\r\n size?: string;\r\n disabled?: boolean;\r\n};\r\n\r\nfunction VariantChips({\r\n isChecked,\r\n onCheck,\r\n text,\r\n color,\r\n size,\r\n disabled,\r\n}: PropType) {\r\n return (\r\n \r\n {color && (\r\n <>\r\n \r\n {text}\r\n \r\n )}\r\n {size && <>{text}}\r\n \r\n );\r\n}\r\n\r\nconst VariantChipsWrapper = styled('button', StyledChips);\r\n\r\nexport default VariantChips;\r\n","import { styled } from 'stitches.config';\r\nimport { useVariantData } from 'Shared/Providers/VariantProvider';\r\nimport VariantChips from 'Atoms/Chips/VariantChips';\r\nimport VariationModel from 'Models/KexVariation/VariationModel.interface';\r\nimport { Variant } from '../../Enums/Variant.enum';\r\nimport { useCallback, useEffect, useMemo } from 'react';\r\nimport SmallLabel from 'Atoms/Typography/SmallLabel/SmallLabel';\r\n\r\ntype ProductVariationPickerType = {\r\n variationCollection: VariationModel[];\r\n colorLabel: string;\r\n sizeLabel: string;\r\n productType: string;\r\n isUsed: boolean;\r\n};\r\n\r\nfunction ProductVariationPicker({\r\n variationCollection,\r\n colorLabel,\r\n sizeLabel,\r\n isUsed,\r\n}: ProductVariationPickerType) {\r\n const { state, variantDispatch } = useVariantData();\r\n\r\n const uniqueColors = useMemo(() => {\r\n return variationCollection?.filter((variation, index) => {\r\n return (\r\n variationCollection\r\n ?.map((item) => item?.color?.key)\r\n ?.indexOf(variation?.color?.key) === index\r\n );\r\n });\r\n }, [variationCollection]);\r\n\r\n const uniqueSizes = useMemo(() => {\r\n return Array.from(\r\n new Set(variationCollection.map((variation) => variation.size.key))\r\n );\r\n }, [variationCollection]);\r\n\r\n const findVariationBySize = useCallback(\r\n (size: string) => {\r\n const sizes = variationCollection.filter((variation) => {\r\n return variation.size.key === size;\r\n });\r\n\r\n const matchingWithColor = sizes.find(\r\n (variation) => variation.color.key === state.selectedVariant?.color?.key\r\n );\r\n\r\n return matchingWithColor || sizes[0];\r\n },\r\n [state.selectedVariant?.color?.key, variationCollection]\r\n );\r\n\r\n const findSelectedByCode = useCallback(\r\n (variantCode: string) => {\r\n return variationCollection.find(\r\n (variation) => variation.code === variantCode\r\n );\r\n },\r\n [variationCollection]\r\n );\r\n\r\n const handleColorChange = (variantCode: string) => {\r\n const foundSelected = findSelectedByCode(variantCode);\r\n if (!foundSelected) return;\r\n\r\n const hasNotClickedSameColor =\r\n foundSelected.color.key !== state.selectedVariant?.color?.key;\r\n\r\n if (hasNotClickedSameColor) {\r\n variantDispatch({\r\n type: Variant.SET_VARIANT,\r\n selectedVariant: foundSelected,\r\n hasSelectedSize: false,\r\n });\r\n }\r\n };\r\n\r\n const handleSizeChange = useCallback(\r\n (variantCode: string) => {\r\n const foundSelected = findSelectedByCode(variantCode);\r\n if (!foundSelected) return;\r\n\r\n variantDispatch({\r\n type: Variant.SET_VARIANT,\r\n selectedVariant: foundSelected,\r\n hasSelectedSize: true,\r\n });\r\n },\r\n [findSelectedByCode, variantDispatch]\r\n );\r\n\r\n //if only one size select the first as default\r\n useEffect(() => {\r\n if (uniqueSizes.length === 1)\r\n handleSizeChange(findVariationBySize(uniqueSizes[0]).code);\r\n }, [findVariationBySize, handleSizeChange, uniqueColors, uniqueSizes]);\r\n\r\n return (\r\n <>\r\n {state.hasColors && !isUsed && (\r\n <>\r\n {colorLabel}\r\n \r\n {uniqueColors?.map((variation, index) => (\r\n handleColorChange(variation?.code)}\r\n />\r\n ))}\r\n \r\n \r\n )}\r\n\r\n {state.hasSizes && (\r\n <>\r\n {sizeLabel}\r\n \r\n {state.selectedVariant?.size &&\r\n uniqueSizes.map((size, index) => {\r\n const variation = findVariationBySize(size);\r\n\r\n const notMatchingSizeForCurrentColor =\r\n state.selectedVariant?.color?.key !== variation.color.key;\r\n\r\n return (\r\n handleSizeChange(variation?.code)}\r\n disabled={\r\n notMatchingSizeForCurrentColor ||\r\n (!variation.isBuyable &&\r\n variation.stock.salesStartFormatted === '')\r\n }\r\n />\r\n );\r\n })}\r\n \r\n \r\n )}\r\n \r\n );\r\n}\r\n\r\nconst VariationsWrapper = {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n gap: 16,\r\n};\r\n\r\nconst ColorVariationsWrapper = styled('div', {\r\n ...VariationsWrapper,\r\n mb: 8,\r\n});\r\n\r\nconst SizesVariationsWrapper = styled('div', {\r\n ...VariationsWrapper,\r\n mb: 16,\r\n});\r\n\r\nexport default ProductVariationPicker;\r\n","import { styled } from 'stitches.config';\r\nimport { useVariantData } from 'Shared/Providers/VariantProvider';\r\nimport { ProductType } from 'Enums/ProductType.enum';\r\nimport Price from 'Atoms/Price/Price';\r\n\r\nimport PricePerMonth from 'Atoms/Price/PricePerMonth';\r\n\r\ntype ProductDocumentType = {\r\n paymentInfoBody: string;\r\n productType: string;\r\n};\r\n\r\nfunction ProductPricing({ paymentInfoBody, productType }: ProductDocumentType) {\r\n const { state } = useVariantData();\r\n\r\n const variant = state.selectedVariant;\r\n if (!variant) return <>;\r\n\r\n const isMotorcycle = productType === ProductType.MOTORCYCLES;\r\n\r\n return (\r\n \r\n {variant && variant.nowPrice.price !== 0 && (\r\n <>\r\n \r\n {isMotorcycle &&\r\n state.selectedVariant &&\r\n state?.selectedVariant?.paymentMonthlyCost?.price > 0 && (\r\n \r\n \r\n\r\n {/* */}\r\n {paymentInfoBody}\r\n \r\n )}\r\n \r\n )}\r\n \r\n );\r\n}\r\n\r\nconst MonthlyPrice = styled('div', {\r\n mt: 2,\r\n fs: 6,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n position: 'relative',\r\n lineHeight: '$lh133',\r\n fontFamily: '$fontSecondary400',\r\n color: '$primaryLight3 !important',\r\n maxWidth: 450,\r\n});\r\n\r\nconst PriceContainer = styled('div', { mb: 8 });\r\n\r\nexport default ProductPricing;\r\n","import ProductTechnicalDetailsModel from 'Models/Pages/ProductPage/ProductTechnicalDetailsModel.interface';\r\nimport CollapsableSection from 'Molecules/CollapsableSection/CollapsableSection';\r\nimport { isEmpty } from 'Shared/Common/Helpers';\r\nimport { styled } from 'stitches.config';\r\nimport { ProductType } from '../../Enums/ProductType.enum';\r\nimport ProductTranslations from '../../Models/Translations/ProductTranslations.interface';\r\n\r\ntype ProductTechnicalType = {\r\n technicalData: ProductTechnicalDetailsModel;\r\n productLabels: ProductTranslations;\r\n productType: string;\r\n odometer: string;\r\n odometerUnit: string;\r\n isUsed: boolean;\r\n};\r\n\r\nfunction ProductTechnical({\r\n technicalData,\r\n productLabels,\r\n productType,\r\n odometer,\r\n odometerUnit,\r\n isUsed,\r\n}: ProductTechnicalType) {\r\n const hasNoTechnicalDetails =\r\n isEmpty(technicalData) ||\r\n (isEmpty(technicalData.chassiDetails) &&\r\n isEmpty(technicalData.engineDetails));\r\n\r\n if (hasNoTechnicalDetails) return <>;\r\n\r\n const { chassiDetails, engineDetails } = technicalData;\r\n\r\n const isProductMotorcycle = productType === ProductType.MOTORCYCLES;\r\n\r\n if (!isProductMotorcycle) return <>;\r\n\r\n return (\r\n \r\n \r\n {engineDetails.length > 0 && (\r\n <>\r\n {productLabels.engine}\r\n {isUsed && (\r\n \r\n {productLabels.odometer}: \r\n \r\n {odometer} {odometerUnit}\r\n \r\n \r\n )}\r\n {engineDetails.map((item, index) => (\r\n \r\n \r\n {\r\n productLabels[\r\n item.translationKey as keyof ProductTranslations\r\n ]\r\n }\r\n :\r\n \r\n {item.value}\r\n \r\n ))}\r\n \r\n )}\r\n {chassiDetails.length > 0 && (\r\n <>\r\n \r\n {productLabels.chassi}\r\n \r\n {chassiDetails.map((item, index) => (\r\n \r\n \r\n {\r\n productLabels[\r\n item.translationKey as keyof ProductTranslations\r\n ]\r\n }\r\n :\r\n \r\n {item.value}\r\n \r\n ))}\r\n \r\n )}\r\n \r\n \r\n );\r\n}\r\n\r\nconst TechnicalWrapper = styled('div', {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n width: '100%',\r\n});\r\n\r\nconst TechnicalSubtitle = styled('h5', {\r\n fs: 8,\r\n wordSpacing: '$wordSpacings$fontPrimary',\r\n ls: '$ls1',\r\n fontFamily: '$fontPrimary400',\r\n mb: 4,\r\n textTransform: 'uppercase',\r\n});\r\n\r\nconst TechnicalItem = styled('div', {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n flexWrap: 'nowrap',\r\n fs: 8,\r\n lineHeight: '$lh125',\r\n mb: 4,\r\n '&:last-child': {\r\n mb: 0,\r\n },\r\n});\r\n\r\nconst TechnicalItemValue = styled('span', {\r\n textAlign: 'right',\r\n pl: 4,\r\n});\r\n\r\nexport default ProductTechnical;\r\n","import CollapsableSection from 'Molecules/CollapsableSection/CollapsableSection';\r\nimport { styled } from 'stitches.config';\r\nimport { DocumentIcon } from 'Atoms/Icons';\r\nimport KexLink from 'Kex/KexLink';\r\nimport DocumentModel from 'Models/Assets/DocumentModel.interface';\r\nimport { isEmpty } from 'Shared/Common/Helpers';\r\nimport ProductTranslations from '../../Models/Translations/ProductTranslations.interface';\r\n\r\ntype ProductDocumentType = {\r\n documentCollection: DocumentModel[];\r\n productLabels: ProductTranslations;\r\n};\r\n\r\nfunction ProductDocument({\r\n documentCollection,\r\n productLabels,\r\n}: ProductDocumentType) {\r\n if (isEmpty(documentCollection)) return <>;\r\n\r\n const getLanguage = (language: string): string => {\r\n return `${isEmpty(language) ? '' : ` - ${language}`}`;\r\n };\r\n\r\n return (\r\n \r\n \r\n {documentCollection.map((document, index) => {\r\n const { documentType, url, language } = document;\r\n return (\r\n \r\n \r\n \r\n {documentType === 'usermanual' ? (\r\n

\r\n {productLabels.productUserManual}\r\n {getLanguage(language)}\r\n

\r\n ) : documentType === 'specificationsheet' ? (\r\n

\r\n {productLabels.productDataSheet}\r\n {getLanguage(language)}\r\n

\r\n ) : (\r\n

\r\n {productLabels.other}\r\n {getLanguage(language)}\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 ProductDocument;\r\n\r\nconst DocumentWrapper = styled('div', {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: '16px',\r\n width: '100%',\r\n});\r\n\r\nconst Document = styled('div', {\r\n fontFamily: '$fontSecondary500',\r\n fs: 7,\r\n lineHeight: '$lh125',\r\n display: 'flex',\r\n alignItems: 'center',\r\n});\r\n","import { styled } from 'stitches.config';\r\nimport { ProductType } from 'Enums/ProductType.enum';\r\nimport ProductPageModel from 'Models/Pages/ProductPage/ProductPageModel.interface';\r\nimport Attributes from 'Molecules/Attributes/Attributes';\r\n\r\ntype ProductTitleType = {\r\n productPage: ProductPageModel;\r\n used?: string;\r\n};\r\n\r\nfunction ProductTitle({ productPage, used }: ProductTitleType) {\r\n const {\r\n isUsed,\r\n brand,\r\n pageHeading,\r\n parentCategoryName,\r\n manufacturerYear,\r\n productType,\r\n } = productPage;\r\n\r\n const attributes = [\r\n {\r\n value: isUsed ? used : '',\r\n },\r\n {\r\n value:\r\n productType === ProductType.MOTORCYCLES &&\r\n manufacturerYear &&\r\n manufacturerYear,\r\n },\r\n {\r\n value: !isUsed && parentCategoryName && parentCategoryName,\r\n },\r\n {\r\n value: !isUsed && brand && brand,\r\n },\r\n ];\r\n\r\n return (\r\n <>\r\n \r\n {pageHeading}\r\n \r\n );\r\n}\r\n\r\nconst ProductDisplayName = styled('h1', {\r\n fs: 16,\r\n lineHeight: '$lh1125',\r\n fontFamily: '$fontSecondary600',\r\n mb: 1,\r\n mt: 0,\r\n textTransform: 'uppercase',\r\n color: '$textPrimary',\r\n});\r\n\r\nexport default ProductTitle;\r\n","import { styled } from 'stitches.config';\r\nimport { useVariantData } from 'Shared/Providers/VariantProvider';\r\nimport { useUserStateData } from 'Shared/Providers/UserContextProvider';\r\nimport {\r\n AddFavorite,\r\n GetFavorites,\r\n RemoveFavorite,\r\n} from 'Shared/Favorites/Favorites';\r\nimport FavoriteButton from 'Atoms/Buttons/FavoriteButton';\r\nimport { useAppSettingsData } from 'Shared/Providers/AppSettingsProvider';\r\n\r\nfunction FavoritesSection() {\r\n const { state } = useVariantData();\r\n const {\r\n user: { authenticated },\r\n accountDispatch,\r\n } = useUserStateData();\r\n\r\n const { languageRoute } = useAppSettingsData();\r\n const { favoriteList } = GetFavorites(languageRoute);\r\n const variant = state.selectedVariant;\r\n if (!variant) return <>;\r\n\r\n const isFavorited = (): boolean => {\r\n return favoriteList?.favoriteProducts?.some(\r\n (x) => x.code === variant?.code\r\n );\r\n };\r\n\r\n const onFavoriteClick = () => {\r\n if (authenticated) {\r\n isFavorited()\r\n ? RemoveFavorite(variant ? variant?.code : '', languageRoute)\r\n : AddFavorite(variant ? variant?.code : '', languageRoute);\r\n return;\r\n }\r\n accountDispatch({ type: 'toggle' });\r\n };\r\n return (\r\n \r\n \r\n {\r\n if (state.hasSizes && !state.hasSelectedSize) return;\r\n\r\n onFavoriteClick();\r\n }}\r\n disabled={state.hasSizes && !state.hasSelectedSize}\r\n />\r\n \r\n \r\n );\r\n}\r\n\r\nconst FavoriteContainer = styled('div', {});\r\n\r\nconst PriceContainer = styled('div', { mb: 8 });\r\n\r\nexport default FavoritesSection;\r\n","import ProductTranslations from 'Models/Translations/ProductTranslations.interface';\r\nimport CollapsableSection from 'Molecules/CollapsableSection/CollapsableSection';\r\nimport { isEmpty } from 'Shared/Common/Helpers';\r\nimport { styled } from 'stitches.config';\r\n\r\ntype PropTypes = {\r\n fitsToModel: string[];\r\n productLabels: ProductTranslations;\r\n};\r\n\r\nconst ProductFitmentBikes = ({ fitsToModel, productLabels }: PropTypes) => {\r\n if (isEmpty(fitsToModel)) return <>;\r\n\r\n return (\r\n <>\r\n \r\n
\r\n {fitsToModel.map((model, i) => (\r\n {model}\r\n ))}\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nconst FitmentModel = styled('div', {\r\n display: 'block',\r\n lineHeight: '$lh155',\r\n});\r\n\r\nexport default ProductFitmentBikes;\r\n","import StockViewer from '../../Atoms/StockViewer/StockViewer';\r\nimport ProductPageModel from 'Models/Pages/ProductPage/ProductPageModel.interface';\r\nimport { useTranslationData } from 'Shared/Providers/TranslationProvider';\r\nimport { styled } from 'stitches.config';\r\nimport ProductDescription from './ProductDescription';\r\nimport { ProductUSP, ProductUSPSecondary } from './ProductUSP';\r\nimport ProductCTA from './ProductCTA';\r\nimport ProductVariationPicker from './ProductVariationPicker';\r\nimport ProductPricing from './ProductPricing';\r\nimport ProductTechnical from './ProductTechnical';\r\nimport ProductDocument from './ProductDocument';\r\nimport ProductTitle from './ProductTitle';\r\nimport { isEmpty } from 'Shared/Common/Helpers';\r\nimport { useVariantData } from 'Shared/Providers/VariantProvider';\r\nimport Paragraph from 'Atoms/Typography/Paragraph/Paragraph';\r\nimport { Variant } from '../../Enums/Variant.enum';\r\nimport { useEffect } from 'react';\r\nimport VariationModel from 'Models/KexVariation/VariationModel.interface';\r\nimport ProductPackage from './ProductPackage';\r\nimport FavoritesSection from './FavoritesSection';\r\nimport ProductFitmentBikes from './ProductFitmentBikes';\r\nimport KexLink from 'Kex/KexLink';\r\nimport { useAppSettingsData } from 'Shared/Providers/AppSettingsProvider';\r\nimport { animation, timings } from 'Theme/Settings/animation';\r\nimport { ArrowIcon } from 'Atoms/Icons';\r\nimport { ENUM_KTM } from 'Shared/Constants/brand';\r\nimport { ProductType } from 'Enums/ProductType.enum';\r\n\r\ntype PropTypes = {\r\n productPage: ProductPageModel;\r\n};\r\n\r\nfunction AttributeArea({ productPage }: PropTypes) {\r\n const {\r\n productLabels: {\r\n color: colorLabel,\r\n size: sizeLabel,\r\n used,\r\n detailedDescription,\r\n packageIncludes,\r\n variationCode,\r\n },\r\n productLabels,\r\n explodedViews,\r\n } = useTranslationData();\r\n\r\n const { staticPages } = useAppSettingsData();\r\n\r\n const {\r\n extendedDescription,\r\n productTechnicalDetails,\r\n usp,\r\n isUsed,\r\n productType,\r\n paymentInfoBody,\r\n documentCollection,\r\n variationCollection,\r\n packageItems,\r\n isPackage,\r\n fitsToModel,\r\n odometer,\r\n odometerUnit,\r\n brand,\r\n } = productPage;\r\n\r\n const { variantDispatch, state } = useVariantData();\r\n\r\n useEffect(() => {\r\n if (isEmpty(variationCollection)) return;\r\n\r\n const fallbackVariant = variationCollection[0];\r\n // get variant that is buyable, and is not price 0 and is the lowest price\r\n\r\n const defaultVariant = variationCollection\r\n .filter((variant) => variant.nowPrice.price !== 0 && variant.isBuyable)\r\n .reduce((prev, curr) => {\r\n if (prev === null) return curr;\r\n\r\n return prev.nowPrice.price < curr.nowPrice.price ? prev : curr;\r\n }, null);\r\n\r\n const hasColors = variationCollection.some(\r\n (variation) => !isEmpty(variation?.color)\r\n );\r\n\r\n const hasSizes = variationCollection.some(\r\n (variation) => !isEmpty(variation?.size)\r\n );\r\n\r\n variantDispatch({\r\n type: Variant.SET_INITIAL,\r\n selectedVariant: defaultVariant ?? fallbackVariant,\r\n hasColors: hasColors,\r\n hasSizes: hasSizes,\r\n });\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [variationCollection]);\r\n\r\n const hasExplodedViewLink =\r\n brand === ENUM_KTM &&\r\n (productType === ProductType.SPAREPARTS ||\r\n productType === ProductType.ACCESSORIES);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {state.selectedVariant &&\r\n (state.hasSizes ? state.hasSelectedSize : true) &&\r\n !isEmpty(state.selectedVariant?.retailerArticleNumber) && (\r\n \r\n {`${variationCode}: ${state.selectedVariant?.retailerArticleNumber}`}\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 {hasExplodedViewLink && (\r\n \r\n {explodedViews.explodedViewsLink}\r\n \r\n \r\n )}\r\n \r\n );\r\n}\r\n\r\nconst AttributeContainer = styled('div', {});\r\n\r\nconst Container = styled('div', {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'space-between',\r\n});\r\n\r\nconst AttributeWrapper = styled('div', {\r\n w: '100%',\r\n px: 4,\r\n '@mediaMinLarge': {\r\n px: 0,\r\n },\r\n});\r\n\r\nconst ExplodedViewLink = styled(KexLink, {\r\n color: '$collapsableText',\r\n display: 'flex',\r\n p: 4,\r\n justifyContent: 'space-between',\r\n backgroundColor: '$collapsableHeaderBackground',\r\n alignItems: 'center',\r\n cursor: 'pointer',\r\n fs: 9,\r\n lh: '$lh133',\r\n transition: `all ${timings.threeTenths} ${animation.timingFn}`,\r\n textTransform: 'capitalize!important',\r\n '@mediaMinLarge': {\r\n '&:hover': {\r\n backgroundColor: '$collapsableHoverBackground',\r\n },\r\n },\r\n letterSpacing: '$lsn1 !important',\r\n});\r\n\r\nconst VariantCodeWrapper = styled('div', {\r\n mb: 8,\r\n});\r\n\r\nexport default AttributeArea;\r\n","import { useState } from 'react';\r\nimport useMedia from 'Shared/Hooks/useMedia';\r\nimport { styled } from 'stitches.config';\r\nimport { mediaQueryTypes } from 'Theme/Settings/mediaQueries';\r\nimport Carousel from '../../Organisms/Carousel/Carousel';\r\nimport FullScreenModal from '../../Organisms/Modal/FullScreenModal';\r\nimport BlurredImage from './BlurredImage';\r\nimport { useVariantData } from 'Shared/Providers/VariantProvider';\r\nimport useCurrentPage from 'Shared/Hooks/useCurrentPage';\r\nimport ProductPageModel from 'Models/Pages/ProductPage/ProductPageModel.interface';\r\nimport ImageModel from '../../Models/Assets/ImageModel.interface';\r\nimport { useAppSettingsData } from 'Shared/Providers/AppSettingsProvider';\r\nimport { isEmpty } from 'Shared/Common/Helpers';\r\n\r\nfunction ProductImage() {\r\n const [isFullScreen, setIsFullScreen] = useState(false);\r\n const [currentImage, setCurrentImage] = useState(0);\r\n const isDesktop = useMedia(mediaQueryTypes.mediaMinLarge);\r\n const { missingImage } = useAppSettingsData();\r\n\r\n const { isUsed } = useCurrentPage();\r\n const { state } = useVariantData();\r\n\r\n if (!state?.selectedVariant?.variationImages) return <>;\r\n\r\n const variationImages = state.selectedVariant?.variationImages;\r\n\r\n if (isEmpty(variationImages)) {\r\n const missingSrc = `${missingImage.src}?preset=product-page-desktop-secondary`;\r\n\r\n return (\r\n {}}\r\n isFullWidth={true}\r\n isUsed={false}\r\n />\r\n );\r\n }\r\n\r\n const handleCurrentImage = (current: number) => {\r\n setCurrentImage(current);\r\n };\r\n\r\n const handleFullScreen = (index: number) => {\r\n setIsFullScreen(!isFullScreen);\r\n handleCurrentImage(index);\r\n };\r\n\r\n const getImageSize = (index: number) => {\r\n const isLastIteration = index + 1 === variationImages.length;\r\n const isSecondIteration = index === 1;\r\n const isFirstIteration = index === 0;\r\n const isLastOddNumber = isLastIteration && variationImages.length % 2 !== 0;\r\n\r\n const isFullWidth =\r\n isFirstIteration || isSecondIteration || isLastOddNumber;\r\n\r\n return isFullWidth;\r\n };\r\n\r\n const getPreloadSrc = (image: ImageModel) => {\r\n return isUsed\r\n ? `${image.src}?preset=product-page-mobile-secondary-used`\r\n : `${image.src}?preset=product-page-mobile-secondary`;\r\n };\r\n\r\n const getSmallImage = (image: ImageModel) => {\r\n return isUsed\r\n ? `${image.src}?preset=product-page-desktop-secondary-used`\r\n : `${image.src}?preset=product-page-desktop-secondary`;\r\n };\r\n\r\n const getLargeImage = (image: ImageModel) => {\r\n return isUsed\r\n ? `${image.src}?preset=product-page-desktop-main-used`\r\n : `${image.src}?preset=product-page-desktop-main`;\r\n };\r\n\r\n const renderFullScreenCarousel = () => {\r\n return (\r\n isFullScreen && (\r\n setIsFullScreen(false)}\r\n >\r\n \r\n \r\n )\r\n );\r\n };\r\n\r\n if (!variationImages || variationImages.length === 0) return <>;\r\n\r\n if (isDesktop) {\r\n return (\r\n <>\r\n \r\n {variationImages.map((image, index) => {\r\n const isFullWidth = getImageSize(index);\r\n\r\n const lowQualitySrc = getPreloadSrc(image);\r\n const highQualitySrc = isFullWidth\r\n ? getLargeImage(image)\r\n : getSmallImage(image);\r\n\r\n return (\r\n \r\n );\r\n })}\r\n \r\n {renderFullScreenCarousel()}\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n {renderFullScreenCarousel()}\r\n \r\n );\r\n}\r\n\r\nconst ImageContainer = styled('div', {\r\n maxW: '752px',\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n g: 2,\r\n});\r\n\r\nconst CarouselContainer = styled('div', {});\r\n\r\nexport default ProductImage;\r\n","import ProductPageModel from 'Models/Pages/ProductPage/ProductPageModel.interface';\r\nimport ContentContainer from 'Molecules/ContentContainer/ContentContainer';\r\nimport ContentArea from 'Organisms/ContentArea/ContentArea';\r\nimport useCurrentPage from 'Shared/Hooks/useCurrentPage';\r\nimport { useTranslationData } from 'Shared/Providers/TranslationProvider';\r\nimport { styled } from 'stitches.config';\r\nimport AttributeArea from './AttributeArea';\r\nimport ProductImage from './ProductImage';\r\nimport { VariantProvider } from 'Shared/Providers/VariantProvider';\r\nimport ProductListingBlock from '../../Organisms/Blocks/ProductListingBlock';\r\nimport Grid from 'Atoms/Grids/Grid';\r\nimport { mediaQueryTypes } from 'Theme/Settings/mediaQueries';\r\nimport useMedia from 'Shared/Hooks/useMedia';\r\nimport ProductTag from 'Atoms/ProductTag/ProductTag';\r\n\r\nfunction ProductPage() {\r\n const { productLabels } = useTranslationData();\r\n const productData = useCurrentPage();\r\n const isDesktop = useMedia(mediaQueryTypes.mediaMinLarge);\r\n\r\n const { contentArea, relatedProducts, similarProducts } = productData;\r\n\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 {contentArea && contentArea.length > 0 && (\r\n
\r\n \r\n {Array.isArray(contentArea) && (\r\n \r\n )}\r\n \r\n
\r\n )}\r\n \r\n \r\n {relatedProducts?.length > 0 && (\r\n \r\n )}\r\n\r\n {similarProducts?.length > 0 && (\r\n \r\n )}\r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nconst Section = styled('section', {\r\n backgroundColor: '$productPageBackgroundPrimary',\r\n position: 'relative',\r\n maxW: '100%',\r\n mb: 20,\r\n pb: 20,\r\n});\r\n\r\nconst BottomContainer = styled('div', {\r\n mt: 20,\r\n});\r\n\r\nconst Top = styled('div', {\r\n g: 0,\r\n w: '100%',\r\n mb: 20,\r\n '@mediaMinLarge': {\r\n display: 'grid',\r\n gridTemplateColumns: '1.3fr 1fr',\r\n g: 8,\r\n mb: 48,\r\n },\r\n});\r\n\r\nconst ProductImageWrapper = styled('div', {\r\n position: 'relative',\r\n px: 0,\r\n w: '100%',\r\n mb: 6,\r\n '@mediaMinLarge': {\r\n mb: 0,\r\n },\r\n});\r\n\r\nconst ContentSection = {\r\n backgroundColor: '$primary4',\r\n px: 0,\r\n};\r\n\r\nconst Bottom = styled('div', {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n pl: 0,\r\n mt: 36,\r\n h: 'auto',\r\n w: '100%',\r\n backgroundColor: 'primary4',\r\n borderBlockStart: '10px',\r\n});\r\n\r\nexport default ProductPage;\r\n","export const ENUM_KTM = 'KTM';\r\nexport const ENUM_BMW = 'BMW';\r\nexport const ENUM_TRIUMPH = 'Triumph';\r\n","/* eslint-env browser */\nmodule.exports = typeof self == 'object' ? self.FormData : window.FormData;\n"],"names":["styled","extendedDescription","descriptionTitle","CollapsableSection","title","fullWidth","openByDefault","XHtmlArea","content","StyledChips","display","justifyContent","border","borderColor","minWidth","lineHeight","ls","fs","backgroundColor","width","color","py","px","cursor","transition","timings","animation","variants","disabled","true","pointerEvents","isChecked","ChipsWrapper","onCheck","text","onClick","CheckIcon","KexIconLoader","API_URL","TradeInForm","FormGroupTitle","fontFamily","mb","Details","Condition","flexWrap","gap","pt","Contact","Images","UploadedAmount","alignItems","mt","Error","HowToTradeIn","TradeInTitle","showModal","setShowModal","useState","formCondition","setCondition","formImages","setImages","inputsValid","setInputsValid","inputRef","useRef","useTranslationData","productLabels","tradeInYourMotorcycle","howToTradeInYourMotorcycle","yourDetailsMotorcycle","registrationNumber","mileage","conditionMotorcycle","ok","good","veryGood","uploadYourImages","upload","doneUploading","sendTradeInRequest","commonLabels","contactDetails","fullName","somethingWentWrong","messageSent","thanksForYourMessage","validationLabels","invalidEmail","isRequired","accountLabels","email","phoneNumber","languageRoute","useAppSettingsData","user","useUserStateData","timerRef","status","setStatus","useEffect","s","current","setTimeout","clearTimeout","isFormValid","length","form","FormData","formContainer","document","querySelector","formData","entries","value","append","fetch","method","body","then","res","json","obj","success","console","error","Modal","toggle","H2","css","BulletPoint","Paragraph","onSubmit","e","preventDefault","id","InputValidation","onInputsValid","onInputsInvalid","Input","placeholder","name","type","validation","required","errorMessage","replace","toUpperCase","autoComplete","defaultValue","firstName","lastName","accountFormValidation","Button","icon","size","click","CircleBackground","backgroundColorVariants","CloseButton","bgColor","alignSelf","style","ref","onChange","event","input","target","files","Array","from","accept","multiple","ProductUSP","usp","isClothing","productType","ProductType","USPWrapper","slice","map","index","CSSBulletPoint","ProductUSPSecondary","isUsed","showTradeInModal","setShowTradeInModal","customizeYourMotorcycleInConfigurator","doYouWantTradeInYourMotorcycle","canBeDeliveredWithin","USPSecondaryWrapper","USPItem","TradeInMotorcycle","textDecoration","flexDirection","textAlign","wordSpacing","textUnderlineOffset","ProductCTAContainer","ProductCTAWrapper","gridTemplateColumns","ProductCTAItem","gridColumnEnd","gridColumnStart","ProductCTAItemMain","ProductClothing","g","CurrentQuantityWrapper","p","w","variationCollection","productCode","quantity","setQuantity","isShowQuantity","setIsShowQuantity","isLoading","setIsLoading","isBuyDisabled","setIsBuyDisabled","showContactModal","setShowContactModal","showTestDriveModal","setShowTestDriveModal","showSubmitInterestModal","setShowSubmitInterestModal","isAddToCartError","setAddToCartError","errorCartRef","useOutsideClick","selectedModel","getSelectedModel","primaryBike","miniCartDispatch","miniCartIsOpen","bikeId","useMemo","modelId","sessionBike","getBikeForLoggedOutUser","model","brand","modelName","year","testDrive","contactUs","configureAndOrder","order","errorSelectSize","submitOfInterest","motorcycleConfiguratorPage","staticPages","hasMotorCycle","GetCart","useVariantData","state","variantDispatch","isDesktop","useMedia","mediaQueryTypes","kexNavigate","useKexNavigate","handleAddToCart","code","hasSizes","hasSelectedSize","SetQuantity","catch","Variant","errorSize","hasBuyables","filter","variant","key","selectedVariant","some","isBuyable","isSoonInStock","stock","salesStartFormatted","variantCode","ContactModal","SubmitInterestModal","TestDriveModal","QuantitySelector","maxQuantity","stockQuantity","minQuantity","currentQuantity","handleIncrement","handleDecrement","errorLabel","motorcycleAlreadyInCartError","VariantChipsWrapper","ColorOption","VariationsWrapper","ColorVariationsWrapper","SizesVariationsWrapper","colorLabel","sizeLabel","uniqueColors","variation","item","indexOf","uniqueSizes","Set","findVariationBySize","useCallback","sizes","find","findSelectedByCode","handleSizeChange","foundSelected","hasColors","SmallLabel","handleColorChange","notMatchingSizeForCurrentColor","MonthlyPrice","position","maxWidth","PriceContainer","paymentInfoBody","isMotorcycle","nowPrice","price","Price","friendlyWasPrice","wasPrice","priceRoundedAsString","friendlyNowPrice","paymentMonthlyCost","PricePerMonth","friendlyMonthlyPrice","TechnicalWrapper","TechnicalSubtitle","textTransform","TechnicalItem","TechnicalItemValue","pl","technicalData","odometer","odometerUnit","isEmpty","chassiDetails","engineDetails","technicalDetails","engine","translationKey","chassi","documentCollection","getLanguage","language","productSheetAndManuals","DocumentWrapper","documentType","url","KexLink","href","underlined","Document","space","productUserManual","productDataSheet","other","ProductDisplayName","productPage","used","pageHeading","parentCategoryName","manufacturerYear","attributes","Attributes","attributeList","FavoriteContainer","authenticated","accountDispatch","favoriteList","GetFavorites","isFavorited","favoriteProducts","x","FavoriteButton","isActive","RemoveFavorite","AddFavorite","FitmentModel","fitsToModel","productFitmentModels","i","AttributeContainer","Container","AttributeWrapper","ExplodedViewLink","lh","letterSpacing","VariantCodeWrapper","detailedDescription","packageIncludes","variationCode","explodedViews","productTechnicalDetails","packageItems","isPackage","fallbackVariant","defaultVariant","reduce","prev","curr","hasExplodedViewLink","ENUM_KTM","retailerArticleNumber","StockViewer","ProductPackage","explodedViewsPage","explodedViewsLink","rotateLeft","ImageContainer","maxW","CarouselContainer","isFullScreen","setIsFullScreen","currentImage","setCurrentImage","missingImage","useCurrentPage","variationImages","missingSrc","src","BlurredImage","lowQualitySrc","highQualitySrc","handleFullScreen","isFullWidth","handleCurrentImage","renderFullScreenCarousel","FullScreenModal","close","Carousel","images","hasCounter","hasThumbnail","image","isSecondIteration","isFirstIteration","isLastOddNumber","getImageSize","getPreloadSrc","getLargeImage","getSmallImage","Section","pb","BottomContainer","Top","ProductImageWrapper","ContentSection","Bottom","h","borderBlockStart","productData","contentArea","relatedProducts","similarProducts","VariantProvider","ContentContainer","noPadding","ProductTag","promotion","promotionName","left","isArray","ContentArea","childItems","Grid","ProductListingBlock","productCards","header","inEditMode","link","ENUM_BMW","ENUM_TRIUMPH","module","exports","self","window"],"sourceRoot":""}