{"version":3,"file":"dist/build-client/static/js/Pages-Checkout-CheckoutPage.d7c2b165.chunk.js","mappings":"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","sources":["Enums/ProductType.enum.ts","Molecules/PaymentInformation/PaymentInformation.tsx","Organisms/SingleOptionCard/SingleOptionCard.tsx","Organisms/AccountModal/Containers/BankIdIdentify/BankIdIdentify.tsx","Pages/Checkout/CheckoutAccount.tsx","Pages/Checkout/Insurance.tsx","Pages/Checkout/DeliveryMethods/DeliveryAgentDropDown.tsx","Pages/Checkout/PaymentProviders.ts","Pages/Checkout/DeliveryMethods/DeliveryMethodAPI.ts","Kex/PaymentProviders/PayEx.ts","Atoms/Error/ErrorTextWithIcon.tsx","Pages/Checkout/PaymentMethods/PayExPayment.tsx","Kex/PaymentProviders/KlarnaHelpers.ts","Pages/Checkout/PaymentMethods/KlarnaPayment.tsx","Atoms/Slider/Slider.tsx","Pages/Checkout/PaymentMethods/SantanderPayment.tsx","Pages/Checkout/PaymentMethods/SantanderReducer.ts","Pages/Checkout/CheckoutPaymentMethods.tsx","Pages/Checkout/DeliveryMethods/DeliveryMethods.tsx","Pages/Checkout/CheckoutCustomerInformation.tsx","Pages/Checkout/CheckoutPage.tsx","Pages/Checkout/CheckoutSection.tsx","Pages/Checkout/Discount.tsx","Pages/Checkout/OrderSummary/OrderSummary.tsx","Shared/Cart/Cart.ts"],"sourcesContent":["export enum ProductType {\r\n MOTORCYCLES = 'motorcycles',\r\n ACCESSORIES = 'accessories',\r\n CLOTHING = 'clothing',\r\n SPAREPARTS = 'spareparts',\r\n VENDORSPAREPARTS = 'vendorspareparts',\r\n}\r\n","import { H4 } from 'Atoms/Typography/Headings/Heading';\r\nimport { styled } from 'stitches.config';\r\nimport { useTranslationData } from 'Shared/Providers/TranslationProvider';\r\nimport PriceModel from 'Models/Price/PriceModel.interface';\r\nimport { ReactNode } from 'react';\r\n\r\ntype PropTypes = {\r\n totalVATPrice: PriceModel;\r\n totalPrice: PriceModel;\r\n totalFreightPrice: PriceModel;\r\n totalPriceForItems: PriceModel;\r\n hasReachedFreeFreight: boolean;\r\n renderPromotions?: ReactNode;\r\n shippingOptionId?: string;\r\n isOrderConfirmation?: true;\r\n};\r\n\r\nfunction CartPaymentInformation({\r\n totalVATPrice,\r\n totalPrice,\r\n totalFreightPrice,\r\n totalPriceForItems,\r\n hasReachedFreeFreight,\r\n renderPromotions,\r\n shippingOptionId = '',\r\n isOrderConfirmation,\r\n}: PropTypes) {\r\n const {\r\n checkoutLabels: { sumItems, vat, total, shipping, freeShipping },\r\n } = useTranslationData();\r\n\r\n // Only use freeshipping text if we have reached the\r\n // free shipping limit _and_ choosen a deliveryOption\r\n let isFreeShipping = !!(hasReachedFreeFreight && shippingOptionId);\r\n\r\n // If this component is used in orderConfirmation page, ignore shippingOptionId.\r\n if (isOrderConfirmation) {\r\n isFreeShipping = hasReachedFreeFreight;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {sumItems}:\r\n {totalPriceForItems.priceRoundedAsString}\r\n \r\n\r\n {renderPromotions}\r\n\r\n \r\n {shipping}:\r\n \r\n {isFreeShipping\r\n ? freeShipping\r\n : totalFreightPrice.priceRoundedAsString}\r\n \r\n \r\n\r\n \r\n {vat}:\r\n {totalVATPrice.priceRoundedAsString}\r\n \r\n\r\n \r\n

{total}:

\r\n

{totalPrice.priceRoundedAsString}

\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nconst Payment = styled('div', {\r\n mt: 8,\r\n fw: '$fw300',\r\n color: '$grey900',\r\n w: '100%',\r\n});\r\n\r\nexport const PriceColumn = styled('div', {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n px: 0,\r\n mb: 3,\r\n '&:last-child': {\r\n mb: 0,\r\n },\r\n variants: {\r\n isDiscount: {\r\n true: {\r\n color: '$JE68GreenPrimary',\r\n },\r\n },\r\n },\r\n});\r\n\r\nconst PaymentInformation = styled(\r\n 'div',\r\n {\r\n mt: 0,\r\n fw: '$fw300',\r\n color: '$paymentInfoTextPrimary',\r\n backgroundColor: '$checkoutPageBackgroundSecondary',\r\n '@mediaMinMedium': {\r\n position: 'sticky',\r\n t: 25,\r\n },\r\n },\r\n {\r\n '@mediaMinMedium': {\r\n position: 'webkit-sticky',\r\n t: 25,\r\n },\r\n }\r\n);\r\n\r\nexport default CartPaymentInformation;\r\n","import RadioButton from '../../Atoms/RadioButton/RadioButton';\r\nimport { animation, timings } from 'Theme/Settings/animation';\r\n\r\nimport { styled } from 'stitches.config';\r\n\r\ntype PropType = {\r\n image?: JSX.Element;\r\n content: JSX.Element;\r\n onClick: () => void;\r\n isActive: boolean;\r\n radioBg?: 'main' | 'secondary';\r\n isError?: boolean;\r\n};\r\n\r\nconst SingleOptionCard = ({\r\n image,\r\n content,\r\n onClick,\r\n isActive,\r\n radioBg = 'main',\r\n isError = false,\r\n}: PropType) => {\r\n return (\r\n {\r\n e.preventDefault();\r\n onClick();\r\n }}\r\n isActive={isActive}\r\n isError={isError}\r\n >\r\n {image}\r\n \r\n {content}\r\n \r\n {}}\r\n radioBackgroundColor=\"primary3\"\r\n />\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst SingleOptionCardContainer = styled('button', {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'stretch',\r\n width: '100%',\r\n borderWidth: '1px',\r\n borderColor: 'transparent',\r\n transition: `border ${timings.oneFifth} ${animation.timingFn}`,\r\n variants: {\r\n isActive: {\r\n true: {\r\n borderColor: '$JE68GreenPrimary',\r\n },\r\n },\r\n isError: {\r\n true: {\r\n borderColor: '$errorColor',\r\n },\r\n },\r\n },\r\n});\r\n\r\nconst SingleOptionCardContent = styled('div', {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n width: '100%',\r\n});\r\n\r\nconst SingleOptionCardRadio = styled('div', {\r\n display: 'flex',\r\n alignItems: 'center',\r\n px: 6,\r\n variants: {\r\n radioBg: {\r\n main: {\r\n backgroundColor: '$primary3',\r\n },\r\n secondary: {\r\n backgroundColor: '$primary2',\r\n },\r\n },\r\n },\r\n});\r\n\r\nexport default SingleOptionCard;\r\n","import Button from 'Atoms/Buttons/Button';\r\nimport { useTranslationData } from 'Shared/Providers/TranslationProvider';\r\nimport useMedia from 'Shared/Hooks/useMedia';\r\nimport { mediaQueryTypes } from 'Theme/Settings/mediaQueries';\r\nimport BankIdModel from 'Models/Pages/AccountPage/BankIdModel.interface';\r\nimport {\r\n Authenticate,\r\n pollIdentifyBankId,\r\n InitiateBankIdQRCode,\r\n} from 'Pages/AccountPage/BankId';\r\nimport { useAppSettingsData } from 'Shared/Providers/AppSettingsProvider';\r\nimport BankIdIcon from 'Organisms/AccountModal/BankIdIcon';\r\n\r\ntype BankIdIdentifyType = {\r\n inputBackground?: 'primary4' | 'primary6';\r\n setIsAuthenticating: (state: boolean) => void;\r\n setBankIdQrCode: (state: string) => void;\r\n setBankIdPollStatus: (state: string) => void;\r\n setIsOpenBankId: (state: boolean) => void;\r\n setIntervalId: (state: ReturnType) => void;\r\n};\r\n\r\nconst BankIdIdentify = ({\r\n setIsAuthenticating,\r\n setBankIdQrCode,\r\n setBankIdPollStatus,\r\n setIsOpenBankId,\r\n setIntervalId,\r\n}: BankIdIdentifyType) => {\r\n const { accountLabels } = useTranslationData();\r\n const isDesktop = useMedia(mediaQueryTypes.mediaMinLarge);\r\n const { languageRoute } = useAppSettingsData();\r\n\r\n const kexBankIdNavigate = (url: string) => {\r\n window.location.href = url;\r\n };\r\n\r\n const openBankIdTypeIdentify = async () => {\r\n const bankIdModel: BankIdModel = {\r\n forceLogout: false,\r\n useSameDevice: true,\r\n language: languageRoute,\r\n };\r\n\r\n setIsOpenBankId(true);\r\n setIsAuthenticating(true);\r\n\r\n var retval = await Authenticate(\r\n bankIdModel,\r\n () => {},\r\n () => {},\r\n kexBankIdNavigate\r\n );\r\n\r\n pollBankIdCollectIdentify(retval?.[0]);\r\n };\r\n\r\n const startQRCodeTypeIdentify = async () => {\r\n setIsAuthenticating(true);\r\n setIsOpenBankId(false);\r\n\r\n const response = await InitiateBankIdQRCode(languageRoute, false);\r\n pollBankIdCollectIdentify(response?.[0]);\r\n };\r\n\r\n const pollBankIdCollectIdentify = (orderRef: string) => {\r\n const pollBankIdOnce = async () => {\r\n const res = await pollIdentifyBankId(\r\n orderRef,\r\n languageRoute,\r\n setBankIdPollStatus,\r\n setBankIdQrCode\r\n );\r\n\r\n if (res.status !== 'pending') {\r\n clearInterval(pollingIntervalId);\r\n }\r\n };\r\n\r\n pollBankIdOnce();\r\n const pollingIntervalId = setInterval(pollBankIdOnce, 3000);\r\n setIntervalId(pollingIntervalId);\r\n };\r\n\r\n return (\r\n <>\r\n {isDesktop && (\r\n <>\r\n \r\n \r\n {accountLabels.bankIdOnMobileDevice}\r\n \r\n \r\n \r\n {accountLabels.openBankId}\r\n \r\n \r\n )}\r\n {!isDesktop && (\r\n <>\r\n \r\n \r\n {accountLabels.openBankId}\r\n \r\n \r\n \r\n {accountLabels.bankIdOnMobileDevice}\r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nconst cssButton = { width: '100%', mt: 4, mb: 4 };\r\n\r\nexport default BankIdIdentify;\r\n","import { useEffect, useState } from 'react';\r\nimport Button from 'Atoms/Buttons/Button';\r\nimport { H3 } from 'Atoms/Typography/Headings/Heading';\r\nimport Paragraph from 'Atoms/Typography/Paragraph/Paragraph';\r\nimport SwitchToLoginView from 'Organisms/AccountModal/AccountRegister/SwitchToLoginView';\r\nimport SwitchToRegisterView from 'Organisms/AccountModal/AccountLogin/SwitchToRegisterView';\r\nimport BankIdRegisterForm from 'Organisms/AccountModal/AccountRegister/BankIdRegisterForm';\r\nimport BankIdLoginForm from 'Organisms/AccountModal/AccountLogin/BankIdLoginForm';\r\nimport CheckoutSection from './CheckoutSection';\r\nimport { GetCart } from 'Shared/Cart/Cart';\r\nimport { useTranslationData } from 'Shared/Providers/TranslationProvider';\r\nimport { useUserStateData } from 'Shared/Providers/UserContextProvider';\r\nimport { useAppSettingsData } from 'Shared/Providers/AppSettingsProvider';\r\nimport { ModalName } from 'Organisms/AccountModal/AccountModal';\r\nimport { styled } from 'stitches.config';\r\nimport BankIdAuthentication from 'Organisms/AccountModal/Containers/BankIdAuthentication/BankIdAuthentication';\r\nimport BankIdIdentify from 'Organisms/AccountModal/Containers/BankIdIdentify/BankIdIdentify';\r\nimport InfoIcon from 'Atoms/Icons/InfoIcon';\r\n\r\ntype PropType = {\r\n continueAsGuest: boolean;\r\n setContinueAsGuest: () => void;\r\n};\r\n\r\nconst CheckoutAccount = ({ continueAsGuest, setContinueAsGuest }: PropType) => {\r\n const { accountLabels, checkoutLabels, errorLabels } = useTranslationData();\r\n const { languageRoute } = useAppSettingsData();\r\n const {\r\n user: { authenticated, isLoggedWithBankId },\r\n } = useUserStateData();\r\n const { cart, isCartEmpty, hasMotorCycle } = GetCart(languageRoute);\r\n\r\n const [isAuthenticating, setIsAuthenticating] = useState(false);\r\n const [isAuthFailed, setIsAuthFailed] = useState(false);\r\n const [userAlreadyExists, setUserAlreadyExists] = useState(false);\r\n\r\n const [bankIdQrCode, setBankIdQrCode] = useState('');\r\n const [bankIdPollStatus, setBankIdPollStatus] = useState('');\r\n const [isOpenBankId, setIsOpenBankId] = useState(false);\r\n const [intervalId, setIntervalId] = useState(0);\r\n\r\n const [currentView, setView] = useState(ModalName.LOGIN);\r\n\r\n useEffect(() => {\r\n switch (bankIdPollStatus.toLocaleLowerCase()) {\r\n case 'failed':\r\n setIsAuthFailed(true);\r\n setIsAuthenticating(false);\r\n break;\r\n case 'pending':\r\n setIsAuthenticating(true);\r\n break;\r\n case 'complete':\r\n setIsAuthFailed(false);\r\n setIsAuthenticating(false);\r\n break;\r\n default:\r\n }\r\n }, [bankIdPollStatus]);\r\n\r\n if (continueAsGuest || isCartEmpty) return <>;\r\n\r\n const BankIdAuthAborted = () => {\r\n return (\r\n \r\n \r\n \r\n {userAlreadyExists\r\n ? errorLabels.errorBankIdExistingUser\r\n : errorLabels.bankIdAuthInterrupted}\r\n \r\n \r\n );\r\n };\r\n\r\n // If user has logged in with email - prompt with bankid identify\r\n if (authenticated && hasMotorCycle && !isLoggedWithBankId) {\r\n return (\r\n \r\n \r\n

{accountLabels.identifyWithBankId}

\r\n {!isAuthenticating && (\r\n <>\r\n {isAuthFailed && }\r\n \r\n \r\n )}\r\n {isAuthenticating && (\r\n <>\r\n \r\n \r\n )}\r\n
\r\n
\r\n );\r\n }\r\n\r\n return !authenticated ? (\r\n \r\n {currentView === ModalName.REGISTER ? (\r\n \r\n

{accountLabels.createAccount}

\r\n {!isAuthenticating && (\r\n <>\r\n \r\n \r\n {checkoutLabels.checkoutAccountRegisterBodyText}\r\n \r\n \r\n {isAuthFailed && }\r\n {}}\r\n setIsOpenBankId={setIsOpenBankId}\r\n setIntervalId={setIntervalId}\r\n setUserAlreadyExists={setUserAlreadyExists}\r\n />\r\n {!cart?.includedMotorcycle && (\r\n \r\n )}\r\n\r\n setView(ModalName.LOGIN)} />\r\n \r\n )}\r\n
\r\n ) : (\r\n \r\n

{accountLabels.signIn}

\r\n {!isAuthenticating && (\r\n <>\r\n {isAuthFailed && BankIdAuthAborted()}\r\n \r\n {!cart?.includedMotorcycle && (\r\n \r\n {accountLabels.continueAsGuest}\r\n \r\n )}\r\n setView(ModalName.REGISTER)}\r\n />\r\n \r\n )}\r\n
\r\n )}\r\n <>\r\n {isAuthenticating && (\r\n \r\n )}\r\n \r\n
\r\n ) : (\r\n <>\r\n );\r\n};\r\n\r\nconst fontStyleCss = {\r\n fontFamily: '$fontSecondary400',\r\n letterSpacing: '$ls0',\r\n lineHeight: '$lh125',\r\n color: '$secondary2',\r\n fs: 8,\r\n};\r\n\r\nconst AccountWrapper = styled('div', {\r\n maxWidth: '495px',\r\n});\r\n\r\nconst RegisterParagraph = styled('div', {\r\n mb: 8,\r\n});\r\n\r\nconst ErrorText = styled('div', {\r\n ...fontStyleCss,\r\n fs: 7,\r\n lineHeight: '$lh133',\r\n color: '$errorColor',\r\n textAlign: 'center',\r\n mt: 10,\r\n});\r\n\r\nconst ErrorTextWrapper = styled('div', {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n marginBottom: '16px',\r\n gap: '0',\r\n});\r\n\r\nexport default CheckoutAccount;\r\n","import { styled } from 'stitches.config';\r\nimport { H3 } from 'Atoms/Typography/Headings/Heading';\r\nimport useCurrentPage from 'Shared/Hooks/useCurrentPage';\r\nimport CheckoutPageModel from 'Models/Pages/CheckoutPage/CheckoutPageModel.interface';\r\nimport XHtmlArea from 'Molecules/XHtmlArea/XHtmlArea';\r\nimport CheckoutSection from './CheckoutSection';\r\n\r\nfunction Insurance() {\r\n const { insuranceHeading, insuranceBody } =\r\n useCurrentPage();\r\n return (\r\n \r\n

{insuranceHeading}

\r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nconst TextWrapper = styled('div', {});\r\n\r\nexport default Insurance;\r\n","import { ChevronIcon } from 'Atoms/Icons';\r\nimport RadioButton from 'Atoms/RadioButton/RadioButton';\r\nimport { useRef, useState } from 'react';\r\nimport { isEmpty } from 'Shared/Common/Helpers';\r\nimport useOutsideClick from 'Shared/Hooks/useOutsideClick';\r\nimport { styled } from 'stitches.config';\r\nimport { timings, animation } from 'Theme/Settings/animation';\r\n\r\ntype PropTypes = {\r\n values: any[] | undefined;\r\n currentSelected: string;\r\n placeholderLabel?: string;\r\n setSelectedValue: (value: string) => void;\r\n fullWidth?: true;\r\n};\r\n\r\nexport function DeliveryAgentDropDown({\r\n values,\r\n currentSelected,\r\n setSelectedValue,\r\n placeholderLabel,\r\n fullWidth,\r\n}: PropTypes) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n const ref = useRef(null);\r\n\r\n useOutsideClick(ref, () => {\r\n setIsOpen(false);\r\n });\r\n\r\n function onSetIsOpen() {\r\n setIsOpen(!isOpen);\r\n }\r\n\r\n const getAgentValues = () => {\r\n const agent = values?.filter((agent: any) => {\r\n return agent.id === currentSelected;\r\n });\r\n\r\n if (agent && !isEmpty(agent[0])) {\r\n return `${agent[0].name}, ${agent[0].address}, ${agent[0].city}`;\r\n } else {\r\n return '';\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n {getAgentValues() ? getAgentValues() : placeholderLabel}\r\n \r\n \r\n \r\n\r\n \r\n {values &&\r\n values.length > 0 &&\r\n values.map((value: any, index: number) => (\r\n {\r\n setSelectedValue(value.id);\r\n setIsOpen(false);\r\n }}\r\n >\r\n \r\n {}}\r\n />\r\n \r\n \r\n ))}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default DeliveryAgentDropDown;\r\n\r\nconst DropDownItemLabel = styled('div', {});\r\n\r\nconst DropDownContainer = styled('div', {\r\n w: 'fit-content',\r\n position: 'relative',\r\n h: 'auto',\r\n display: 'block',\r\n textAlign: 'left',\r\n variants: {\r\n fullWidth: {\r\n true: {\r\n width: '100%',\r\n },\r\n },\r\n },\r\n});\r\n\r\nconst DropDownHeader = styled('div', {\r\n width: '180px',\r\n display: 'flex',\r\n position: 'relative',\r\n justifyContent: 'space-between',\r\n py: 2,\r\n px: 4,\r\n alignItems: 'center',\r\n cursor: 'pointer',\r\n backgroundColor: '$primary2',\r\n transition: `background-color ${timings.threeTenths} ${animation.timingFn}`,\r\n variants: {\r\n isOpen: {\r\n true: {\r\n backgroundColor: '$primary',\r\n },\r\n },\r\n fullWidth: {\r\n true: {\r\n width: '100%',\r\n },\r\n },\r\n },\r\n});\r\n\r\nconst DropDownChildren = styled('div', {\r\n lineHeight: '$lh133',\r\n p: 4,\r\n h: 'auto',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n border: '1px solid $dropdownBorder',\r\n backgroundColor: '$dropdownChildrenBackground',\r\n w: '100%',\r\n opacity: 0,\r\n transition: `all ${timings.threeTenths} ${animation.timingFn}`,\r\n overflow: 'hidden',\r\n position: 'absolute',\r\n top: 40,\r\n zIndex: '-1',\r\n variants: {\r\n isOpen: {\r\n true: {\r\n opacity: 1,\r\n zIndex: '$DropDown',\r\n },\r\n },\r\n },\r\n});\r\n\r\nconst DropDownItem = styled('div', {\r\n cursor: 'pointer',\r\n w: '-webkit-fill-available',\r\n h: '100%',\r\n textAlign: 'left',\r\n '&:focus': {\r\n boxShadow: '0 0 0 2px #FFF',\r\n },\r\n color: '$dropdownText',\r\n fs: 6,\r\n pb: 4,\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n '&:hover label': {\r\n textDecoration: 'underline',\r\n },\r\n});\r\n\r\nconst CurrentValue = styled('span', {\r\n color: '$dropdownText',\r\n fontFamily: '$fontPrimary400',\r\n wordSpacings: '$wordSpacings$fontPrimary',\r\n lineHeight: '$lh133',\r\n ls: '$lhn1',\r\n fs: 8,\r\n wordSpacing: '$wordSpacings$fontPrimary',\r\n});\r\n","import PayEx from 'Kex/PaymentProviders/PayEx';\r\nimport FormSubmissionB2C from 'Models/Pages/CheckoutPage/FormSubmissionB2C.interface';\r\nimport { useCallback } from 'react';\r\nimport { useAppSettingsData } from 'Shared/Providers/AppSettingsProvider';\r\nimport { RequestStatus } from './DeliveryMethods/DeliveryMethodAPI';\r\n\r\nexport enum PaymentMethods {\r\n PayEx = 'PayEx',\r\n Santander = 'Santander',\r\n Empty = '',\r\n}\r\n\r\nexport type InitPaymentType = {\r\n id: string;\r\n src: string;\r\n onLoad: ({ createOrder, verifyOrder, data }: OnLoadType) => void;\r\n args: OnLoadType;\r\n};\r\n\r\nexport type OnLoadType = {\r\n createOrder: (data: FormSubmissionB2C, endpoint: string) => Promise;\r\n verifyOrder: (paymentId: string, endpoint: string) => Promise;\r\n data: FormSubmissionB2C;\r\n container: string;\r\n};\r\n\r\nexport default function PaymentProviders(\r\n setOnState: (state: RequestStatus) => void\r\n) {\r\n const {\r\n staticPages: { checkoutPage },\r\n languageRoute,\r\n } = useAppSettingsData();\r\n\r\n let orderAbortController = new AbortController();\r\n const createOrder = useCallback(\r\n (data: FormSubmissionB2C, endpoint: string) => {\r\n if (orderAbortController) {\r\n orderAbortController.abort();\r\n\r\n orderAbortController = new AbortController();\r\n }\r\n const signal = orderAbortController.signal;\r\n\r\n return fetch(`${checkoutPage + endpoint}`, {\r\n signal,\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(data),\r\n }).catch((err) => {\r\n if (signal.aborted) {\r\n return new Response('', { status: 404 });\r\n }\r\n return new Response('', { status: 500 });\r\n });\r\n },\r\n [checkoutPage]\r\n );\r\n\r\n const verifyOrder = useCallback(\r\n (paymentId: string, endpoint: string) =>\r\n fetch(`${checkoutPage + endpoint}`, {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(paymentId),\r\n }),\r\n [checkoutPage]\r\n );\r\n\r\n const initPayment = useCallback(\r\n ({ id, src, onLoad, args }: InitPaymentType) => {\r\n if (document.getElementById(id)) return;\r\n\r\n const s = document.createElement('script');\r\n s.id = id;\r\n s.src = src;\r\n document.head.appendChild(s);\r\n\r\n s.addEventListener('load', (e) => {\r\n onLoad(args);\r\n });\r\n },\r\n []\r\n );\r\n\r\n return PayEx(\r\n languageRoute,\r\n initPayment,\r\n createOrder,\r\n verifyOrder,\r\n setOnState\r\n );\r\n}\r\n","import FormSubmission from 'Models/Pages/CheckoutPage/FormSubmission.interface';\r\nimport { isEmpty } from 'Shared/Common/Helpers';\r\nimport { FetchCartAndNotifyAll } from 'Shared/Cart/Cart';\r\n\r\nexport type RequestStatus = 'error' | 'loading' | 'success' | '';\r\n\r\nexport type Validation = {\r\n key: string;\r\n value: { message: string; code: string };\r\n}[];\r\n\r\nexport const GetDeliveryMethodUsingZipcode = async (\r\n zipCode: string,\r\n onState: (type: RequestStatus) => void,\r\n setDeliveryOptions: (value: string) => void\r\n) => {\r\n onState('loading');\r\n\r\n await fetch(`DeliveryMethods?zipCode=${zipCode}`, {\r\n method: 'GET',\r\n headers: { 'Content-Type': 'application/json' },\r\n })\r\n .then((res) => {\r\n if (!res.ok) {\r\n throw Error('Could not fetch data from resource');\r\n }\r\n return res.json();\r\n })\r\n .then((data) => {\r\n if (!isEmpty(data)) {\r\n setDeliveryOptions(data);\r\n onState('success');\r\n } else {\r\n setDeliveryOptions('');\r\n onState('error');\r\n }\r\n })\r\n .catch((err) => {\r\n console.error(err);\r\n onState('error');\r\n });\r\n};\r\n\r\nexport const UpdateCartWithDeliveryInfo = async (\r\n deliveryData: FormSubmission,\r\n setValidationMessage: (value: Validation) => void,\r\n languageRoute: string\r\n) => {\r\n setValidationMessage([]);\r\n await fetch(`${'DeliveryMethods'}`, {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(deliveryData),\r\n })\r\n .then((res) => {\r\n if (!res.ok) {\r\n throw Error('Could not fetch data from resource');\r\n }\r\n return res.json();\r\n })\r\n .then(\r\n ({\r\n validationResult,\r\n success,\r\n }: {\r\n validationResult: Validation;\r\n success: boolean;\r\n }) => {\r\n if (success) {\r\n FetchCartAndNotifyAll(languageRoute);\r\n }\r\n setValidationMessage(validationResult);\r\n }\r\n )\r\n .catch((err) => {\r\n console.error(err);\r\n setValidationMessage(err);\r\n });\r\n};\r\n","import { useKexNavigate } from 'Kex/KexRouter/KexRouter';\r\nimport FormSubmissionB2C from 'Models/Pages/CheckoutPage/FormSubmissionB2C.interface';\r\nimport PaymentResultModel from 'Models/Pages/CheckoutPage/PaymentResultModel.interface';\r\nimport { EmptyCart } from 'Shared/Cart/Cart';\r\n\r\nimport {\r\n InitPaymentType,\r\n PaymentMethods,\r\n} from 'Pages/Checkout/PaymentProviders';\r\nimport { useCallback, useRef } from 'react';\r\nimport { RequestStatus } from 'Pages/AccountPage/Account';\r\n\r\ntype PayExUrlResponse = {\r\n url: string;\r\n};\r\n\r\ntype PayExCompletedEventType = {\r\n id: string;\r\n};\r\n\r\nconst payExStyling = {\r\n body: {\r\n backgroundColor: '#1E1F24',\r\n },\r\n input: {\r\n focus: {\r\n border: 'solid 1px #00C087',\r\n },\r\n backgroundColor: '#1E1F24',\r\n border: 'solid 1px #B4B4BB',\r\n color: '#F0F0F1',\r\n },\r\n label: {\r\n color: '#F0F0F1',\r\n backgroundColor: '#1E1F24',\r\n },\r\n link: {\r\n color: '#F0F0F1',\r\n },\r\n button: {\r\n backgroundColor: '#00C087',\r\n color: '#292A31',\r\n font: '$fontPrimary500',\r\n },\r\n secondaryButton: {\r\n fontFamily: '$fontPrimary500',\r\n color: '#F0F0F1',\r\n border: 'solid 1px #F0F0F1',\r\n },\r\n};\r\n\r\nexport default function PayEx(\r\n languageRoute: string,\r\n initPayment: (data: InitPaymentType) => void,\r\n createOrder: (data: FormSubmissionB2C, endpoint: string) => Promise,\r\n verifyOrder: (paymentId: string, endpoint: string) => Promise,\r\n setOnState: (state: RequestStatus) => void\r\n) {\r\n const kexNavigate = useKexNavigate();\r\n\r\n const onCompleteQueue = useRef>([]);\r\n\r\n const verifyPayEx = useCallback(\r\n (languageRoute: string, paymentId?: string) => {\r\n verifyOrder(paymentId ? paymentId : '', 'VerifyPayExPayment')\r\n .then((res: Response) => {\r\n if (!res.ok) {\r\n throw Error('Could not fetch data from resource');\r\n }\r\n return res.json();\r\n })\r\n .then((data: PaymentResultModel) => {\r\n if (data.code === 200 && data.purchaseOrderId !== -1) {\r\n setOnState('success');\r\n EmptyCart(languageRoute);\r\n kexNavigate(data.redirectUrl);\r\n }\r\n })\r\n .catch((err) => {\r\n setOnState('error');\r\n console.error(err);\r\n });\r\n },\r\n [kexNavigate, verifyOrder, setOnState]\r\n );\r\n\r\n const initPayEx = useCallback(() => {\r\n (window as any).payex.hostedView\r\n .creditCard({\r\n container: PaymentMethods.PayEx,\r\n // Finalize the transaction\r\n onPaymentCompleted: (\r\n paymentCompletedEvent: PayExCompletedEventType\r\n ) => {\r\n if (onCompleteQueue.current.indexOf(paymentCompletedEvent) >= 0) {\r\n return;\r\n }\r\n onCompleteQueue.current.push(paymentCompletedEvent);\r\n verifyPayEx(languageRoute, paymentCompletedEvent.id);\r\n },\r\n onPaymentFailed: (paymentFailedEvent: Error) => {\r\n console.error('paymentFailedEvent', paymentFailedEvent);\r\n },\r\n onError: (error: Error) => {\r\n console.error('error', error);\r\n },\r\n style: {\r\n ...payExStyling,\r\n },\r\n })\r\n .open();\r\n }, [languageRoute, onCompleteQueue, verifyPayEx]);\r\n\r\n const openPayEx = useCallback(\r\n async (data: FormSubmissionB2C, container: string) => {\r\n const args = {\r\n createOrder,\r\n verifyOrder,\r\n data,\r\n container,\r\n };\r\n const res = await createOrder(data, 'GetPayExUrl');\r\n if (res.status === 200) {\r\n const payExUrlResponse = res\r\n ? await res.json()\r\n : ({} as PayExUrlResponse);\r\n\r\n if (payExUrlResponse.url) {\r\n initPayment({\r\n id: 'payex-script',\r\n src: payExUrlResponse.url,\r\n onLoad: initPayEx,\r\n args,\r\n });\r\n }\r\n }\r\n },\r\n [createOrder, initPayEx, initPayment, verifyOrder]\r\n );\r\n\r\n return { openPayEx, verifyPayEx };\r\n}\r\n","import { styled } from '@stitches/react';\r\nimport { InfoIcon } from 'Atoms/Icons';\r\nimport { H6 } from 'Atoms/Typography/Headings/Heading';\r\n\r\nconst ErrorTextWithIcon = ({\r\n errorHeader,\r\n errorDescription,\r\n}: {\r\n errorHeader: string;\r\n errorDescription: string;\r\n}) => {\r\n return (\r\n <>\r\n \r\n \r\n
{errorHeader}
\r\n
\r\n {errorDescription}\r\n \r\n );\r\n};\r\n\r\nexport default ErrorTextWithIcon;\r\n\r\nconst FlexContainer = styled('div', {\r\n display: 'flex',\r\n});\r\n","import { useEffect, useState } from 'react';\r\n\r\nimport SingleOptionCard from 'Organisms/SingleOptionCard/SingleOptionCard';\r\nimport { CardIcon } from 'Atoms/Icons';\r\nimport FormSubmissionB2C from 'Models/Pages/CheckoutPage/FormSubmissionB2C.interface';\r\n\r\nimport { useAppSettingsData } from 'Shared/Providers/AppSettingsProvider';\r\nimport { styled } from 'stitches.config';\r\n\r\nimport PaymentProviders, { PaymentMethods } from '../PaymentProviders';\r\nimport KexCartModel from 'Models/Cart/KexCartModel.interface';\r\nimport Button from 'Atoms/Buttons/Button';\r\nimport { RequestStatus } from '../DeliveryMethods/DeliveryMethodAPI';\r\nimport useMedia from 'Shared/Hooks/useMedia';\r\nimport { mediaQueryTypes } from 'Theme/Settings/mediaQueries';\r\nimport ErrorTextWithIcon from 'Atoms/Error/ErrorTextWithIcon';\r\n\r\ntype PropType = {\r\n addressPayload: FormSubmissionB2C;\r\n currentPaymentMethod: string;\r\n onChangePaymentMethod: (paymentType: string) => Promise;\r\n cart: KexCartModel;\r\n setErrorTermsConditions: (value: boolean) => void;\r\n acceptedTermsConditions: boolean;\r\n};\r\n\r\nfunction PayExPayment({\r\n addressPayload,\r\n currentPaymentMethod,\r\n onChangePaymentMethod,\r\n cart,\r\n setErrorTermsConditions,\r\n acceptedTermsConditions,\r\n}: PropType) {\r\n const {\r\n translations: {\r\n checkoutLabels: { cardPayment, cardPaymentDescription },\r\n accountLabels: { tryAgain },\r\n errorLabels: { technicalError, technicalErrorDescription },\r\n },\r\n availablePaymentMethods,\r\n } = useAppSettingsData();\r\n\r\n const [onState, setOnState] = useState('');\r\n const isDesktop = useMedia(mediaQueryTypes.mediaMinLarge);\r\n\r\n const openPayEx = PaymentProviders(setOnState).openPayEx;\r\n\r\n async function cleanupPayExElements() {\r\n const payExWidgetElement = document.getElementById('PayEx');\r\n\r\n if (payExWidgetElement) {\r\n document.getElementById('payex-script')?.remove();\r\n\r\n while (payExWidgetElement.firstChild) {\r\n payExWidgetElement.removeChild(payExWidgetElement.firstChild);\r\n }\r\n }\r\n }\r\n\r\n async function loadPayExWidget(paymentType: string) {\r\n if (!acceptedTermsConditions) {\r\n setErrorTermsConditions(true);\r\n\r\n return;\r\n }\r\n\r\n await cleanupPayExElements();\r\n\r\n await onChangePaymentMethod(paymentType);\r\n\r\n openPayEx(addressPayload, PaymentMethods.PayEx);\r\n }\r\n\r\n useEffect(() => {\r\n if (currentPaymentMethod === PaymentMethods.PayEx) {\r\n cleanupPayExElements();\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [cart, addressPayload]);\r\n\r\n return (\r\n <>\r\n {availablePaymentMethods && availablePaymentMethods.payEx && (\r\n
\r\n {\r\n loadPayExWidget(PaymentMethods.PayEx);\r\n }}\r\n isActive={PaymentMethods.PayEx === currentPaymentMethod}\r\n image={\r\n \r\n \r\n \r\n }\r\n content={\r\n \r\n {cardPayment}\r\n {cardPaymentDescription}\r\n \r\n }\r\n radioBg=\"secondary\"\r\n />\r\n \r\n {onState === 'error' &&\r\n currentPaymentMethod === PaymentMethods.PayEx && (\r\n \r\n \r\n {\r\n setOnState('');\r\n await cleanupPayExElements();\r\n await onChangePaymentMethod('');\r\n }}\r\n {...(!isDesktop && { fullWidth: true })}\r\n >\r\n {tryAgain}\r\n \r\n \r\n )}\r\n
\r\n )}\r\n \r\n );\r\n}\r\n\r\nexport default PayExPayment;\r\n\r\nexport const PaymentContent = styled('div', {\r\n minH: '80px',\r\n width: '100%',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'flex-start',\r\n justifyContent: 'center',\r\n py: 4,\r\n px: 6,\r\n backgroundColor: '$primary3',\r\n});\r\n\r\nexport const PaymentHeading = styled('span', {\r\n display: 'flex',\r\n alignItems: 'center',\r\n textAlign: 'left',\r\n fontFamily: '$fontPrimary500',\r\n ls: 'lsn1',\r\n color: '$secondary2',\r\n wordSpacing: '$wordSpacings$fontPrimary',\r\n fs: 8,\r\n lineHeight: '$lh15',\r\n '@mediaMinLarge': {\r\n fs: 9,\r\n lineHeight: '$lh155',\r\n },\r\n});\r\n\r\nconst PaymentSubHeading = styled('span', {\r\n fs: 6,\r\n color: '$secondary2',\r\n lineHeight: '$lh133',\r\n textAlign: 'left',\r\n});\r\n\r\nexport const PaymentIcon = styled('div', {\r\n pl: 4,\r\n pt: 7,\r\n display: 'flex',\r\n width: '70px',\r\n alignItems: 'flex-start',\r\n justifyContent: 'center',\r\n backgroundColor: '$primary3',\r\n});\r\n\r\nconst PaymentContainer = styled('div', {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n backgroundColor: '$primary3',\r\n overflow: 'hidden',\r\n variants: {\r\n isWidgetHidden: {\r\n false: {\r\n pt: 5,\r\n pb: 8,\r\n height: 'auto',\r\n },\r\n true: {\r\n height: 0,\r\n },\r\n },\r\n },\r\n});\r\n\r\nconst ErrorTextContainer = styled('div', {\r\n padding: '32px',\r\n});\r\n","import FormSubmissionB2C from 'Models/Pages/CheckoutPage/FormSubmissionB2C.interface';\r\n\r\nconst klarnaWidgetStyling = {\r\n color_border: '#787885',\r\n color_border_selected: '#00C087',\r\n color_details: '#00C087',\r\n color_text: '#0E0E10',\r\n radius_border: '5px',\r\n};\r\n\r\ndeclare var Klarna: any;\r\n\r\ntype KlarnaResponseType = {\r\n authorization_token: string;\r\n show_form: boolean;\r\n approved: boolean;\r\n finalize_required: boolean;\r\n};\r\n\r\nconst KlarnaPayment = {\r\n getTransformedKlarnaPayload: async function getTransformedPayload(\r\n addressPayload: FormSubmissionB2C,\r\n languageRoute: string\r\n ) {\r\n const res = await fetch(\r\n `/KlarnaPayments/GetOrderRequest?language=` + languageRoute,\r\n {\r\n method: 'GET',\r\n }\r\n );\r\n\r\n const orderPayload = await res.json();\r\n\r\n // TODO: sameAsShippingAddress should be converted to boolean\r\n\r\n const sameAsShippingAddress =\r\n addressPayload.sameAsShippingAddress.toLowerCase() === 'true'\r\n ? {\r\n given_name: addressPayload.shippingName,\r\n family_name: addressPayload.shippingLastName,\r\n email: addressPayload.email,\r\n street_address: addressPayload.shippingAddress,\r\n postal_code: addressPayload.shippingPostalCode,\r\n city: addressPayload.shippingCity,\r\n phone: addressPayload.phoneNumber,\r\n country: orderPayload['purchase_country'],\r\n }\r\n : {\r\n given_name: addressPayload.billingName,\r\n family_name: addressPayload.billingLastName,\r\n email: addressPayload.email,\r\n street_address: addressPayload.billingAddress,\r\n postal_code: addressPayload.billingPostalCode,\r\n city: addressPayload.billingCity,\r\n phone: addressPayload.phoneNumber,\r\n country: orderPayload['purchase_country'],\r\n };\r\n\r\n return {\r\n purchase_country: orderPayload['purchase_country'],\r\n purchase_currency: orderPayload['purchase_currency'],\r\n locale: orderPayload['locale'],\r\n billing_address: {\r\n ...sameAsShippingAddress,\r\n },\r\n shipping_address: {\r\n given_name: addressPayload.shippingName,\r\n family_name: addressPayload.shippingLastName,\r\n email: addressPayload.email,\r\n street_address: addressPayload.shippingAddress,\r\n postal_code: addressPayload.shippingPostalCode,\r\n city: addressPayload.shippingCity,\r\n phone: addressPayload.phoneNumber,\r\n country: orderPayload['purchase_country'],\r\n },\r\n order_amount: orderPayload['order_amount'],\r\n order_tax_amount: orderPayload['order_tax_amount'],\r\n order_lines: orderPayload['order_lines'],\r\n customer: {\r\n national_identification_number: addressPayload.personalNumber,\r\n },\r\n };\r\n },\r\n initSDK: function initSDK(clientToken: string) {\r\n if (!clientToken) return;\r\n\r\n Klarna.Payments.init({\r\n client_token: clientToken,\r\n });\r\n },\r\n loadWidget: async function loadWidget(\r\n paymentType: string,\r\n addressPayload: FormSubmissionB2C,\r\n languageRoute: string\r\n ) {\r\n const klarnaPayload = await KlarnaPayment.getTransformedKlarnaPayload(\r\n addressPayload,\r\n languageRoute\r\n );\r\n\r\n Klarna.Payments.load(\r\n {\r\n container: `#klarna-payments-${paymentType}`,\r\n payment_method_category: paymentType,\r\n },\r\n {\r\n ...klarnaPayload,\r\n options: klarnaWidgetStyling,\r\n },\r\n function (res: KlarnaResponseType) {}\r\n );\r\n },\r\n createOrder: async function createOrder(\r\n klarnaAuthToken: string,\r\n addressPayload: FormSubmissionB2C,\r\n successCallback: (url: string) => void,\r\n errorCallback: () => void,\r\n apiUrl: string,\r\n threeLetterMarketCountryCode: string\r\n ) {\r\n addressPayload.billingCountry = threeLetterMarketCountryCode;\r\n addressPayload.shippingCountry = threeLetterMarketCountryCode;\r\n\r\n const res = await fetch(`${apiUrl}CreateKlarnaOrder`, {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify({\r\n authorizationToken: klarnaAuthToken,\r\n ...addressPayload,\r\n }),\r\n });\r\n\r\n if (res.ok) {\r\n const { redirectUrl, code } = await res.json();\r\n\r\n if (code === 200) {\r\n successCallback(redirectUrl);\r\n } else {\r\n errorCallback();\r\n }\r\n } else {\r\n errorCallback();\r\n }\r\n },\r\n authorize: async function authorize(\r\n paymentType: string,\r\n addressPayload: FormSubmissionB2C,\r\n successCallback: (url: string) => void,\r\n errorCallback: () => void,\r\n apiUrl: string,\r\n languageRoute: string,\r\n threeLetterMarketCountryCode: string\r\n ) {\r\n Klarna.Payments.authorize(\r\n {\r\n payment_method_category: paymentType,\r\n },\r\n {\r\n ...(await KlarnaPayment.getTransformedKlarnaPayload(\r\n addressPayload,\r\n languageRoute\r\n )),\r\n },\r\n function (res: KlarnaResponseType) {\r\n if (res.approved) {\r\n KlarnaPayment.createOrder(\r\n res['authorization_token'],\r\n addressPayload,\r\n successCallback,\r\n errorCallback,\r\n apiUrl,\r\n threeLetterMarketCountryCode\r\n );\r\n }\r\n }\r\n );\r\n },\r\n};\r\n\r\nexport default KlarnaPayment;\r\n","import { styled } from 'stitches.config';\r\nimport { useEffect, useState } from 'react';\r\nimport { useAppSettingsData } from 'Shared/Providers/AppSettingsProvider';\r\nimport { useTranslationData } from 'Shared/Providers/TranslationProvider';\r\n\r\nimport Button from 'Atoms/Buttons/Button';\r\nimport SingleOptionCard from 'Organisms/SingleOptionCard/SingleOptionCard';\r\nimport KlarnaHelpers from '../../../Kex/PaymentProviders/KlarnaHelpers';\r\n\r\nimport FormSubmissionB2C from 'Models/Pages/CheckoutPage/FormSubmissionB2C.interface';\r\nimport { useKexNavigate } from 'Kex/KexRouter/KexRouter';\r\n\r\nimport { PaymentHeading, PaymentContent, PaymentIcon } from './PayExPayment';\r\nimport Paragraph from 'Atoms/Typography/Paragraph/Paragraph';\r\nimport { InfoIcon } from 'Atoms/Icons';\r\nimport KexCartModel from 'Models/Cart/KexCartModel.interface';\r\nimport { KlarnaTyped } from '../../../Models/Payment/PaymentMethodModelTyped';\r\n\r\ntype PropTypes = {\r\n addressPayload: FormSubmissionB2C;\r\n currentPaymentMethod: string;\r\n onChangePaymentMethod: (paymentType: string) => Promise;\r\n cart: KexCartModel;\r\n setErrorTermsConditions: (value: boolean) => void;\r\n acceptedTermsConditions: boolean;\r\n klarnaPaymentList: KlarnaTyped[];\r\n};\r\n\r\nfunction KlarnaPayment({\r\n addressPayload,\r\n currentPaymentMethod,\r\n onChangePaymentMethod,\r\n cart,\r\n setErrorTermsConditions,\r\n acceptedTermsConditions,\r\n klarnaPaymentList,\r\n}: PropTypes) {\r\n const [errorCreateOrder, setErrorCreateOrder] = useState('');\r\n\r\n const {\r\n languageRoute,\r\n staticPages: { checkoutPage: apiUrl },\r\n marketCountryThreeLetterCountryCode,\r\n } = useAppSettingsData();\r\n const {\r\n checkoutLabels: { orderError, purchase },\r\n } = useTranslationData();\r\n\r\n const kexNavigate = useKexNavigate();\r\n\r\n async function loadKlarnaWidget(paymentType: string) {\r\n if (!acceptedTermsConditions) {\r\n setErrorTermsConditions(true);\r\n\r\n return;\r\n }\r\n\r\n await onChangePaymentMethod(paymentType);\r\n\r\n KlarnaHelpers.loadWidget(paymentType, addressPayload, languageRoute);\r\n }\r\n\r\n function authorizeKlarnaWidget() {\r\n KlarnaHelpers.authorize(\r\n currentPaymentMethod,\r\n addressPayload,\r\n successCallback,\r\n errorCallback,\r\n apiUrl,\r\n languageRoute,\r\n marketCountryThreeLetterCountryCode\r\n );\r\n }\r\n\r\n useEffect(() => {\r\n onChangePaymentMethod('');\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [cart, addressPayload]);\r\n\r\n function successCallback(url: string) {\r\n kexNavigate(url);\r\n }\r\n\r\n function errorCallback() {\r\n setErrorCreateOrder(orderError);\r\n }\r\n\r\n return (\r\n <>\r\n {klarnaPaymentList?.map((payment, index) => {\r\n return (\r\n
\r\n loadKlarnaWidget(payment.identifier)}\r\n isActive={currentPaymentMethod === payment.identifier}\r\n image={\r\n \r\n \"\"\r\n \r\n }\r\n content={\r\n \r\n {payment.name}\r\n \r\n }\r\n radioBg=\"secondary\"\r\n />\r\n {currentPaymentMethod === payment.identifier && (\r\n <>\r\n \r\n {errorCreateOrder !== '' && (\r\n \r\n \r\n {errorCreateOrder}\r\n \r\n )}\r\n \r\n {purchase}\r\n \r\n \r\n )}\r\n
\r\n );\r\n })}\r\n \r\n );\r\n}\r\n\r\nconst KlarnaWidgetContainer = styled('div', {\r\n p: 8,\r\n mb: 4,\r\n backgroundColor: '#F0EEEB',\r\n});\r\n\r\nconst ErrorContainer = styled('div', {\r\n display: 'flex',\r\n gap: 8,\r\n mb: 4,\r\n});\r\n\r\nexport default KlarnaPayment;\r\n","import { styled } from '@stitches/react';\r\nimport { useCallback, useMemo } from 'react';\r\n\r\ntype Props = {\r\n min?: number;\r\n max: number;\r\n value: number;\r\n controlled: boolean;\r\n step: number;\r\n error: boolean;\r\n onNewValue: (value: number) => void;\r\n};\r\n\r\nfunction Slider({\r\n min = 0,\r\n max,\r\n step,\r\n value,\r\n controlled,\r\n error,\r\n onNewValue,\r\n}: Props) {\r\n const onChange = useCallback(\r\n (e: React.ChangeEvent) => {\r\n const value = Number.parseInt(e.currentTarget.value);\r\n onNewValue(value);\r\n },\r\n [onNewValue]\r\n );\r\n\r\n const InputRange = useMemo(() => getInputRange(error), [error]);\r\n\r\n if (!controlled) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nconst getInputRange = (error: boolean) =>\r\n styled('input', {\r\n '-webkit-appearance': 'none',\r\n background: '$primaryLight3',\r\n height: '4px',\r\n width: '100%',\r\n\r\n '&::-webkit-slider-thumb': {\r\n '-webkit-appearance': 'none',\r\n border: 'none',\r\n height: '16px',\r\n width: '16px',\r\n 'border-radius': '50%',\r\n background: error ? '$errorColor' : '$secondary1',\r\n },\r\n });\r\n\r\nexport default Slider;\r\n","import { useEffect, useReducer, useState } from 'react';\r\nimport Button from '../../../Atoms/Buttons/Button';\r\nimport { FinanceIcon, InfoIcon } from '../../../Atoms/Icons';\r\nimport Slider from '../../../Atoms/Slider/Slider';\r\nimport {\r\n PaymentTyped,\r\n SantanderTyped,\r\n} from '../../../Models/Payment/PaymentMethodModelTyped';\r\nimport BankidIcon from '../../../Atoms/Icons/BankidIcon';\r\nimport SingleOptionCard from '../../../Organisms/SingleOptionCard/SingleOptionCard';\r\nimport { useAppSettingsData } from '../../../Shared/Providers/AppSettingsProvider';\r\nimport { PaymentMethods } from '../PaymentProviders';\r\nimport { PaymentIcon } from './PayExPayment';\r\nimport { santanderReducer } from './SantanderReducer';\r\nimport FormSubmissionB2C from '../../../Models/Pages/CheckoutPage/FormSubmissionB2C.interface';\r\nimport SantanderDownPaymentModel from '../../../Models/Payment/SantanderDownPaymentModel.interface';\r\nimport { useDebounce } from '../../../Shared/Hooks/useDebounce';\r\nimport { styled } from '../../../stitches.config';\r\nimport { H3 } from 'Atoms/Typography/Headings/Heading';\r\nimport PriceModel from 'Models/Price/PriceModel.interface';\r\n\r\ntype Props = {\r\n currentPaymentMethod: string;\r\n santander: SantanderTyped;\r\n addressPayload: FormSubmissionB2C;\r\n total: number;\r\n subTotal: number;\r\n isTradeIn: boolean;\r\n termsAccepted: boolean;\r\n setErrorTermsAccepted: () => void;\r\n onChangePaymentMethod: (paymentType: string) => Promise;\r\n tradeInDiscount: PriceModel;\r\n};\r\n\r\nfunction SantanderPayment({\r\n currentPaymentMethod,\r\n santander,\r\n addressPayload,\r\n onChangePaymentMethod,\r\n setErrorTermsAccepted,\r\n total,\r\n subTotal,\r\n isTradeIn,\r\n termsAccepted,\r\n tradeInDiscount,\r\n}: Props) {\r\n const {\r\n translations: {\r\n checkoutLabels: { santanderHeader, santanderSubheader },\r\n },\r\n languageRoute,\r\n } = useAppSettingsData();\r\n const active =\r\n currentPaymentMethod === PaymentMethods.Santander && termsAccepted;\r\n\r\n return (\r\n <>\r\n {\r\n if (!termsAccepted) {\r\n setErrorTermsAccepted();\r\n } else {\r\n await onChangePaymentMethod(PaymentMethods.Santander);\r\n }\r\n }}\r\n isActive={active}\r\n image={\r\n \r\n \r\n \r\n }\r\n content={\r\n \r\n {santanderHeader}\r\n {santanderSubheader}\r\n \r\n }\r\n radioBg=\"secondary\"\r\n />\r\n\r\n {active && (\r\n \r\n )}\r\n \r\n );\r\n}\r\n\r\nconst formatPaymentDetails = (\r\n templateString: string,\r\n santander: SantanderTyped,\r\n numberOfMonths: number\r\n) => {\r\n const keys = {\r\n rent: santander.interestRateFrom,\r\n effectiveRent: santander.effectiveInterestRateFrom,\r\n monthlyCost: santander.monthlyPayment.priceRoundedAsString,\r\n loanAmount: santander.financedAmount,\r\n numberOfMonths: `${numberOfMonths}`,\r\n loanTotalAmount: santander.totalPayment,\r\n };\r\n\r\n let output = templateString;\r\n\r\n for (const [key, value] of Object.entries(keys)) {\r\n output = output.replaceAll(`{${key}}`, value);\r\n }\r\n\r\n return output;\r\n};\r\n\r\nfunction SantanderPaymentComponent({\r\n initialSantander,\r\n addressPayload,\r\n total,\r\n subTotal,\r\n termsAccepted,\r\n isTradeIn,\r\n setErrorTermsAccepted,\r\n tradeInDiscount,\r\n languageRoute,\r\n}: {\r\n initialSantander: SantanderTyped;\r\n addressPayload: FormSubmissionB2C;\r\n total: number;\r\n subTotal: number;\r\n isTradeIn: boolean;\r\n termsAccepted: boolean;\r\n setErrorTermsAccepted: () => void;\r\n tradeInDiscount: PriceModel;\r\n languageRoute: string;\r\n}) {\r\n const minimumTermsOfMonth = 12;\r\n const maximumTermsOfMonth = 72;\r\n const termsOfMonthIncremmentValue = 12;\r\n\r\n const [errorMessage, setErrorMessage] = useState('');\r\n const [santanderModel, setSantanderModel] = useState(initialSantander);\r\n\r\n const [downPayment, dispatch] = useReducer(\r\n santanderReducer(\r\n initialSantander.downPaymentMin,\r\n initialSantander.downPaymentMax\r\n ),\r\n {\r\n value: initialSantander.downPaymentMin,\r\n inputText: initialSantander.downPaymentMin.toString(),\r\n valid: true,\r\n }\r\n );\r\n\r\n const [termsInMonth, setTermsInMonth] = useState(minimumTermsOfMonth);\r\n const [calculatingLoan, setCalculatingFinancialLoan] = useState(false);\r\n const [processingPayment, setProcessPayment] = useState(false);\r\n\r\n const debouncedDownPayment = useDebounce(downPayment, 500);\r\n const debouncedTermsInMonth = useDebounce(termsInMonth, 500);\r\n\r\n useEffect(() => {\r\n const isDebouncing =\r\n (debouncedDownPayment.valid &&\r\n downPayment.value !== debouncedDownPayment.value) ||\r\n termsInMonth !== debouncedTermsInMonth;\r\n\r\n if (isDebouncing) {\r\n setCalculatingFinancialLoan(true);\r\n }\r\n }, [\r\n downPayment.value,\r\n termsInMonth,\r\n debouncedDownPayment.value,\r\n debouncedDownPayment.valid,\r\n debouncedTermsInMonth,\r\n ]);\r\n\r\n const {\r\n staticPages: { checkoutPage },\r\n currency,\r\n translations: {\r\n checkoutLabels: {\r\n santanderButtonText,\r\n santanderDownPayment,\r\n santanderNumberOfMonths,\r\n santanderPaymentDetails,\r\n santanderMonthlyCost,\r\n santanderPaymentFailed,\r\n santanderNotApproved,\r\n santanderTooSmallDownpayment,\r\n tradeInDiscountAmount,\r\n tradeInDownPaymentAfterDiscount,\r\n },\r\n },\r\n } = useAppSettingsData();\r\n\r\n useEffect(() => {\r\n let isFetchPayments = true;\r\n\r\n if (!debouncedDownPayment.valid) {\r\n return;\r\n }\r\n\r\n const calculateModel: SantanderDownPaymentModel = {\r\n downPayment: debouncedDownPayment.value,\r\n termsInMonth: debouncedTermsInMonth,\r\n };\r\n\r\n if (isFetchPayments) {\r\n fetch(`${checkoutPage}PaymentMethods`, {\r\n method: 'PUT',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(calculateModel),\r\n })\r\n .then((res) => res.json())\r\n .then((value: PaymentTyped[]) => {\r\n const newModel = value.find(\r\n (a: PaymentTyped): a is SantanderTyped =>\r\n a.paymentMethodModelType === 'SantanderPaymentModel'\r\n );\r\n\r\n if (!newModel) {\r\n console.error(value);\r\n throw Error('Could not calculate finance');\r\n }\r\n\r\n setSantanderModel(newModel);\r\n })\r\n .finally(() => setCalculatingFinancialLoan(false));\r\n }\r\n\r\n return () => {\r\n isFetchPayments = false;\r\n };\r\n }, [\r\n debouncedDownPayment.value,\r\n debouncedDownPayment.valid,\r\n debouncedTermsInMonth,\r\n setCalculatingFinancialLoan,\r\n setSantanderModel,\r\n checkoutPage,\r\n total,\r\n ]);\r\n\r\n const processPayment = async () => {\r\n if (!termsAccepted) {\r\n setErrorTermsAccepted();\r\n return;\r\n }\r\n setProcessPayment(true);\r\n\r\n const response = await fetch(\r\n `${checkoutPage}CreateSantanderFinancingOrder`,\r\n {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify({\r\n ...addressPayload,\r\n downPayment: downPayment.value,\r\n termsInMonth,\r\n }),\r\n }\r\n );\r\n\r\n try {\r\n const { redirectUrl, financingApproved } = await response.json();\r\n\r\n if (financingApproved) {\r\n window.location.href = redirectUrl;\r\n setErrorMessage('');\r\n } else {\r\n setErrorMessage(santanderNotApproved);\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n setErrorMessage(santanderPaymentFailed);\r\n } finally {\r\n setProcessPayment(false);\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n {santanderModel?.campaignName &&

{santanderModel.campaignName}

}\r\n \r\n {santanderDownPayment}\r\n \r\n dispatch(Number.parseInt(el.currentTarget.value))}\r\n onChange={(el) => dispatch(el.currentTarget.value)}\r\n type=\"text\"\r\n />\r\n {currency}\r\n \r\n {!downPayment.valid && (\r\n \r\n {santanderTooSmallDownpayment} {initialSantander.downPaymentMin}\r\n \r\n )}\r\n \r\n \r\n \r\n {santanderNumberOfMonths}: {termsInMonth}\r\n \r\n \r\n {isTradeIn && (\r\n \r\n \r\n {tradeInDiscountAmount}: \r\n \r\n {tradeInDiscount.priceRoundedAsString}\r\n \r\n \r\n \r\n \r\n {tradeInDownPaymentAfterDiscount}:{' '}\r\n \r\n \r\n {(downPayment.value - tradeInDiscount.price).toLocaleString(\r\n languageRoute\r\n )}{' '}\r\n {currency}\r\n \r\n \r\n \r\n )}\r\n
\r\n \r\n {santanderMonthlyCost}\r\n \r\n {santanderModel.monthlyPayment.priceRoundedAsString}\r\n \r\n \r\n {formatPaymentDetails(\r\n santanderPaymentDetails,\r\n santanderModel,\r\n termsInMonth\r\n )}\r\n \r\n {!!errorMessage && (\r\n \r\n \r\n {errorMessage}\r\n \r\n )}\r\n \r\n \r\n {santanderButtonText}\r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nconst ErrorContainer = styled('div', {\r\n display: 'flex',\r\n color: '$errorColor',\r\n marginBottom: '24px',\r\n});\r\n\r\nconst ErrorText = styled('div', {\r\n fs: 6,\r\n lineHeight: '$lh133',\r\n color: '$errorColor',\r\n marginLeft: '15px',\r\n});\r\n\r\nconst Container = styled('div', {\r\n color: '$secondary2',\r\n width: '100%',\r\n display: 'grid',\r\n gridTemplateColumns: '1fr 1fr',\r\n columnGap: '44px',\r\n pl: 8,\r\n pr: 8,\r\n '@mediaMaxHuge': {\r\n gridTemplateColumns: '100%',\r\n },\r\n});\r\n\r\nconst Currency = styled('span', {\r\n position: 'absolute',\r\n top: 12,\r\n right: 16,\r\n});\r\n\r\nconst LendingDetails = styled('p', {\r\n fs: 6,\r\n mb: 12,\r\n whiteSpace: 'break-spaces',\r\n variants: {\r\n textColorVariants: {\r\n false: {\r\n color: '$secondary2',\r\n },\r\n true: {\r\n color: '$primary2',\r\n },\r\n },\r\n },\r\n});\r\n\r\nconst Left = styled('div', {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n});\r\n\r\nconst Right = styled('div', {\r\n '@mediaMaxHuge': {\r\n mt: 8,\r\n },\r\n});\r\n\r\nconst DownPaymentWrapper = styled('div', {\r\n mb: 10,\r\n '@mediaMinMedium': {\r\n display: 'grid',\r\n gridTemplateColumns: 'auto auto 1fr auto',\r\n alignItems: 'center',\r\n },\r\n});\r\n\r\nconst DownPaymentHeader = styled('h2', {\r\n pt: 0,\r\n pb: 0,\r\n lineHeight: '24px',\r\n fs: 9,\r\n mr: 7,\r\n});\r\n\r\nconst MonthsHeader = styled('h2', {\r\n paddingTop: '0',\r\n paddingBottom: '0',\r\n mt: 10,\r\n lineHeight: '24px',\r\n fs: 9,\r\n mb: 7.5,\r\n});\r\n\r\nconst MonthlyCostHeader = styled('h2', {\r\n fs: 9,\r\n textAlign: 'center',\r\n});\r\n\r\nconst DownPaymentCostWrapper = styled('div', {\r\n outline: '1px solid $primaryLight4',\r\n h: 12,\r\n p: '12px 16px',\r\n fs: 8,\r\n display: 'grid',\r\n position: 'relative',\r\n gridTemplateColumns: 'auto',\r\n gridColumn: '4',\r\n});\r\n\r\nconst DownPaymentCost = styled('input', {\r\n appearance: 'none',\r\n outline: 'none',\r\n background: 'transparent',\r\n color: '$secondary2',\r\n '&:focus': {\r\n outline: 'none',\r\n },\r\n});\r\n\r\nexport const PaymentContent = styled('div', {\r\n minH: '80px',\r\n width: '100%',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'flex-start',\r\n justifyContent: 'center',\r\n py: 4,\r\n px: 6,\r\n backgroundColor: '$primary3',\r\n});\r\n\r\nexport const PaymentHeading = styled('span', {\r\n display: 'flex',\r\n alignItems: 'center',\r\n textAlign: 'left',\r\n fontFamily: '$fontPrimary500',\r\n ls: 'lsn1',\r\n color: '$secondary2',\r\n wordSpacing: '$wordSpacings$fontPrimary',\r\n fs: 8,\r\n lineHeight: '$lh15',\r\n '@mediaMinLarge': {\r\n fs: 9,\r\n lineHeight: '$lh155',\r\n },\r\n});\r\n\r\nconst PaymentSubHeading = styled('span', {\r\n fs: 6,\r\n color: '$secondary2',\r\n lineHeight: '$lh133',\r\n textAlign: 'left',\r\n});\r\n\r\nconst MonthlyCost = styled('p', {\r\n fs: 8,\r\n marginTop: '0px',\r\n fontFamily: '$fontSecondary600',\r\n textAlign: 'center',\r\n marginBottom: '32px',\r\n variants: {\r\n textColorVariants: {\r\n false: {\r\n color: '$secondary2',\r\n },\r\n true: {\r\n color: '$primary2',\r\n },\r\n },\r\n },\r\n});\r\n\r\nconst SmallErrorText = styled('p', {\r\n color: '$errorText',\r\n pt: 4,\r\n fs: 5,\r\n});\r\n\r\nconst TradeIn = styled('div', {\r\n mt: 16,\r\n});\r\n\r\nconst TradeInColumn = styled('div', {\r\n fs: 9,\r\n lineHeight: '$lh133',\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n gap: 16,\r\n mb: 3,\r\n '&:last-child': {\r\n mb: 0,\r\n },\r\n variants: {\r\n isDiscount: {\r\n true: {\r\n color: '$JE68GreenPrimary',\r\n },\r\n },\r\n },\r\n});\r\n\r\nconst TradeInTextLeft = styled('span', {\r\n flex: '0 1 50%',\r\n});\r\n\r\nconst TradeInTextRight = styled('span', {\r\n flex: '0 1 50%',\r\n textAlign: 'right',\r\n});\r\n\r\nexport default SantanderPayment;\r\n","type Value = number | string;\r\n\r\ntype State = {\r\n inputText: string;\r\n value: number;\r\n valid: boolean;\r\n};\r\n\r\nexport const santanderReducer =\r\n (min: number, max: number) =>\r\n (state: State, value: Value): State => {\r\n if (typeof value === 'number') {\r\n const clampedValue = Math.min(max, Math.max(min, value));\r\n return {\r\n ...state,\r\n value: clampedValue,\r\n inputText: clampedValue.toString(),\r\n valid: true,\r\n };\r\n } else {\r\n if (value.length === 0) {\r\n return {\r\n ...state,\r\n inputText: '',\r\n valid: false,\r\n };\r\n }\r\n\r\n const parsedValue = Number.parseInt(value);\r\n\r\n const valid = value === parsedValue.toString();\r\n\r\n if (!valid) {\r\n return {\r\n ...state,\r\n valid: false,\r\n };\r\n }\r\n\r\n if (parsedValue > max) {\r\n return {\r\n ...state,\r\n value: max,\r\n inputText: max.toString(),\r\n valid: true,\r\n };\r\n }\r\n\r\n return {\r\n ...state,\r\n value: parsedValue,\r\n inputText: value,\r\n valid: parsedValue >= min && parsedValue <= max,\r\n };\r\n }\r\n };\r\n","import { styled } from 'stitches.config';\r\nimport { useEffect, useState } from 'react';\r\n\r\nimport CheckoutSection from './CheckoutSection';\r\n\r\nimport FormSubmissionB2C from 'Models/Pages/CheckoutPage/FormSubmissionB2C.interface';\r\nimport CheckoutPageModel from 'Models/Pages/CheckoutPage/CheckoutPageModel.interface';\r\n\r\nimport { useAppSettingsData } from 'Shared/Providers/AppSettingsProvider';\r\nimport { useTranslationData } from '../../Shared/Providers/TranslationProvider';\r\nimport useCurrentPage from 'Shared/Hooks/useCurrentPage';\r\n\r\nimport { H3 } from 'Atoms/Typography/Headings/Heading';\r\nimport Checkbox from 'Atoms/Checkbox/Checkbox';\r\nimport XHtmlArea from 'Molecules/XHtmlArea/XHtmlArea';\r\n\r\nimport PayExPayment from './PaymentMethods/PayExPayment';\r\nimport KlarnaPayment from './PaymentMethods/KlarnaPayment';\r\nimport SantanderPayment from './PaymentMethods/SantanderPayment';\r\nimport KlarnaHelpers from '../../Kex/PaymentProviders/KlarnaHelpers';\r\nimport {\r\n KlarnaTyped,\r\n PaymentTyped,\r\n SantanderTyped,\r\n} from '../../Models/Payment/PaymentMethodModelTyped';\r\nimport { isEmpty } from 'Shared/Common/Helpers';\r\nimport { useKexLoadingCircle } from 'Kex/KexLoadingCircle';\r\nimport KexCartModel from 'Models/Cart/KexCartModel.interface';\r\n\r\ntype PropTypes = {\r\n addressPayload: FormSubmissionB2C;\r\n validFormData: boolean;\r\n cart: KexCartModel | null;\r\n};\r\n\r\nfunction CheckoutPaymentMethods({\r\n addressPayload,\r\n validFormData,\r\n cart,\r\n}: PropTypes) {\r\n const [acceptedTermsConditions, setAcceptedTermsConditions] =\r\n useState(false);\r\n const [errorTermsConditions, setErrorTermsConditions] =\r\n useState(false);\r\n const [currentPaymentMethod, setCurrentPaymentMethod] = useState('');\r\n const {\r\n languageRoute,\r\n staticPages: { checkoutPage: apiUrl },\r\n } = useAppSettingsData();\r\n const { checkoutLabels } = useTranslationData();\r\n const { termsAndConditionsTextAndLink } = useCurrentPage();\r\n const [santander, setSantander] = useState();\r\n const [klarnaPaymentList, setKlarnaPaymentList] = useState();\r\n\r\n const [, kexLoadingCircleDispatch] = useKexLoadingCircle();\r\n\r\n async function changePaymentMethod(paymentType: string) {\r\n setCurrentPaymentMethod(paymentType);\r\n }\r\n\r\n useEffect(() => {\r\n let isFetchPayments = true;\r\n\r\n kexLoadingCircleDispatch({ type: 'add', from: 'santander payment' });\r\n\r\n fetch(`${apiUrl + 'PaymentMethods?language=' + languageRoute}`, {\r\n method: 'GET',\r\n headers: { 'Content-Type': 'application/json' },\r\n })\r\n .then(async (res) => {\r\n if (isFetchPayments) {\r\n if (res.ok) {\r\n const data = (await res.json()) as PaymentTyped[];\r\n\r\n const klarna = data.filter(\r\n (d): d is KlarnaTyped =>\r\n d.paymentMethodModelType === 'KlarnaPaymentMethodModel'\r\n );\r\n\r\n setKlarnaPaymentList(klarna);\r\n if (klarna[0]) {\r\n KlarnaHelpers.initSDK(klarna[0].clientToken);\r\n }\r\n\r\n const santanders = data.filter(\r\n (d): d is SantanderTyped =>\r\n d.paymentMethodModelType === 'SantanderPaymentModel'\r\n );\r\n\r\n if (santanders.length > 1) {\r\n throw Error(`Multiple santander options ${santanders}`);\r\n }\r\n\r\n if (santanders.length === 1) {\r\n setSantander(santanders[0]);\r\n } else {\r\n setSantander(undefined);\r\n }\r\n }\r\n }\r\n\r\n kexLoadingCircleDispatch({\r\n type: 'remove',\r\n from: 'santander payment',\r\n });\r\n })\r\n .catch(() => {\r\n kexLoadingCircleDispatch({ type: 'remove', from: 'santander payment' });\r\n\r\n throw Error('Something went wrong here');\r\n });\r\n\r\n return () => {\r\n isFetchPayments = false;\r\n\r\n kexLoadingCircleDispatch({ type: 'remove', from: 'santander payment' });\r\n };\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [cart]);\r\n\r\n if (!validFormData || !cart || isEmpty(cart.shippingOptionId)) return <>;\r\n\r\n return (\r\n \r\n

{checkoutLabels.payment}

\r\n \r\n {\r\n setCurrentPaymentMethod('');\r\n setAcceptedTermsConditions(!acceptedTermsConditions);\r\n }}\r\n />\r\n \r\n \r\n\r\n \r\n {klarnaPaymentList && (\r\n \r\n )}\r\n\r\n {cart.includedMotorcycle && (\r\n \r\n )}\r\n\r\n {santander && (\r\n setErrorTermsConditions(true)}\r\n />\r\n )}\r\n \r\n
\r\n );\r\n}\r\n\r\nconst CheckoutPaymentContainer = styled('div', {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: 16,\r\n pt: 2,\r\n});\r\n\r\nconst TermsAndConditions = styled('div', {\r\n display: 'flex',\r\n alignItems: 'center',\r\n mb: 2,\r\n});\r\n\r\nexport default CheckoutPaymentMethods;\r\n","import { StorageIcon, TruckIcon } from 'Atoms/Icons';\r\nimport { H3 } from 'Atoms/Typography/Headings/Heading';\r\nimport SingleOptionCard from 'Organisms/SingleOptionCard/SingleOptionCard';\r\nimport { useEffect, useState } from 'react';\r\nimport { isEmpty } from 'Shared/Common/Helpers';\r\nimport { styled } from 'stitches.config';\r\nimport DeliveryAgentDropDown from './DeliveryAgentDropDown';\r\nimport FormSubmission from 'Models/Pages/CheckoutPage/FormSubmission.interface';\r\nimport FormSubmissionB2C from 'Models/Pages/CheckoutPage/FormSubmissionB2C.interface';\r\nimport LoadingCircle from 'Atoms/Loaders/LoadingCircle';\r\nimport { useAppSettingsData } from 'Shared/Providers/AppSettingsProvider';\r\nimport { useTranslationData } from 'Shared/Providers/TranslationProvider';\r\nimport { useDebounce } from 'Shared/Hooks/useDebounce';\r\nimport {\r\n GetDeliveryMethodUsingZipcode,\r\n UpdateCartWithDeliveryInfo,\r\n RequestStatus,\r\n Validation,\r\n} from './DeliveryMethodAPI';\r\nimport CheckoutPaymentMethods from '../CheckoutPaymentMethods';\r\nimport { GetCart } from 'Shared/Cart/Cart';\r\n\r\ntype PropTypes = {\r\n validFormData: boolean;\r\n addressPayload: FormSubmissionB2C;\r\n onValidation: (validation: Validation) => void;\r\n};\r\n\r\nconst DeliveryMethods = ({\r\n validFormData,\r\n addressPayload,\r\n onValidation,\r\n}: PropTypes) => {\r\n const { languageRoute } = useAppSettingsData();\r\n const { cart } = GetCart(languageRoute);\r\n const { checkoutLabels } = useTranslationData();\r\n const debouncedAddressPayload = useDebounce(addressPayload, 500);\r\n\r\n const [deliveryOptions, setDeliveryOptions] = useState('');\r\n const [currentDeliveryOption, setCurrentDeliveryOption] =\r\n useState('');\r\n const [selectedAgentId, setSelectedAgentId] = useState('');\r\n const [serviceId, setServiceId] = useState('');\r\n const [onState, setOnState] = useState('');\r\n\r\n const getCurrentDeliveryOptionObject = () => {\r\n if (currentDeliveryOption && deliveryOptions) {\r\n const currentShippingPlaces = deliveryOptions.filter((option: any) => {\r\n return option.shippingId === currentDeliveryOption;\r\n });\r\n if (!isEmpty(currentShippingPlaces)) {\r\n return currentShippingPlaces[0];\r\n }\r\n }\r\n return null;\r\n };\r\n\r\n const hasSelectedDeliveryOption = () => {\r\n if (currentDeliveryOption && selectedAgentId) {\r\n return true;\r\n } else if (currentDeliveryOption && !selectedAgentId) {\r\n const currentShippingPlaces = getCurrentDeliveryOptionObject();\r\n\r\n return isEmpty(currentShippingPlaces?.shippingDeliveryPlaces);\r\n }\r\n return false;\r\n };\r\n\r\n useEffect(() => {\r\n // set the initial currentDeliveryOption and selectedAgentId\r\n // from cart only if we havent selected any option\r\n if (cart) {\r\n if (\r\n cart.shippingOptionId !== currentDeliveryOption &&\r\n !currentDeliveryOption\r\n ) {\r\n setCurrentDeliveryOption(cart.shippingOptionId);\r\n setSelectedAgentId(cart.deliveryOptionId);\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [cart]);\r\n\r\n useEffect(() => {\r\n if (cart && !isEmpty(debouncedAddressPayload.shippingPostalCode)) {\r\n // fetch new deliveryMethods when addresspayload changes\r\n GetDeliveryMethodUsingZipcode(\r\n debouncedAddressPayload.shippingPostalCode,\r\n setOnState,\r\n setDeliveryOptions\r\n );\r\n }\r\n }, [debouncedAddressPayload.shippingPostalCode, cart]);\r\n\r\n useEffect(() => {\r\n if (currentDeliveryOption && deliveryOptions) {\r\n const tempDeliveryObj = getCurrentDeliveryOptionObject();\r\n\r\n if (tempDeliveryObj && isEmpty(tempDeliveryObj.shippingDeliveryPlaces)) {\r\n // update deliveryinfo upon site refresh if option has no shipping delivery places.\r\n UpdateCartWithDeliveryInfo(\r\n {\r\n ...addressPayload,\r\n shippingOptionId: currentDeliveryOption,\r\n deliveryPlaceId: '',\r\n serviceId: getCurrentDeliveryOptionObject().serviceId,\r\n } as FormSubmission,\r\n onValidation,\r\n languageRoute\r\n );\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!isEmpty(selectedAgentId) && !isEmpty(currentDeliveryOption)) {\r\n UpdateCartWithDeliveryInfo(\r\n {\r\n ...addressPayload,\r\n shippingOptionId: currentDeliveryOption,\r\n deliveryPlaceId: selectedAgentId,\r\n serviceId: serviceId,\r\n } as FormSubmission,\r\n onValidation,\r\n languageRoute\r\n );\r\n }\r\n }, [\r\n addressPayload,\r\n debouncedAddressPayload,\r\n currentDeliveryOption,\r\n languageRoute,\r\n selectedAgentId,\r\n serviceId,\r\n onValidation,\r\n ]);\r\n\r\n // Only render component if form is valid\r\n if (!validFormData) return <>;\r\n\r\n // Render error text if getDeliveryOptions fails\r\n if (onState === 'error')\r\n return (\r\n \r\n

{checkoutLabels.deliveryOptions}

\r\n \r\n {checkoutLabels.couldNotFindPostalCode}{' '}\r\n {addressPayload.shippingPostalCode}\r\n \r\n
\r\n );\r\n if (!deliveryOptions)\r\n return (\r\n \r\n \r\n \r\n );\r\n\r\n return (\r\n <>\r\n \r\n

{checkoutLabels.deliveryOptions}

\r\n \r\n {deliveryOptions &&\r\n deliveryOptions.map((option: any, index: number) => {\r\n return (\r\n
\r\n {\r\n setCurrentDeliveryOption(option.shippingId);\r\n setServiceId(option.serviceId);\r\n if (isEmpty(option.shippingDeliveryPlaces)) {\r\n setSelectedAgentId('');\r\n UpdateCartWithDeliveryInfo(\r\n {\r\n ...addressPayload,\r\n shippingOptionId: option.shippingId,\r\n deliveryPlaceId: '',\r\n serviceId: option.serviceId,\r\n } as FormSubmission,\r\n onValidation,\r\n languageRoute\r\n );\r\n }\r\n }}\r\n isActive={currentDeliveryOption === option.shippingId}\r\n image={\r\n \r\n {isEmpty(option.shippingDeliveryPlaces) ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n }\r\n content={\r\n \r\n \r\n {option.name}\r\n \r\n {option.priceDescription}\r\n \r\n \r\n \r\n {option.shippingOptionText}\r\n \r\n \r\n }\r\n radioBg=\"secondary\"\r\n />\r\n {currentDeliveryOption === option.shippingId &&\r\n !isEmpty(option.shippingDeliveryPlaces) && (\r\n \r\n \r\n \r\n )}\r\n
\r\n );\r\n })}\r\n
\r\n
\r\n {hasSelectedDeliveryOption() && (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default DeliveryMethods;\r\n\r\nconst LoadingWrapper = styled('div', {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'center',\r\n});\r\n\r\nconst DeliveryTitle = styled('span', {\r\n color: '$textPrimary',\r\n mr: 2,\r\n '&:after': {\r\n content: ' - ',\r\n },\r\n '@mediaMinLarge': {\r\n width: '80%',\r\n '&:after': {\r\n content: 'none',\r\n },\r\n },\r\n});\r\n\r\nconst DeliveryPrice = styled('span', {\r\n color: '$textPrimary',\r\n width: 'fit-content',\r\n '@mediaMinLarge': {\r\n width: '20%',\r\n },\r\n});\r\n\r\nconst DeliveryMethodContainer = styled('div', {\r\n backgroundColor: '$primary4',\r\n padding: '16px',\r\n '@mediaMinLarge': {\r\n padding: '32px',\r\n },\r\n});\r\n\r\nconst DeliveryOptionsWrapper = styled('div', {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: '8px',\r\n});\r\n\r\nconst DeliveryContent = styled('div', {\r\n minH: '80px',\r\n width: '100%',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'flex-start',\r\n justifyContent: 'center',\r\n py: 4,\r\n paddingRight: '24px',\r\n paddingLeft: '8px',\r\n backgroundColor: '$primary3',\r\n});\r\n\r\nconst DeliveryHeading = styled('div', {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n alignItems: 'center',\r\n justifyContent: 'flex-start',\r\n textAlign: 'left',\r\n fontFamily: '$fontPrimary500',\r\n ls: 'lsn1',\r\n color: '$secondary2',\r\n wordSpacing: '$wordSpacings$fontPrimary',\r\n fs: 8,\r\n lineHeight: '$lh15',\r\n '@mediaMinLarge': {\r\n fs: 9,\r\n lineHeight: '$lh155',\r\n justifyContent: 'space-between',\r\n flexWrap: 'nowrap',\r\n },\r\n marginLeft: '16px',\r\n width: '100%',\r\n});\r\n\r\nconst DeliverySubHeading = styled('span', {\r\n fs: 6,\r\n marginLeft: '16px',\r\n color: '$secondary2',\r\n lineHeight: '$lh133',\r\n textAlign: 'left',\r\n});\r\n\r\nconst DeliveryAgentContainer = styled('div', {\r\n marginTop: '8px',\r\n backgroundColor: '$primary3',\r\n});\r\n\r\nconst DeliveryIcon = styled('div', {\r\n pl: 4,\r\n pt: 7,\r\n width: '70px',\r\n alignItems: 'flex-start',\r\n justifyContent: 'center',\r\n backgroundColor: '$primary3',\r\n display: 'none',\r\n '@mediaMinLarge': {\r\n display: 'flex',\r\n },\r\n});\r\n\r\nconst ErrorText = styled('div', {\r\n fontFamily: '$fontSecondary400',\r\n letterSpacing: '$ls0',\r\n fs: 6,\r\n lineHeight: '$lh133',\r\n color: '$errorColor',\r\n ml: '15px',\r\n});\r\n","import Checkbox from 'Atoms/Checkbox/Checkbox';\r\nimport FormTitle from 'Atoms/FormTitle/FormTitle';\r\nimport Input from 'Atoms/Input/Input';\r\nimport { InputValidation } from 'Atoms/Input/InputValidation';\r\nimport { H3 } from 'Atoms/Typography/Headings/Heading';\r\nimport FormSubmissionB2C from 'Models/Pages/CheckoutPage/FormSubmissionBaseModel.interface';\r\nimport { useCallback, useEffect, useMemo, useState } from 'react';\r\nimport { useTranslationData } from 'Shared/Providers/TranslationProvider';\r\nimport useCurrentPage from 'Shared/Hooks/useCurrentPage';\r\nimport { styled } from 'stitches.config';\r\nimport CheckoutSection from './CheckoutSection';\r\nimport CheckoutPageModel from 'Models/Pages/CheckoutPage/CheckoutPageModel.interface';\r\nimport { accountFormValidation } from 'Shared/Common/AccountFormValidation';\r\n\r\nimport Insurance from './Insurance';\r\nimport { useUserStateData } from 'Shared/Providers/UserContextProvider';\r\nimport { useAppSettingsData } from 'Shared/Providers/AppSettingsProvider';\r\nimport DeliveryMethods from './DeliveryMethods/DeliveryMethods';\r\nimport { Validation } from './DeliveryMethods/DeliveryMethodAPI';\r\nimport { getUrlParameter } from '../../Shared/Common/Helpers';\r\nimport PaymentProviders from './PaymentProviders';\r\n\r\ntype PropTypes = {\r\n includedMotorcycle: boolean;\r\n continueAsGuest: boolean;\r\n revalidateCart: () => void;\r\n};\r\n\r\nfunction CheckoutCustomerInformation({\r\n includedMotorcycle,\r\n continueAsGuest,\r\n revalidateCart,\r\n}: PropTypes) {\r\n const { languageRoute, marketCountryThreeLetterCountryCode } =\r\n useAppSettingsData();\r\n const { checkoutLabels, validationLabels } = useTranslationData();\r\n const { user } = useUserStateData();\r\n\r\n const {\r\n shippingAddress: existingShippingAddress,\r\n billingAddress: existingBillingAddress,\r\n personalNumber: existingPersonalNumber,\r\n } = useCurrentPage();\r\n\r\n useEffect(() => {\r\n setEmail(user.email);\r\n setPhone(user.phoneNumber);\r\n }, [user.authenticated, user.isLoggedWithBankId, user]);\r\n\r\n const [email, setEmail] = useState(user.email || '');\r\n const [phone, setPhone] = useState(user.phoneNumber || '');\r\n const [shippingFirstName, setShippingFirstName] = useState(\r\n existingShippingAddress.firstName || ''\r\n );\r\n const [shippingLastName, setShippingLastName] = useState(\r\n existingShippingAddress.lastName || ''\r\n );\r\n const [shippingAddress, setShippingAddress] = useState(\r\n existingShippingAddress.address || ''\r\n );\r\n const [shippingCity, setShippingCity] = useState(\r\n existingShippingAddress.city || ''\r\n );\r\n const [shippingPostalCode, setShippingPostalCode] = useState(\r\n existingShippingAddress.postalCode || ''\r\n );\r\n\r\n const [useSameShippingAddress, setUseSameShippingAddress] = useState(\r\n JSON.stringify(existingBillingAddress) ===\r\n JSON.stringify(existingShippingAddress)\r\n ? true\r\n : false\r\n );\r\n const [billingFirstName, setBillingFirstName] = useState(\r\n existingBillingAddress.firstName || ''\r\n );\r\n const [billingLastName, setBillingLastName] = useState(\r\n existingBillingAddress.lastName || ''\r\n );\r\n const [billingAddress, setBillingAddress] = useState(\r\n existingBillingAddress.address || ''\r\n );\r\n const [billingCity, setBillingCity] = useState(\r\n existingBillingAddress.city || ''\r\n );\r\n const [billingPostalCode, setBillingPostalCode] = useState(\r\n existingBillingAddress.postalCode || ''\r\n );\r\n\r\n const [validFormData, setValidFormData] = useState(false);\r\n\r\n const [backendValidation, setBackendValidation] = useState(\r\n new Map()\r\n );\r\n\r\n const addressPayload: FormSubmissionB2C = useMemo(\r\n () => ({\r\n billingAddress,\r\n billingCity,\r\n billingCountry: marketCountryThreeLetterCountryCode,\r\n billingName: billingFirstName,\r\n billingLastName,\r\n billingPostalCode,\r\n email,\r\n name: shippingFirstName,\r\n phoneNumber: phone,\r\n sameAsShippingAddress: `${useSameShippingAddress}`,\r\n shippingAddress,\r\n shippingCity,\r\n shippingCountry: marketCountryThreeLetterCountryCode,\r\n shippingName: shippingFirstName,\r\n shippingLastName,\r\n shippingPostalCode,\r\n personalNumber: existingPersonalNumber,\r\n }),\r\n [\r\n billingAddress,\r\n billingCity,\r\n billingFirstName,\r\n billingLastName,\r\n billingPostalCode,\r\n email,\r\n existingPersonalNumber,\r\n marketCountryThreeLetterCountryCode,\r\n phone,\r\n shippingAddress,\r\n shippingCity,\r\n shippingFirstName,\r\n shippingLastName,\r\n shippingPostalCode,\r\n useSameShippingAddress,\r\n ]\r\n );\r\n\r\n const verifyPayEx = PaymentProviders(() => {}).verifyPayEx;\r\n const verifyPayExPayment = getUrlParameter('verifyPayExPayment') === 'true';\r\n\r\n useEffect(() => {\r\n if (verifyPayExPayment) {\r\n verifyPayEx(languageRoute);\r\n }\r\n }, [languageRoute, verifyPayExPayment, verifyPayEx]);\r\n\r\n const onInputsValid = () => {\r\n setValidFormData(true);\r\n };\r\n\r\n const onInputsInvalid = () => {\r\n setValidFormData(false);\r\n };\r\n\r\n const onValidation = useCallback((validation: Validation) => {\r\n setBackendValidation(\r\n new Map(validation.map(({ key, value }) => [key, value]))\r\n );\r\n }, []);\r\n\r\n const clearBackendValidation = (key: string) => {\r\n const newDict = new Map(backendValidation);\r\n newDict.delete(key);\r\n setBackendValidation(newDict);\r\n };\r\n\r\n const inputBackground: any = {\r\n inputBackground: 'primary4',\r\n };\r\n\r\n // No Motorcycle in cart and user are not BankIdAuthenticated\r\n if (includedMotorcycle && !user.isLoggedWithBankId) return <>;\r\n\r\n // User has not pressed continueAsGuest and is not authenticated\r\n if (!continueAsGuest && !user.authenticated) return <>;\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n

{checkoutLabels.contactInformation}

\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 {checkoutLabels.deliveryAddress}\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 setUseSameShippingAddress(!useSameShippingAddress)\r\n }\r\n isChecked={useSameShippingAddress}\r\n id=\"alternative-shipping-address\"\r\n />\r\n \r\n\r\n {!useSameShippingAddress && (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n
\r\n
\r\n\r\n {includedMotorcycle && }\r\n \r\n \r\n );\r\n}\r\n\r\nexport default CheckoutCustomerInformation;\r\n\r\nconst FormContainer = styled('form', {\r\n maxWidth: '495px',\r\n});\r\n\r\nconst FormInputContainer = styled('div', {\r\n mb: 6,\r\n});\r\n\r\nconst Row = styled('div', {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n mx: -3,\r\n mb: 6,\r\n '@mediaMinLarge': {\r\n flexDirection: 'row',\r\n },\r\n});\r\n\r\nconst Column = styled('div', {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n w: '100%',\r\n px: 3,\r\n});\r\n","import ContentContainer from 'Molecules/ContentContainer/ContentContainer';\r\nimport { GetCart } from 'Shared/Cart/Cart';\r\nimport { GetMotorcycleStock } from 'Shared/Cart/Stock';\r\nimport useMedia from 'Shared/Hooks/useMedia';\r\nimport { useAppSettingsData } from 'Shared/Providers/AppSettingsProvider';\r\nimport { useUserStateData } from 'Shared/Providers/UserContextProvider';\r\nimport { styled } from 'stitches.config';\r\nimport { mediaQueryTypes } from 'Theme/Settings/mediaQueries';\r\nimport CheckoutAccount from './CheckoutAccount';\r\nimport OrderSummary from './OrderSummary/OrderSummary';\r\nimport CheckoutCustomerInformation from './CheckoutCustomerInformation';\r\nimport { useState, useCallback } from 'react';\r\nimport KexLink from 'Kex/KexLink';\r\nimport { BackIcon, LogoIcon, UserIcon } from 'Atoms/Icons';\r\nimport {\r\n PropType as AccountModalPropType,\r\n ModalName,\r\n} from 'Organisms/AccountModal/AccountModal';\r\nimport loadable, { LoadableComponent } from '@loadable/component';\r\nimport { canUseDOM } from 'Shared/Common/Helpers';\r\nimport { SizeConstants } from 'Theme/Settings/sizes';\r\nimport { useKexNavigate } from 'Kex/KexRouter/KexRouter';\r\n\r\nconst AccountModal: LoadableComponent = loadable(\r\n () => import('Organisms/AccountModal/AccountModal')\r\n);\r\n\r\nfunction CheckoutPage() {\r\n const isDesktop = useMedia(mediaQueryTypes.mediaMinLarge);\r\n const {\r\n languageRoute,\r\n staticPages: { accountPage },\r\n } = useAppSettingsData();\r\n const {\r\n accountDispatch,\r\n account,\r\n user: { authenticated },\r\n } = useUserStateData();\r\n\r\n const kexNavigate = useKexNavigate();\r\n\r\n const [continueAsGuest, setContinueAsGuest] = useState(false);\r\n\r\n const { cart, isLoading, hasMotorCycle, isCartEmpty, triggerRevalidation } =\r\n GetCart(languageRoute);\r\n const { motorcycleStock } = GetMotorcycleStock();\r\n\r\n const isMotorcycleOutOfStock =\r\n hasMotorCycle && motorcycleStock.isInStock === false;\r\n\r\n const toggle = useCallback(() => {\r\n accountDispatch({ type: 'toggle' });\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [accountDispatch]);\r\n\r\n const redirectPrevUrl = () => {\r\n if (!canUseDOM()) return;\r\n\r\n const prevUrl = sessionStorage.getItem('url');\r\n\r\n if (!prevUrl) {\r\n window.location.href = `${window.location.origin}/${languageRoute}`;\r\n }\r\n\r\n kexNavigate(prevUrl ?? '');\r\n };\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 {authenticated ? (\r\n \r\n \r\n \r\n ) : (\r\n accountDispatch({ type: 'toggle' })}\r\n >\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n {isDesktop && cart && (\r\n \r\n )}\r\n\r\n \r\n {(!isMotorcycleOutOfStock || !hasMotorCycle) && (\r\n setContinueAsGuest(true)}\r\n />\r\n )}\r\n\r\n {!isDesktop && cart && (\r\n \r\n )}\r\n {!isCartEmpty && (\r\n \r\n )}\r\n \r\n \r\n \r\n\r\n {}}\r\n initialModalState={{\r\n name: ModalName.LOGIN,\r\n }}\r\n />\r\n \r\n );\r\n}\r\n\r\nexport default CheckoutPage;\r\n\r\nconst CheckoutHeader = styled('div', {\r\n backgroundColor: '$primary4',\r\n py: 5,\r\n height: SizeConstants.mobileHeaderHeight,\r\n display: 'flex',\r\n alignItems: 'center',\r\n '@mediaMinLarge': {\r\n height: SizeConstants.desktopHeaderUpperHeight,\r\n },\r\n});\r\n\r\nconst CheckoutHeaderInner = styled('div', {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n});\r\n\r\nconst CheckoutWrapper = styled('div', {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: 32,\r\n});\r\n\r\nconst CheckoutContainer = styled('div', {\r\n my: 8,\r\n display: 'block',\r\n gridTemplateColumns: '1fr',\r\n gap: 32,\r\n '@mediaMinLarge': {\r\n display: 'grid',\r\n my: 16,\r\n gridTemplateColumns: '1fr 1.6fr',\r\n },\r\n});\r\n\r\nconst StyledKexLink = styled(KexLink, {\r\n mb: 0,\r\n});\r\n\r\nconst AccountButton = styled('button', {});\r\n","import { ReactNode } from 'react';\r\nimport { styled } from 'stitches.config';\r\n\r\ntype PropTypes = {\r\n children: ReactNode;\r\n};\r\nfunction CheckoutSection({ children }: PropTypes) {\r\n return {children};\r\n}\r\n\r\nconst CheckoutSectionContainer = styled('div', {\r\n position: 'relative',\r\n height: 'fit-content',\r\n py: 8,\r\n px: 4,\r\n backgroundColor: '$checkoutPageBackgroundSecondary',\r\n '@mediaMinLarge': {\r\n p: 8,\r\n },\r\n});\r\n\r\nexport default CheckoutSection;\r\n","import CloseButton from 'Atoms/Buttons/CloseButton';\r\nimport { useCallback, useEffect, useState } from 'react';\r\nimport Button from '../../Atoms/Buttons/Button';\r\nimport { InfoIcon } from '../../Atoms/Icons';\r\nimport Input from '../../Atoms/Input/Input';\r\nimport Paragraph from '../../Atoms/Typography/Paragraph/Paragraph';\r\nimport DiscountModel from '../../Models/Price/DiscountModel.interface';\r\nimport { useTranslationData } from '../../Shared/Providers/TranslationProvider';\r\nimport { styled } from '../../stitches.config';\r\n\r\ntype Props = {\r\n discount?: DiscountModel;\r\n revalidateCart: () => void;\r\n};\r\n\r\nconst Error = ({\r\n current,\r\n lastValid,\r\n update,\r\n}: {\r\n current: string;\r\n lastValid?: string;\r\n update: () => void;\r\n}) => {\r\n const { validationLabels, checkoutLabels } = useTranslationData();\r\n if (lastValid && lastValid !== current) {\r\n return (\r\n \r\n {validationLabels.invalidDiscount}. \r\n \r\n {checkoutLabels.discountRevert.replace('{0}', lastValid)}\r\n \r\n \r\n );\r\n }\r\n\r\n return {validationLabels.invalidDiscount};\r\n};\r\n\r\nexport const Discount = ({ discount, revalidateCart }: Props) => {\r\n const existingCartDiscount = discount?.couponCode;\r\n const existingRewardName = discount?.rewardName;\r\n const [triggerInput, setTriggerInput] = useState(0);\r\n const [showMore, setShowMore] = useState(!!discount);\r\n const { checkoutLabels } = useTranslationData();\r\n const [discountCode, setDiscountCode] = useState(existingRewardName || '');\r\n const [state, setState] = useState<'init' | 'loading' | 'error' | 'success'>(\r\n 'init'\r\n );\r\n\r\n const [lastValidCode, setLastValidCode] = useState(existingCartDiscount);\r\n\r\n useEffect(() => {\r\n if (existingCartDiscount) {\r\n setLastValidCode(existingCartDiscount);\r\n }\r\n }, [existingCartDiscount]);\r\n\r\n useEffect(() => {\r\n setShowMore((s) => s || !!existingCartDiscount);\r\n }, [existingCartDiscount]);\r\n\r\n useEffect(\r\n () => setDiscountCode((s) => existingCartDiscount || s),\r\n [existingCartDiscount]\r\n );\r\n\r\n const newDiscount =\r\n !!existingCartDiscount && !existingCartDiscount.startsWith(discountCode);\r\n\r\n const codeApplied = existingCartDiscount === discountCode;\r\n\r\n const applyCode = (code: string) => {\r\n if (code === '') {\r\n setShowMore(false);\r\n setDiscountCode('');\r\n }\r\n\r\n setState('loading');\r\n fetch(`SetDiscountCode?discountCode=${code.toLocaleUpperCase()}`, {\r\n method: 'POST',\r\n })\r\n .then((res) => res.json())\r\n .then((wasRewardValid) => {\r\n setState(wasRewardValid ? 'success' : code === '' ? 'init' : 'error');\r\n revalidateCart();\r\n })\r\n .catch((err) => {\r\n console.error(err);\r\n setState('error');\r\n });\r\n };\r\n\r\n const setDiscountCodeManually = useCallback(\r\n (discount: string) => {\r\n setDiscountCode(discount);\r\n setState('init');\r\n },\r\n [setDiscountCode, setState]\r\n );\r\n\r\n return (\r\n \r\n {showMore ? (\r\n <>\r\n {newDiscount && (\r\n \r\n \r\n \r\n {checkoutLabels.discountOverwriteWarning}\r\n \r\n \r\n )}\r\n\r\n \r\n \r\n \r\n {codeApplied && (\r\n applyCode('')}\r\n bgColor=\"primaryLight\"\r\n size=\"l\"\r\n />\r\n )}\r\n \r\n {!codeApplied && (\r\n applyCode(discountCode)}\r\n isLoading={state === 'loading'}\r\n >\r\n {checkoutLabels.discountButton}\r\n \r\n )}\r\n \r\n {state === 'error' && (\r\n {\r\n if (lastValidCode) {\r\n setDiscountCode(lastValidCode);\r\n applyCode(lastValidCode);\r\n setTriggerInput((s) => s + 1);\r\n }\r\n }}\r\n />\r\n )}\r\n {/* {codeApplied && state !== 'error' && (\r\n {checkoutLabels.discountSuccess}\r\n )} */}\r\n \r\n ) : (\r\n setShowMore(true)}>\r\n {checkoutLabels.discountTitle}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nconst DiscountExpander = styled('span', {\r\n textDecoration: 'underline',\r\n color: '$primaryLight1',\r\n pt: 2,\r\n '&:hover': {\r\n cursor: 'pointer',\r\n },\r\n});\r\n\r\nconst ClickableText = styled('span', {\r\n textDecoration: 'underline',\r\n color: '$primaryLight2',\r\n fs: 7,\r\n lineHeight: '$lh133',\r\n mt: 0,\r\n '&:hover': {\r\n cursor: 'pointer',\r\n color: '$primaryLight1',\r\n },\r\n '@mediaMinMedium': {\r\n pl: 2,\r\n },\r\n});\r\n\r\nconst WarningWrapper = styled('div', {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n mb: 4,\r\n});\r\n\r\nconst ErrorWrapper = styled('div', {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n '@mediaMinMedium': {\r\n flexDirection: 'row',\r\n },\r\n});\r\n\r\nconst ErrorText = styled('div', {\r\n fontFamily: '$fontSecondary400',\r\n letterSpacing: '$ls0',\r\n fs: 7,\r\n lineHeight: '$lh133',\r\n color: '$errorColor',\r\n textAlign: 'left',\r\n mt: 0,\r\n});\r\n\r\nconst Container = styled('div', {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n background: '$checkoutPageBackgroundSecondary',\r\n mt: 4,\r\n});\r\n\r\nconst InputWrapper = styled('div', {\r\n position: 'relative',\r\n variants: {\r\n true: {\r\n '& input': {\r\n color: 'red!important',\r\n WebkitTextFillColor: 'red!important',\r\n caretColor: 'red!important',\r\n },\r\n },\r\n },\r\n});\r\n\r\nconst CouponCodeWrapper = styled('div', {\r\n display: 'grid',\r\n gridTemplateColumns: '100%',\r\n gridRowGap: '8px',\r\n gridColumnGap: '16px',\r\n mb: 2,\r\n '@mediaMinMedium': {\r\n gridTemplateColumns: '1fr auto',\r\n },\r\n variants: {\r\n hasCodeApplied: {\r\n true: {\r\n gridTemplateColumns: '100%',\r\n },\r\n },\r\n },\r\n});\r\n","import ProductList from 'Organisms/ProductList/ProductList';\r\nimport { styled } from 'stitches.config';\r\nimport CartPaymentInformation, {\r\n PriceColumn,\r\n} from 'Molecules/PaymentInformation/PaymentInformation';\r\nimport { useTranslationData } from 'Shared/Providers/TranslationProvider';\r\nimport { H3 } from 'Atoms/Typography/Headings/Heading';\r\nimport Paragraph from 'Atoms/Typography/Paragraph/Paragraph';\r\nimport { useEffect, useState } from 'react';\r\nimport Divider from 'Atoms/Divider/Divider';\r\nimport Checkbox from 'Atoms/Checkbox/Checkbox';\r\nimport KexCartModel from 'Models/Cart/KexCartModel.interface';\r\nimport { ApplyMountingCost } from 'Shared/Cart/Cart';\r\nimport { useAppSettingsData } from 'Shared/Providers/AppSettingsProvider';\r\nimport Price from 'Atoms/Price/Price';\r\nimport { Discount } from '../Discount';\r\n\r\ntype PropType = {\r\n isLoading: boolean;\r\n noPadding?: boolean;\r\n cart: KexCartModel;\r\n revalidateCart: () => void;\r\n};\r\n\r\nconst ORDER_SUMMARY_PADDING = 32;\r\n\r\nfunction OrderSummary({\r\n cart,\r\n revalidateCart,\r\n isLoading,\r\n noPadding = false,\r\n}: PropType) {\r\n const { languageRoute } = useAppSettingsData();\r\n const {\r\n checkoutLabels: { yourOrder },\r\n cartLabels: { cartEmptyTitle, cartEmptyDescription, mountingAccessory },\r\n commonLabels: { loading },\r\n } = useTranslationData();\r\n\r\n const {\r\n lineItems,\r\n totalPrice,\r\n totalPriceForItems,\r\n totalVATPrice,\r\n numberOfItems,\r\n totalFreightPrice,\r\n mountingCostNowPrice,\r\n mountingCostWasPrice,\r\n areMountingCostsApplied,\r\n canMountingCostBeApplied,\r\n appliedCouponDiscount,\r\n promotions,\r\n hasReachedFreeFreight,\r\n shippingOptionId,\r\n } = cart;\r\n\r\n const [stickyHeaderFix, setStickyHeaderFix] = useState({ top: 0 });\r\n\r\n useEffect(() => {\r\n const header = document.getElementById('checkout-header');\r\n\r\n function adjustForHeaderPosition() {\r\n const bottomOfHeader = header?.getBoundingClientRect().bottom;\r\n\r\n if (bottomOfHeader !== undefined) {\r\n const top = Math.max(0, bottomOfHeader) + ORDER_SUMMARY_PADDING;\r\n setStickyHeaderFix({ top });\r\n }\r\n }\r\n\r\n document.addEventListener('scroll', adjustForHeaderPosition);\r\n\r\n return () => {\r\n document.removeEventListener('scroll', adjustForHeaderPosition);\r\n };\r\n });\r\n\r\n const isEmptyCart = numberOfItems === 0;\r\n\r\n return (\r\n
\r\n \r\n {isLoading ? (\r\n
{loading}
\r\n ) : isEmptyCart ? (\r\n \r\n

{cartEmptyTitle}

\r\n {cartEmptyDescription}\r\n
\r\n ) : (\r\n <>\r\n \r\n \r\n \r\n

{yourOrder}

\r\n {/* {allowEdit && {change} } */}\r\n
\r\n
\r\n \r\n \r\n \r\n {canMountingCostBeApplied && (\r\n {\r\n e.preventDefault();\r\n ApplyMountingCost(languageRoute, !areMountingCostsApplied);\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 {appliedCouponDiscount && (\r\n <>\r\n \r\n \r\n {appliedCouponDiscount.isTradeIn && <>Inbyte:}{' '}\r\n {appliedCouponDiscount.rewardName}\r\n \r\n \r\n {appliedCouponDiscount.isTradeIn\r\n ? appliedCouponDiscount.tradeInAmount\r\n .priceRoundedAsString\r\n : appliedCouponDiscount.totalDiscount\r\n .priceRoundedAsString}\r\n \r\n \r\n \r\n )}\r\n {promotions.map((p, i) => {\r\n return (\r\n \r\n {p.promotionName}\r\n \r\n {p.promotionDiscountAmount.priceRoundedAsString}\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\nconst StyledEmptyCartTitle = {\r\n mt: 0,\r\n mb: 4,\r\n fs: 8,\r\n lineHeight: '$lh125',\r\n};\r\n\r\nconst CartContainer = styled(\r\n 'div',\r\n {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n w: '100%',\r\n h: 'auto',\r\n justifyContent: 'center',\r\n my: 0,\r\n mx: 0,\r\n py: 8,\r\n backgroundColor: '$checkoutPageBackgroundSecondary',\r\n '@mediaMinLarge': {\r\n maxW: 132,\r\n },\r\n '@mediaMinMedium': {\r\n position: 'sticky',\r\n t: 24,\r\n },\r\n variants: {\r\n noPadding: {\r\n true: {\r\n px: 0,\r\n },\r\n },\r\n },\r\n },\r\n {\r\n '@mediaMinMedium': {\r\n position: 'webkit-sticky',\r\n t: 24,\r\n },\r\n }\r\n);\r\n\r\nconst PaddingWrapper = styled('div', {\r\n px: 4,\r\n '@mediaMinLarge': {\r\n px: 8,\r\n },\r\n});\r\n\r\n// const Edit = styled('span', {\r\n// lineHeight: '$lh15',\r\n// fs: 6,\r\n// display: 'flex',\r\n// justifySelf: 'end',\r\n// textDecoration: 'underline',\r\n// cursor: 'pointer',\r\n// fontFamily: '$fontSecondary400',\r\n// h: '100%',\r\n// '@mediaMinLarge': {\r\n// fs: 8,\r\n// },\r\n// });\r\n\r\nconst Wrapper = styled('div', {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'space-between',\r\n});\r\n\r\nconst CartContent = styled('div', {\r\n fontWeight: '$fw300',\r\n wh: '100%',\r\n color: '$cartContentTextPrimary',\r\n mt: 0,\r\n});\r\n\r\nconst ProductListWrapper = styled('div', {});\r\n\r\nconst Main = styled('div', {\r\n backgroundColor: '$cartArticlesBackgroundPrimary',\r\n height: 'auto',\r\n});\r\n\r\nconst HeadingStyle = {\r\n mb: 3,\r\n mt: 0,\r\n};\r\n\r\nconst MountAccessory = styled('div', {\r\n width: '100%',\r\n my: 4,\r\n py: 2,\r\n px: 4,\r\n '@mediaMinLarge': { px: 8 },\r\n});\r\n\r\nconst MountAccessoryInner = styled('button', {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n backgroundColor: '$primary2',\r\n gap: 4,\r\n width: '100%',\r\n py: 2,\r\n px: 4,\r\n});\r\n\r\nexport default OrderSummary;\r\n","import KexCartModel from 'Models/Cart/KexCartModel.interface';\r\nimport { useEffect, useState } from 'react';\r\nimport { EventDispatcher, NOTIFY_ACTION } from 'Shared/Common/EventDispatcher';\r\nimport Fetcher from 'Shared/Common/Fetcher';\r\nimport { IS_PRODUCTION_ENV } from 'Shared/Configs/EnvConfig';\r\nimport { useAppSettingsData } from 'Shared/Providers/AppSettingsProvider';\r\nimport useSWR, { mutate } from 'swr';\r\nimport { ProductType } from '../../Enums/ProductType.enum';\r\n\r\nlet abortController: AbortController = new AbortController();\r\nlet hasMounted = false;\r\nexport let cartUrl = '/api/cart/';\r\n\r\ntype CartLoading = {\r\n cart: KexCartModel | null;\r\n isLoading: true;\r\n isCartEmpty: true;\r\n hasMotorCycle: false;\r\n triggerRevalidation: () => void;\r\n};\r\n\r\ntype CartNotLoading = {\r\n cart: KexCartModel;\r\n isLoading: false;\r\n isCartEmpty: boolean;\r\n hasMotorCycle: boolean;\r\n triggerRevalidation: () => void;\r\n};\r\n\r\ntype CartReturnType = CartLoading | CartNotLoading;\r\n\r\nexport function GetCart(languageRoute: string): CartReturnType {\r\n const [returnType, setReturnType] = useState({\r\n cart: null,\r\n isLoading: true,\r\n isCartEmpty: true,\r\n hasMotorCycle: false,\r\n triggerRevalidation: () => {},\r\n });\r\n const { pageCacheTime } = useAppSettingsData();\r\n const { data: fetchedCart, mutate } = useSWR(\r\n `${cartUrl}GetCart?language=` + languageRoute,\r\n (url) => {\r\n return FetchCart(url);\r\n },\r\n {\r\n fallbackData: undefined,\r\n revalidateOnFocus: IS_PRODUCTION_ENV,\r\n dedupingInterval: pageCacheTime,\r\n }\r\n );\r\n\r\n useEffect(() => {\r\n if (!hasMounted) {\r\n hasMounted = true;\r\n } else {\r\n if (fetchedCart) {\r\n setReturnType({\r\n cart: fetchedCart,\r\n isLoading: false,\r\n isCartEmpty: fetchedCart.numberOfItems === 0,\r\n hasMotorCycle: !!fetchedCart.lineItems?.some(\r\n (item) => item.productType === ProductType.MOTORCYCLES\r\n ),\r\n triggerRevalidation: () => mutate(fetchedCart),\r\n });\r\n }\r\n }\r\n }, [fetchedCart, mutate]);\r\n\r\n return returnType;\r\n}\r\n\r\nexport async function RemoveFromCart(\r\n productCode: string,\r\n languageRoute: string\r\n) {\r\n const queryParams = {\r\n language: languageRoute,\r\n code: productCode,\r\n };\r\n\r\n const queryString = new URLSearchParams(queryParams).toString();\r\n\r\n const res = await fetch(`${cartUrl}RemoveItem?${queryString}`, {\r\n method: 'DELETE',\r\n headers: { 'Content-Type': 'application/json' },\r\n });\r\n\r\n if (res.ok) {\r\n const { cart, notification } = await res.json();\r\n EventDispatcher.dispatch(NOTIFY_ACTION, notification);\r\n mutate(`${cartUrl}GetCart?language=` + languageRoute, cart, false);\r\n }\r\n}\r\n\r\nexport async function UpdateCart(\r\n productCode: string,\r\n quantity: number,\r\n languageRoute: string\r\n) {\r\n const queryParams = {\r\n language: languageRoute,\r\n code: productCode,\r\n quantity: quantity.toString(),\r\n };\r\n\r\n const queryString = new URLSearchParams(queryParams).toString();\r\n\r\n const res = await fetch(`${cartUrl}Update?${queryString}`, {\r\n method: 'PUT',\r\n headers: { 'Content-Type': 'application/json' },\r\n });\r\n if (res.ok) {\r\n const { cart, notification } = await res.json();\r\n EventDispatcher.dispatch(NOTIFY_ACTION, notification);\r\n mutate(`${cartUrl}GetCart?language=` + languageRoute, cart, false);\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport async function SetQuantity(\r\n productCode: string,\r\n quantity: number,\r\n languageRoute: string,\r\n belongsTo?: string\r\n) {\r\n let queryParams: { [key: string]: string } = {\r\n language: languageRoute,\r\n code: productCode,\r\n quantity: quantity.toString(),\r\n };\r\n\r\n if (belongsTo) {\r\n queryParams = { ...queryParams, belongsTo };\r\n }\r\n\r\n const queryString = new URLSearchParams(queryParams).toString();\r\n\r\n const res = await fetch(`${cartUrl}SetQuantity?${queryString}`, {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n });\r\n if (res.ok) {\r\n const { cart, notification } = await res.json();\r\n EventDispatcher.dispatch(NOTIFY_ACTION, notification);\r\n mutate(`${cartUrl}GetCart?language=` + languageRoute, cart, false);\r\n }\r\n}\r\n\r\nexport async function UpdateQuantity(\r\n productCode: string,\r\n quantity: number,\r\n languageRoute: string,\r\n belongsTo?: string\r\n) {\r\n let queryParams: { [key: string]: string } = {\r\n language: languageRoute,\r\n code: productCode,\r\n quantity: quantity.toString(),\r\n };\r\n\r\n if (belongsTo) {\r\n queryParams = { ...queryParams, belongsTo };\r\n }\r\n\r\n const queryString = new URLSearchParams(queryParams).toString();\r\n\r\n const res = await fetch(`${cartUrl}Update?${queryString}`, {\r\n method: 'PUT',\r\n headers: { 'Content-Type': 'application/json' },\r\n });\r\n if (res.ok) {\r\n const { cart, notification } = await res.json();\r\n EventDispatcher.dispatch(NOTIFY_ACTION, notification);\r\n mutate(`${cartUrl}GetCart?language=` + languageRoute, cart, false);\r\n }\r\n}\r\n\r\nexport async function EmptyCart(languageRoute: string) {\r\n mutate(`${cartUrl}GetCart`, { numberOfItems: 0 } as KexCartModel, false);\r\n\r\n const res = await fetch(`${cartUrl}RemoveAllItems`, {\r\n method: 'DELETE',\r\n });\r\n\r\n if (res.ok) {\r\n const { cart, notification } = await res.json();\r\n\r\n EventDispatcher.dispatch(NOTIFY_ACTION, notification);\r\n\r\n mutate(`${cartUrl}GetCart?language=` + languageRoute, cart, false);\r\n }\r\n}\r\n\r\nexport async function FetchCartAndNotifyAll(languageRoute: string) {\r\n const res = await fetch(`${cartUrl}GetCart?language=` + languageRoute, {\r\n method: 'GET',\r\n headers: { 'Content-Type': 'application/json' },\r\n });\r\n\r\n if (res.ok) {\r\n const { cart } = await res.json();\r\n mutate(`${cartUrl}GetCart?language=` + languageRoute, cart, false);\r\n }\r\n}\r\n\r\nexport async function ApplyMountingCost(\r\n languageRoute: string,\r\n isApply: boolean\r\n) {\r\n const res = await fetch(\r\n `${cartUrl}ApplyMountingCosts?cartName=Default&apply=${isApply}&language=${languageRoute}`,\r\n {\r\n method: 'PUT',\r\n headers: { 'Content-Type': 'application/json' },\r\n }\r\n );\r\n\r\n if (res.ok) {\r\n const { cart } = await res.json();\r\n mutate(`${cartUrl}GetCart?language=` + languageRoute, cart, false);\r\n }\r\n}\r\n\r\nfunction FetchCart(url: string) {\r\n abortController.abort();\r\n abortController = new AbortController();\r\n const signal = abortController.signal;\r\n\r\n return Fetcher(url, signal, (data, resolve) => {\r\n resolve(data.cart);\r\n });\r\n}\r\n"],"names":["ProductType","Payment","styled","mt","fw","color","w","PriceColumn","display","justifyContent","px","mb","variants","isDiscount","true","PaymentInformation","backgroundColor","position","t","totalVATPrice","totalPrice","totalFreightPrice","totalPriceForItems","hasReachedFreeFreight","renderPromotions","shippingOptionId","isOrderConfirmation","useTranslationData","checkoutLabels","sumItems","vat","total","shipping","freeShipping","isFreeShipping","priceRoundedAsString","H4","SingleOptionCardContainer","flexDirection","alignItems","width","borderWidth","borderColor","transition","timings","animation","isActive","isError","SingleOptionCardContent","SingleOptionCardRadio","radioBg","main","secondary","image","content","onClick","e","preventDefault","css","mr","isChecked","onChange","radioBackgroundColor","cssButton","setIsAuthenticating","setBankIdQrCode","setBankIdPollStatus","setIsOpenBankId","setIntervalId","accountLabels","isDesktop","useMedia","mediaQueryTypes","languageRoute","useAppSettingsData","kexBankIdNavigate","url","window","location","href","openBankIdTypeIdentify","bankIdModel","forceLogout","useSameDevice","language","Authenticate","retval","pollBankIdCollectIdentify","startQRCodeTypeIdentify","InitiateBankIdQRCode","response","orderRef","pollBankIdOnce","pollIdentifyBankId","status","clearInterval","pollingIntervalId","setInterval","Button","type","BankIdIcon","bankIdOnMobileDevice","openBankId","AccountWrapper","maxWidth","RegisterParagraph","ErrorText","fontFamily","letterSpacing","lineHeight","fs","textAlign","ErrorTextWrapper","marginBottom","gap","continueAsGuest","setContinueAsGuest","errorLabels","useUserStateData","user","authenticated","isLoggedWithBankId","GetCart","cart","isCartEmpty","hasMotorCycle","useState","isAuthenticating","isAuthFailed","setIsAuthFailed","userAlreadyExists","setUserAlreadyExists","bankIdQrCode","bankIdPollStatus","isOpenBankId","intervalId","ModalName","currentView","setView","useEffect","toLocaleLowerCase","BankIdAuthAborted","InfoIcon","space","size","errorBankIdExistingUser","bankIdAuthInterrupted","CheckoutSection","H3","identifyWithBankId","inputBackground","BankIdAuthentication","createAccount","Paragraph","checkoutAccountRegisterBodyText","BankIdRegisterForm","setConfirmedEmail","includedMotorcycle","fullWidth","SwitchToLoginView","switchView","signIn","BankIdLoginForm","SwitchToRegisterView","TextWrapper","useCurrentPage","insuranceHeading","insuranceBody","XHtmlArea","PaymentMethods","values","currentSelected","setSelectedValue","placeholderLabel","isOpen","setIsOpen","ref","useRef","useOutsideClick","getAgentValues","agent","filter","id","isEmpty","name","address","city","DropDownContainer","DropDownHeader","CurrentValue","m","transform","DropDownChildren","length","map","value","index","DropDownItem","DropDownItemLabel","RadioButton","useAbsolute","minHeight","text","h","py","cursor","p","border","opacity","overflow","top","zIndex","boxShadow","pb","textDecoration","wordSpacings","ls","wordSpacing","GetDeliveryMethodUsingZipcode","zipCode","onState","setDeliveryOptions","fetch","method","headers","then","res","ok","Error","json","data","catch","err","console","error","UpdateCartWithDeliveryInfo","deliveryData","setValidationMessage","body","JSON","stringify","validationResult","success","FetchCartAndNotifyAll","payExStyling","input","focus","label","link","button","font","secondaryButton","PaymentProviders","setOnState","checkoutPage","staticPages","orderAbortController","AbortController","createOrder","useCallback","endpoint","abort","signal","aborted","Response","verifyOrder","paymentId","initPayment","kexNavigate","useKexNavigate","onCompleteQueue","verifyPayEx","code","purchaseOrderId","EmptyCart","redirectUrl","initPayEx","payex","hostedView","creditCard","container","PayEx","onPaymentCompleted","paymentCompletedEvent","current","indexOf","push","onPaymentFailed","paymentFailedEvent","onError","style","open","openPayEx","args","payExUrlResponse","src","onLoad","document","getElementById","s","createElement","head","appendChild","addEventListener","errorHeader","errorDescription","FlexContainer","H6","addressPayload","currentPaymentMethod","onChangePaymentMethod","setErrorTermsConditions","acceptedTermsConditions","translations","cardPayment","cardPaymentDescription","tryAgain","technicalError","technicalErrorDescription","availablePaymentMethods","cleanupPayExElements","payExWidgetElement","remove","firstChild","removeChild","paymentType","payEx","SingleOptionCard","loadPayExWidget","PaymentIcon","PaymentContent","PaymentHeading","PaymentSubHeading","PaymentContainer","isWidgetHidden","ErrorTextContainer","marginTop","minH","pl","pt","false","height","padding","klarnaWidgetStyling","color_border","color_border_selected","color_details","color_text","radius_border","KlarnaPayment","getTransformedKlarnaPayload","orderPayload","sameAsShippingAddress","toLowerCase","given_name","shippingName","family_name","shippingLastName","email","street_address","shippingAddress","postal_code","shippingPostalCode","shippingCity","phone","phoneNumber","country","billingName","billingLastName","billingAddress","billingPostalCode","billingCity","purchase_country","purchase_currency","locale","billing_address","shipping_address","order_amount","order_tax_amount","order_lines","customer","national_identification_number","personalNumber","initSDK","clientToken","Klarna","Payments","init","client_token","loadWidget","klarnaPayload","load","payment_method_category","options","klarnaAuthToken","successCallback","errorCallback","apiUrl","threeLetterMarketCountryCode","billingCountry","shippingCountry","authorizationToken","authorize","approved","KlarnaWidgetContainer","ErrorContainer","klarnaPaymentList","errorCreateOrder","setErrorCreateOrder","marketCountryThreeLetterCountryCode","orderError","purchase","KlarnaHelpers","authorizeKlarnaWidget","payment","loadKlarnaWidget","identifier","assetUrls","alt","disabled","getInputRange","background","min","max","step","controlled","onNewValue","Number","parseInt","currentTarget","InputRange","useMemo","defaultValue","formatPaymentDetails","templateString","santander","numberOfMonths","keys","rent","interestRateFrom","effectiveRent","effectiveInterestRateFrom","monthlyCost","monthlyPayment","loanAmount","financedAmount","loanTotalAmount","totalPayment","output","Object","entries","key","replaceAll","SantanderPaymentComponent","initialSantander","termsAccepted","subTotal","isTradeIn","setErrorTermsAccepted","tradeInDiscount","errorMessage","setErrorMessage","santanderModel","setSantanderModel","useReducer","downPaymentMin","downPaymentMax","state","clampedValue","Math","inputText","toString","valid","parsedValue","downPayment","dispatch","termsInMonth","setTermsInMonth","calculatingLoan","setCalculatingFinancialLoan","processingPayment","setProcessPayment","debouncedDownPayment","useDebounce","debouncedTermsInMonth","currency","santanderButtonText","santanderDownPayment","santanderNumberOfMonths","santanderPaymentDetails","santanderMonthlyCost","santanderPaymentFailed","santanderNotApproved","santanderTooSmallDownpayment","tradeInDiscountAmount","tradeInDownPaymentAfterDiscount","isFetchPayments","calculateModel","newModel","find","a","paymentMethodModelType","finally","processPayment","financingApproved","Container","Left","campaignName","DownPaymentWrapper","DownPaymentHeader","DownPaymentCostWrapper","DownPaymentCost","onBlur","el","Currency","SmallErrorText","MonthsHeader","TradeIn","TradeInColumn","TradeInTextLeft","TradeInTextRight","price","toLocaleString","Right","MonthlyCostHeader","MonthlyCost","textColorVariants","LendingDetails","isLoading","BankidIcon","marginRight","fillColor","marginLeft","gridTemplateColumns","columnGap","pr","right","whiteSpace","paddingTop","paddingBottom","outline","gridColumn","appearance","flex","santanderHeader","santanderSubheader","active","Santander","CheckoutPaymentContainer","TermsAndConditions","validFormData","setAcceptedTermsConditions","errorTermsConditions","setCurrentPaymentMethod","termsAndConditionsTextAndLink","setSantander","setKlarnaPaymentList","useKexLoadingCircle","kexLoadingCircleDispatch","changePaymentMethod","from","klarna","d","santanders","undefined","Checkbox","onCheck","subTotalPrice","appliedCouponDiscount","tradeInAmount","onValidation","debouncedAddressPayload","deliveryOptions","currentDeliveryOption","setCurrentDeliveryOption","selectedAgentId","setSelectedAgentId","serviceId","setServiceId","getCurrentDeliveryOptionObject","currentShippingPlaces","option","shippingId","deliveryOptionId","tempDeliveryObj","shippingDeliveryPlaces","deliveryPlaceId","DeliveryMethodContainer","couldNotFindPostalCode","DeliveryOptionsWrapper","DeliveryIcon","DeliveryContent","DeliveryHeading","DeliveryTitle","DeliveryPrice","priceDescription","DeliverySubHeading","shippingOptionText","DeliveryAgentContainer","choosePickupPoint","hasSelectedDeliveryOption","LoadingWrapper","LoadingCircle","paddingRight","paddingLeft","flexWrap","ml","revalidateCart","validationLabels","existingShippingAddress","existingBillingAddress","existingPersonalNumber","setEmail","setPhone","firstName","shippingFirstName","setShippingFirstName","lastName","setShippingLastName","setShippingAddress","setShippingCity","postalCode","setShippingPostalCode","useSameShippingAddress","setUseSameShippingAddress","billingFirstName","setBillingFirstName","setBillingLastName","setBillingAddress","setBillingCity","setBillingPostalCode","setValidFormData","Map","backendValidation","setBackendValidation","verifyPayExPayment","getUrlParameter","validation","clearBackendValidation","newDict","delete","FormContainer","InputValidation","onInputsValid","onInputsInvalid","FormInputContainer","contactInformation","Row","Column","Input","title","placeholder","required","minLength","maxLength","invalidName","get","onTouched","autoComplete","invalidLastName","accountFormValidation","invalidEmail","pattern","invalidPhoneNumber","FormTitle","deliveryAddress","invalidAddress","invalidZipCode","invalidCity","alternativeShippingAddress","mx","AccountModal","loadable","CheckoutPage","accountPage","accountDispatch","account","triggerRevalidation","motorcycleStock","GetMotorcycleStock","isMotorcycleOutOfStock","isInStock","toggle","CheckoutHeader","CheckoutHeaderInner","StyledKexLink","canUseDOM","prevUrl","sessionStorage","getItem","origin","underlined","AccountButton","CheckoutContainer","noPadding","CheckoutWrapper","showModal","userMenuIsOpen","clearTokens","initialModalState","SizeConstants","my","KexLink","CheckoutSectionContainer","children","lastValid","update","ErrorWrapper","invalidDiscount","ClickableText","discountRevert","replace","Discount","discount","existingCartDiscount","couponCode","existingRewardName","rewardName","triggerInput","setTriggerInput","showMore","setShowMore","discountCode","setDiscountCode","setState","lastValidCode","setLastValidCode","newDiscount","startsWith","codeApplied","applyCode","toLocaleUpperCase","wasRewardValid","setDiscountCodeManually","WarningWrapper","discountOverwriteWarning","CouponCodeWrapper","hasCodeApplied","InputWrapper","discountName","upperCase","inputTextColor","showLabel","CloseButton","wh","bgColor","discountButton","DiscountExpander","discountTitle","WebkitTextFillColor","caretColor","gridRowGap","gridColumnGap","StyledEmptyCartTitle","CartContainer","maxW","PaddingWrapper","Wrapper","CartContent","fontWeight","ProductListWrapper","Main","HeadingStyle","MountAccessory","MountAccessoryInner","yourOrder","cartLabels","cartEmptyTitle","cartEmptyDescription","mountingAccessory","loading","commonLabels","lineItems","numberOfItems","mountingCostNowPrice","mountingCostWasPrice","areMountingCostsApplied","canMountingCostBeApplied","promotions","stickyHeaderFix","setStickyHeaderFix","header","adjustForHeaderPosition","bottomOfHeader","getBoundingClientRect","bottom","removeEventListener","isEmptyCart","ProductList","products","allowEdit","isMiniCart","ApplyMountingCost","Price","nowPrice","wasPrice","friendlyNowPrice","friendlyWasPrice","Divider","totalDiscount","i","promotionName","promotionDiscountAmount","abortController","hasMounted","cartUrl","returnType","setReturnType","pageCacheTime","useSWR","Fetcher","resolve","FetchCart","fallbackData","revalidateOnFocus","IS_PRODUCTION_ENV","dedupingInterval","fetchedCart","mutate","some","item","productType","RemoveFromCart","productCode","queryString","URLSearchParams","notification","EventDispatcher","NOTIFY_ACTION","SetQuantity","quantity","belongsTo","queryParams","UpdateQuantity","isApply"],"sourceRoot":""}