{"version":3,"sources":["Shared/Breadcrumb/Breadcrumb.tsx","Shared/Input/KexInputValidation.tsx","LoginPage/Account.ts","Shared/Icons/SignInIcon.tsx","Shared/Input/KexInput.tsx","LoginPage/LoginPage.tsx","Cart/Cart.ts","Shared/CtaButton/CtaButton.tsx","Shared/Icons/HeartIcon.tsx","Shared/Icons/ArrowRightIcon.tsx","Shared/Icons/AccountIcon.tsx","Shared/Icons/SearchIcon.tsx","Shared/Icons/CartIcon.tsx","Shared/Icons/MenuIcon.tsx","Shared/Icons/GlobeIcon.tsx","Shared/Icons/Logo.tsx","Shared/Icons/LogoWhite.tsx","Shared/Icons/ProfileIconFilled.tsx","Shared/Icons/LoadingCircle.tsx","Shared/Icons/ExclamationMarkIcon.tsx","Shared/Icons/index.ts","Shared/Icons/ContactIcon.tsx","Shared/Icons/ProfileIcon.tsx"],"names":["BreadcrumbContainer","styled","div","position","top","theme","desktopHeaderHeight","fontSize","beta","left","right","margin","x","maxWidth","screenMaxWidth","width","paddingTop","alignItems","display","paddingLeft","lineHeight","letterSpacing","SelectedSpan","span","fontWeight","bold","LinkText","textDecoration","BreadcrumbLink","KexLink","opacity","color","breadText","Seperator","normal","Breadcrumb","breadcrumb","useMedia","mediaQuery","mediaMinLarge","map","link","index","length","key","text","href","reducer","state","action","type","newInputs","inputs","newCount","count","undefined","name","payload","hasOwnProperty","ValidationDispatchContext","React","createContext","initialReducerState","KexInputValidation","children","onInputsValid","onInputsInvalid","useReducer","dispatch","useEffect","validCount","hasTouched","hasValue","hasError","Provider","value","useKexInputValidation","useContext","SignIn","userCredentials","requestToken","channelId","setError","setValidationMessage","setIsLoading","myPageUrl","a","accountUrl","language","fetch","method","headers","JSON","stringify","channelSystemId","RequestVerificationToken","body","res","json","data","statusCode","updateRequestVerificationToken","updateHeader","updateUserState","message","SignOut","languageRoute","EmptyCart","redirectUrl","window","location","compose","Svg","css","viewBox","xmlns","fillRule","clipRule","d","InputGroup","FormLabel","label","font","size","large","middleGray","FormInput","input","height","massive","padding","borderRadius","border","xy","style","tiny","veryLightGray","pseudo","spacing","media","FormInputError","errorPrimary","FormLabelError","errorText","title","onChange","onBlur","onKeyDown","validation","isEmpty","showLabel","validationDispatch","useState","setHasError","errorMessage","setErrorMessage","setHasTouched","setHasValue","onInputBlur","e","currentValue","validationError","active","pattern","test","required","minLength","maxLength","doValidation","currentTarget","backendValidation","data-notempty","placeholder","onFocus","onTouched","LoginPage","useCurrentPage","loginText","forgotPasswordText","password","setPassword","username","setUsername","isLoading","error","validationMessage","useAppSettingsData","translations","signInLabel","usernameLabel","passwordLabel","forgotLoginLabel","customerContactPhone","customerContactEmail","myPage","staticPages","email","userName","newPassword","disabled","signInUser","emailLink","Main","PageWrapper","FormContainer","FormTitleContainer","StyledSignInIcon","FromTitle","FromDetailText","ValidationMessage","IconStyleError","ErrorMessage","StyledKexInput","LoginButton","onClick","StyledLoadingCircle","ForgottenLogIn","ForgottenLonInText","InformationStringLink","main","mediaMaxSmall","backgroundColor","white","bottom","LoadingCircle","gamma","marginRight","medium","marginTop","small","marginBottom","KexInput","SignInIcon","fill","black","psi","weight","lighter","mediaMinSmall","y","h1","marginLeft","great","p","relaxed","huge","flexGrow","flexShrink","flexBasis","CtaButton","textTransform","primaryBlue","minHeight","greater","flexDirection","linkColor","cursor","abortController","AbortController","hasMounted","cartUrl","litiumContext","requestVerificationToken","GetCart","cart","setCart","pageCacheTime","fectchedCart","useSWR","url","abort","signal","Fetcher","resolve","FetchCart","initialData","revalidateOnFocus","IS_PRODUCTION_ENV","dedupingInterval","RemoveFromCart","productCode","ok","notification","EventDispatcher","NOTIFY_ACTION","mutate","UpdateCart","quantity","bookingNumber","updateQuantity","SetQuantity","Button","button","alpha","justifyContent","primaryDarkBlue","headerIconGray","Link","ButtonText","asLink","data-disabled","id","mask-type","maskUnits","mask","G","Path","isOpen","TopPathOut","TopPathIn","transform","CenterPathOut","CenterPathIn","BottomPathOut","BottomPathIn","CrossG","animationCrossIn","animationCrossOut","animationDuration","timings","threeTenths","animationMenuPathsIn","animationName","from","to","animationFillMode","animationMenuPathsOut","animationDelay","twoFifths","oneHalf","threeFifths","oneFifth","oneTenth","path","g","transformOrigin","StyledSvg","Circle","LoadingStyles","cx","cy","r","oneAndAHalf","animationTimingFunction","animationIterationCount","stroke","strokeWidth","strokeDashoffset","strokeDasharray","svg","overflow","fill-rule"],"mappings":"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","file":"Dist/build-client/static/js/LoginPage-LoginPage.9176445c.chunk.js","sourcesContent":["import React from 'react';\r\nimport KexLink from '../../Shared/KexLink/KexLink';\r\nimport { styled, theme } from '../../../Features/Theme';\r\nimport Link from '../../Shared/Models/Link.interface';\r\nimport useMedia from '../Hooks/useMedia';\r\n\r\ntype PropTypes = {\r\n breadcrumb: Link[];\r\n};\r\n\r\nfunction Breadcrumb({ breadcrumb }: PropTypes) {\r\n const isDesktop = useMedia(theme.mediaQuery.mediaMinLarge);\r\n return isDesktop ? (\r\n \r\n {breadcrumb.map((link, index) =>\r\n breadcrumb.length === index + 1 ? (\r\n \r\n {link.text}\r\n
\r\n ) : (\r\n \r\n {link.text}\r\n / \r\n \r\n )\r\n )}\r\n \r\n ) : (\r\n <>>\r\n );\r\n}\r\n\r\nconst BreadcrumbContainer = styled.div({\r\n position: 'absolute',\r\n top: theme.desktopHeaderHeight,\r\n fontSize: theme.beta,\r\n left: 0,\r\n right: 0,\r\n margin: { x: 'auto' },\r\n maxWidth: theme.screenMaxWidth,\r\n width: '100%',\r\n paddingTop: '18px',\r\n alignItems: 'center',\r\n display: 'flex',\r\n paddingLeft: '32px',\r\n lineHeight: 1.33,\r\n letterSpacing: 0.45,\r\n});\r\n\r\nconst SelectedSpan = styled.span({\r\n fontWeight: theme.fontWeight.bold,\r\n lineHeight: 1.33,\r\n});\r\n\r\nconst LinkText = styled.span({\r\n textDecoration: 'underline',\r\n});\r\n\r\nconst BreadcrumbLink = styled(KexLink, {\r\n display: 'flex',\r\n opacity: 0.9,\r\n color: theme.breadText,\r\n});\r\n\r\nconst Seperator = styled.span({\r\n margin: { x: '6px' },\r\n fontWeight: theme.fontWeight.normal,\r\n textDecoration: 'none',\r\n});\r\n\r\nexport default Breadcrumb;\r\n","import React, { useEffect, useReducer } from 'react';\r\n\r\ntype ValidationPropType = {\r\n children: React.ReactNode;\r\n onInputsValid?: Function;\r\n onInputsInvalid?: Function;\r\n};\r\n\r\ntype ValidationAction = {\r\n type: string;\r\n name?: string;\r\n payload: ValidationPayload;\r\n};\r\n\r\ntype ValidationPayload = {\r\n hasTouched?: boolean;\r\n hasError?: boolean;\r\n hasValue?: boolean;\r\n};\r\n\r\nexport type BackendValidation = {\r\n message: string;\r\n code: number;\r\n};\r\n\r\nexport type ValidationDictionary = {\r\n [key: string]: T;\r\n};\r\n\r\nexport type ValidationParams = {\r\n active?: boolean;\r\n\r\n required?: boolean;\r\n minLength?: number;\r\n maxLength?: number;\r\n pattern?: RegExp;\r\n\r\n errorMessage?: string;\r\n validationKey?: string;\r\n\r\n backendValidation?: BackendValidation;\r\n onTouched?: Function;\r\n};\r\n\r\nconst reducer = (\r\n state: { count: number; inputs: ValidationDictionary },\r\n action: ValidationAction\r\n) => {\r\n switch (action.type) {\r\n case 'register': {\r\n const newInputs = { ...state.inputs };\r\n let newCount = state.count;\r\n\r\n if (action.name !== undefined) {\r\n newInputs[action.name] = action.payload;\r\n newCount = state.count + 1;\r\n }\r\n\r\n return {\r\n count: newCount,\r\n inputs: { ...newInputs },\r\n };\r\n }\r\n case 'unregister': {\r\n const count = state.count - 1;\r\n const newInputs = { ...state.inputs };\r\n\r\n if (action.name !== undefined && newInputs.hasOwnProperty(action.name)) {\r\n delete newInputs[action.name];\r\n }\r\n\r\n return {\r\n count: count < 0 ? 0 : count,\r\n inputs: { ...newInputs },\r\n };\r\n }\r\n default: {\r\n return state;\r\n }\r\n }\r\n};\r\n\r\nconst ValidationDispatchContext = React.createContext({});\r\n\r\nconst initialReducerState = {\r\n count: 0,\r\n inputs: {},\r\n};\r\n\r\nfunction KexInputValidation({\r\n children,\r\n onInputsValid,\r\n onInputsInvalid,\r\n}: ValidationPropType) {\r\n const [{ count, inputs }, dispatch] = useReducer(\r\n reducer,\r\n initialReducerState\r\n );\r\n\r\n useEffect(() => {\r\n let validCount = 0;\r\n\r\n if (count > 0) {\r\n for (const key in inputs) {\r\n if (inputs.hasOwnProperty(key)) {\r\n const payload = inputs[key];\r\n\r\n if (payload.hasTouched && payload.hasValue && !payload.hasError) {\r\n validCount++;\r\n }\r\n }\r\n }\r\n\r\n if (validCount === count) {\r\n onInputsValid && onInputsValid();\r\n } else {\r\n onInputsInvalid && onInputsInvalid();\r\n }\r\n }\r\n }, [count, onInputsValid, onInputsInvalid, inputs]);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nconst useKexInputValidation: () => React.Dispatch = () => {\r\n return React.useContext(ValidationDispatchContext) as React.Dispatch<\r\n ValidationAction\r\n >;\r\n};\r\n\r\nexport { useKexInputValidation, KexInputValidation };\r\n","import UserCredentials from '../LoginPage/Models/UserCredentials.interface';\r\nimport { updateHeader } from '../Shared/Models/Headers/useQueryHeader';\r\nimport { updateUserState } from '../Shared/UserContextProvider/useQueryUserState';\r\nimport { EmptyCart } from '../Cart/Cart';\r\n\r\nexport async function SignIn(\r\n userCredentials: UserCredentials,\r\n requestToken: string,\r\n channelId: string,\r\n setError: (value: boolean) => void,\r\n setValidationMessage: (value: string) => void,\r\n setIsLoading: (value: boolean) => void,\r\n myPageUrl: string\r\n) {\r\n setIsLoading(true);\r\n setError(false);\r\n setValidationMessage('');\r\n const accountUrl = `/api/${userCredentials.language}/account/`;\r\n const res = await fetch(`${accountUrl}SignIn`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'litium-request-context': JSON.stringify({\r\n channelSystemId: channelId,\r\n }),\r\n RequestVerificationToken: requestToken,\r\n },\r\n body: JSON.stringify(userCredentials),\r\n });\r\n const data = await res.json();\r\n\r\n if (data.statusCode === 200) {\r\n await updateRequestVerificationToken(userCredentials.language, myPageUrl);\r\n await updateHeader();\r\n await updateUserState();\r\n } else {\r\n setError(true);\r\n setValidationMessage(data.message);\r\n }\r\n setIsLoading(false);\r\n}\r\n\r\nexport async function SignOut(languageRoute: string, requestToken: string) {\r\n const accountUrl = `/api/${languageRoute}/account/`;\r\n const res = await fetch(`${accountUrl}SignOut`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n RequestVerificationToken: requestToken,\r\n },\r\n });\r\n const data = await res.json();\r\n\r\n if (data.statusCode === 200) {\r\n await updateRequestVerificationToken(languageRoute);\r\n await EmptyCart(languageRoute);\r\n await updateHeader();\r\n await updateUserState();\r\n }\r\n}\r\n\r\nexport async function ForgotPassword(\r\n userName: string,\r\n requestToken: string,\r\n languageRoute: string,\r\n channelId: string,\r\n setError: (value: boolean) => void,\r\n setValidationMessage: (value: string) => void,\r\n kexNavigate: (value: string) => void\r\n) {\r\n const accountUrl = `/api/${languageRoute}/account/`;\r\n const res = await fetch(`${accountUrl}ForgotPassword?userName=${userName}`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'litium-request-context': JSON.stringify({\r\n channelSystemId: channelId,\r\n }),\r\n RequestVerificationToken: requestToken,\r\n },\r\n });\r\n const data = await res.json();\r\n\r\n if (data.statusCode === 200) {\r\n updateHeader();\r\n updateUserState();\r\n kexNavigate(data.redirectUrl);\r\n } else {\r\n setError(true);\r\n setValidationMessage(data.message);\r\n }\r\n}\r\n\r\nexport async function ChangePassword(\r\n userCredentials: UserCredentials,\r\n requestToken: string,\r\n languageRoute: string,\r\n channelId: string,\r\n setError: (value: boolean) => void,\r\n setValidationMessage: (value: string) => void,\r\n kexNavigate: (value: string) => void\r\n) {\r\n const accountUrl = `/api/${languageRoute}/account/`;\r\n const res = await fetch(`${accountUrl}ChangePassword`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'litium-request-context': JSON.stringify({\r\n channelSystemId: channelId,\r\n }),\r\n RequestVerificationToken: requestToken,\r\n },\r\n body: JSON.stringify(userCredentials),\r\n });\r\n const data = await res.json();\r\n\r\n if (data.statusCode === 200) {\r\n updateHeader();\r\n updateUserState();\r\n kexNavigate(data.redirectUrl);\r\n } else {\r\n setError(true);\r\n setValidationMessage(data.message);\r\n }\r\n}\r\n\r\nasync function updateRequestVerificationToken(\r\n languageRoute: string,\r\n redirectUrl?: string\r\n) {\r\n const accountUrl = `/api/${languageRoute}/account/`;\r\n const res = await fetch(`${accountUrl}UpdateRequestVerificationToken`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n });\r\n const data = await res.json();\r\n window.location.href = `${redirectUrl ? redirectUrl : data.redirectUrl}`;\r\n}\r\n","import React from 'react';\r\nimport { styled } from '../../Theme';\r\nimport { StyledProps } from '@glitz/react';\r\n\r\nfunction SignInIcon({ compose }: StyledProps) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default styled(SignInIcon);\r\n","import React, { useEffect, useState } from 'react';\r\nimport { theme } from '../../Theme';\r\nimport { media, pseudo } from '@glitz/core';\r\nimport { StyleOrStyleArray } from '@glitz/type';\r\nimport { styled, StyledProps } from '@glitz/react';\r\nimport { useKexInputValidation, ValidationParams } from './KexInputValidation';\r\n\r\ntype KexInputValidationType = {\r\n validation?: ValidationParams;\r\n};\r\n\r\ntype KexInputType = StyledProps &\r\n KexInputValidationType & {\r\n onChange?: (value: string) => void;\r\n onBlur?: (value: string) => void;\r\n onKeyDown?: (event: React.KeyboardEvent) => void;\r\n title: string;\r\n type?: string;\r\n name?: string;\r\n isEmpty?: boolean;\r\n showLabel?: boolean;\r\n };\r\n\r\nconst KexInput = ({\r\n title,\r\n type = 'text',\r\n onChange,\r\n onBlur,\r\n onKeyDown,\r\n compose,\r\n name,\r\n validation,\r\n isEmpty,\r\n showLabel = true,\r\n}: KexInputType) => {\r\n const validationDispatch = useKexInputValidation();\r\n\r\n const [hasError, setHasError] = useState(false);\r\n const [errorMessage, setErrorMessage] = useState('');\r\n const [hasTouched, setHasTouched] = useState(false);\r\n const [hasValue, setHasValue] = useState(false);\r\n\r\n const doValidation = (currentValue: string) => {\r\n if (!!validation) {\r\n const errorMessage = validation.errorMessage || '';\r\n let validationError = false;\r\n\r\n if (validation.active !== undefined && !validation.active) {\r\n return;\r\n }\r\n\r\n if (validation.pattern) {\r\n if (!validation.pattern.test(currentValue)) {\r\n validationError = true;\r\n }\r\n } else if (validation.required) {\r\n if (!currentValue) {\r\n validationError = true;\r\n }\r\n } else if (validation.minLength) {\r\n if (\r\n !currentValue ||\r\n (currentValue && currentValue.length < validation.minLength)\r\n ) {\r\n validationError = true;\r\n }\r\n } else if (validation.maxLength) {\r\n if (currentValue && currentValue.length > validation.maxLength) {\r\n validationError = true;\r\n }\r\n }\r\n\r\n if (validationError) {\r\n setHasError(true);\r\n setErrorMessage(errorMessage);\r\n }\r\n\r\n setHasValue(!!currentValue);\r\n }\r\n };\r\n\r\n const onInputBlur = (e: React.FocusEvent) => {\r\n const currentValue: string = e.currentTarget.value;\r\n\r\n doValidation(currentValue);\r\n onBlur && onBlur(e.currentTarget.value);\r\n };\r\n\r\n const onInputFocus = (e: React.FocusEvent) => {\r\n if (!!validation && validation.onTouched) {\r\n validation.onTouched(name); // TODO: Refactor? While it's okay to use callbacks since they was passed down, I don't like the fact\r\n }\r\n\r\n setHasError(false);\r\n setHasTouched(true);\r\n };\r\n\r\n useEffect(() => {\r\n validationDispatch({\r\n type: 'register',\r\n name: name,\r\n payload: {\r\n hasTouched: hasTouched,\r\n hasError: hasError,\r\n hasValue: hasValue,\r\n },\r\n });\r\n\r\n if (!!validation) {\r\n if (validation.backendValidation) {\r\n setHasError(true);\r\n setErrorMessage(validation.backendValidation.message);\r\n }\r\n }\r\n\r\n return () => {\r\n validationDispatch({ type: 'unregister', name: name, payload: {} });\r\n };\r\n }, [validationDispatch, name, hasTouched, hasError, hasValue, validation]);\r\n\r\n return (\r\n \r\n {!isEmpty && showLabel && (\r\n \r\n {hasError ? errorMessage : title}\r\n \r\n )}\r\n {\r\n onChange && onChange(e.currentTarget.value);\r\n }}\r\n onBlur={e => {\r\n onInputBlur(e);\r\n }}\r\n onKeyDown={e => {\r\n onKeyDown && onKeyDown(e);\r\n }}\r\n onFocus={e => {\r\n onInputFocus(e);\r\n }}\r\n name={name}\r\n />\r\n \r\n );\r\n};\r\n\r\nconst InputGroup = styled.div({\r\n position: 'relative',\r\n});\r\n\r\nconst FormLabel = styled.label({\r\n font: { size: theme.large },\r\n letterSpacing: '0.02em',\r\n position: 'absolute',\r\n top: '12px',\r\n left: '26px',\r\n color: theme.middleGray,\r\n});\r\n\r\nconst FormInput = styled.input({\r\n font: { size: theme.beta },\r\n width: '100%',\r\n height: theme.massive,\r\n padding: { x: '25px' },\r\n borderRadius: '8px',\r\n border: {\r\n xy: {\r\n style: 'solid',\r\n width: theme.tiny,\r\n color: theme.veryLightGray,\r\n },\r\n },\r\n ...pseudo([':nth-child(n)[data-notempty=\"true\"]'], {\r\n paddingTop: theme.spacing(3),\r\n }),\r\n ...media(theme.mediaQuery.mediaMinLarge, {\r\n width: '100%',\r\n }),\r\n});\r\n\r\nconst FormInputError: StyleOrStyleArray = {\r\n border: {\r\n xy: {\r\n color: theme.errorPrimary,\r\n },\r\n },\r\n};\r\n\r\nconst FormLabelError: StyleOrStyleArray = {\r\n color: theme.errorText,\r\n};\r\n\r\nexport default styled(KexInput);\r\n","import React, { useState } from 'react';\r\nimport LoginPagePageModel from './Models/LoginPageModel.interface';\r\nimport useCurrentPage from '../Shared/Hooks/useCurrentPage';\r\nimport { styled, theme } from '../Theme';\r\nimport { media } from '@glitz/core';\r\nimport KexInput from '../Shared/Input/KexInput';\r\nimport { KexInputValidation } from '../Shared/Input/KexInputValidation';\r\nimport { SmallButton } from '../Shared/Button/Button';\r\nimport { ErrorIcon, LoadingCircle } from '../Shared/Icons';\r\nimport { StyleOrStyleArray } from '@glitz/type';\r\nimport { SignIn } from '../LoginPage/Account';\r\nimport { useAppSettingsData } from '../Shared/AppSettingsProvider/AppSettingsProvider';\r\nimport UserCredentials from '../LoginPage/Models/UserCredentials.interface';\r\nimport Breadcrumb from '../Shared/Breadcrumb/Breadcrumb';\r\nimport { mediaQuery } from '../Theme/mediaQueries';\r\nimport SignInIcon from '../Shared/Icons/SignInIcon';\r\nimport CtaButton from '../Shared/CtaButton/CtaButton';\r\nimport KexLink from '../Shared/KexLink/KexLink';\r\n\r\nfunction LoginPage() {\r\n const {\r\n loginText,\r\n forgotPasswordText,\r\n channelId,\r\n breadcrumb,\r\n } = useCurrentPage();\r\n\r\n const [password, setPassword] = useState('');\r\n const [username, setUsername] = useState('');\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [error, setError] = useState(false);\r\n const [validationMessage, setValidationMessage] = useState('');\r\n\r\n const {\r\n translations: {\r\n 'account/signIn': signInLabel,\r\n 'account/username': usernameLabel,\r\n 'account/password': passwordLabel,\r\n 'account/forgotLogin': forgotLoginLabel,\r\n 'customerInfo/customerContactPhone': customerContactPhone,\r\n 'customerInfo/customerContactEmail': customerContactEmail,\r\n },\r\n languageRoute,\r\n requestToken,\r\n staticPages: { myPage },\r\n } = useAppSettingsData();\r\n\r\n const userCredentials: UserCredentials = {\r\n email: username,\r\n userName: username,\r\n password: password,\r\n language: languageRoute,\r\n newPassword: '',\r\n };\r\n const disabled = password.length === 0 || username.length === 0;\r\n\r\n const signInUser = () => {\r\n if (disabled) return;\r\n\r\n SignIn(\r\n userCredentials,\r\n requestToken,\r\n channelId,\r\n setError,\r\n setValidationMessage,\r\n setIsLoading,\r\n myPage\r\n );\r\n };\r\n\r\n const emailLink = 'mailto:' + customerContactEmail;\r\n\r\n return (\r\n \r\n \r\n {!!breadcrumb.length && }\r\n \r\n \r\n \r\n {signInLabel}\r\n \r\n {loginText}\r\n {error && (\r\n \r\n {' '}\r\n {validationMessage}\r\n \r\n )}\r\n \r\n e.key === 'Enter' && signInUser()}\r\n isEmpty={!!!username.length}\r\n />\r\n e.key === 'Enter' && signInUser()}\r\n isEmpty={!!!password.length}\r\n />\r\n \r\n \r\n {isLoading ? (\r\n \r\n ) : (\r\n <>{signInLabel}>\r\n )}\r\n \r\n \r\n {forgotLoginLabel}\r\n \r\n {customerContactPhone}\r\n \r\n \r\n {customerContactEmail}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default LoginPage;\r\n\r\nconst Main = styled.main({\r\n ...media(mediaQuery.mediaMaxSmall, { backgroundColor: theme.white }),\r\n});\r\n\r\nconst PageWrapper = styled.div({\r\n padding: { x: '30px', top: '42px', bottom: '60px' },\r\n ...media(mediaQuery.mediaMinLarge, {\r\n padding: { x: 0, top: '54px', bottom: '80px' },\r\n }),\r\n});\r\n\r\nconst StyledLoadingCircle = styled(LoadingCircle, {\r\n color: theme.white,\r\n height: theme.gamma,\r\n margin: { xy: 'auto' },\r\n});\r\n\r\nconst IconStyleError: StyleOrStyleArray = {\r\n width: theme.gamma,\r\n height: theme.gamma,\r\n marginRight: theme.medium,\r\n marginTop: theme.small,\r\n};\r\n\r\nconst FormTitleContainer = styled.div({\r\n display: 'flex',\r\n alignItems: 'center',\r\n marginBottom: theme.spacing(3),\r\n});\r\n\r\nconst StyledKexInput = styled(KexInput, { marginBottom: '25px' });\r\n\r\nconst StyledSignInIcon = styled(SignInIcon, {\r\n fill: theme.black,\r\n width: '24px',\r\n height: '24px',\r\n marginBottom: theme.spacing(1),\r\n ...media(mediaQuery.mediaMinLarge, {\r\n width: '30px',\r\n height: '30px',\r\n }),\r\n});\r\n\r\nconst FormContainer = styled.div({\r\n font: { size: theme.psi, weight: theme.fontWeight.lighter },\r\n color: theme.black,\r\n lineHeight: theme.lineHeight.normal,\r\n letterSpacing: theme.letterSpacing.medium,\r\n ...media(theme.mediaQuery.mediaMinSmall, {\r\n borderRadius: '10px',\r\n backgroundColor: theme.white,\r\n padding: { x: '45px', y: '32px' },\r\n maxWidth: '554px',\r\n margin: { x: 'auto' },\r\n }),\r\n ...media(theme.mediaQuery.mediaMinLarge, {\r\n padding: { x: '90px', y: theme.massive },\r\n }),\r\n});\r\n\r\nconst FromTitle = styled.h1({\r\n font: { size: '26px', weight: theme.fontWeight.bold },\r\n marginLeft: '10px',\r\n ...media(mediaQuery.mediaMinLarge, {\r\n fontSize: theme.great,\r\n }),\r\n});\r\n\r\nconst FromDetailText = styled.p({\r\n font: { size: theme.gamma, weight: theme.fontWeight.normal },\r\n lineHeight: '25.6px',\r\n marginBottom: '38px',\r\n});\r\n\r\nconst ValidationMessage = styled.div({\r\n font: { size: theme.gamma, weight: theme.fontWeight.normal },\r\n lineHeight: theme.lineHeight.relaxed,\r\n backgroundColor: theme.errorPrimary,\r\n color: theme.errorText,\r\n padding: { y: theme.huge, x: theme.huge },\r\n margin: { y: theme.huge },\r\n display: 'flex',\r\n});\r\n\r\nconst ErrorMessage = styled.p({\r\n flexGrow: 1,\r\n flexShrink: 1,\r\n flexBasis: '0%',\r\n});\r\n\r\nconst LoginButton = styled(CtaButton, {\r\n fontSize: '15px',\r\n letterSpacing: theme.letterSpacing.medium,\r\n textTransform: 'uppercase',\r\n backgroundColor: theme.primaryBlue,\r\n color: theme.white,\r\n borderRadius: '100px',\r\n width: '100%',\r\n minHeight: theme.greater,\r\n margin: { y: '30px' },\r\n});\r\n\r\nconst ForgottenLogIn = styled.div({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n});\r\n\r\nconst ForgottenLonInText = styled.p({\r\n fontSize: theme.gamma,\r\n color: theme.breadText,\r\n});\r\n\r\nconst InformationStringLink = styled(KexLink, {\r\n color: theme.linkColor,\r\n cursor: 'pointer',\r\n textDecoration: 'underline',\r\n fontSize: theme.gamma,\r\n lineHeight: '1.4',\r\n marginTop: '8px',\r\n});\r\n","import { useEffect, useState } from 'react';\r\nimport useSWR, { mutate } from 'swr';\r\nimport IKexCart from './Models/KexCart.interface';\r\nimport Fetcher from '../Shared/Common/Fetcher';\r\nimport { IS_PRODUCTION_ENV } from '../Shared/Configs/EnvConfig';\r\nimport { useAppSettingsData } from '../Shared/AppSettingsProvider/AppSettingsProvider';\r\nimport {\r\n EventDispatcher,\r\n NOTIFY_ACTION,\r\n} from '../Shared/Common/EventDispatcher';\r\nimport useCurrentPage from '../Shared/Hooks/useCurrentPage';\r\n\r\nlet abortController: AbortController = new AbortController();\r\nlet hasMounted = false;\r\nlet cartUrl = '';\r\nlet litiumContext = '';\r\nlet requestVerificationToken = '';\r\n\r\ntype CartReturnType = {\r\n cart: IKexCart;\r\n isLoading: boolean;\r\n};\r\n\r\nexport function GetCart(): CartReturnType {\r\n const tempCartObject: IKexCart = {} as IKexCart;\r\n\r\n const [cart, setCart] = useState(tempCartObject);\r\n const { pageCacheTime, languageRoute, requestToken } = useAppSettingsData();\r\n const { channelId } = useCurrentPage();\r\n const [isLoading, setIsLoading] = useState(true);\r\n cartUrl = `/api/${languageRoute}/PicturaCart/`;\r\n\r\n litiumContext = JSON.stringify({\r\n channelSystemId: channelId,\r\n });\r\n\r\n requestVerificationToken = requestToken;\r\n\r\n const { data: fectchedCart } = useSWR(\r\n `${cartUrl}GetCart`,\r\n () => FetchCart(`${cartUrl}GetCart`, litiumContext),\r\n {\r\n initialData: 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 (fectchedCart) {\r\n setCart(fectchedCart);\r\n setIsLoading(false);\r\n }\r\n }\r\n }, [fectchedCart]);\r\n\r\n return { cart, isLoading };\r\n}\r\n\r\nexport async function RemoveFromCart(\r\n productCode: string,\r\n languageRoute: string\r\n) {\r\n cartUrl = `/api/${languageRoute}/PicturaCart/`;\r\n const res = await fetch(`${cartUrl}RemoveItem?code=${productCode}`, {\r\n method: 'POST',\r\n headers: {\r\n 'litium-request-context': litiumContext,\r\n RequestVerificationToken: requestVerificationToken,\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`, 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 bookingNumber?: string,\r\n setIsLoading?: (value: boolean) => void\r\n) {\r\n setIsLoading && setIsLoading(true);\r\n cartUrl = `/api/${languageRoute}/PicturaCart/`;\r\n const updateQuantity = quantity;\r\n const res = await fetch(\r\n `${cartUrl}Update?code=${productCode}&bookingNumber=${bookingNumber}&quantity=${updateQuantity}`,\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'litium-request-context': litiumContext,\r\n RequestVerificationToken: requestVerificationToken,\r\n },\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`, cart, false);\r\n setIsLoading && setIsLoading(false);\r\n return true;\r\n }\r\n setIsLoading && setIsLoading(false);\r\n return false;\r\n}\r\n\r\nexport async function SetQuantity(\r\n productCode: string,\r\n bookingNumber: string,\r\n quantity: number,\r\n languageRoute: string,\r\n setIsLoading?: (value: boolean) => void\r\n) {\r\n setIsLoading && setIsLoading(true);\r\n const updateQuantity = quantity;\r\n cartUrl = `/api/${languageRoute}/PicturaCart/`;\r\n const res = await fetch(\r\n `${cartUrl}SetQuantity?code=${productCode}&bookingNumber=${bookingNumber}&quantity=${updateQuantity}`,\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'litium-request-context': litiumContext,\r\n RequestVerificationToken: requestVerificationToken,\r\n },\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`, cart, false);\r\n setIsLoading && setIsLoading(false);\r\n }\r\n}\r\n\r\nexport async function EmptyCart(languageRoute: string) {\r\n cartUrl = `/api/${languageRoute}/PicturaCart/`;\r\n const res = await fetch(`${cartUrl}RemoveAllItems`, {\r\n method: 'POST',\r\n headers: {\r\n 'litium-request-context': litiumContext,\r\n RequestVerificationToken: requestVerificationToken,\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`, cart, false);\r\n return true;\r\n }\r\n}\r\n\r\nfunction FetchCart(url: string, litiumContext: string) {\r\n abortController.abort();\r\n abortController = new AbortController();\r\n const signal = abortController.signal;\r\n\r\n return Fetcher(\r\n url,\r\n signal,\r\n (data, resolve) => {\r\n if (data.cart) {\r\n resolve(data.cart);\r\n }\r\n\r\n resolve(data);\r\n },\r\n litiumContext\r\n );\r\n}\r\n","import React from 'react';\r\n\r\nimport { theme, styled } from '../../Theme';\r\n\r\nimport { media, pseudo } from '@glitz/core';\r\nimport { mediaQuery } from '../../Theme/mediaQueries';\r\nimport { StyledProps } from '@glitz/react';\r\n\r\nimport KexLink from '../KexLink/KexLink';\r\n\r\ntype PropTypes = StyledProps & {\r\n onClick?: () => void;\r\n asLink?: boolean;\r\n href?: string;\r\n children?: any;\r\n disabled?: boolean;\r\n};\r\n\r\nfunction CtaButton({\r\n compose,\r\n onClick,\r\n asLink,\r\n href,\r\n children,\r\n disabled,\r\n}: PropTypes) {\r\n return asLink ? (\r\n \r\n {children}\r\n \r\n ) : (\r\n \r\n );\r\n}\r\n\r\nconst Button = styled.button({\r\n backgroundColor: theme.primaryBlue,\r\n font: { size: theme.alpha, weight: theme.fontWeight.bold },\r\n display: 'flex',\r\n justifyContent: 'center',\r\n borderRadius: '50px',\r\n padding: { y: theme.spacing(4), x: theme.spacing(6) },\r\n ...media(mediaQuery.mediaMinLarge, {\r\n ':hover': { backgroundColor: theme.primaryDarkBlue },\r\n }),\r\n ':disabled': {\r\n cursor: 'not-allowed',\r\n backgroundColor: theme.headerIconGray,\r\n ':hover': { backgroundColor: theme.headerIconGray },\r\n },\r\n});\r\n\r\nconst Link = styled(KexLink, {\r\n backgroundColor: theme.primaryBlue,\r\n font: { size: theme.alpha, weight: theme.fontWeight.bold },\r\n display: 'flex',\r\n justifyContent: 'center',\r\n borderRadius: '50px',\r\n padding: { y: theme.spacing(4), x: theme.spacing(6) },\r\n ...media(mediaQuery.mediaMinLarge, {\r\n ':hover': { backgroundColor: theme.primaryDarkBlue },\r\n }),\r\n ...pseudo([':nth-child(n)[data-disabled=\"true\"]'], {\r\n cursor: 'not-allowed',\r\n backgroundColor: theme.headerIconGray,\r\n ':hover': { backgroundColor: theme.headerIconGray },\r\n }),\r\n});\r\n\r\nconst ButtonText = styled.span({\r\n color: theme.white,\r\n textTransform: 'uppercase',\r\n letterSpacing: '0.05em',\r\n});\r\n\r\nconst LinkText = styled.span({\r\n padding: { x: theme.spacing(2) },\r\n color: theme.white,\r\n textTransform: 'uppercase',\r\n letterSpacing: '0.05em',\r\n});\r\n\r\nexport default CtaButton;\r\n","import React from 'react';\r\nimport { styled, StyledProps } from '@glitz/react';\r\n\r\nfunction HeartIcon({ compose }: StyledProps) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default styled(HeartIcon);\r\n","import React from 'react';\r\nimport { styled, StyledProps } from '@glitz/react';\r\n\r\nfunction ArrowRightIcon({ compose }: StyledProps) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default styled(ArrowRightIcon);\r\n","import React from 'react';\r\nimport { styled, StyledProps } from '@glitz/react';\r\n\r\nfunction AccountIcon({ compose }: StyledProps) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default styled(AccountIcon);\r\n","import React from 'react';\r\nimport { styled, StyledProps } from '@glitz/react';\r\n\r\ntype SearchIconType = StyledProps & {\r\n onClick?: () => void;\r\n};\r\n\r\nfunction SearchIcon({ compose, onClick }: SearchIconType) {\r\n return (\r\n onClick && onClick()}\r\n >\r\n \r\n \r\n );\r\n}\r\n\r\nexport default styled(SearchIcon);\r\n","import React from 'react';\r\nimport { styled, StyledProps } from '@glitz/react';\r\n\r\nfunction CartIcon({ compose }: StyledProps) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default styled(CartIcon);\r\n","import React from 'react';\r\nimport { StyledProps } from '@glitz/react';\r\nimport { styled, theme } from '../../Theme';\r\nimport { Style } from '@glitz/type';\r\n\r\ntype PropType = StyledProps & {\r\n isOpen?: boolean;\r\n};\r\n\r\nfunction MenuIcon({ compose, isOpen }: PropType) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default styled(MenuIcon);\r\n\r\nconst animationDuration = theme.timings.threeTenths;\r\n\r\nconst animationMenuPathsIn = {\r\n animationName: {\r\n from: {\r\n opacity: 0,\r\n },\r\n to: {\r\n opacity: 1,\r\n },\r\n },\r\n animationFillMode: 'forwards',\r\n animationDuration,\r\n} as Style;\r\n\r\nconst animationMenuPathsOut = {\r\n animationName: {\r\n from: {\r\n opacity: 1,\r\n },\r\n to: {\r\n opacity: 0,\r\n },\r\n },\r\n animationFillMode: 'forwards',\r\n animationDuration,\r\n} as Style;\r\n\r\nconst TopPathIn = {\r\n ...animationMenuPathsIn,\r\n animationDelay: theme.timings.twoFifths,\r\n};\r\nconst CenterPathIn = {\r\n ...animationMenuPathsIn,\r\n animationDelay: theme.timings.oneHalf,\r\n};\r\nconst BottomPathIn = {\r\n ...animationMenuPathsIn,\r\n animationDelay: theme.timings.threeFifths,\r\n};\r\n\r\nconst TopPathOut = {\r\n ...animationMenuPathsOut,\r\n animationDelay: theme.timings.oneFifth,\r\n};\r\nconst CenterPathOut = {\r\n ...animationMenuPathsOut,\r\n animationDelay: theme.timings.oneTenth,\r\n};\r\nconst BottomPathOut = {\r\n ...animationMenuPathsOut,\r\n};\r\n\r\nconst Path = styled.path({});\r\n\r\nconst animationCrossIn = {\r\n animationName: {\r\n '0%': {\r\n transform: 'scale(0)',\r\n },\r\n '90%': {\r\n transform: 'scale(1.1)',\r\n },\r\n '100%': {\r\n transform: 'scale(1)',\r\n },\r\n },\r\n animationDuration,\r\n animationFillMode: 'forwards',\r\n animationDelay: theme.timings.threeTenths,\r\n} as Style;\r\n\r\nconst animationCrossOut = {\r\n animationName: {\r\n '0%': {\r\n transform: 'scale(1)',\r\n },\r\n '10%': {\r\n transform: 'scale(1.1)',\r\n },\r\n '100%': {\r\n transform: 'scale(0)',\r\n },\r\n },\r\n animationFillMode: 'forwards',\r\n animationDuration,\r\n} as Style;\r\n\r\nconst CrossG = styled.g({\r\n transformOrigin: 'center',\r\n});\r\n","import React from 'react';\r\nimport { styled, StyledProps } from '@glitz/react';\r\n\r\nfunction GlobeIcon({ compose }: StyledProps) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default styled(GlobeIcon);\r\n","import React from 'react';\r\nimport { styled } from '../../Theme';\r\nimport { StyledProps } from '@glitz/react';\r\n\r\nfunction Logo({ compose }: StyledProps) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default styled(Logo);\r\n","import React from 'react';\r\nimport { styled } from '../../Theme';\r\nimport { StyledProps } from '@glitz/react';\r\n\r\nfunction LogoWhite({ compose }: StyledProps) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default styled(LogoWhite);\r\n","import React from 'react';\r\nimport { styled, StyledProps } from '@glitz/react';\r\n\r\nfunction ProfileIconFilled({ compose }: StyledProps) {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default styled(ProfileIconFilled);\r\n","import React from 'react';\r\nimport { styled, StyledProps } from '@glitz/react';\r\nimport { StyleOrStyleArray } from '@glitz/type';\r\nimport { theme } from '../../Theme';\r\n\r\ntype LoadingCircleType = StyledProps & {\r\n width?: string;\r\n isLoading?: boolean;\r\n};\r\n\r\nfunction LoadingCircle({ isLoading, compose }: LoadingCircleType) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default styled(LoadingCircle);\r\n\r\nconst LoadingStyles: StyleOrStyleArray = {\r\n transform: 'rotate(-90deg)',\r\n transformOrigin: '50%',\r\n animationDuration: theme.timings.oneAndAHalf,\r\n animationTimingFunction: 'cubic-bezier(0.47, 0.01, 0.51, 1)',\r\n animationIterationCount: 'infinite',\r\n stroke: theme.white,\r\n strokeWidth: theme.small,\r\n strokeDashoffset: 'calc(-3.14 * 2 * 100%)',\r\n strokeDasharray: 'calc(3.14 * 2 * 100%)',\r\n fill: 'none',\r\n animationName: {\r\n '0%': {\r\n strokeDashoffset: 'calc(3.14 * 2 * 100%)',\r\n },\r\n '50%': {\r\n strokeDashoffset: '0%',\r\n },\r\n '100%': {\r\n strokeDashoffset: '-calc(3.14 * 2 * 100%)',\r\n },\r\n },\r\n};\r\n\r\nconst StyledSvg = styled.svg({\r\n padding: {\r\n xy: theme.tiny,\r\n },\r\n overflow: 'visible',\r\n});\r\n","import React from 'react';\r\nimport { styled, StyledProps } from '@glitz/react';\r\n\r\nfunction ExclamationMarkIcon({ compose }: StyledProps) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default styled(ExclamationMarkIcon);\r\n","import AccountIcon from './AccountIcon';\r\nimport SearchIcon from './SearchIcon';\r\nimport HeartIcon from './HeartIcon';\r\nimport CartIcon from './CartIcon';\r\nimport ContactIcon from './ContactIcon';\r\nimport MenuIcon from './MenuIcon';\r\nimport GlobeIcon from './GlobeIcon';\r\nimport ArrowRightIcon from './ArrowRightIcon';\r\nimport CloseIcon from './CloseIcon';\r\nimport Logo from './Logo';\r\nimport LogoWhite from './LogoWhite';\r\nimport ProfileIcon from './ProfileIcon';\r\nimport ProfileIconFilled from './ProfileIconFilled';\r\nimport LoadingCircle from './LoadingCircle';\r\nimport ErrorIcon from './ExclamationMarkIcon';\r\n\r\nexport {\r\n AccountIcon,\r\n SearchIcon,\r\n HeartIcon,\r\n CartIcon,\r\n ContactIcon,\r\n MenuIcon,\r\n GlobeIcon,\r\n ArrowRightIcon,\r\n CloseIcon,\r\n Logo,\r\n LogoWhite,\r\n ProfileIcon,\r\n ProfileIconFilled,\r\n LoadingCircle,\r\n ErrorIcon,\r\n};\r\n","import React from 'react';\r\nimport { styled, StyledProps } from '@glitz/react';\r\n\r\nfunction ContactIcon({ compose }: StyledProps) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default styled(ContactIcon);\r\n","import React from 'react';\r\nimport { styled, StyledProps } from '@glitz/react';\r\n\r\nfunction ProfileIcon({ compose }: StyledProps) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default styled(ProfileIcon);\r\n"],"sourceRoot":""}