{"version":3,"sources":["config.ts","tauria-react-components/extras/Colors.tsx","tauria-react-components/particles/Button.tsx","views/Banner.tsx","tauria-react-components/molecules/Layout.tsx","tauria-react-components/particles/Input.tsx","tauria-react-components/molecules/Form.tsx","tauria-react-components/molecules/FormRenderers/Default.tsx","tauria-react-components/molecules/FormRenderers/EmailPassword.tsx","tauria-react-components/hooks/useWindowSize.tsx","utilities/validate.ts","pages/Base.tsx","styles.tsx","tauria-react-components/molecules/Loader.tsx","views/Loading.tsx","views/Signin.tsx","views/PasswordModal.tsx","views/OrgList.tsx","models/authApi.tsx","models/analyticsApi.tsx","utilities/hubspot.ts","models/connectApi.tsx","utilities/encryption.ts","tauria-react-components/molecules/ResponsiveLayout.tsx","pages/basePage.tsx","pages/home.tsx","RegisterPages/Workspace.tsx","tauria-react-components/molecules/FormRenderers/ReadOnly.tsx","RegisterPages/Details.tsx","tauria-react-components/molecules/FormRenderers/PasswordStrength.tsx","utilities/password-criteria.ts","RegisterPages/Password.tsx","tauria-react-components/hooks/useDownload.tsx","RegisterPages/Resend.tsx","RegisterPages/Success.tsx","models/registerApi.tsx","pages/register.tsx","pages/forgotPassword.tsx","RegisterPages/Building.tsx","RegisterPages/VerifyEmail.tsx","RegisterPages/ExistingUser.tsx","newUserPages/Description.tsx","pages/newUser.tsx","ResetPages/Password.tsx","ResetPages/Success.tsx","ResetPages/ContactSupport.tsx","pages/resetPassword.tsx","constants.ts","pages/ClearStorage.tsx","Routes.tsx","App.tsx","serviceWorker.ts","index.tsx","img/zebu_logo.svg","img/SignUp-BG.svg","img/chats__icon.svg","img/calls__icon.svg","img/calendar__icon.svg","img/files__icon.svg","img/Back.svg","img/check_icon.svg","tauria-react-components/extras/img/su_link.svg","tauria-react-components/extras/img/sg_phone.svg","tauria-react-components/extras/img/sw_check_circled.svg","tauria-react-components/extras/img/emailIcon.svg","tauria-react-components/extras/img/eyeIcon.svg","tauria-react-components/extras/img/eyeIconOff.svg","tauria-react-components/extras/img/lockIcon.svg","tauria-react-components/extras/img/loader.svg","tauria-react-components/extras/img/sg_circle_close.svg","tauria-react-components/extras/img/sb_lock.svg"],"names":["configManager","origin","_config","getDomainFromOrigin","includes","createConfig","env","backend","register","process","auth","analytics","captcha","captcha_key","domain","this","ColorManager","blue","green","lightGreen","grey","lightGrey","white","red","baseButton","IconButton","styled","button","p","src","width","height","S","color","default","textColor","padding","imageButton","leftSide","linkButton","getBackgroundColor","span","String","Button","getTextColor","disabled","value","onClick","onKeyPress","style","Link","config","ConfigManager","window","banner","div","Wallpaper","container","logo","img","moduleRow","sbs","keyline","h2","counter","state","stepText","solid","stepContainer","watermark","watermarkDONOTUSEENV","Modules","key","alt","ChatIcon","CallsIcon","marginBottom","CalendarIcon","FilesIcon","RenderStep","curStep","targetStep","label","CheckMark","paddingLeft","RegisterSteps","step","UserRegisterSteps","extraStep","PasswordResetSteps","Banner","handleBack","showBack","registerStep","userStep","userExtraStep","resetStep","bannerContent","Back","tabIndex","position","top","left","Logo","LayoutS","fullscreen","gap","colms","map","colm","join","rows","row","areas","area","Layout","children","normalInput","Input","input","textonly","error","Label","h3","LabeledInput","placeholder","ref","headingStyle","id","type","onChange","readOnly","autoFocus","limit","htmlFor","maxLength","EP","focused","LabeledEPInput","React","useState","setFocus","EmailIcon","LockIcon","onFocus","onBlur","getColor","breakpoints","PSI","strengthContainer","strengthBar","steps","break","strengthDescription","popup","popupLabel","done","PasswordStrengthInput","criteria","showPopup","setShowPopup","progress","breakpoint","Math","round","length","forEach","check","showEye","getDiscriptor","reduce","acc","crit","hidden","push","PasswordInputStyle","outstring","showIconEnd","showIconStart","PasswordInput","startIcon","onEnterPressed","showPassword","setShowPassword","toggle","event","charCode","preventDefault","undefined","role","marginRight","outline","EyeOpenIcon","EyeOffIcon","ErrorField","AllErrorField","Form","inputs","errors","submit","onSubmit","renderer","useRef","handleSubmit","e","values","charcode","current","element","document","querySelector","name","handleChange","useCallback","ALL","inputWithStyles","gridArea","defaultRenderer","marginTop","useWindowSize","Result","isClient","getSize","innerWidth","innerHeight","windowSize","setWindowSize","useEffect","addEventListener","handleResize","removeEventListener","SUPPORTED_EMAIL_PATTERN","empty","Success","v","EmptyField","test","InvalidOrgName","trim","toLowerCase","InvalidEmail","InvalidPasswordLength","InvalidPasswordCapital","InvalidPasswordNumber","a","b","PasswordMatch","replace","Container","Content","Footer","Base","buttonHref","buttonLabel","showFooter","history","useHistory","Headings","header","FormTopSpacer","LoadingStyle","LoadingSvg","LoadingDivContainer","Loader","loader","LoadingBG","opacity","LoadingSync","loading","message","Loading","promise","stateMessage","setMessage","mounted","then","newMessage","catch","errorMessage","Signin","onLogin","isNextStage","isRedirectFromTheseus","setErrors","setLoading","handleSignin","maybeErrors","email","password","PASSWORD","loginHashed","Validate","RequiredField","Object","keys","responseError","GeneralError","handleRedirectFromTheseus","localStorage","getItem","loginHash","removeItem","location","pathname","EmailPasswordRenderer","fontWeight","fontSize","lineHeight","customStyles","content","right","bottom","transform","passwordContainer","modalBodyText","description","getElementById","Modal","setAppElement","PasswordBodyForm","TwoFactorBodyForm","B2BPassphraseBodyForm","CustomAuthModel","modalIsOpen","setIsOpen","onSubmitCallback","BodyForm","bodyForm","closeModal","err","field","passwordForm","close","isOpen","onRequestClose","contentLabel","PasswordModal","TwoFactorModal","B2BPassphraseModal","List","Card","OrgCard","org","isAuthenticated","organization","orgName","lock","OrgList","orgList","onClickOrg","useMemo","authenticated","intruding","authenticatedOrgs","intrudingOrgs","mOrg","orgGuid","nOrg","baseUrl","baseUrlv2","requestOptions","method","headers","passwordLegacy","data","URLSearchParams","navigator","userAgent","appUA","split","appPlatform","appVersion","append","options","body","fetch","resp","prefix","code","params","response","ok","json","success","token","url","status","respData","inviter_company_info","passphraseHash","passphraseHashLegacy","uuid","user_uuid","JSON","stringify","console","promotion","special","sendPageView","_hsq","setIdentity","identity","sendEvent","eventId","eventValue","Connect","login","inviterOrganization","anchorUrl","indexOf","form","createElement","setAttribute","passwordHash","pin","appendChild","action","resetPassword","firstName","last_name","lastName","confirm_password","confirmPasswordHash","csrf","resetPasswordNew","Promise","resolve","r","log","href","encryptPassword","raw","isLocal","md","forge","sha256","create","update","digest","toHex","Encryption","encryptPasswordLegacy","util","bytesToHex","pkcs5","pbkdf2","getLoginHash","ResponsiveLayout","layouts","size","i","ResponsivePage","b2b","DesktopLayout","MobileLayout","Homepage","showVerifyPassword","passphraseCrypt","setState","selectedOrg","setSelectedOrg","selectedOrg2FA","setSelectedOrg2FA","askPassphrase","setAskPassphrase","recaptcha","useCaptcha","query","search","get","isLoading","campaignuuid","analyticsApi","setItem","title","prepareRedirect","loginData","isError","stack","handleOrgClick","twofa_required","doAuthLogin","passwordHashLegacy","targetOrgGuid","execute","authApi","result","find","maybeOrg","UserDoesntExist","handleLogin","processedEmail","historyState","passHash","handleTokenVerification","substr","passphrase_crypt","doPassphraseCheck","InvalidToken","IncorrectPassphrase","passphrase_verified","handlePassphrase","passphrase","getBackState","currentState","handle2FAModalVerify","CODE","checker","handlePasswordModalAuth","targetOrg","findIndex","handleB2BPassphraseModalVerify","newState","display","flexDirection","justifyContent","HomepageBase","props","Workspace","storeWorkspace","setUrl","workspaceValues","newUrl","Details","storeDetails","givenEmail","tempErrors","validate","ReadOnly","getPasswordFormErrors","confirm","newErrors","getPasswordFormCriteria","Password","storePassword","newUser","setCriteria","loadingPromise","setLoadingPromise","validatePasswords","potentialErrors","setTimeout","PasswordStrength","useDownload","openFunction","MSStream","LoaderStyles","showLoading","center","ResendingLoader","ResendEmail","onSend","__setShowLoading","LinkButtonStyle","marginLeft","emailContainer","onResendEmail","onWrongEmail","download","isOnDesktop","isDesktopApp","heading","setHeading","captchaToken","Error","OrgExists","CaptchaError","businessUrl","businessName","actionAfterLogin","newsletter","updateData","updateToken","newEmail","s","phoneNumber","userName","userEmail","Register","buildOrganization","businessURL","createResp","registerApi","getOrgToken","canGoBack","firstname","lastname","onSendNewEmail","showLoadingScreen","hideLoadingScreen","emailAddress","promises","all","Resend","RegisterPage","EmailForm","handleSendPasswordReset","verifyEmail","formData","EmailSent","PasswordResetPage","currentPage","setCurrentPage","ForgotPasswordBase","cover","centered","loadingFrame","loadingBar","BuildingOrg","useParams","interval","setInterval","res","trackUser","clearInterval","className","margin","textAlign","wrapper","VerifyEmail","ExistingUser","isNotEmpty","Description","cur","hasError","storeDescription","pages","NewUsersContent","existingUser","extraPage","getEmail","extraPages","pageName","splice","timeout","clearTimeout","handleStoreDetails","handleStorePassword","connectApi","handleStoreDescription","NewUsers","ContactSupport","obj","ResetPasswordContent","getSignupData","signupUser","ResetPasswordFail","ResetPassword","BASE_PATH","homepage","ClearStorage","clear","info","Routes","script","defer","async","removeChild","listen","exact","path","App","sitekey","basename","Boolean","hostname","match","ReactDOM","render","StrictMode","serviceWorker","ready","registration","unregister","module","exports"],"mappings":"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","file":"static/js/main.93c510c1.chunk.js","sourcesContent":["/* eslint-disable */\ndeclare global {\n namespace NodeJS {\n export interface ProcessEnv {\n readonly NODE_ENV: 'development' | 'production' | 'test';\n readonly PUBLIC_URL: string;\n\n readonly REACT_APP_DEV_BACKEND_SERVER: string;\n readonly REACT_APP_DEV_REGISTER_SERVER: string;\n readonly REACT_APP_DEV_ANALYTICS_SERVER: string;\n readonly REACT_APP_DEV_DOMAIN: string;\n readonly REACT_APP_DEV_RECAPTCHA_SITE_KEY: string;\n readonly REACT_APP_DEV_CAPTCHA: string;\n\n readonly REACT_APP_PRD_BACKEND_SERVER: string;\n readonly REACT_APP_PRD_REGISTER_SERVER: string;\n readonly REACT_APP_PRD_ANALYTICS_SERVER: string;\n readonly REACT_APP_PRD_DOMAIN: string;\n readonly REACT_APP_PRD_RECAPTCHA_SITE_KEY: string;\n readonly REACT_APP_PRD_CAPTCHA: string;\n\n readonly REACT_APP_FAT_BACKEND_SERVER: string;\n readonly REACT_APP_FAT_REGISTER_SERVER: string;\n readonly REACT_APP_FAT_ANALYTICS_SERVER: string;\n readonly REACT_APP_FAT_DOMAIN: string;\n readonly REACT_APP_FAT_RECAPTCHA_SITE_KEY: string;\n readonly REACT_APP_FAT_CAPTCHA: string;\n\n readonly REACT_APP_LOCAL_BACKEND_SERVER: string;\n readonly REACT_APP_LOCAL_REGISTER_SERVER: string;\n readonly REACT_APP_LOCAL_ANALYTICS_SERVER: string;\n readonly REACT_APP_LOCAL_DOMAIN: string;\n readonly REACT_APP_LOCAL_RECAPTCHA_SITE_KEY: string;\n readonly REACT_APP_LOCAL_CAPTCHA: string;\n }\n }\n}\n\ntype TAURIA_ENV = 'DEV' | 'FAT' | 'LOCAL' | 'PRD';\n\ninterface Config {\n backend: {\n auth: string;\n register: string;\n analytics: string;\n };\n captcha: string;\n captcha_key: string;\n domain: string;\n env: TAURIA_ENV;\n}\n\nexport class configManager {\n private _config: Config;\n\n constructor(origin: string) {\n this._config = this.createConfig(this.getDomainFromOrigin(origin));\n }\n\n private getDomainFromOrigin = (origin: string = ''): TAURIA_ENV =>\n origin.includes('dev')\n ? 'DEV'\n : origin.includes('fat')\n ? 'FAT'\n : origin.includes('localhost')\n ? 'LOCAL'\n : 'PRD';\n\n private createConfig = (env: TAURIA_ENV): Config =>\n ({\n backend: {\n register: process.env[`REACT_APP_${env}_REGISTER_SERVER`],\n auth: process.env[`REACT_APP_${env}_BACKEND_SERVER`],\n analytics: process.env[`REACT_APP_${env}_ANALYTICS_SERVER`],\n },\n captcha: process.env[`REACT_APP_${env}_CAPTCHA`],\n captcha_key: process.env[`REACT_APP_${env}_RECAPTCHA_SITE_KEY`],\n domain: process.env[`REACT_APP_${env}_DOMAIN`],\n env,\n } as Config);\n\n get config(): Config {\n return this._config;\n }\n}\n\nexport default configManager;\n","class ColorManager {\n blue = '#1577FE';\n green = '#0ED266';\n lightGreen = 'rgba(14, 210, 102, 0.1)';\n grey = '#5B6074';\n lightGrey = '#F7F7F9';\n white = '#fff';\n red = '#F15C5A';\n get default() {\n return this.blue;\n }\n}\n\nexport default ColorManager;\n","import React from 'react';\nimport styled, { CSSObject } from 'styled-components';\nimport ColorManager from '../extras/Colors';\n\nimport suLink from '../extras/img/su_link.svg';\nimport sgPhone from '../extras/img/sg_phone.svg';\nimport swCheck from '../extras/img/sw_check_circled.svg';\n\nimport { copyToClipboard } from '../extras/utils';\n\ninterface ButtonProps {\n value?: string;\n style?: CSSObject;\n color?: string;\n textColor?: string;\n width?: string;\n disabled?: boolean;\n padding?: string;\n onClick?: (event: React.MouseEvent) => void;\n onKeyPress?: (event: React.KeyboardEvent) => void;\n}\n\ninterface ImageButtonProps extends ButtonProps {\n src: string;\n leftSide?: boolean;\n}\n\ninterface CopyButtonProps extends ButtonProps {\n toCopy: string;\n}\n\nconst baseButton = `\n border-radius: 5px;\n border: none;\n white-space: nowrap;\n font-weight: bold;\n cursor: pointer;\n`;\n\nexport const IconButton = styled.button<{ src: string; width: string; height: string }>`\n background: transparent;\n background-image: url(${(p): string => p.src});\n background-size: ${(p): string => p.width} auto;\n background-position: center;\n background-repeat: no-repeat;\n padding: calc(${(p): string => p.height} + 5px) calc(${(p): string => p.width} + 5px);\n border: 0px;\n cursor: pointer;\n outline: none;\n transition: box-shadow 0.2s;\n`;\n\nconst S = {\n button: styled.button<{ width?: string; color?: string; textColor?: string; padding?: string }>`\n background-color: ${(p): string => (p.color ? p.color : new ColorManager().default)};\n color: ${(p): string => (p.textColor ? p.textColor : '#ffffff')};\n width: ${(p): string => (p.width ? p.width : 'calc(100% - 24px)')};\n padding: ${(p): string => (p.padding ? p.padding : '12px 40px')};\n ${baseButton}\n `,\n imageButton: styled.button`\n ${baseButton}\n background-color: ${(p): string => (p.color ? p.color : new ColorManager().default)};\n color: ${(p): string => (p.textColor ? p.textColor : '#ffffff')};\n width: ${(p): string => (p.width ? p.width : 'calc(100%)')};\n padding: ${(p): string =>\n // eslint-disable-next-line no-nested-ternary\n p.src === '' ? '12px' : p.leftSide ? '12px 40px 12px 40px' : '12px 40px 12px 40px'};\n\n background-image: url(${(p): string => p.src});\n background-position: ${(p): string => (p.leftSide ? '10% center' : '90% center')};\n background-repeat: no-repeat;\n background-size: 16px auto;\n `,\n linkButton: styled.button`\n background-color: transparent;\n outline: none;\n width: 100%;\n color: #5b6074;\n border: 0px;\n padding: 20px 0px;\n cursor: pointer;\n\n :hover {\n text-decoration: underline;\n }\n `,\n};\n\ntype TauriaButtonProps = {\n color?: 'primary' | 'secondary' | React.CSSProperties['backgroundColor'];\n variant?: 'contained' | 'outlined' | 'ghost';\n style?: React.CSSProperties;\n icon?: React.ReactNode;\n iconPosition?: 'right' | 'left';\n disabled?: boolean;\n onClick?: (event: React.MouseEvent) => void;\n children?: React.ReactNode;\n};\n\nconst ButtonInnerWrapper = styled.span`\n display: flex;\n justify-content: center;\n align-items: center;\n`;\n\nconst getBackgroundColor = ({ color }: TauriaButtonProps): string => {\n switch (color) {\n case 'primary':\n return '#1577fe';\n\n case 'secondary':\n return '#0b1328';\n\n default:\n return String(color);\n }\n};\n\nconst getTextColor = ({ color }: TauriaButtonProps): string => {\n switch (color) {\n case 'primary':\n case 'secondary':\n default:\n return '#ffffff';\n }\n};\n\nconst StyledButton = styled.button<{\n color: TauriaButtonProps['color'];\n variant: TauriaButtonProps['variant'];\n}>`\n background-color: ${(p) => getBackgroundColor(p)};\n color: ${(p) => getTextColor(p)};\n font-weight: 600;\n font-style: normal;\n font-size: 0.875rem;\n line-height: calc(17px / 14px);\n border-radius: 5px;\n padding: 0.5rem 1rem;\n text-transform: uppercase;\n text-overflow: ellipsis;\n white-space: nowrap;\n transition: all 200ms ease;\n cursor: ${(p) => (p.disabled ? 'not-allowed' : 'pointer')};\n ${(p) => p.disabled && 'pointer-events: none;'};\n border: 2px solid ${(p) => getBackgroundColor(p)};\n\n // TODO: Implement hover states when there are designs for it\n\n :focus,\n :active {\n outline: 2px solid ${(p) => getBackgroundColor(p)};\n border-color: #ffffff;\n }\n`;\n\nexport const TauriaButton = ({\n color = 'primary',\n variant = 'contained',\n style = {},\n icon = null,\n iconPosition = 'right',\n onClick = () => {},\n disabled = false,\n children = null,\n}: TauriaButtonProps): JSX.Element => {\n return (\n \n \n {icon && iconPosition === 'left' ? (\n {icon}\n ) : null}\n {children}\n {icon && iconPosition === 'right' ? (\n {icon}\n ) : null}\n \n \n );\n};\n\nexport const Button = ({\n value,\n onClick,\n onKeyPress,\n width,\n color,\n textColor,\n padding,\n style,\n}: ButtonProps): JSX.Element => {\n return (\n \n {value}\n \n );\n};\n\nexport const ImageButton = ({\n value,\n onClick,\n width,\n src,\n color,\n textColor,\n disabled,\n padding,\n}: ImageButtonProps) => {\n return (\n \n {value}\n \n );\n};\n\nexport const URLCopyButton = ({\n value,\n width,\n toCopy,\n color,\n textColor,\n}: CopyButtonProps): JSX.Element => {\n const [clicked, setClicked] = React.useState(false);\n\n const onClick = React.useCallback((): void => {\n copyToClipboard(toCopy);\n setClicked(true);\n }, [toCopy]);\n\n React.useEffect(() => {\n let unmounted = false;\n\n // Automatically flip the `clicked` flag back to `false` after 2 seconds\n if (clicked) {\n setTimeout(() => {\n if (!unmounted) {\n setClicked(false);\n }\n }, 2000);\n }\n\n return (): void => {\n unmounted = true;\n };\n }, [clicked]);\n\n return (\n \n );\n};\n\nexport const CallButton = ({ value, onClick, width }: ButtonProps): JSX.Element => {\n return (\n \n );\n};\n\nexport const Link = ({ value, onClick, style }: ButtonProps): JSX.Element => {\n return (\n \n {value}\n \n );\n};\n\nexport default Button;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable no-nested-ternary */\nimport React from 'react';\nimport styled from 'styled-components';\nimport ConfigManager from '../config';\n\nimport Wallpaper from '../img/SignUp-BG.svg';\nimport Logo from '../img/zebu_logo.svg';\nimport ChatIcon from '../img/chats__icon.svg';\nimport CallsIcon from '../img/calls__icon.svg';\nimport CalendarIcon from '../img/calendar__icon.svg';\nimport FilesIcon from '../img/files__icon.svg';\nimport Back from '../img/Back.svg';\nimport CheckMark from '../img/check_icon.svg';\n\nimport { IconButton } from '../tauria-react-components/particles/Button';\n\nconst { config } = new ConfigManager(window.origin);\n\nconst S = {\n banner: styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n background-image: url(${Wallpaper});\n background-size: cover;\n background-position: top;\n background-repeat: no-repeat;\n\n @media only screen and (max-width: 400px) {\n padding: 0px 10px;\n width: calc(100% - 20px);\n }\n `,\n container: styled.div`\n width: 80%;\n display: flex;\n flex-direction: column;\n margin: auto;\n padding-top: 0.5rem;\n\n h1 {\n color: #fff;\n font-style: normal;\n font-weight: bold;\n font-size: 1.5rem;\n line-height: calc(59 / 48);\n margin: 2rem 0;\n text-align: center;\n\n @media only screen and (min-width: 900px) {\n text-align: left;\n font-size: 1.75rem;\n margin: 3.75rem 0;\n }\n\n @media only screen and (min-width: 1000px) {\n font-size: 2rem;\n }\n\n @media only screen and (min-width: 1200px) {\n font-size: 3rem;\n }\n }\n `,\n logo: styled.img`\n width: 11.25rem;\n margin: 10px auto;\n\n @media only screen and (min-width: 900px) {\n width: 12.5rem;\n margin: 0px;\n }\n `,\n moduleRow: styled.div`\n display: flex;\n width: 400px;\n margin-bottom: 20px;\n @media only screen and (max-width: 900px) {\n margin: 0px auto 20px auto;\n }\n @media only screen and (max-width: 500px) {\n width: auto;\n }\n `,\n sbs: styled.div`\n display: flex;\n width: 100%;\n margin-bottom: 20px;\n `,\n keyline: styled.div`\n margin-right: 43px;\n border-left: 2px solid #0b2055;\n @media only screen and (max-width: 1000px) {\n margin-right: 30px;\n }\n @media only screen and (max-width: 500px) {\n margin-right: 10px;\n max-width: 100%;\n width: auto;\n }\n `,\n h2: styled.h2`\n margin-left: 20px;\n color: #1577fe;\n width: 111px;\n margin-right: 43px;\n @media only screen and (max-width: 1000px) {\n margin-right: 20px;\n }\n @media only screen and (max-width: 500px) {\n margin-right: 10px;\n font-size: 16px;\n width: 80px;\n }\n `,\n counter: styled.div<{ state: string }>`\n color: #4d4d4d;\n background-color: transparent;\n border: solid 2px #4d4d4d;\n padding: 10px;\n border-radius: 50%;\n width: 24px;\n height: 24px;\n text-align: center;\n font-size: 20px;\n margin-right: 30px;\n\n ${(p): string =>\n p.state === 'active'\n ? `\n background-color: #1577FE;\n color: #ffffff;\n border-color: #1577FE;\n `\n : ''}\n\n ${(p): string =>\n p.state === 'done'\n ? `\n background-color: #4D4D4D;\n color: black;\n border-color: #4D4D4D;\n `\n : ''}\n `,\n stepText: styled.div<{ solid: boolean }>`\n display: flex;\n font-size: 20px;\n align-items: center;\n color: #4d4d4d;\n\n ${(p): string =>\n p.solid\n ? `\n color: #1577FE;\n `\n : ''}\n `,\n stepContainer: styled.div`\n display: flex;\n margin-bottom: 20px;\n width: 50%;\n @media only screen and (max-width: 1200px) {\n width: 80%;\n }\n @media only screen and (max-width: 900px) {\n width: 100%;\n }\n justify-content: space-between;\n `,\n watermark: styled.p`\n position: absolute;\n bottom: 10px;\n left: 10px;\n font-size: 20px;\n font-weight: bold;\n color: rgba(255, 255, 255, 0.3);\n `,\n watermarkDONOTUSEENV: styled.p`\n position: absolute;\n bottom: calc(100% - 94%);\n font-size: 2vw;\n font-weight: bold;\n color: red;\n z-index: 1;\n `,\n};\n\nconst Modules: React.FC = (): any => {\n return [\n \n \n \n \"chat\n Chats\n \n \n \n \"call\n Calls\n \n ,\n \n \n \n \"calendar\n Calendar\n \n \n \n \"files\n Storage\n \n ,\n ];\n};\n\nconst RenderStep: React.FC<{ curStep: number; targetStep: number; label: string }> = ({\n curStep,\n targetStep,\n label,\n}) => (\n \n \n targetStep ? 'done' : ''}>\n {targetStep}\n \n {label}\n \n {curStep > targetStep && (\n \"Checkmark\"\n )}\n \n);\n\nconst RegisterSteps: React.FC<{ step: number }> = ({ step }) => {\n return (\n <>\n \n \n \n \n );\n};\n\nconst UserRegisterSteps: React.FC<{ step: number; extraStep: boolean | undefined }> = ({\n step,\n extraStep,\n}) => {\n return (\n <>\n \n {extraStep && }\n \n \n );\n};\n\nconst PasswordResetSteps: React.FC<{ step: number }> = ({ step }) => {\n return (\n <>\n \n \n );\n};\n\ntype BannerProps = {\n handleBack: () => void;\n showBack: boolean;\n registerStep?: number;\n userStep?: number;\n userExtraStep?: boolean;\n resetStep?: number;\n};\n\nconst Banner = ({\n handleBack,\n showBack,\n registerStep,\n userStep,\n userExtraStep,\n resetStep,\n}: BannerProps): JSX.Element => {\n const bannerContent = registerStep ? (\n \n ) : userStep ? (\n \n ) : resetStep ? (\n \n ) : (\n \n );\n\n return (\n \n {showBack && (\n \n )}\n \n \n

\n Secure collaboration\n platform for businesses\n

\n {bannerContent}\n
\n {config.domain === 'dev.zebu.io' && (\n DO NOT USE - DEV/FAT ENV\n )}\n {config.domain === 'zebu.io' ? '' : config.domain}\n
\n );\n};\n\nexport default Banner;\n","import React from 'react';\nimport styled from 'styled-components';\n\nexport interface LayoutProps {\n rows: number[];\n colms: number[];\n areas: string[][];\n gap?: string;\n fullscreen?: boolean;\n}\n\nexport const LayoutS = styled.div`\n min-height: ${(p): string => (p.fullscreen ? '100vh' : '100%')};\n min-width: ${(p): string => (p.fullscreen ? '100vw' : '100%')};\n display: grid;\n grid-gap: ${(p): string => (p.gap ? p.gap : '0px')};\n grid-template-columns: ${(p): string => p.colms.map((colm) => `${colm}fr`).join(' ')};\n grid-template-rows: ${(p): string => p.rows.map((row) => `${row}fr`).join(' ')};\n grid-template-areas: \"${(p): string =>\n p.areas.map((areas) => areas.map((area) => `${area}`).join(' ')).join('\"\\n\"')}\";\n`;\n\nconst Layout: React.FC = ({ rows, colms, areas, children, gap }) => {\n return (\n \n {children}\n \n );\n};\n\nexport default Layout;\n","import React from 'react';\nimport styled, { CSSObject } from 'styled-components';\nimport ColorManager from '../extras/Colors';\nimport EmailIcon from '../extras/img/emailIcon.svg';\nimport EyeOpenIcon from '../extras/img/eyeIcon.svg';\nimport EyeOffIcon from '../extras/img/eyeIconOff.svg';\nimport LockIcon from '../extras/img/lockIcon.svg';\n\nconst normalInput = `\nbackground: #ffffff;\n border: 1px solid #E4E7EC;\n box-sizing: border-box;\n border-radius: 5px;\n padding: 9px 9px;\n width: 100%;\n font-size: 20px;\n &[type='checkbox'] {\n width: auto;\n }\n &:read-only {\n background-color: #F7F8F9;\n color: #191a21;\n padding: 9px 9px;\n font-size: 20px;\n\n border: 1px solid #E4E7EC;\n border-radius: 5px;\n }\n &:focus {\n outline: none;\n }\n &:focus:not(:read-only) {\n border: solid 1px ${new ColorManager().default};\n border-left: solid 3px ${new ColorManager().default};\n }\n transition: border 0.2s;\n`;\n\nconst plainInput = `\n background-color: transparent;\n color: #6E7D97;\n border: 0px solid transparent;\n padding: 9px 9px;\n width: calc(100% - 18px);\n font-size: 20px;\n outline: none;\n`;\n\nexport const Input = styled.input<{ width?: string; textonly?: boolean; error?: boolean }>`\n ${(p): string => (!p.textonly ? normalInput : plainInput)}\n width: ${(p): string => (!p.textonly && p.width ? p.width : 'calc(100% - 18px)')};\n ${(p): string =>\n p.error\n ? `\n border-color: #F15C5A;\n animation: error .3s linear 0s forwards;\n `\n : ''}\n @keyframes error {\n 0% {transform: translateX(5px)}\n 25% {transform: translateX(-5px)}\n 50% {transform: translateX(5px)}\n 75% {transform: translateX(-5px)}\n 100% {transform: translateX(0px)}\n }\n`;\n\nconst ImageInputS = styled.div<{ src: string; width?: string }>`\n background-color: #f1f2f2;\n border-radius: 5px;\n padding: 0px 0px 0px 34px;\n background-image: url(${(p): string => (p ? p.src : '')});\n background-position: 10px center;\n background-repeat: no-repeat;\n background-size: 24px 24px;\n width: ${(p): string => (p.width ? p.width : 'calc(100% - 34px)')};\n @media (max-width: 599px) {\n width: 92%;\n }\n`;\n\ninterface InputProps {\n value?: string;\n placeholder?: string;\n width?: string;\n ref?: any;\n textonly?: boolean;\n style?: CSSObject;\n id?: string;\n headingStyle?: CSSObject;\n error?: boolean;\n onChange?: any;\n readOnly?: boolean;\n autoFocus?: boolean;\n limit?: number;\n}\n\ninterface TypedInputProps extends InputProps {\n type: 'text' | 'radio' | 'email' | 'password' | 'button';\n}\n\ninterface InputPasswordProps extends InputProps {\n showEye?: boolean;\n startIcon?: string;\n onFocus?: (e: React.FocusEvent) => any;\n onBlur?: (e: React.FocusEvent) => any;\n onEnterPressed?: (event: React.KeyboardEvent) => void;\n}\n\ninterface LabeledInputPasswordProps extends InputPasswordProps {\n label: string;\n}\ninterface LabeledInputProps extends TypedInputProps {\n label: string;\n}\n\ninterface ImageInputProps extends TypedInputProps {\n src: string;\n}\n\nconst H3 = styled.h3`\n font-weight: 600;\n font-size: 12px;\n line-height: 15px;\n margin-bottom: 3px;\n color: #6e7d97;\n`;\n\nconst Label = styled.label`\n display: block;\n font-weight: 600;\n font-size: 0.75rem;\n line-height: 1.25;\n margin: 1rem 0 0.5rem;\n color: #6e7d97;\n`;\n\nexport const LabeledInput: React.FC = ({\n value,\n placeholder,\n width,\n ref,\n label,\n style,\n headingStyle,\n id,\n type,\n error,\n onChange,\n readOnly,\n autoFocus = false,\n limit,\n}) => {\n return (\n
\n \n \n
\n );\n};\n\nexport const LabeledImageInput: React.FC = ({\n value,\n placeholder,\n width,\n ref,\n label,\n style,\n headingStyle,\n id,\n type,\n src,\n error,\n}) => {\n return (\n
\n

{label}

\n
\n \"Input\n \n
\n
\n );\n};\n\nexport const ImageInput: React.FC = ({ value, src, placeholder, width, ref }) => {\n return (\n \n \n \n );\n};\n\nexport const ImageInputRO: React.FC = ({ value, src, width, ref, textonly }) => {\n return (\n \n \n \n );\n};\n\nconst EP = {\n container: styled.div<{ focused: boolean; error: boolean }>`\n width: calc(100% - 36px);\n display: flex;\n align-items: center;\n border: 1px solid #d3d8e0;\n border-radius: 5px;\n padding: 0px 18px;\n transition: border 0.2s;\n ${(p): string =>\n p.focused\n ? `\n border-color: #1577FE;\n `\n : ''}\n\n ${(p): string =>\n p.error\n ? `\n border-color: #F15C5A;\n `\n : ''}\n `,\n keyline: styled.div<{ focused: boolean; error: boolean }>`\n height: 30px;\n border-left: solid 1px #d3d8e0;\n margin: 0px 18px;\n transition: border 0.2s;\n ${(p): string =>\n p.focused\n ? `\n border-left: solid 1px #1577FE;\n `\n : ''}\n\n ${(p): string =>\n p.error\n ? `\n border-left: solid 1px #F15C5A;\n `\n : ''}\n `,\n};\n\nexport const LabeledEPInput: React.FC = ({\n value,\n placeholder,\n width,\n ref,\n label,\n style,\n headingStyle,\n id,\n type,\n onChange,\n autoFocus = false,\n error,\n}) => {\n const [focused, setFocus] = React.useState(false);\n\n return (\n
\n \n \n {type}\n \n {\n setFocus(true);\n }}\n onBlur={() => {\n setFocus(false);\n }}\n />\n \n
\n );\n};\n\nconst ULIS = {\n container: styled.div`\n position: relative;\n `,\n indicator: styled.div`\n position: absolute;\n text-align: right;\n bottom: 13px;\n right: 13px;\n text-transform: uppercase;\n color: #808285;\n `,\n};\n\nexport const UrlLabeledInput: React.FC = ({\n label,\n type,\n width,\n style,\n headingStyle,\n ref,\n value,\n placeholder,\n id,\n error,\n url,\n}) => {\n return (\n \n

{label}

\n \n {url}\n
\n );\n};\n\nconst getColor = (width: number, breakpoints: number[]): string =>\n width <= breakpoints[0]\n ? '#FD5350'\n : width < breakpoints[2]\n ? '#FEC243'\n : width <= breakpoints[2]\n ? '#00BA07'\n : '#00BA07';\n\nconst getDiscriptor = (width: number, breakpoints: number[]): string =>\n width <= breakpoints[0]\n ? 'Weak Password'\n : width < breakpoints[2]\n ? 'Moderate Password'\n : width >= breakpoints[2]\n ? 'Strong Password'\n : 'Strong Password';\n\nconst getWidth = (width: number, steps: number): number => (width * 100) / steps;\n\nconst PSI = {\n strengthContainer: styled.div`\n margin-top: 10px;\n height: 3px;\n width: 100%;\n background-color: #f7f7f8;\n `,\n strengthBar: styled.div<{ width: number; break: number[]; steps: number }>`\n height: 3px;\n width: ${(p) => getWidth(p.width, p.steps)}%;\n background-color: ${(p): string => getColor(p.width, p.break)};\n transition: width 0.2s;\n `,\n strengthDescription: styled.div<{ width: number; break: number[] }>`\n margin-top: 5px;\n color: ${(p): string => getColor(p.width, p.break)};\n width: 100%;\n text-align: right;\n &::before {\n display: inline-block;\n margin-right: 10px;\n content: '';\n width: 13px;\n height: 13px;\n background-color: ${(p): string => getColor(p.width, p.break)};\n border-radius: 50%;\n }\n `,\n popup: styled.div`\n position: absolute;\n right: 0px;\n top: -120px;\n background-color: #0a132a; /* fallback */\n background-color: #0a132af0;\n border-radius: 5px;\n padding: 14px;\n animation: fade-in 0.2s ease-out 0s forwards;\n & > p:first-child {\n margin-top: 0px;\n }\n & > p:last-child {\n border-bottom: 0px;\n padding-bottom: 0px;\n margin-bottom: 0px;\n }\n @keyframes fade-in {\n from {\n opacity: 0;\n transform: translateY(1rem);\n }\n to {\n opacity: 1;\n transform: translateY(0rem);\n }\n }\n `,\n popupLabel: styled.p<{ done: boolean }>`\n color: ${(p): string => (p.done ? '#35C849' : 'white')};\n font-size: 12px;\n border-bottom: solid 1px rgba(255, 255, 255, 0.2);\n padding-bottom: 10px;\n &::before {\n display: inline-block;\n content: '';\n background-color: ${(p): string => (p.done ? '#35C849' : 'white')};\n width: 10px;\n height: 10px;\n border-radius: 50%;\n margin-right: 5px;\n }\n `,\n};\n\nexport const PasswordStrengthInput: React.FC<\n LabeledInputProps & { criteria: { done: boolean; label: string; hidden: boolean }[] }\n> = ({\n label,\n width,\n style,\n headingStyle,\n ref,\n value,\n placeholder,\n id,\n autoFocus = false,\n error,\n onChange,\n criteria,\n}) => {\n const [showPopup, setShowPopup] = React.useState(false);\n\n let progress = 0;\n const steps = 3;\n const breakpoint = Math.round(criteria.length / steps);\n const breakpoints = [breakpoint, breakpoint * 2, breakpoint * 3];\n criteria.forEach((check) => {\n if (check.done) {\n progress += 1;\n }\n });\n\n return (\n
\n \n {\n setShowPopup(true);\n }}\n onBlur={() => {\n setShowPopup(false);\n }}\n />\n {progress > 0 ? (\n
\n \n \n \n \n {getDiscriptor(progress, breakpoints)}\n \n
\n ) : (\n
// Height of the Strength indicator\n )}\n {showPopup ? (\n \n {criteria.reduce((acc: JSX.Element[], crit) => {\n if (crit.hidden === false) {\n acc.push({crit.label});\n }\n return acc;\n }, [])}\n \n ) : (\n ''\n )}\n
\n );\n};\n\nconst PasswordInputStyle = {\n container: styled(EP.container)<{ showIconEnd: boolean; showIconStart: boolean }>`\n ${(p): string => {\n let outstring = '';\n if (p.showIconEnd && p.showIconStart) {\n outstring += 'padding-right: 0;';\n outstring += 'width: calc(100% - 18px)';\n } else {\n outstring += 'padding: 0;';\n outstring += 'width: 100%';\n }\n\n return outstring;\n }}\n `,\n};\n\nexport const PasswordInput: React.FC = ({\n width,\n style,\n ref,\n value,\n placeholder,\n id,\n onFocus,\n onBlur,\n onChange,\n startIcon = '',\n showEye = false,\n autoFocus = false,\n onEnterPressed,\n error,\n}) => {\n const [showPassword, setShowPassword] = React.useState(false);\n const [focused, setFocus] = React.useState(false);\n\n const toggle = (): void => setShowPassword(!showPassword);\n\n return (\n \n {startIcon && (\n <>\n \"reveal\n \n \n )}\n {\n if (event.charCode === 13) {\n event.preventDefault();\n if (onEnterPressed) {\n onEnterPressed(event);\n }\n }\n }\n : undefined\n }\n error={error}\n autoFocus={autoFocus}\n textonly\n onFocus={(event) => {\n setFocus(true);\n if (onFocus) {\n onFocus(event);\n }\n }}\n onBlur={(event) => {\n setFocus(false);\n if (onBlur) {\n onBlur(event);\n }\n }}\n />\n {showEye && (\n ): void => {\n event.preventDefault();\n toggle();\n }}\n style={{ marginRight: '18px', outline: 'none', height: '18px', width: '18px' }}\n onClick={(event: React.MouseEvent): void => {\n event.preventDefault();\n toggle();\n }}\n >\n \n
\n )}\n \n );\n};\nexport const LabeledPasswordInput: React.FC = ({\n label,\n width,\n style,\n ref,\n value,\n placeholder,\n headingStyle,\n id,\n startIcon = '',\n showEye = false,\n onEnterPressed,\n error,\n}) => {\n return (\n
\n

{label}

\n \n
\n );\n};\n\nexport const ErrorField = styled.p`\n color: #f15c5a;\n margin-top: 0.25rem;\n margin-bottom: 0.25rem;\n`;\n","import React from 'react';\nimport styled, { CSSObject } from 'styled-components';\n\nimport { LayoutProps, LayoutS } from './Layout';\nimport Button from '../particles/Button';\n\nimport defaultRenderer from './FormRenderers/Default';\n\nexport interface FormInputOptions {\n name: string;\n type: 'text' | 'password' | 'email' | 'radio' | 'button';\n area: string;\n autoFocus?: boolean;\n headingStyle?: CSSObject;\n limit?: number;\n onEnterPressed?: (event: React.KeyboardEvent) => void;\n}\ninterface InputOptions extends FormInputOptions {\n renderer?: any;\n showEye?: boolean;\n startIcon?: string;\n label?: string;\n onEnterPressed?: (event: React.KeyboardEvent) => void;\n}\n\nconst AllErrorField = styled.p`\n color: #f15c5a;\n margin-top: 0px;\n margin-bottom: 5px;\n animation: growin 0.2s linear 0s forwards 1;\n @keyframes growin {\n from {\n height: 0px;\n }\n to {\n height: 19.4px;\n }\n }\n`;\n\ninterface FormProps extends LayoutProps {\n inputs: InputOptions[];\n errors: any;\n submit: InputOptions;\n onSubmit: (arg0: any) => void;\n onChange?: (arg0: any) => void;\n renderer?: any;\n headingStyle?: CSSObject;\n}\n\nconst isKeyboardEvent = (event: any): event is KeyboardEvent => {\n if (event.charcode) return true;\n return false;\n};\n\nconst Form: React.FC = ({\n rows,\n colms,\n areas,\n inputs,\n errors,\n submit,\n onSubmit,\n onChange,\n renderer,\n headingStyle,\n}): any => {\n const ref: any = React.useRef(undefined);\n\n const handleSubmit = (e: any): void => {\n e.preventDefault();\n const values: any = {};\n if (isKeyboardEvent(e)) {\n if (e.charCode !== 13) {\n return;\n }\n }\n if (ref.current) {\n inputs.forEach((input) => {\n const element: HTMLInputElement | null = document.querySelector(`#${input.area}`);\n if (element) {\n values[input.name] = element.value;\n }\n });\n }\n onSubmit(values);\n };\n\n const handleChange = React.useCallback(() => {\n const values: Record = {};\n if (ref.current) {\n inputs.forEach((input) => {\n const element: HTMLInputElement | null = document.querySelector(`#${input.area}`);\n if (element) {\n values[input.name] = element.value;\n }\n });\n }\n onChange && onChange(values);\n }, [onChange, ref.current, inputs]);\n\n return [\n errors.ALL ? {errors.ALL} : '',\n
\n \n {inputs.map((input, key) => {\n const inputWithStyles = headingStyle ? { ...input, headingStyle } : input;\n return input.renderer\n ? input.renderer(inputWithStyles, key, errors, handleChange)\n : renderer\n ? renderer(inputWithStyles, key, errors, handleChange)\n : defaultRenderer(inputWithStyles, key, errors, handleChange);\n })}\n \n \n
,\n ];\n};\n\nexport default Form;\n","import React from 'react';\nimport { LabeledInput, ErrorField } from '../../particles/Input';\n\nexport default (input: any, key: number, errors: any, onChange: any) => (\n
\n \n {errors[input.name] ? {errors[input.name]} : ''}\n
\n);\n","import React from 'react';\nimport { FormInputOptions } from '../../molecules/Form';\nimport { LabeledEPInput, ErrorField } from '../../particles/Input';\n\ninterface InputOptions extends FormInputOptions {\n type: 'email' | 'password';\n}\n\nexport default (input: InputOptions, key: number, errors: any, onChange: any) => (\n
\n \n {errors[input.name] ? {errors[input.name]} : ''}\n
\n);\n","import { useState, useEffect } from 'react';\n\ninterface WindowSizeI {\n width: number | undefined;\n height: number | undefined;\n}\n// Hook\nfunction useWindowSize(): any {\n const isClient = typeof window === 'object';\n\n function getSize(): WindowSizeI {\n return {\n width: isClient ? window.innerWidth : undefined,\n height: isClient ? window.innerHeight : undefined,\n };\n }\n\n const [windowSize, setWindowSize] = useState(getSize);\n\n useEffect((): (() => void) | void => {\n if (!isClient) {\n return;\n }\n\n function handleResize(): void {\n setWindowSize(getSize());\n }\n\n window.addEventListener('resize', handleResize);\n\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n return windowSize;\n}\n\nexport default useWindowSize;\n","export enum Result {\n Success = '',\n EmptyField = 'Please complete the entire form.',\n RequiredField = 'Please complete the field.',\n ShortOrgName = 'The business name must be at least three characters long',\n OrgExists = 'That name is taken, please use a different name',\n NumberStartOrgName = 'The business name must not start with a number',\n InvalidOrgName = 'The business name is invalid',\n InvalidEmail = 'Email is invalid.',\n InvalidPasswordLength = 'Password must be a minimum of 5 characters.',\n InvalidPasswordCapital = 'Password must contain an uppercase letter.',\n InvalidPasswordNumber = 'Password must contain a number.',\n PasswordMatch = 'Passwords must match.',\n GeneralError = 'Something happened! Please try again later.',\n UserDoesntExist = 'Invalid email/password combination.',\n CaptchaError = 'There was an error validating the Captcha',\n LongRunningError = 'Still processing, please wait.',\n InvalidToken = 'Token is invalid',\n IncorrectPassphrase = 'Incorrect Passphrase',\n ResetPasswordFail = 'An unexpected error has occurred. Please contact support at support@tauria.com',\n}\n\n// eslint-disable-next-line no-useless-escape\nconst SUPPORTED_EMAIL_PATTERN = /^[A-Za-z0-9\\._\\-\\+]+@[A-Za-z0-9_\\-]+\\.[A-Za-z0-9\\.]+$/;\n\nexport default {\n checkEmpty: (values: string[]): Result => {\n let empty = Result.Success;\n values.forEach((v) => {\n if (v === '') {\n empty = Result.EmptyField;\n }\n });\n return empty;\n },\n checkOrganizationLength: (value: string): Result =>\n value.length > 2 && value.length <= 30 ? Result.Success : Result.ShortOrgName,\n checkOrganizationNumberStart: (value: string): Result =>\n !/^[1-9]/.test(value) ? Result.Success : Result.NumberStartOrgName,\n checkOrganization: (value: string): Result => {\n const re = /^[a-zA-Z][0-9a-zA-Z]{2,}$/;\n if (!re.test(value)) {\n return Result.InvalidOrgName;\n }\n return Result.Success;\n },\n checkEmail: (value: string): Result =>\n SUPPORTED_EMAIL_PATTERN.test(String(value).trim().toLowerCase())\n ? Result.Success\n : Result.InvalidEmail,\n checkPasswordLength: (value: string): Result =>\n value.length >= 5 && value.length <= 200 ? Result.Success : Result.InvalidPasswordLength,\n checkPasswordCapital: (value: string): Result =>\n /[A-Z]/.test(value) ? Result.Success : Result.InvalidPasswordCapital,\n checkPasswordNumber: (value: string): Result =>\n /[0-9]/.test(value) ? Result.Success : Result.InvalidPasswordNumber,\n checkPasswordsMatch: (a: string, b: string): Result =>\n a === b ? Result.Success : Result.PasswordMatch,\n\n checkPasswordsSignin(value: string): boolean {\n return (\n this.checkPasswordCapital(value) === Result.Success &&\n this.checkPasswordLength(value) === Result.Success &&\n this.checkPasswordNumber(value) === Result.Success\n );\n },\n checkTwoFactorCode: (value: string): boolean => value.replace(/\\s/g, '').length === 6,\n};\n","import React from 'react';\nimport styled from 'styled-components';\nimport { useHistory } from 'react-router';\nimport Button from '../tauria-react-components/particles/Button';\n\nconst Container = styled.div`\n width: calc(100% - 160px);\n height: calc(100% - 145px);\n display: flex;\n flex-direction: column;\n justify-content: center;\n padding: 20px 80px;\n\n @media only screen and (max-width: 400px) {\n padding: 20px 10px;\n width: calc(100% - 20px);\n }\n\n @media only screen and (max-width: 600px) {\n height: calc(100% - 105px);\n }\n\n @media only screen and (max-width: 1200px) {\n padding: 20px 40px;\n width: calc(100% - 80px);\n }\n`;\n\nconst Content = styled.div`\n margin: auto;\n width: 100%;\n\n > p {\n margin-bottom: 1.5rem;\n line-height: calc(20 / 14);\n }\n`;\n\nconst Footer = styled.div`\n margin-top: auto;\n background-color: #f7f8f9;\n width: calc(100% - 40px);\n height: 65px;\n color: #3c4b71;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 20px;\n font-size: 1.125rem;\n\n button {\n margin-left: 20px;\n width: auto;\n\n @media only screen and (max-width: 900px) {\n margin-left: 30px;\n }\n }\n\n @media only screen and (max-width: 600px) {\n padding: 10px 20px;\n height: 45px;\n font-size: 0.875rem;\n }\n\n > * {\n width: 30%;\n @media only screen and (max-width: 600px) {\n width: auto;\n }\n }\n`;\n\nconst Base: React.FC<{\n buttonHref?: string;\n buttonLabel?: string;\n label?: string;\n showFooter?: boolean;\n}> = ({\n children,\n buttonHref = '/',\n label = 'Already have a workspace?',\n buttonLabel = 'SIGN IN',\n showFooter = true,\n}) => {\n const history = useHistory();\n\n return (\n <>\n \n {children}\n \n {showFooter && (\n
\n {label}\n {\n history.push(buttonHref);\n }}\n value={buttonLabel}\n color=\"#0a1e51\"\n />\n
\n )}\n \n );\n};\n\nexport default Base;\n","import styled from 'styled-components';\n\nexport const Headings = styled.header`\n margin: 0 0 2rem;\n width: calc(100% - 2rem);\n\n @media only screen and (min-width: 900px) {\n margin: 0 0 3rem;\n width: calc(100% - 10rem);\n }\n\n @media only screen and (min-width: 1200px) {\n margin: 0 0 3rem;\n }\n\n @media only screen and (max-height: 700px) {\n margin: 0 0 1rem;\n }\n\n h1 {\n font-style: normal;\n font-weight: bold;\n line-height: calc(59 / 48);\n color: #0a132a;\n margin: 0 0 0.5rem;\n font-size: 2rem;\n\n @media only screen and (min-width: 900px) {\n margin: 0 0 1rem;\n font-size: 2.25rem;\n }\n\n @media only screen and (min-width: 1200px) {\n margin: 0 0 1rem;\n font-size: 3rem;\n }\n }\n\n h2 {\n font-style: normal;\n font-weight: normal;\n line-height: calc(44 / 36);\n color: #3c4b71;\n margin: 0;\n font-size: 1.5rem;\n overflow-wrap: break-word;\n\n @media only screen and (min-width: 900px) {\n font-size: 1.75rem;\n }\n\n @media only screen and (min-width: 1200px) {\n font-size: 2.25rem;\n }\n }\n`;\n\nexport const FormTopSpacer = styled.div`\n margin-top: 0;\n\n @media only screen and (min-width: 900px) and (min-height: 500px) {\n margin-top: 1rem;\n }\n\n @media only screen and (min-width: 900px) and (min-height: 600px) {\n margin-top: 2rem;\n }\n\n @media only screen and (min-width: 900px) and (min-height: 700px) {\n margin-top: 3rem;\n }\n\n @media only screen and (min-width: 900px) and (min-height: 800px) {\n margin-top: 4rem;\n }\n\n @media only screen and (min-width: 900px) and (min-height: 900px) {\n margin-top: 5rem;\n }\n`;\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport loader from '../extras/img/loader.svg';\n\nconst LoadingStyle = {\n LoadingSvg: styled.img`\n animation: rotate 1s ease-in-out infinite;\n @keyframes rotate {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n }\n `,\n LoadingDivContainer: styled.div`\n display: flex;\n justify-content: center;\n `,\n};\n\nconst Loader: any = () => (\n \n \n \n);\nexport default Loader;\n","import React from 'react';\nimport styled from 'styled-components';\nimport Loader from '../tauria-react-components/molecules/Loader';\nimport { Result } from '../utilities/validate';\n\ninterface LoadingBGProps {\n opacity?: number;\n}\n\nconst LoadingBG = styled.div`\n background-color: rgba(2, 8, 25, 0.7);\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n color: #fff;\n z-index: 7;\n ${(p: LoadingBGProps): string => (p.opacity ? `opacity: ${p.opacity};` : '')}\n\n @keyframes fadein {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n @keyframes fadeout {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n }\n`;\n\nconst Loading: React.FC<{ promise?: Promise; message: string }> = ({\n promise,\n message,\n}) => {\n const [stateMessage, setMessage] = React.useState(message);\n\n React.useEffect(() => {\n let mounted = true;\n\n if (promise) {\n promise\n .then((newMessage?: Result): void => {\n if (mounted) {\n setMessage(newMessage);\n }\n })\n .catch((errorMessage?: Result): void => {\n if (mounted) {\n setMessage(errorMessage);\n }\n });\n }\n return (): void => {\n mounted = false;\n };\n }, [promise]);\n\n return promise ? (\n \n \n

{stateMessage}

\n
\n ) : null;\n};\n\n/**\n *\n * @param loading : the loader above uses a boolean instead of a promise, this will make it easier for the component to be embedded anywhere within the app\n */\nexport const LoadingSync: React.FC<{ loading?: boolean; message: string }> = ({\n loading,\n message,\n}) => {\n return loading ? (\n \n \n

{message}

\n
\n ) : (\n
\n );\n};\n\nexport default Loading;\n","import React from 'react';\nimport { useHistory } from 'react-router';\nimport Form from '../tauria-react-components/molecules/Form';\nimport { Link as LinkButton } from '../tauria-react-components/particles/Button';\nimport EmailPasswordRenderer from '../tauria-react-components/molecules/FormRenderers/EmailPassword';\nimport useWindowSize from '../tauria-react-components/hooks/useWindowSize';\nimport Validate, { Result } from '../utilities/validate';\nimport Base from '../pages/Base';\nimport { Headings, FormTopSpacer } from '../styles';\nimport { LoadingSync } from './Loading';\n\ntype SigninProps = {\n onLogin: (\n email: string,\n password: string,\n isRedirectFromTheseus: boolean | undefined,\n loginHashed?: string,\n ) => Promise<{ error: string } | undefined>;\n isNextStage?: boolean;\n isRedirectFromTheseus?: boolean;\n};\n\nconst Signin = ({ onLogin, isNextStage, isRedirectFromTheseus }: SigninProps): JSX.Element => {\n const history = useHistory();\n const [errors, setErrors] = React.useState({});\n const windowSize = useWindowSize();\n const [loading, setLoading] = React.useState(false);\n\n const handleSignin = async (values: Record): Promise => {\n const maybeErrors: Record = {};\n\n const email = values['EMAIL ADDRESS'];\n const password = values.PASSWORD;\n const loginHashed = values.loginHashed;\n\n if (Validate.checkEmpty([email]) !== Result.Success) {\n maybeErrors['EMAIL ADDRESS'] = Result.RequiredField;\n }\n\n if (Validate.checkEmpty([password]) !== Result.Success) {\n if (maybeErrors['EMAIL ADDRESS']) {\n maybeErrors.ALL = Result.EmptyField;\n delete maybeErrors['EMAIL ADDRESS'];\n setErrors(maybeErrors);\n return;\n }\n\n maybeErrors.PASSWORD = Result.RequiredField;\n }\n\n if (!maybeErrors['EMAIL ADDRESS'] && Validate.checkEmail(email) !== Result.Success) {\n maybeErrors['EMAIL ADDRESS'] = Result.InvalidEmail;\n }\n\n if (Object.keys(maybeErrors).length === 0) {\n setLoading(true);\n try {\n let responseError;\n if (isRedirectFromTheseus) {\n responseError = await onLogin(email, password, isRedirectFromTheseus, loginHashed);\n } else {\n responseError = await onLogin(email, password, isRedirectFromTheseus);\n }\n\n if (responseError) {\n setErrors({ ALL: responseError.error });\n setLoading(false);\n } else {\n setErrors({});\n }\n } catch (error) {\n setErrors({ ALL: Result.GeneralError });\n setLoading(false);\n }\n } else {\n setErrors(maybeErrors);\n }\n };\n\n const handleRedirectFromTheseus = async (): Promise => {\n const email = localStorage.getItem('@tauria-legacy-email');\n const password = localStorage.getItem('@tauria-legacy-passwordHash');\n const loginHash = localStorage.getItem('@tauria-loginHash');\n\n localStorage.removeItem('@tauria-legacy-email');\n localStorage.removeItem('@tauria-loginHash');\n localStorage.removeItem('@tauria-legacy-passwordHash');\n\n if (email && password && loginHash) {\n const values: Record = {\n 'EMAIL ADDRESS': email,\n PASSWORD: password,\n loginHashed: loginHash,\n };\n\n await handleSignin(values);\n } else {\n window.location.pathname = '/signin';\n }\n };\n\n React.useEffect(() => {\n if (isRedirectFromTheseus) {\n handleRedirectFromTheseus();\n }\n }, [isRedirectFromTheseus]);\n\n const handleChange = React.useCallback((): void => {\n // Reset Errors on change\n setErrors({});\n }, []);\n\n // const handlePasswordEnter = (e: React.KeyboardEvent): void => {\n // e.preventDefault();\n // const values: Record = {};\n // const email: HTMLInputElement | null = document.querySelector(`#email`);\n // const password: HTMLInputElement | null = document.querySelector(`#password`);\n // if (email) values['EMAIL ADDRESS'] = email.value;\n // if (password) values.PASSWORD = password.value;\n // handleSignin(values);\n // };\n\n return (\n <>\n \n {windowSize.width >= 900 && (\n \n

Sign In

\n

Welcome to Tauria

\n
\n )}\n \n \n {\n history.push(`/forgot_your_password`);\n }}\n />\n \n \n \n \n );\n};\n\nexport default Signin;\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\nimport Modal from 'react-modal';\nimport { useHistory } from 'react-router';\nimport Form from '../tauria-react-components/molecules/Form';\nimport close from '../tauria-react-components/extras/img/sg_circle_close.svg';\nimport { IconButton, Link as LinkButton } from '../tauria-react-components/particles/Button';\nimport { LoadingSync } from './Loading';\nimport { Result } from '../utilities/validate';\n\nconst customStyles = {\n content: {\n top: '50%',\n left: '50%',\n right: 'auto',\n bottom: 'auto',\n transform: 'translate(-50%, -50%)',\n padding: 0,\n },\n};\n\nconst S = {\n passwordContainer: styled.div`\n padding: 60px 100px;\n @media only screen and (max-width: 900px) {\n width: calc(100vw - 240px);\n padding: 60px;\n }\n @media only screen and (max-width: 500px) {\n width: calc(100vw - 80px);\n padding: 20px;\n }\n `,\n modalBodyText: styled.div`\n text-align: center;\n `,\n header: styled.div`\n font-size: 24px;\n color: #191a21;\n font-weight: 600;\n margin-bottom: 20px;\n `,\n description: styled.div`\n font-weight: 600;\n font-size: 14px;\n margin-bottom: 20px;\n `,\n};\n\nif (typeof document !== 'undefined' && document.getElementById('#root')) {\n Modal.setAppElement('#root');\n}\n\ninterface BodyForm {\n errors: Record;\n handleSubmit: (arg0: { CODE: string } & { PASSWORD: string }) => Promise;\n}\n\ntype editFunction = ({ CODE }: { CODE: string }) => Promise<{ error: string } | undefined>;\ntype passwordFunction = ({\n PASSWORD,\n}: {\n PASSWORD: string;\n}) => Promise<{ error: string } | undefined>;\n\ninterface ModalInput {\n modalIsOpen: boolean;\n onSubmitCallback: editFunction | passwordFunction;\n setIsOpen: Function;\n}\nconst PasswordBodyForm: React.FC = ({ errors, handleSubmit }) => {\n const history = useHistory();\n return (\n <>\n \n {\n history.push(`/forgot_your_password`);\n }}\n />\n \n );\n};\n\nconst TwoFactorBodyForm: React.FC = ({ errors, handleSubmit }) => {\n return (\n \n );\n};\n\nconst B2BPassphraseBodyForm: React.FC = ({ errors, handleSubmit }) => {\n return (\n \n );\n};\n\nconst CustomAuthModel: React.FC<\n ModalInput & { header: string; description: string; bodyForm: React.FC }\n> = ({ modalIsOpen, setIsOpen, header, description, onSubmitCallback, bodyForm: BodyForm }) => {\n const [errors, setErrors] = useState({});\n const [loading, setLoading] = React.useState(false);\n const closeModal = (): void => {\n setErrors({});\n setIsOpen(false);\n };\n const handleSubmit = async (key: { CODE: string } & { PASSWORD: string }): Promise => {\n // setLoading(true);\n try {\n const err = await onSubmitCallback(key);\n let field = 'PASSWORD';\n if ('CODE' in key) {\n field = 'CODE';\n }\n if (err && 'error' in err) {\n setErrors({ [field]: err.error });\n setLoading(false);\n }\n if (err === undefined) {\n setErrors({});\n }\n } catch (error) {\n setErrors({ ALL: Result.GeneralError });\n setLoading(false);\n }\n };\n const passwordForm = (\n \n \n \n {header}\n {description}\n \n \n \n \n );\n return (\n <>\n \n {passwordForm}\n \n\n \n \n );\n};\n\nexport const PasswordModal: React.FC = ({\n modalIsOpen,\n setIsOpen,\n onSubmitCallback,\n}) => (\n \n);\n\nexport const TwoFactorModal: React.FC = ({\n modalIsOpen,\n setIsOpen,\n onSubmitCallback,\n}) => (\n \n);\n\nexport const B2BPassphraseModal: React.FC = ({\n modalIsOpen,\n setIsOpen,\n onSubmitCallback,\n}) => (\n \n);\n","import React from 'react';\nimport styled from 'styled-components';\nimport useWindowSize from '../tauria-react-components/hooks/useWindowSize';\nimport lock from '../tauria-react-components/extras/img/sb_lock.svg';\nimport { Headings } from '../styles';\n\nconst Container = styled.div`\n background-color: #f7f8f9;\n width: 100%;\n padding: 20px 80px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: stretch;\n\n @media only screen and (max-width: 1100px) {\n padding: 20px;\n }\n @media only screen and (max-width: 600px) {\n padding: 20px 0;\n }\n`;\n\nconst List = styled.div`\n background-color: transparent;\n width: calc(100% - 160px);\n margin-top: 50px;\n @media only screen and (max-width: 1100px) {\n width: calc(100% - 40px);\n }\n @media only screen and (max-width: 600px) {\n width: calc(100% - 20px);\n margin-left: 10px;\n height: auto;\n margin-bottom: 0px;\n }\n`;\n\nconst Card = styled.div`\n cursor: pointer;\n width: calc(100% - 50px);\n background-color: white;\n border-radius: 5px;\n display: flex;\n color: #282a36;\n justify-content: space-between;\n padding: 18px 25px;\n margin-bottom: 20px;\n box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.1);\n transition: box-shadow 0.2s;\n &:hover {\n box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.2);\n }\n & > h3 {\n margin: 0px;\n }\n`;\n\nexport interface OrganizationInfo {\n orgGuid: string;\n orgName: string;\n}\nexport interface Organization {\n isAuthenticated: boolean;\n // eslint-disable-next-line camelcase\n twofa_required: 'true' | 'false';\n organization: OrganizationInfo;\n}\n\nexport interface OrgListInterface {\n orgList: Organization[] | undefined;\n}\n\nconst OrgCard: React.FC<{\n org: Organization;\n isAuthenticated: boolean;\n onClick(org: Organization): void;\n}> = ({ org, isAuthenticated, onClick }) => {\n return (\n onClick({ ...org, isAuthenticated })}>\n

{org.organization.orgName}

\n {!isAuthenticated ? (\n \"lock\"\n ) : null}\n
\n );\n};\n\ntype OrgListProps = { orgList: OrgListInterface; onClickOrg(org: Organization): void };\n\nconst OrgList = ({ orgList, onClickOrg }: OrgListProps): JSX.Element => {\n const windowSize = useWindowSize();\n\n const [authenticatedOrgs, intrudingOrgs] = React.useMemo(() => {\n const authenticated: Organization[] = [];\n const intruding: Organization[] = [];\n const orgs = orgList?.orgList || [];\n\n orgs.forEach((org) => {\n if (org.isAuthenticated) {\n authenticated.push(org);\n } else {\n intruding.push(org);\n }\n });\n\n return [authenticated, intruding];\n }, [orgList]);\n\n return (\n \n {windowSize.width >= 900 && (\n \n

Welcome Back

\n

Select the workspace you want to use

\n
\n )}\n \n {authenticatedOrgs.map((mOrg: Organization) => (\n \n ))}\n {intrudingOrgs.map((nOrg) => (\n \n ))}\n \n
\n );\n};\n\nexport default OrgList;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable camelcase */\nimport { Result } from '../utilities/validate';\nimport ConfigManager from '../config';\n\nconst { config } = new ConfigManager(window.location.origin);\nconst baseUrl = config.backend.auth;\nconst baseUrlv2 = `${config.backend.auth}/v2`;\n\nconst requestOptions: RequestInit = {\n method: 'POST',\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n};\n\ninterface UserSignupRes {\n email: string;\n name: string;\n last_name: string;\n login: string;\n success: boolean;\n}\n\ninterface InviterCompany {\n organization: string;\n passphrase_crypt: boolean;\n}\n\nexport default {\n async getUserOrgs(\n email: string,\n password: string,\n captcha: string,\n passwordLegacy?: string,\n ): Promise {\n const data: URLSearchParams = new URLSearchParams();\n\n // If mobile app we may need to force a version update so we send the app details to the server\n const isMobileApp = window.navigator.userAgent.includes('ZebuApp');\n if (isMobileApp) {\n const appUA = window.navigator.userAgent.split('ZebuApp')[1];\n const appPlatform = appUA.split('/')[1];\n const appVersion = appUA.split('/')[2];\n data.append('app_version', appVersion);\n data.append('app_platform', appPlatform);\n }\n\n data.append('email', email);\n data.append('password', password);\n data.append('captchaToken', captcha);\n\n if (passwordLegacy) data.append('oldpassword', passwordLegacy);\n\n const options = { ...requestOptions, body: data };\n\n try {\n const resp: Response = await fetch(`${baseUrl}/orgsignin`, options);\n return resp;\n } catch (err) {\n return err;\n }\n },\n async verifyOrgName(name: string): Promise {\n try {\n const resp: Response = await fetch(`${baseUrl}/verify/org_exists/${name}`);\n if (resp.status === 200) {\n return Result.Success;\n }\n if (resp.status === 409) {\n return Result.OrgExists;\n }\n return Result.GeneralError;\n } catch (e) {\n return Result.GeneralError;\n }\n },\n\n async validate2FA(\n email: string,\n prefix: string,\n code: string,\n captcha: string,\n ): Promise {\n try {\n const params = new URLSearchParams();\n params.append('prefix', prefix);\n params.append('code', code);\n params.append('email', email);\n params.append('captchaToken', captcha);\n\n const response = await fetch(`${baseUrlv2}/twofa`, {\n ...requestOptions,\n body: params,\n });\n if (response.ok) {\n const success = await response.json();\n return success.success;\n }\n return false;\n } catch (e) {\n return undefined;\n }\n },\n\n async forgotPasword(email: string, captcha: string): Promise {\n try {\n const params = new URLSearchParams();\n params.append('email', email);\n params.append('captchaToken', captcha);\n\n const response = await fetch(`${baseUrl}/v2/forgot_password`, {\n ...requestOptions,\n body: params,\n });\n if (response.ok) {\n return true;\n }\n return false;\n } catch (e) {\n return undefined;\n }\n },\n\n async passwordResetInfo(token: string, prefix: string): Promise {\n const url = `${baseUrl}/v1/user/signup/${prefix}/${token}`;\n try {\n const response = await fetch(url);\n return (await response.json()) as UserSignupRes;\n } catch (e) {\n return undefined;\n }\n },\n\n async checkB2BToken(token: string): Promise {\n const url = `${baseUrl}/v1/b2b/invite/${token}`;\n try {\n const response = await fetch(url);\n if (response.status === 200) {\n const respData = await response.json();\n return respData.inviter_company_info;\n }\n return undefined;\n } catch (e) {\n return undefined;\n }\n },\n\n async validateB2BPassphrase(\n token: string,\n passphraseHash: string,\n passphraseHashLegacy?: string,\n ): Promise {\n const data: URLSearchParams = new URLSearchParams();\n\n data.append('token', token);\n data.append('passphraseHash', passphraseHash);\n if (passphraseHashLegacy) data.append('oldpassphraseHash', passphraseHashLegacy);\n\n const options = { ...requestOptions, body: data };\n\n try {\n const resp: Response = await fetch(`${baseUrl}/b2b/passphrase`, options);\n return resp;\n } catch (err) {\n return err;\n }\n },\n};\n","/* eslint-disable no-console */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable camelcase */\nimport ConfigManager from '../config';\n\nconst { config } = new ConfigManager(window.location.origin);\nconst baseUrl = `${config.backend.analytics}`;\n\nconst requestOptions: RequestInit = {\n method: 'POST',\n headers: { 'Content-Type': 'application/JSON' },\n};\n\nexport default {\n async trackRegisterPage(uuid: string): Promise {\n try {\n const data = {\n // eslint-disable-next-line @typescript-eslint/camelcase\n user_uuid: uuid,\n };\n const options = { ...requestOptions, body: JSON.stringify(data) };\n await fetch(`${baseUrl}/user/registering`, options);\n } catch (e) {\n console.error(e);\n }\n },\n\n async trackOrgBuiltPage(uuid: string, prefix: string, promotion: boolean): Promise {\n try {\n const data = {\n // eslint-disable-next-line @typescript-eslint/camelcase\n user_uuid: uuid,\n prefix,\n special: promotion,\n };\n const options = { ...requestOptions, body: JSON.stringify(data) };\n await fetch(`${baseUrl}/user/built`, options);\n } catch (e) {\n console.error(e);\n }\n },\n};\n","export const sendPageView = (url: string): void => {\n const _hsq = (window._hsq = window._hsq || []);\n\n _hsq.push(['setPath', url]);\n _hsq.push(['trackPageView']);\n};\n\ntype Identity = {\n email: string;\n [key: string]: unknown;\n};\n\nexport const setIdentity = (identity: Identity): void => {\n const _hsq = (window._hsq = window._hsq || []);\n\n _hsq.push(['identify', identity]);\n};\n\nexport const sendEvent = (eventId: string | number, eventValue?: number): void => {\n const _hsq = (window._hsq = window._hsq || []);\n\n _hsq.push([\n 'trackEvent',\n {\n id: eventId,\n value: eventValue,\n },\n ]);\n};\n","/* eslint-disable @typescript-eslint/camelcase */\n/* eslint-disable camelcase */\nimport ConfigManager from '../config';\nimport { sendEvent, sendPageView, setIdentity } from '../utilities/hubspot';\n\nconst { config } = new ConfigManager(window.location.origin);\nexport interface SignupData {\n email: string;\n passwordHash: string;\n prefix: string;\n loginHash: string;\n inviterOrganization?: string | null;\n pin?: string;\n}\n\nexport interface ResetData {\n login: string;\n firstName: string;\n lastName: string;\n email: string;\n passwordHash: string;\n confirmPasswordHash: string;\n prefix: string;\n token: string;\n}\n\nconst Connect = {\n login(data: SignupData): void {\n // HubSpot tracking\n setIdentity({\n email: data.email,\n inviterOrganization: data.inviterOrganization || '',\n });\n sendEvent('User Signed In');\n sendPageView(`${window.location.pathname}#signin-success`);\n\n // post their login\n let url = `https://${data.prefix}.${config.domain}/web/login_unified`;\n const anchorUrl = `#action=login&hash=${data.loginHash}`;\n\n // Do *NOT* add anchor on mobile app so it gets redirected properly to login screen\n if (!window.navigator.userAgent || window.navigator.userAgent.indexOf('ZebuApp') === -1) {\n url += anchorUrl;\n }\n\n const form = document.createElement('form');\n form.setAttribute('method', 'POST');\n form.setAttribute('action', url);\n\n const email = document.createElement('input');\n email.setAttribute('type', 'hidden');\n email.setAttribute('name', 'login');\n email.setAttribute('value', data.email);\n\n const password = document.createElement('input');\n password.setAttribute('type', 'hidden');\n password.setAttribute('name', 'password');\n password.setAttribute('value', data.passwordHash);\n\n const pin = document.createElement('input');\n pin.setAttribute('type', 'hidden');\n pin.setAttribute('name', 'pin');\n pin.setAttribute('value', data.pin ? data.pin : '');\n\n form.appendChild(email);\n form.appendChild(password);\n form.appendChild(pin);\n\n if (data.inviterOrganization) {\n // Below is to add action to get invited to an organization\n const action = document.createElement('input');\n action.setAttribute('type', 'hidden');\n action.setAttribute('name', 'action_after_login');\n action.setAttribute('value', `b2binvite:${data.inviterOrganization}`);\n form.appendChild(action);\n }\n\n document.body.appendChild(form);\n form.submit();\n },\n\n async resetPassword(data: ResetData): Promise {\n const url = `https://${data.prefix}.${config.domain}/web/reset_password?token=${data.token}&db=${data.prefix}`;\n\n const form = document.createElement('form');\n form.setAttribute('method', 'POST');\n form.setAttribute('action', url);\n\n const email = document.createElement('input');\n email.setAttribute('type', 'hidden');\n email.setAttribute('name', 'email');\n email.setAttribute('value', data.email);\n\n const login = document.createElement('input');\n login.setAttribute('type', 'hidden');\n login.setAttribute('name', 'login');\n login.setAttribute('value', data.login);\n\n const name = document.createElement('input');\n name.setAttribute('type', 'hidden');\n name.setAttribute('name', 'name');\n name.setAttribute('value', data.firstName);\n\n const last_name = document.createElement('input');\n last_name.setAttribute('type', 'hidden');\n last_name.setAttribute('name', 'last_name');\n last_name.setAttribute('value', data.lastName);\n\n const password = document.createElement('input');\n password.setAttribute('type', 'hidden');\n password.setAttribute('name', 'password');\n password.setAttribute('value', data.passwordHash);\n\n const confirm_password = document.createElement('input');\n confirm_password.setAttribute('type', 'hidden');\n confirm_password.setAttribute('name', 'confirm_password');\n confirm_password.setAttribute('value', data.confirmPasswordHash);\n\n const csrf = document.createElement('input');\n csrf.setAttribute('type', 'hidden');\n csrf.setAttribute('name', 'csrf_token');\n csrf.setAttribute('value', '');\n\n form.appendChild(email);\n form.appendChild(name);\n form.appendChild(last_name);\n form.appendChild(login);\n form.appendChild(csrf);\n form.appendChild(password);\n form.appendChild(confirm_password);\n\n document.body.appendChild(form);\n return this.resetPasswordNew(data);\n // form.submit();\n },\n\n async resetPasswordNew(data: ResetData): Promise {\n return new Promise((resolve) => {\n try {\n const requestOptions: RequestInit = {\n method: 'POST',\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n };\n\n const body: URLSearchParams = new URLSearchParams();\n body.append('email', data.email);\n body.append('login', data.login);\n body.append('name', data.firstName);\n body.append('last_name', data.lastName);\n body.append('password', data.passwordHash);\n body.append('confirm_password', data.confirmPasswordHash);\n body.append('csrf_token', '');\n body.append('no_redirect', '1');\n\n const options = { ...requestOptions, body };\n const url = `https://${data.prefix}.${config.domain}/web/reset_password?token=${data.token}&db=${data.prefix}`;\n\n fetch(url, options).then((r) => {\n if (r.status === 500) {\n console.log('connectApi->resetPasswordNew: error returned from server');\n resolve(false);\n }\n window.location.href = `https://signup.${config.domain}`;\n\n resolve(true);\n });\n } catch (error) {\n console.log('connectApi->resetPasswordNew: reset pass error', error);\n resolve(false);\n }\n });\n },\n};\n\nexport default Connect;\n","import forge from 'node-forge';\n\nconst encryptPassword = (raw: string, isLocal: boolean): string => {\n const md = forge.md.sha256.create();\n md.update(raw);\n if (isLocal) {\n md.update('zebu.encryption');\n }\n return md.digest().toHex();\n};\n\nconst Encryption = {\n encryptPasswordLegacy(raw: string): string {\n return encryptPassword(raw, false);\n },\n\n // Uses New pbkdf rounds\n encryptPassword(raw: string): string {\n return forge.util.bytesToHex(forge.pkcs5.pbkdf2(raw, 'tauria.encryption', 12437, 32));\n },\n\n // uses legacy sha256 encryption with the extra step\n getLoginHash(raw: string): string {\n return encryptPassword(raw, true);\n },\n};\n\nexport default Encryption;\n","import React from 'react'\nimport useWindowSize from '../hooks/useWindowSize'\n\ninterface RLayoutProps {\n layouts: JSX.Element[]\n breakpoints: number[]\n}\n\nconst ResponsiveLayout: React.FC = ({layouts, breakpoints}) => {\n\n const size = useWindowSize();\n\n let i = 0;\n\n if(size.width > breakpoints[breakpoints.length - 1]) return layouts[layouts.length - 1]\n\n while (i < breakpoints.length - 1){\n if(size.width < breakpoints[i]){\n return layouts[i]\n }\n i += 1\n }\n\n return layouts[layouts.length - 1]\n}\n\nexport default ResponsiveLayout\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React from 'react';\nimport styled from 'styled-components';\n\nimport Layout from '../tauria-react-components/molecules/Layout';\nimport ResponsiveLayout from '../tauria-react-components/molecules/ResponsiveLayout';\n\nconst ResponsivePage = styled.div`\n height: 100vh;\n width: 100vw;\n @media only screen and (max-width: 900px) {\n height: auto;\n min-height: 100vh;\n }\n`;\n\nconst Base: React.FC<{\n Content: any;\n token?: string;\n prefix?: string;\n b2b?: boolean;\n isRedirectFromTheseus?: boolean;\n}> = ({ Content, token, prefix, b2b, isRedirectFromTheseus }) => {\n const DesktopLayout = (\n \n \n \n );\n\n const MobileLayout = (\n \n \n \n );\n\n return (\n \n \n \n );\n};\n\nexport default Base;\n","/* eslint-disable no-console */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useState } from 'react';\nimport { useCaptcha } from '@developers/use-captcha';\nimport { useHistory } from 'react-router-dom';\nimport Banner from '../views/Banner';\nimport Signin from '../views/Signin';\nimport { PasswordModal, TwoFactorModal, B2BPassphraseModal } from '../views/PasswordModal';\nimport OrgList, { OrgListInterface, Organization } from '../views/OrgList';\nimport authApi from '../models/authApi';\nimport analyticsApi from '../models/analyticsApi';\nimport Connect, { SignupData } from '../models/connectApi';\nimport checker, { Result } from '../utilities/validate';\nimport Encryption from '../utilities/encryption';\nimport Base from './basePage';\nimport { LoadingSync } from '../views/Loading';\n\ninterface SigninState {\n step: 'signin' | 'orgList' | 'invalidB2BToken' | 'loading' | 'passphrase';\n showVerifyPassword: boolean;\n email: string;\n password: string;\n loginHash: string;\n orgList: OrgListInterface;\n inviterOrganization: string;\n passphraseCrypt: boolean;\n isRedirectFromTheseus: boolean;\n}\n\nconst Homepage: React.FC<{ b2b: boolean; isRedirectFromTheseus: boolean }> = ({\n b2b,\n isRedirectFromTheseus,\n}) => {\n const [state, setState] = useState({\n isRedirectFromTheseus,\n step: b2b ? 'loading' : 'signin',\n showVerifyPassword: false,\n email: '',\n password: '',\n loginHash: '',\n inviterOrganization: '',\n passphraseCrypt: true,\n orgList: { orgList: [] },\n });\n const [selectedOrg, setSelectedOrg] = useState(undefined);\n const [selectedOrg2FA, setSelectedOrg2FA] = useState(undefined);\n const [askPassphrase, setAskPassphrase] = useState(false);\n const recaptcha = useCaptcha();\n const query = new URLSearchParams(window.location.search);\n const token = query.get('token');\n const history = useHistory();\n const [loading, setLoading] = React.useState<{ isLoading: boolean; message: string }>({\n isLoading: false,\n message: '',\n });\n\n const campaignuuid = query.get('campaign');\n if (campaignuuid !== null) {\n analyticsApi.trackRegisterPage(campaignuuid);\n localStorage.setItem('@tauria-campaign-user_uuid', campaignuuid);\n }\n\n React.useEffect(() => {\n document.title = 'Sign In - Tauria';\n\n return function cleanup(): void {\n // reset history state\n history.replace({ ...history.location, state: undefined });\n };\n }, [history]);\n\n const b2bPassphraseClose = (): void => {\n if (!state.passphraseCrypt) {\n setAskPassphrase(false);\n setState({\n ...state,\n step: 'signin',\n });\n return;\n }\n setState({\n ...state,\n step: 'invalidB2BToken',\n });\n setAskPassphrase(false);\n };\n\n const prepareRedirect = (\n org: Organization,\n email: string,\n passwordHash: string,\n loginHash: string,\n inviterOrganization: string | null,\n pin?: string,\n ): void => {\n const loginData: SignupData = {\n email,\n passwordHash,\n prefix: org.organization.orgName,\n loginHash,\n inviterOrganization,\n pin,\n };\n Connect.login(loginData);\n };\n\n const isError = (e: any): e is Error => {\n if (e.stack) return true;\n return false;\n };\n\n const handleOrgClick = (org: Organization): void => {\n if (!org.isAuthenticated) {\n setSelectedOrg(org);\n } else if (org.twofa_required !== 'false') {\n setSelectedOrg2FA(org);\n } else {\n const { email, password, loginHash } = state;\n prepareRedirect(\n org,\n email,\n isRedirectFromTheseus ? password : Encryption.encryptPassword(password),\n isRedirectFromTheseus ? loginHash : Encryption.getLoginHash(password),\n b2b && !state.passphraseCrypt ? state.inviterOrganization : null,\n );\n }\n };\n\n const doAuthLogin = async (\n email: string,\n passwordHash: string,\n passwordHashLegacy: string,\n targetOrgGuid?: string,\n ): Promise<{ error: string } | OrgListInterface> => {\n let captcha = '';\n // handle captcha on the server side\n try {\n captcha = await recaptcha.execute('get_users_orgs');\n } catch (e) {\n if (e === null) console.error('No token retrieved');\n }\n\n let result;\n\n let response = await authApi.getUserOrgs(email, passwordHash, captcha, undefined);\n if (response.status === 403) {\n try {\n captcha = await recaptcha.execute('get_users_orgs');\n } catch (e) {\n if (e === null) console.error('No token retrieved');\n }\n const respData = await response.json();\n console.log('Home: get user orgs 403', respData);\n // this is for password migrations\n response = await authApi.getUserOrgs(email, passwordHash, captcha, passwordHashLegacy);\n } else if (targetOrgGuid && !isError(response) && response.status === 200) {\n // check if desired org is authenticated\n result = await response.json();\n console.log('Home: get user orgs 200', result);\n\n if ('orgList' in result) {\n // let orgList = data;\n const org = result.orgList.find(\n (maybeOrg: Organization) => maybeOrg.organization.orgGuid === targetOrgGuid,\n );\n if (!org || !org.isAuthenticated) {\n result = undefined;\n response = await authApi.getUserOrgs(email, passwordHash, captcha, passwordHashLegacy);\n }\n }\n }\n\n if (isError(response)) {\n console.error('Error logging in: ', await response.json());\n return { error: Result.GeneralError };\n }\n if (response.status === 403) {\n return { error: Result.UserDoesntExist };\n }\n if (response.status === 500) {\n return { error: Result.GeneralError };\n }\n\n return result || response.json();\n };\n\n const handleLogin = async (\n email: string,\n password: string,\n isRedirectFromTheseus: boolean | undefined,\n loginHashed?: string,\n ): Promise<{ error: string } | undefined> => {\n try {\n const passwordHash = isRedirectFromTheseus ? password : Encryption.encryptPassword(password);\n const passwordHashLegacy = Encryption.encryptPasswordLegacy(password);\n const loginHash =\n isRedirectFromTheseus && loginHashed ? loginHashed : Encryption.getLoginHash(password);\n const processedEmail = String(email).trim().toLowerCase();\n\n const data = await doAuthLogin(processedEmail, passwordHash, passwordHashLegacy);\n if ('error' in data) {\n return data;\n }\n\n // clean up history state\n history.replace({ ...history.location, state: undefined });\n if (data.orgList && data.orgList.length > 1) {\n setLoading({ isLoading: false, message: '' });\n setState({\n ...state,\n step: 'orgList',\n orgList: data,\n email: processedEmail,\n password,\n loginHash,\n });\n // only one org, auto login\n } else if (data.orgList && data.orgList.length === 1 && data.orgList[0].isAuthenticated) {\n if (data.orgList[0].twofa_required === 'false') {\n prepareRedirect(\n data.orgList[0],\n processedEmail,\n passwordHash,\n loginHash,\n b2b && !state.passphraseCrypt ? state.inviterOrganization : null,\n );\n } else {\n setLoading({ isLoading: false, message: '' });\n setState({\n ...state,\n orgList: data,\n email: processedEmail,\n password,\n loginHash,\n });\n setSelectedOrg2FA(data.orgList[0]);\n }\n } else {\n return { error: Result.UserDoesntExist };\n }\n return undefined;\n } catch (e) {\n return { error: Result.GeneralError };\n }\n };\n\n const historyState: any = history.location.state ? history.location.state : '';\n if (historyState && historyState.passHash && historyState.email) {\n const { email, passHash } = historyState;\n\n if (!loading.isLoading) {\n setLoading({ isLoading: true, message: 'Preparing to sign-in into organization...' });\n }\n handleLogin(email, passHash, isRedirectFromTheseus);\n }\n\n const handleTokenVerification = async (): Promise => {\n setState({\n ...state,\n step: 'invalidB2BToken',\n });\n if (token === null) {\n return;\n }\n try {\n const response = await authApi.checkB2BToken(token);\n if (response) {\n // Since we receive in the form of weblakes.zebu.io we only want the orgname.\n const orgName = response.organization.substr(0, response.organization.indexOf('.'));\n if (!response.passphrase_crypt) {\n // This means we don't need the invite password, sign in directly\n setState({\n ...state,\n step: 'signin',\n inviterOrganization: orgName,\n passphraseCrypt: false,\n });\n return;\n } // else we will require the password\n if (!state.passphraseCrypt) return;\n setAskPassphrase(true);\n setState({\n ...state,\n step: 'passphrase',\n inviterOrganization: orgName,\n passphraseCrypt: true,\n });\n return;\n }\n } catch (e) {\n console.error(e);\n }\n };\n\n const doPassphraseCheck = async (\n passphraseHash: string,\n passphraseHashLegacy: string,\n ): Promise<{ error: string } | string> => {\n let result;\n if (token === null) {\n return { error: Result.InvalidToken };\n }\n const response = await authApi.validateB2BPassphrase(\n token,\n passphraseHash,\n passphraseHashLegacy,\n );\n if (response.status === 403) {\n return { error: Result.IncorrectPassphrase };\n }\n\n if (response.status === 200) {\n result = await response.json();\n if (result.passphrase_verified) {\n return 'PASSPHRASE_VERIFIED';\n }\n return { error: Result.IncorrectPassphrase };\n }\n\n if (isError(response)) {\n return { error: Result.GeneralError };\n }\n if (response.status === 403) {\n return { error: Result.UserDoesntExist };\n }\n if (response.status === 500) {\n return { error: Result.GeneralError };\n }\n return { error: Result.IncorrectPassphrase };\n };\n\n const handlePassphrase = async (passphrase: string): Promise<{ error: string } | string> => {\n const passphraseHash = Encryption.encryptPassword(passphrase);\n const passphraseHashLegacy = Encryption.encryptPasswordLegacy(passphrase);\n const data = await doPassphraseCheck(passphraseHash, passphraseHashLegacy);\n\n if (data !== 'PASSPHRASE_VERIFIED') {\n // Incorrect Passphrase\n return data;\n }\n // perform page changing to sign in since passphrase is verified\n setState({\n ...state,\n step: 'signin',\n });\n return data;\n };\n\n const getBackState = (currentState: SigninState): 'signin' | 'orgList' | undefined => {\n if (currentState.step === 'orgList') {\n return 'signin';\n }\n return undefined;\n };\n\n const handleBack = (): void => {\n const newState = { ...state };\n const step = getBackState(newState);\n if (step) {\n newState.step = step;\n setState(newState);\n }\n };\n\n const handle2FAModalVerify = async ({\n CODE: code,\n }: {\n CODE: string;\n }): Promise => {\n if (!selectedOrg2FA) {\n return undefined;\n }\n if (!checker.checkTwoFactorCode(code)) {\n return { error: 'Invalid Code Format' };\n }\n\n const { email } = state;\n const prefix = selectedOrg2FA.organization.orgName;\n\n try {\n let captcha = '';\n // handle captcha on the server side\n try {\n captcha = await recaptcha.execute('verify_2fa');\n } catch (e) {\n if (e === null) console.error('No token retrieved');\n }\n const result = await authApi.validate2FA(email, prefix, code, captcha);\n if (result) {\n prepareRedirect(\n selectedOrg2FA,\n state.email,\n Encryption.encryptPassword(state.password),\n state.loginHash,\n b2b && !state.passphraseCrypt ? state.inviterOrganization : null,\n code,\n );\n } else {\n return { error: 'Invalid Code' };\n }\n } catch (e) {\n console.error(e);\n }\n return undefined;\n };\n\n const handlePasswordModalAuth = async ({\n PASSWORD: password,\n }: {\n PASSWORD: string;\n }): Promise => {\n const targetOrg = selectedOrg;\n if (!targetOrg) {\n return undefined;\n }\n const passwordHash = Encryption.encryptPassword(password);\n const passwordHashLegacy = Encryption.encryptPasswordLegacy(password);\n const loginHash = Encryption.getLoginHash(password);\n const result = await doAuthLogin(\n state.email,\n passwordHash,\n passwordHashLegacy,\n targetOrg.organization.orgGuid,\n );\n\n if ('orgList' in result) {\n if (\n result.orgList &&\n result.orgList.findIndex(\n (org) =>\n org.organization.orgGuid === targetOrg.organization.orgGuid && org.isAuthenticated,\n ) >= 0\n ) {\n setSelectedOrg(undefined);\n if (targetOrg.twofa_required !== 'false') {\n setState({\n ...state,\n password,\n loginHash,\n });\n setSelectedOrg2FA(targetOrg);\n } else {\n setLoading({ isLoading: true, message: 'Signing in...' });\n prepareRedirect(\n targetOrg,\n state.email,\n passwordHash,\n loginHash,\n b2b && !state.passphraseCrypt ? state.inviterOrganization : null,\n );\n }\n } else {\n return { error: 'Invalid Password' };\n }\n } else {\n return result;\n }\n return undefined;\n };\n\n const handleB2BPassphraseModalVerify = async ({\n CODE: code,\n }: {\n CODE: string;\n }): Promise => {\n if (!askPassphrase) {\n return undefined;\n }\n\n try {\n const result = await handlePassphrase(code);\n if (typeof result === 'string') {\n if (result === 'PASSPHRASE_VERIFIED') {\n setAskPassphrase(false);\n setState({\n ...state,\n step: 'signin',\n passphraseCrypt: false,\n });\n }\n return undefined;\n }\n return result;\n } catch (e) {\n console.error(e);\n }\n return undefined;\n };\n\n const currentScreen = (): JSX.Element => {\n if (state.step === 'loading' || state.step === 'passphrase') {\n if (state.step === 'loading') handleTokenVerification();\n return (\n
\n

\n Waiting For Authentication...\n

\n
\n );\n }\n\n if (state.step === 'invalidB2BToken') {\n return (\n
\n

\n Invalid Token or Passphrase\n

\n

\n It is also possibe that the token expired, please request a new token. Please ask the\n inviter for the correct Passphrase.\n

\n
\n );\n }\n\n if (state.step === 'signin') {\n return (\n \n {b2b && (\n

\n B2B Connection\n

\n )}\n \n
\n );\n }\n\n if (state.step === 'orgList') {\n return ;\n }\n\n return
;\n };\n\n return (\n <>\n
\n \n
\n {currentScreen()}\n \n \n \n \n \n );\n};\n\nconst HomepageBase = (props: any): JSX.Element => {\n const b2b = props.b2b !== undefined;\n const isRedirectFromTheseus = props.isRedirectFromTheseus !== undefined;\n return ;\n};\n\nexport default HomepageBase;\n","import React, { useState } from 'react';\nimport Form from '../tauria-react-components/molecules/Form';\nimport Base from '../pages/Base';\nimport Validate, { Result } from '../utilities/validate';\nimport { Headings } from '../styles';\nimport { sendPageView } from '../utilities/hubspot';\n\nconst Workspace: React.FC<{\n storeWorkspace: (data: Record) => Promise;\n}> = ({ storeWorkspace }) => {\n const [url, setUrl] = useState('');\n const [maybeErrors, setErrors] = useState>({});\n\n const handleChange = (values: Record): void => {\n const newUrl = values['BUSINESS NAME']?.toLowerCase() || '';\n\n if (newUrl !== url) {\n setUrl(newUrl);\n }\n\n setErrors({});\n };\n\n React.useEffect(() => {\n document.title = 'Set Up Workspace';\n sendPageView(`${window.location.pathname}#set-up-workspace`);\n }, []);\n\n const handleSubmit = async (values: Record): Promise => {\n const workspaceValues = {\n 'BUSINESS NAME': values['BUSINESS NAME'],\n 'TAURIA ADDRESS': url,\n };\n\n if (Validate.checkEmpty([workspaceValues['BUSINESS NAME']])) {\n setErrors({ 'BUSINESS NAME': Result.RequiredField });\n return;\n }\n\n if (Validate.checkOrganization(workspaceValues['BUSINESS NAME']) === Result.InvalidOrgName) {\n setErrors({ 'BUSINESS NAME': Result.InvalidOrgName });\n return;\n }\n\n const error = await storeWorkspace(workspaceValues);\n\n if (error) {\n setErrors({ ALL: error });\n }\n };\n\n return (\n \n \n

Set Up Workspace

\n

Unleash your team's productivity

\n
\n

\n Your business name should consist of 3 to 30 letters and/or numbers and must start with a\n letter. No other spaces or special characters are allowed.\n

\n \n \n );\n};\n\nexport default Workspace;\n","import React from 'react';\nimport { LabeledInput, ErrorField } from '../../particles/Input';\nimport { FormInputOptions as InputOptions } from '../../molecules/Form';\n\nexport default (\n input: InputOptions & { value: string },\n key: number,\n errors: any,\n onChange: any,\n) => (\n
\n \n {errors[input.name] ? {errors[input.name]} : ''}\n
\n);\n","import React, { useState } from 'react';\nimport Form, { FormInputOptions as InputOptions } from '../tauria-react-components/molecules/Form';\nimport Base from '../pages/Base';\nimport validate, { Result } from '../utilities/validate';\nimport ReadOnly from '../tauria-react-components/molecules/FormRenderers/ReadOnly';\nimport { Headings } from '../styles';\nimport { sendPageView } from '../utilities/hubspot';\n\nconst Details: React.FC<{\n storeDetails: (data: Record) => void;\n givenEmail?: string;\n}> = ({ storeDetails, givenEmail }) => {\n const [errors, setErrors] = useState>({});\n\n React.useEffect(() => {\n document.title = 'Personal Details';\n sendPageView(`${window.location.pathname}#personal-details`);\n }, []);\n\n const handleSubmit = React.useCallback(\n (values: Record): void => {\n const firstName = values['FIRST NAME'].trim();\n const lastName = values['LAST NAME'].trim();\n const email = values['WORK EMAIL'].trim();\n\n const tempErrors: Record = {};\n\n if (validate.checkEmpty([firstName]) === Result.EmptyField) {\n tempErrors['FIRST NAME'] = Result.RequiredField;\n }\n\n if (validate.checkEmpty([lastName]) === Result.EmptyField) {\n tempErrors['LAST NAME'] = Result.RequiredField;\n }\n\n if (validate.checkEmpty([email]) === Result.EmptyField) {\n tempErrors['WORK EMAIL'] = Result.RequiredField;\n }\n\n if (tempErrors['FIRST NAME'] && tempErrors['LAST NAME'] && tempErrors['WORK EMAIL']) {\n delete tempErrors['FIRST NAME'];\n delete tempErrors['LAST NAME'];\n delete tempErrors['WORK EMAIL'];\n tempErrors.ALL = Result.EmptyField;\n }\n\n if (\n !tempErrors['WORK EMAIL'] &&\n !tempErrors.ALL &&\n validate.checkEmail(email) === Result.InvalidEmail\n ) {\n tempErrors['WORK EMAIL'] = Result.InvalidEmail;\n }\n\n if (Object.keys(tempErrors).length === 0) {\n storeDetails(values);\n } else {\n setErrors(tempErrors);\n }\n },\n [storeDetails],\n );\n\n const handleChange = React.useCallback(() => {\n setErrors({});\n }, []);\n\n return (\n \n \n

Personal Details

\n

Fill in some information about yourself

\n
\n \n \n );\n};\n\nexport default Details;\n","import React from 'react';\nimport { FormInputOptions } from '../../molecules/Form';\nimport { PasswordStrengthInput, ErrorField } from '../../particles/Input';\n\nexport interface PasswordStrengthInputOptions extends FormInputOptions {\n type: 'password';\n criteria: { done: boolean; label: string; hidden: boolean }[];\n}\n\nexport default (input: PasswordStrengthInputOptions, key: number, errors: any, onChange: any) => (\n
\n \n {errors[input.name] ? {errors[input.name]} : ''}\n
\n);\n","import validate, { Result } from './validate';\n\ntype FormFieldsMap = Record;\n\ntype ErrorsMap = Record;\n\nexport const getPasswordFormErrors = (values: FormFieldsMap): ErrorsMap => {\n const password = values.PASSWORD;\n const confirm = values['CONFIRM PASSWORD'];\n\n const newErrors: ErrorsMap = {};\n\n if (validate.checkEmpty([password]) !== Result.Success) {\n newErrors.PASSWORD = Result.RequiredField;\n }\n\n if (validate.checkEmpty([confirm]) !== Result.Success) {\n if (newErrors.PASSWORD) {\n return { ALL: Result.EmptyField };\n }\n\n newErrors['CONFIRM PASSWORD'] = Result.RequiredField;\n }\n\n if (validate.checkPasswordCapital(password) !== Result.Success) {\n newErrors.PASSWORD = Result.InvalidPasswordCapital;\n } else if (validate.checkPasswordLength(password) !== Result.Success) {\n newErrors.PASSWORD = Result.InvalidPasswordLength;\n } else if (validate.checkPasswordNumber(password) !== Result.Success) {\n newErrors.PASSWORD = Result.InvalidPasswordNumber;\n }\n\n if (!newErrors.PASSWORD && validate.checkPasswordsMatch(password, confirm) !== Result.Success) {\n newErrors.ALL = Result.PasswordMatch;\n }\n\n return newErrors;\n};\n\ntype Criteria = {\n done: boolean;\n label: string;\n hidden: boolean;\n};\n\nexport const getPasswordFormCriteria = (values: FormFieldsMap): Criteria[] => {\n const password = values.PASSWORD || '';\n\n return [\n {\n done: validate.checkPasswordCapital(password) === Result.Success,\n label: 'One uppercase',\n hidden: false,\n },\n {\n done: validate.checkPasswordNumber(password) === Result.Success,\n label: 'One number',\n hidden: false,\n },\n {\n done: validate.checkPasswordLength(password) === Result.Success,\n label: 'Minimum 5 characters',\n hidden: false,\n },\n {\n done: password.length >= 8,\n label: 'Better 8 characters',\n hidden: true,\n },\n {\n done: /[!@#$%^&*]/.test(password),\n label: 'Better symbols',\n hidden: true,\n },\n {\n done: /[a-z]/.test(password),\n label: 'Better lowercase',\n hidden: true,\n },\n ];\n};\n","import React, { useState } from 'react';\nimport Form from '../tauria-react-components/molecules/Form';\nimport PasswordStrength, {\n PasswordStrengthInputOptions,\n} from '../tauria-react-components/molecules/FormRenderers/PasswordStrength';\nimport Base from '../pages/Base';\nimport { Result } from '../utilities/validate';\nimport { Headings } from '../styles';\nimport { getPasswordFormErrors, getPasswordFormCriteria } from '../utilities/password-criteria';\nimport Loading from '../views/Loading';\nimport { sendPageView } from '../utilities/hubspot';\n\nconst Password: React.FC<{\n storePassword: (data: Record) => Promise;\n newUser?: boolean;\n}> = ({ storePassword, newUser }) => {\n const [errors, setErrors] = useState>({});\n const [criteria, setCriteria] = useState(getPasswordFormCriteria({}));\n const [loadingPromise, setLoadingPromise] = useState | undefined>(\n undefined,\n );\n\n React.useEffect(() => {\n document.title = 'Set Password';\n sendPageView(`${window.location.pathname}#set-password`);\n }, []);\n\n const validatePasswords = React.useCallback(\n async (values: Record): Promise => {\n const newErrors = getPasswordFormErrors(values);\n\n if (Object.keys(newErrors).length > 0) {\n setErrors(newErrors);\n return;\n }\n\n const promise = storePassword(values);\n\n if (newUser) {\n setLoadingPromise(promise);\n }\n\n const potentialErrors = await promise;\n\n if (newUser) {\n setTimeout(() => {\n setLoadingPromise(undefined);\n }, 2000);\n }\n\n if (potentialErrors) {\n setErrors({ ALL: potentialErrors });\n }\n },\n [storePassword, newUser],\n );\n\n const handleChange = React.useCallback((values: Record): void => {\n setCriteria(getPasswordFormCriteria(values));\n\n // Reset Errors on change\n setErrors({});\n }, []);\n\n return (\n <>\n \n \n

Set Password

\n

Set a password for your own account

\n
\n \n \n \n \n );\n};\n\nexport default Password;\n","const useDownload = (openFunction: (url: string) => void): (() => void) => {\n return (): void => {\n const { userAgent } = navigator;\n // Is iOS device\n if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) {\n openFunction('https://itunes.apple.com/ca/app/zebu-app/id1292784671?mt=8');\n }\n // Is android device\n else if (userAgent.toLowerCase().indexOf('android') > -1) {\n openFunction('https://play.google.com/store/apps/details?id=io.zebu.app');\n } else {\n openFunction('https://1162100038.rsc.cdn77.org/download/latest');\n }\n };\n};\n\nexport default useDownload;\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\nimport Form from '../tauria-react-components/molecules/Form';\nimport Loader from '../tauria-react-components/molecules/Loader';\nimport Base from '../pages/Base';\n\nimport validate, { Result } from '../utilities/validate';\nimport { Headings } from '../styles';\nimport { sendPageView } from '../utilities/hubspot';\n\nexport const EMAIL_KEY = 'EMAIL ADDRESS';\n\nconst LoaderStyles = {\n container: styled.div<{ showLoading: boolean }>`\n ${(p): string => `display: ${p.showLoading ? 'flex' : 'none'};`}\n flexDirection: column;\n position: fixed;\n @media only screen and (max-width: 900px) {\n width: 100%;\n }\n width: 50%;\n background: rgba(2, 8, 25, 0.9);\n height: 100%;\n align-items: center;\n top: 0;\n right: 0;\n `,\n center: styled.div`\n margin: auto;\n `,\n message: styled.div`\n margin-top: 25px;\n font-weight: 500;\n font-size: 16px;\n line-height: 20px;\n color: #fff;\n `,\n};\n\nexport const ResendingLoader: React.FC<{ showLoading: boolean }> = ({ showLoading }) => (\n \n \n \n Resending e-mail...\n \n \n);\n\ntype ResendPayload = { [EMAIL_KEY]: string };\n\nconst ResendEmail: React.FC<{\n onSend: (\n data: ResendPayload,\n showLoadingScreen: () => void,\n hideLoadingScreen: () => void,\n ) => void;\n}> = ({ onSend }) => {\n const [errors, setErrors] = useState({});\n const [showLoading, __setShowLoading] = useState(false);\n\n React.useEffect(() => {\n document.title = 'Change Your Email';\n sendPageView(`${window.location.pathname}#change-your-email`);\n }, []);\n\n const handleSubmit = (values: ResendPayload): void => {\n const email = values[EMAIL_KEY].trim();\n if (validate.checkEmail(email) === Result.InvalidEmail) {\n setErrors({ [EMAIL_KEY]: Result.InvalidEmail });\n } else {\n onSend(\n values,\n () => __setShowLoading(true),\n () => __setShowLoading(false),\n );\n }\n };\n\n const handleChange = React.useCallback((): void => {\n // Reset Errors on change\n setErrors({});\n }, []);\n\n return (\n \n \n

Change Your Email

\n
\n \n \n \n );\n};\n\nexport default ResendEmail;\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\nimport Base from '../pages/Base';\nimport useDownload from '../tauria-react-components/hooks/useDownload';\nimport { Link as LinkButton, Button } from '../tauria-react-components/particles/Button';\nimport { ResendingLoader } from './Resend';\nimport { Headings } from '../styles';\nimport { sendEvent, sendPageView } from '../utilities/hubspot';\n\nconst LinkButtonStyle = {\n width: 'auto',\n color: '#1577FE',\n marginLeft: '6px',\n fontSize: '16px',\n fontWeight: 600,\n};\n\nconst S = {\n email: styled.div`\n color: #191a21;\n font-size: 16px;\n background-color: rgba(211, 216, 224, 0.2);\n padding: 10px 113px;\n font-weight: 600;\n font-size: 16px;\n line-height: 160%;\n `,\n sbs: styled.div`\n display: flex;\n margin-top: 15px;\n & > p {\n margin-bottom: 0px;\n margin-top: 0px;\n color: #4d4d4d;\n }\n & > button {\n padding: 0px;\n }\n `,\n emailContainer: styled.div`\n display: flex;\n justify-content: center;\n `,\n};\n\nconst Details: React.FC<{\n email: string;\n onResendEmail: (showLoadingScreen: () => void, hideLoadingScreen: () => void) => void;\n onWrongEmail: () => void;\n}> = ({ email, onResendEmail, onWrongEmail }) => {\n const download = useDownload((url: string): void => {\n window.location.href = url;\n sendEvent('Download App Clicked');\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const isOnDesktop = !!(window as any).isDesktopApp;\n const [showLoading, __setShowLoading] = useState(false);\n const [heading, setHeading] = useState('Success!');\n\n React.useEffect(() => {\n document.title = 'Registration Success';\n sendPageView(`${window.location.pathname}#registration-success`);\n }, []);\n\n // Added showFooter to resolve issue #https://gitlab3.tauria.com/developers/signin/zebu-signin-2020/-/issues/25\n return (\n \n \n

{heading}

\n

Verify Your Email

\n
\n
\n

Please confirm the email we sent to:

\n \n {email}\n \n \n

• Have trouble receiving the email.

\n => {\n sendEvent('Re-send Email clicked');\n await onResendEmail(\n () => __setShowLoading(true),\n () => __setShowLoading(false),\n );\n setHeading('Resent!');\n }}\n style={LinkButtonStyle}\n />\n
\n \n

• Wrong email?

\n {\n sendEvent('Change Email clicked');\n return onWrongEmail();\n }}\n style={LinkButtonStyle}\n />\n
\n {!isOnDesktop && (\n \n )}\n
\n \n \n );\n};\n\nexport default Details;\n","/* eslint-disable no-console */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable camelcase */\nimport ConfigManager from '../config';\nimport { Result } from '../utilities/validate';\nimport { StateMachine } from '../pages/newUser';\n\nconst { config } = new ConfigManager(window.location.origin);\nconst baseUrl = `${config.backend.register}/v1`;\n\nconst requestOptions: RequestInit = {\n method: 'POST',\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n};\n\ntype NewUserResponse = {\n email: string;\n extraPages: string | undefined;\n};\n\nexport default {\n async verifyOrgName(name: string, captchaToken: string): Promise {\n try {\n if (!name) {\n throw new Error('Missing org name');\n }\n\n const data: URLSearchParams = new URLSearchParams();\n data.append('captchaToken', captchaToken);\n\n const resp: Response = await fetch(`${baseUrl}/verify/org_name/${name}`, {\n ...requestOptions,\n body: data,\n });\n\n if (resp.status === 200) {\n return Result.Success;\n }\n\n if (resp.status === 406) {\n return Result.OrgExists;\n }\n\n if (resp.status === 403) {\n return Result.CaptchaError;\n }\n\n return Result.GeneralError;\n } catch (e) {\n return Result.GeneralError;\n }\n },\n\n async createOrg(\n email: string,\n firstName: string,\n lastName: string,\n passwordHash: string,\n businessUrl: string,\n businessName: string,\n actionAfterLogin: string,\n newsletter: boolean,\n captcha: string,\n ): Promise {\n try {\n const data: URLSearchParams = new URLSearchParams();\n data.append('email', email);\n data.append('passwordHash', passwordHash);\n data.append('firstName', firstName);\n data.append('lastName', lastName);\n data.append('businessUrl', businessUrl);\n data.append('businessName', businessName);\n data.append('actionAfterLogin', actionAfterLogin);\n data.append('newsletter', newsletter ? 'True' : 'False');\n data.append('captchaToken', captcha);\n\n const options = { ...requestOptions, body: data };\n\n const resp: Response = await fetch(`${baseUrl}/register_org`, options);\n\n if (resp.ok) {\n const updateData: { updateToken: string } = await resp.json();\n return updateData.updateToken;\n }\n return Result.GeneralError;\n } catch (e) {\n return Result.GeneralError;\n }\n },\n\n async ResendEmail(businessName: string, updateToken: string): Promise {\n try {\n const data: URLSearchParams = new URLSearchParams();\n data.append('businessName', businessName);\n data.append('updateToken', updateToken);\n\n const options = { ...requestOptions, body: data };\n\n const resp: Response = await fetch(`${baseUrl}/resend_email`, options);\n\n if (resp.ok) {\n return Result.Success;\n }\n return Result.GeneralError;\n } catch {\n return Result.GeneralError;\n }\n },\n\n async ChangeAndResendEmail(\n businessName: string,\n newEmail: string,\n updateToken: string,\n ): Promise {\n try {\n const data: URLSearchParams = new URLSearchParams();\n data.append('businessName', businessName);\n data.append('email', newEmail);\n data.append('updateToken', updateToken);\n\n const options = { ...requestOptions, body: data };\n\n const resp: Response = await fetch(`${baseUrl}/change_email`, options);\n\n if (resp.ok) {\n return Result.Success;\n }\n return Result.GeneralError;\n } catch {\n return Result.GeneralError;\n }\n },\n async checkOrgBuilt(uuid: string): Promise {\n try {\n const data: URLSearchParams = new URLSearchParams();\n data.append('uuid', uuid);\n\n const options = { ...requestOptions, body: data };\n const resp: Response = await fetch(`${baseUrl}/check_org_built`, options);\n\n if (resp.ok) {\n const body = await resp.json();\n\n if (body.status === 3) {\n return Result.Success;\n }\n return Result.LongRunningError;\n }\n return Result.GeneralError;\n } catch (e) {\n return Result.GeneralError;\n }\n },\n\n async addNewUser(\n prefix: string,\n token: string,\n state: StateMachine,\n captcha: string,\n ): Promise {\n try {\n if (state.email === undefined) return Result.GeneralError;\n\n const data: URLSearchParams = new URLSearchParams();\n data.append('email', state.email);\n data.append('passwordHash', state.passwordHash);\n data.append('firstName', state.firstName);\n data.append('lastName', state.lastName);\n data.append('captchaToken', captcha);\n if ('position' in (state as any)) {\n const s = state as any;\n data.append('jobTitle', s.position);\n data.append('description', s.description);\n data.append('phoneNumber', s.phoneNumber);\n }\n const options = { ...requestOptions, method: 'PUT', body: data };\n\n const response = await fetch(`${baseUrl}/user/${prefix}/${token}`, options);\n\n if (response.ok) {\n return Result.Success;\n }\n return Result.GeneralError;\n } catch (e) {\n return Result.GeneralError;\n }\n },\n\n async GetNewUserEmail(prefix: string, token: string): Promise {\n // eslint-disable-next-line no-useless-catch\n try {\n const response = await fetch(`${baseUrl}/user/email/${prefix}/${token}`);\n\n if (response.ok) {\n const data = await response.json();\n return data;\n }\n\n if (response.status === 406) {\n throw response.status;\n }\n return { email: '' } as NewUserResponse;\n } catch (e) {\n console.log('Error fetching user email: ', e);\n throw e;\n }\n },\n\n async validate2FAV1(login: string, prefix: string, code: string): Promise {\n try {\n const response = await fetch(`${baseUrl}/twofa/${login}/${prefix}/${code}`);\n if (response.ok) {\n return true;\n }\n return false;\n } catch (e) {\n return undefined;\n }\n },\n\n async getOrgRegToken(org: string, userName: string, userEmail: string): Promise {\n try {\n const url = `${baseUrl}/get_org_uuid/${org}?userName=${userName}&userEmail=${userEmail}`;\n const response = await fetch(url);\n if (response.ok) {\n const data = await response.json();\n return data.token;\n }\n\n return '';\n } catch (e) {\n console.log('getOrgRegToken: error', e);\n return '';\n }\n },\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { useCaptcha } from '@developers/use-captcha';\nimport Encryption from '../utilities/encryption';\nimport Base from './basePage';\n\nimport Banner from '../views/Banner';\n\nimport Workspace from '../RegisterPages/Workspace';\n\nimport Details from '../RegisterPages/Details';\nimport Password from '../RegisterPages/Password';\nimport Success from '../RegisterPages/Success';\n\nimport { Result } from '../utilities/validate';\n\nimport registerApi from '../models/registerApi';\nimport ResendEmail, { EMAIL_KEY } from '../RegisterPages/Resend';\n\nimport { LoadingSync } from '../views/Loading';\nimport { sendEvent, setIdentity } from '../utilities/hubspot';\n\ninterface RegisterState {\n step: number;\n businessName: string;\n businessURL: string;\n prefix: string;\n firstName: string;\n lastName: string;\n email: string;\n password: string;\n newsletter: string;\n updateToken: string;\n}\n\nconst Register: React.FC = (): any => {\n const [state, setState] = React.useState({ step: 1 } as RegisterState);\n const [loading, setLoading] = React.useState<{ isLoading: boolean; message: string }>({\n isLoading: false,\n message: '',\n });\n\n const recaptcha = useCaptcha();\n const history = useHistory();\n\n React.useEffect(() => {\n const query = new URLSearchParams(window.location.search);\n const promotion = query.get('promotion');\n if (promotion) {\n localStorage.setItem('@tauria-campaign-promotion', promotion);\n }\n }, []);\n\n React.useEffect(() => {\n document.title = 'Register - Tauria';\n }, []);\n\n const buildOrganization = async (password: string): Promise => {\n let captcha = '';\n // handle captcha on the server side\n try {\n captcha = await recaptcha.execute('register_org');\n } catch (e) {\n if (e === null) console.error('No token retrieved');\n // return Result.CaptchaError;\n }\n localStorage.setItem('@tauria-campaign-prefix', state.businessURL);\n const createResp = registerApi.createOrg(\n state.email,\n state.firstName,\n state.lastName,\n password || state.password,\n state.businessURL,\n state.businessName,\n '',\n false,\n captcha,\n );\n // wait for org to be ready\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve(createResp);\n }, 2000);\n });\n };\n\n const getOrgToken = async (\n orgName: string,\n userName: string,\n userEmail: string,\n ): Promise => {\n return registerApi.getOrgRegToken(orgName, userName, userEmail);\n };\n\n const canGoBack = (): boolean => state.step !== 1 && state.step !== 5;\n\n const handleBack = (): void => {\n if (canGoBack()) {\n const newState = { ...state };\n newState.step -= 1;\n setState(newState);\n }\n };\n\n const storeWorkspace = async (\n values: Record<'BUSINESS NAME' | 'TAURIA ADDRESS', string>,\n ): Promise => {\n let token = '';\n\n try {\n token = await recaptcha.execute('verify_org_name');\n } catch (e) {\n if (e === null) console.error('No token retrieved');\n // return Result.CaptchaError;\n }\n\n const result = await registerApi.verifyOrgName(values['TAURIA ADDRESS'], token);\n\n if (result === Result.Success) {\n setState({\n ...state,\n businessName: values['BUSINESS NAME'],\n businessURL: values['TAURIA ADDRESS'],\n step: 2,\n });\n sendEvent('Step Completed: Set Up Workspace');\n return undefined;\n }\n return result;\n };\n\n const storeDetails = (values: any): void => {\n const newState = { ...state };\n newState.email = values['WORK EMAIL'];\n newState.firstName = values['FIRST NAME'];\n newState.lastName = values['LAST NAME'];\n newState.step = 3;\n setState(newState);\n\n setIdentity({\n email: newState.email,\n firstname: newState.firstName || '',\n lastname: newState.lastName || '',\n });\n sendEvent('Step Completed: Personal Details');\n };\n\n const storePassword = async (values: any): Promise => {\n const newState = { ...state };\n newState.password = Encryption.encryptPassword(values.PASSWORD);\n setLoading({ isLoading: true, message: 'Generating Confirmation Token...' });\n const result = await buildOrganization(newState.password);\n\n if (result === Result.GeneralError) {\n return Result.GeneralError;\n }\n\n setTimeout(async () => {\n const token = await getOrgToken(\n state.businessName,\n `${newState.firstName} ${newState.lastName}`,\n newState.email,\n );\n console.log('store password: got token', token);\n setLoading({ isLoading: false, message: '' });\n\n setState({ ...state, step: 4, updateToken: result });\n history.push({\n pathname: `/${token}/validate`,\n state: { passHash: values.PASSWORD, email: newState.email },\n });\n\n sendEvent('Step Completed: Set Password');\n }, 2000);\n\n return undefined;\n };\n\n const onWrongEmail = (): void => setState({ ...state, step: 5 });\n\n const onSendNewEmail = async (\n {\n [EMAIL_KEY]: emailAddress,\n }: {\n [EMAIL_KEY]: string;\n },\n showLoadingScreen: () => void,\n hideLoadingScreen: () => void,\n ): Promise => {\n showLoadingScreen();\n const promises: [Promise, Promise] = [\n registerApi.ChangeAndResendEmail(state.businessName, emailAddress, state.updateToken),\n new Promise((resolve) => setTimeout(() => resolve(), 6000)),\n ];\n await Promise.all(promises);\n hideLoadingScreen();\n setState({ ...state, step: 4, email: emailAddress });\n };\n\n const onResendEmail = async (\n showLoadingScreen: () => void,\n hideLoadingScreen: () => void,\n ): Promise => {\n showLoadingScreen();\n const promises: [Promise, Promise] = [\n registerApi.ResendEmail(state.businessName, state.updateToken),\n new Promise((resolve) => setTimeout(() => resolve(), 6000)),\n ];\n await Promise.all(promises);\n hideLoadingScreen();\n setState({ ...state, step: 4 });\n };\n\n const getCurrentPage = (): React.ReactNode => {\n if (state.step === 1) {\n return ;\n }\n if (state.step === 2) {\n return
;\n }\n if (state.step === 3) {\n return ;\n }\n if (state.step === 4) {\n return (\n \n );\n }\n if (state.step === 5) {\n return ;\n }\n\n return
;\n };\n\n return (\n <>\n
\n \n
\n \n
{getCurrentPage()}
\n \n );\n};\n\nconst RegisterPage: React.FC = () => {\n return ;\n};\n\nexport default RegisterPage;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React from 'react';\nimport { useHistory } from 'react-router';\nimport { useCaptcha } from '@developers/use-captcha';\nimport Banner from '../views/Banner';\nimport BasePage from './Base';\nimport Base from './basePage';\nimport Form from '../tauria-react-components/molecules/Form';\nimport useWindowSize from '../tauria-react-components/hooks/useWindowSize';\nimport { Link as LinkButton } from '../tauria-react-components/particles/Button';\nimport authApi from '../models/authApi';\nimport validate, { Result } from '../utilities/validate';\nimport { Headings, FormTopSpacer } from '../styles';\nimport { LoadingSync } from '../views/Loading';\n\ntype pageIds = 'enter email' | 'success';\n\nconst EmailForm: React.FC<{ handleSendPasswordReset: any }> = ({ handleSendPasswordReset }) => {\n const history = useHistory();\n const [errors, setErrors] = React.useState({});\n const windowSize = useWindowSize();\n\n const verifyEmail = async (formData: any): Promise => {\n const email = formData['EMAIL ADDRESS'];\n if (validate.checkEmail(email) === Result.Success) {\n const maybeErrors = await handleSendPasswordReset(formData);\n if (maybeErrors) {\n setErrors(maybeErrors);\n }\n } else {\n setErrors({ 'EMAIL ADDRESS': Result.InvalidEmail });\n }\n };\n\n const handleChange = React.useCallback((): void => {\n // Reset Errors on change\n setErrors({});\n }, []);\n\n return (\n
\n \n {windowSize.width >= 900 && (\n \n

Password Reset

\n

We'll help you get back to it

\n
\n )}\n \n \n {\n history.push(`/`);\n }}\n />\n \n
\n
\n );\n};\n\nconst EmailSent: React.FC = () => {\n return (\n
\n \n

Success

\n

We've sent you an email so you can get back to work.

\n \n
\n
\n );\n};\n\nconst PasswordResetPage = (): JSX.Element => {\n const [currentPage, setCurrentPage] = React.useState('enter email');\n const [loading, setLoading] = React.useState(false);\n const recaptcha = useCaptcha();\n const handleSendPasswordReset = async (formData: any): Promise => {\n const email = formData['EMAIL ADDRESS'];\n const token = await recaptcha.execute('forgot_password');\n setLoading(true);\n const result = await authApi.forgotPasword(email, token);\n setLoading(false);\n if (result !== undefined && result === true) {\n setCurrentPage('success');\n } else {\n return { 'EMAIL ADDRESS': Result.GeneralError };\n }\n return {};\n };\n\n React.useEffect(() => {\n document.title = 'Forgot Password - Tauria';\n }, []);\n\n return (\n <>\n
\n {}\n }\n showBack={false}\n />\n
\n {currentPage === 'enter email' ? (\n \n ) : (\n \n )}\n \n \n );\n};\n\nconst ForgotPasswordBase: React.FC = () => {\n return ;\n};\n\nexport default ForgotPasswordBase;\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\nimport { useParams, useHistory } from 'react-router-dom';\nimport Logo from '../img/zebu_logo.svg';\nimport './Building.css';\nimport ConfigManager from '../config';\nimport analyticsApi from '../models/analyticsApi';\n\nconst { config } = new ConfigManager(window.location.origin);\n\nconst S = {\n cover: styled.div`\n top: 0px;\n left: 0px;\n height: 100vh;\n width: 100vw;\n background-color: rgba(2, 8, 25, 0.9);\n backdrop-filter: blur(5px);\n position: absolute;\n `,\n centered: styled.div`\n position: absolute;\n display: flex;\n flex-direction: column;\n width: 300px;\n height: auto;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n `,\n loadingFrame: styled.div`\n width: 300px;\n background-color: #f4f4f6;\n height: 10px;\n border-radius: 10px;\n `,\n loadingBar: styled.div`\n height: 10px;\n width: 100px;\n background-color: #1577fe;\n border-radius: 5px;\n animation: load 2s ease-in-out 0s forwards infinite;\n @keyframes load {\n 0% {\n transform: translateX(0px);\n }\n 50% {\n transform: translateX(200px);\n }\n 100% {\n transform: translateX(0px);\n }\n }\n `,\n};\n\ninterface OrgStatus {\n status: 'done' | 'building';\n}\n\nconst BuildingOrg: React.FC = () => {\n const { token } = useParams();\n const history = useHistory();\n const [message, setMessage] = useState('Building Workspace');\n\n React.useEffect(() => {\n document.title = 'Building Workspace - Tauria';\n }, []);\n\n const signalBuilt = (): void => {\n const trackUser = async (): Promise => {\n const campaignuuid = localStorage.getItem('@tauria-campaign-user_uuid');\n const prefix = localStorage.getItem('@tauria-campaign-prefix');\n const promotion = localStorage.getItem('@tauria-campaign-promotion');\n\n if (promotion !== null && prefix !== null) {\n await analyticsApi.trackOrgBuiltPage(promotion, prefix, true);\n localStorage.removeItem('@tauria-campaign-user_uuid');\n localStorage.removeItem('@tauria-campaign-prefix');\n localStorage.removeItem('@tauria-campaign-promotion');\n } else if (campaignuuid !== null && prefix !== null) {\n await analyticsApi.trackOrgBuiltPage(campaignuuid, prefix, false);\n localStorage.removeItem('@tauria-campaign-user_uuid');\n localStorage.removeItem('@tauria-campaign-prefix');\n localStorage.removeItem('@tauria-campaign-promotion');\n }\n };\n trackUser();\n };\n\n React.useEffect(() => {\n const interval = setInterval(async (): Promise => {\n const res = await fetch(`${config.backend.register}/v1/done_building/${token}`);\n const data: OrgStatus = await res.json();\n if (data.status === 'done') {\n signalBuilt();\n clearInterval(interval);\n setMessage('Finished! Redirecting into organization');\n setTimeout(() => {\n console.log('BuildingOrg: props timeout', history.location.state);\n history.replace('/', history.location.state);\n }, 3000);\n }\n }, 2000);\n\n return (): void => {\n if (interval) {\n clearInterval(interval);\n }\n };\n }, [token, history]);\n\n return (\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n \"logo\"\n

{message}

\n \n \n \n
\n
\n );\n};\n\nexport default BuildingOrg;\n","import React, { useState, useEffect, FC } from 'react';\nimport styled from 'styled-components';\nimport { useParams, useHistory } from 'react-router-dom';\nimport './Building.css';\nimport ConfigManager from '../config';\nimport Base from '../pages/Base';\nimport { Headings } from '../styles';\nimport Banner from '../views/Banner';\nimport { Button } from '../tauria-react-components/particles/Button';\n\nconst { config } = new ConfigManager(window.location.origin);\n\nconst S = {\n wrapper: styled.div`\n display: grid;\n grid-template-columns: minmax(250px, 50%) 1fr;\n height: 100vh;\n `,\n};\n\nconst VerifyEmail: FC = () => {\n const { token } = useParams<{ token: string }>();\n const history = useHistory();\n const [message, setMessage] = useState('Your email has been verified.');\n\n useEffect(() => {\n document.title = 'Verifying email - Tauria';\n }, []);\n\n useEffect(() => {\n fetch(`${config.backend.register}/v1/verify_email/${token}`)\n .then(async (res) => {\n if (res.ok) {\n const r = await res.json();\n console.log('verify_email fetch returned', res, r);\n switch (r.status) {\n case 'OK':\n setMessage(`Your email for organization ${r.prefix} has been verified.`);\n break;\n case 'ALREADY':\n setMessage(`Your email for organization ${r.prefix} was already verified.`);\n break;\n default:\n break;\n }\n }\n console.log('VerifyEmail: response not ok', res);\n })\n .catch((r) => {\n console.log('VerifyEmail: error', r);\n });\n }, [token, history]);\n\n const redirectToSignin = (): void => {\n history.replace('/');\n };\n\n return (\n \n
\n console.log('return')} registerStep={-1} showBack={false} />\n
\n
\n \n \n

Email Verification

\n

{message}

\n
\n

You can go to sign in now.

\n \n \n
\n
\n );\n};\n\nexport default VerifyEmail;\n","import React from 'react';\nimport Base from '../pages/Base';\nimport { Headings } from '../styles';\n\nconst ExistingUser = (): JSX.Element => {\n return (\n \n \n

Existing User

\n

It looks like you have already signed up with this link

\n
\n

You will be redirected to the Sign-in screen in a moment...

\n \n );\n};\n\nexport default ExistingUser;\n","/* eslint-disable no-param-reassign */\nimport React, { useState } from 'react';\n\nimport Form from '../tauria-react-components/molecules/Form';\nimport Base from '../pages/Base';\nimport { Headings } from '../styles';\n\nconst isNotEmpty = (input: string): undefined | 'Mandatory Field' =>\n input.length > 0 ? undefined : 'Mandatory Field';\n\nconst hasError = (e: any): boolean =>\n Object.values(e).reduce((acc, cur) => (acc === true ? acc : !!cur), false);\n\nconst Description = (props: { storeDescription: (inputs: any) => void }): JSX.Element => {\n const [errors, setErrors] = useState({});\n\n const validateInputs = (values: {\n 'JOB TITLE': string;\n 'COMPANY BIO': string;\n 'PHONE NUMBER': string;\n }): void => {\n const e = {\n 'JOB TITLE': isNotEmpty(values['JOB TITLE']),\n 'COMPANY BIO': isNotEmpty(values['COMPANY BIO']),\n 'PHONE NUMBER': isNotEmpty(values['PHONE NUMBER']),\n };\n setErrors(e);\n if (!hasError(e)) props.storeDescription(values);\n };\n\n return (\n <>\n \n \n

User Information

\n

Tell your team a little about yourself

\n
\n \n \n \n );\n};\n\nexport default Description;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useState, useEffect } from 'react';\nimport { useParams, useHistory } from 'react-router';\nimport { useCaptcha } from '@developers/use-captcha';\nimport Encryption from '../utilities/encryption';\nimport Base from './basePage';\n\nimport Banner from '../views/Banner';\nimport Details from '../RegisterPages/Details';\nimport Password from '../RegisterPages/Password';\nimport ExistingUser from '../RegisterPages/ExistingUser';\nimport Description from '../newUserPages/Description';\nimport { Result } from '../utilities/validate';\nimport registerApi from '../models/registerApi';\nimport connectApi from '../models/connectApi';\n\nconst pages = ['details', 'password'];\n\nconst addPage = (pageName: string, position: number): string[] =>\n pages.splice(position - 1, 0, pageName);\n\nexport interface StateMachine {\n step: number;\n email?: string;\n passwordHash: string;\n loginHash: string;\n firstName: string;\n lastName: string;\n token: string;\n prefix: string;\n existingUser: boolean;\n extraPage: boolean;\n}\n\nconst NewUsersContent: React.FC<{ token: string; prefix: string }> = ({ token, prefix }) => {\n const history = useHistory();\n const recaptcha = useCaptcha();\n const [state, setState] = useState({\n step: 1,\n token,\n prefix,\n email: undefined,\n existingUser: false,\n passwordHash: '',\n loginHash: '',\n firstName: '',\n lastName: '',\n extraPage: false,\n });\n\n useEffect(() => {\n const getEmail = async (): Promise => {\n try {\n const { email, extraPages } = await registerApi.GetNewUserEmail(prefix, token);\n const newState = { ...state };\n if (email !== '') {\n newState.email = email;\n }\n if (extraPages !== undefined) {\n addPage(extraPages, 2);\n newState.extraPage = true;\n }\n setState(newState);\n } catch (e) {\n if (e === 406) {\n setState({ ...state, existingUser: true });\n }\n }\n };\n if (state.email === undefined) {\n getEmail();\n }\n }, [history, prefix, token, state]);\n\n useEffect(() => {\n document.title = 'User Details - Tauria';\n }, []);\n\n // This effect is used to redirect the user back to the sign-in screen if they exist already\n useEffect(() => {\n let timeout: number;\n\n if (state.existingUser) {\n timeout = setTimeout(() => {\n history.push('/');\n }, 7500);\n }\n\n return (): void => {\n if (timeout) {\n clearTimeout(timeout);\n }\n };\n }, [history, state.existingUser]);\n\n const handleStoreDetails = (values: any): void => {\n const newState = { ...state };\n newState.email = values['WORK EMAIL'];\n newState.firstName = values['FIRST NAME'];\n newState.lastName = values['LAST NAME'];\n newState.step += 1;\n setState(newState);\n };\n\n const handleStorePassword = async (values: any): Promise => {\n const newState = { ...state };\n newState.passwordHash = Encryption.encryptPassword(values.PASSWORD);\n newState.loginHash = Encryption.getLoginHash(values.PASSWORD);\n // skip captcha\n const captchaToken = await recaptcha.execute('register_new_user');\n const result = await registerApi.addNewUser(\n newState.prefix,\n newState.token,\n newState,\n captchaToken,\n );\n\n if (result === Result.Success) {\n setState({ ...state, step: state.step += 1 });\n if (state.email) {\n connectApi.login({\n prefix: state.prefix,\n passwordHash: newState.passwordHash,\n email: state.email,\n loginHash: newState.loginHash,\n });\n return Result.Success;\n }\n }\n return Result.GeneralError;\n };\n\n const handleStoreDescription = (values: any): void => {\n const newState: any = { ...state };\n newState.position = values['JOB TITLE'];\n newState.description = values['COMPANY BIO'];\n newState.phoneNumber = values['PHONE NUMBER'];\n newState.step += 1;\n setState(newState);\n };\n\n const getPage = (): JSX.Element | null => {\n if (state.existingUser) {\n return ;\n }\n\n if (pages[state.step - 1] === 'details') {\n return
;\n }\n\n if (pages[state.step - 1] === 'password') {\n return ;\n }\n\n if (pages[state.step - 1] === 'description') {\n return ;\n }\n\n return null;\n };\n return (\n <>\n
\n 1}\n handleBack={(): void => {\n setState({ ...state, step: state.step - 1 });\n }}\n />\n
\n
{getPage()}
\n \n );\n};\n\nconst NewUsers = (): JSX.Element => {\n const { token, prefix } = useParams() as { token: string; prefix: string };\n return ;\n};\n\nexport default NewUsers;\n","import React, { useState } from 'react';\nimport Form, { FormInputOptions as InputOptions } from '../tauria-react-components/molecules/Form';\nimport PasswordStrength, {\n PasswordStrengthInputOptions,\n} from '../tauria-react-components/molecules/FormRenderers/PasswordStrength';\nimport Base from '../pages/Base';\nimport { Result } from '../utilities/validate';\nimport ReadOnly from '../tauria-react-components/molecules/FormRenderers/ReadOnly';\nimport { Headings } from '../styles';\nimport { getPasswordFormErrors, getPasswordFormCriteria } from '../utilities/password-criteria';\nimport Loading from '../views/Loading';\n\nconst Password: React.FC<{\n storePassword: (data: Record) => Promise;\n givenEmail: string | undefined;\n newUser?: boolean;\n}> = ({ storePassword, newUser, givenEmail }) => {\n const [errors, setErrors] = useState({});\n const [criteria, setCriteria] = useState(getPasswordFormCriteria({}));\n const [loadingPromise, setLoadingPromise] = useState | undefined>(\n undefined,\n );\n\n const validatePasswords = React.useCallback(\n async (values: Record): Promise => {\n try {\n const newErrors = getPasswordFormErrors(values);\n\n if (Object.keys(newErrors).length > 0) {\n setErrors(newErrors);\n return;\n }\n\n const promise = storePassword(values);\n\n if (newUser) {\n setLoadingPromise(promise);\n }\n\n const potentialErrors = await promise;\n\n if (newUser) {\n setTimeout(() => {\n setLoadingPromise(undefined);\n }, 2000);\n }\n\n if (potentialErrors) {\n setErrors({ ALL: potentialErrors });\n }\n } catch (error) {\n setErrors({ ALL: error?.message || error });\n }\n },\n [storePassword, newUser],\n );\n\n const handleChange = React.useCallback((values: Record): void => {\n setCriteria(getPasswordFormCriteria(values));\n\n // Reset Errors on change\n setErrors({});\n }, []);\n\n return (\n <>\n \n \n

Reset Your Password

\n

Set a new password for your account

\n
\n \n \n \n \n );\n};\n\nexport default Password;\n","import React from 'react';\nimport Base from '../pages/Base';\nimport { Headings } from '../styles';\n\nconst Success = (): JSX.Element => {\n return (\n \n \n

Success!

\n
\n

You will be redirected in a moment. Please wait...

\n \n );\n};\n\nexport default Success;\n","import React from 'react';\nimport Base from '../pages/Base';\nimport { Headings } from '../styles';\n\nconst ContactSupport = (): JSX.Element => {\n return (\n \n \n

Error

\n
\n

An error has occured. Please contact support.

\n \n );\n};\n\nexport default ContactSupport;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useState, useEffect } from 'react';\nimport { useParams, useHistory } from 'react-router';\nimport Encryption from '../utilities/encryption';\nimport Base from './basePage';\n\nimport Banner from '../views/Banner';\nimport Password from '../ResetPages/Password';\nimport Success from '../ResetPages/Success';\nimport { Result } from '../utilities/validate';\nimport connectApi, { ResetData } from '../models/connectApi';\nimport authApi from '../models/authApi';\nimport ContactSupport from '../ResetPages/ContactSupport';\n\nexport interface StateMachine {\n step: number;\n email?: string;\n passwordHash: string;\n confirmPasswordHash: string;\n loginHash: string;\n firstName?: string;\n lastName?: string;\n token: string;\n login?: string;\n prefix: string;\n}\n\nconst isString = (str: unknown): str is string => {\n return typeof str === 'string';\n};\n\nfunction isCompleteResetData(obj: any): obj is ResetData {\n if (typeof obj !== 'object' || obj === null) {\n return false;\n }\n\n return obj.firstName && isString(obj.lastName) && obj.login && obj.email;\n}\n\nfunction resetPassword(state: StateMachine): Promise | boolean {\n if (isCompleteResetData(state)) {\n return connectApi.resetPassword(state);\n }\n\n return false;\n}\n\nconst ResetPasswordContent: React.FC<{ token: string; prefix: string }> = ({ token, prefix }) => {\n const history = useHistory();\n const [state, setState] = useState({\n step: token === 'None' ? 3 : 1,\n token,\n prefix,\n email: undefined,\n firstName: undefined,\n lastName: undefined,\n login: undefined,\n passwordHash: '',\n confirmPasswordHash: '',\n loginHash: '',\n });\n\n React.useEffect(() => {\n document.title = 'Reset Password - Tauria';\n }, []);\n\n useEffect(() => {\n const getSignupData = async (): Promise => {\n try {\n const signupUser = await authApi.passwordResetInfo(token, prefix);\n\n if (!signupUser && token !== 'None') {\n history.push('/');\n return;\n }\n // no signup user and token is None, do nothing\n if (!signupUser) return;\n\n setState({\n ...state,\n email: signupUser.email,\n firstName: signupUser.name,\n lastName: signupUser.last_name,\n login: signupUser.login,\n });\n } catch (e) {\n // eslint-disable-next-line no-console\n console.log(e);\n }\n };\n\n if (state.email === undefined) {\n getSignupData();\n }\n });\n\n const handleStorePassword = async (\n values: Record<'PASSWORD' | 'CONFIRM PASSWORD', string>,\n ): Promise => {\n const newState = { ...state };\n newState.passwordHash = Encryption.encryptPassword(values.PASSWORD);\n newState.confirmPasswordHash = Encryption.encryptPassword(values['CONFIRM PASSWORD']);\n const success = await resetPassword(newState);\n\n if (success) {\n setState({ ...state, step: state.step + 1 });\n return Result.Success;\n }\n\n return Result.ResetPasswordFail;\n };\n\n const getPage = (): JSX.Element => {\n if (state.step === 1) {\n return ;\n }\n if (state.step === 2) {\n return ;\n }\n return ;\n };\n return (\n <>\n
\n {\n setState({ ...state, step: state.step - 1 });\n }}\n />\n
\n
{getPage()}
\n \n );\n};\n\nconst ResetPassword = (): JSX.Element => {\n const { token, prefix } = useParams();\n return ;\n};\n\nexport default ResetPassword;\n","import pkgConfig from '../package.json';\n\nexport const BASE_PATH = (pkgConfig as any).homepage || '';\n\nexport const HUBSPOT_ID = '6097844';\n\nexport const CAPTCHA_SITE_KEY = '6LeFc74ZAAAAAHIs5eVXkIhiDsq1fpZkyKRi0YxP';\n","import React, { useEffect } from 'react';\n\nconst ClearStorage = (): JSX.Element => {\n useEffect(() => {\n localStorage.clear();\n setTimeout(() => {\n console.info('redirecting...');\n window.location.replace('https://signup.zebu.io');\n }, 1000);\n }, []);\n\n return
;\n};\n\nexport default ClearStorage;\n","import React from 'react';\nimport { Switch, Route, useHistory } from 'react-router';\nimport Homepage from './pages/home';\nimport Register from './pages/register';\nimport ForgotPassword from './pages/forgotPassword';\nimport BuildingOrg from './RegisterPages/Building';\nimport VerifyEmail from './RegisterPages/VerifyEmail';\nimport NewUsers from './pages/newUser';\nimport PasswordReset from './pages/resetPassword';\nimport ConfigManager from './config';\nimport { BASE_PATH, HUBSPOT_ID } from './constants';\nimport { sendPageView } from './utilities/hubspot';\nimport ClearStorage from './pages/ClearStorage';\n\nexport const Routes = (): JSX.Element => {\n const history = useHistory();\n\n React.useEffect(() => {\n const { config } = new ConfigManager(window.location.origin);\n const script = document.createElement('script');\n\n if (config.env === 'PRD') {\n script.src = `//js.hs-scripts.com/${HUBSPOT_ID}.js`;\n script.type = 'text/javascript';\n script.id = 'hs-script-loader';\n script.defer = true;\n script.async = true;\n }\n\n document.body.appendChild(script);\n\n return (): void => {\n document.body.removeChild(script);\n };\n }, []);\n\n React.useEffect(() => {\n return history.listen((location) => {\n sendPageView(`${BASE_PATH}${location.pathname}`);\n });\n }, [history]);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import React from 'react';\nimport { BrowserRouter as Router } from 'react-router-dom';\nimport { CaptchaProvider } from '@developers/use-captcha';\nimport { Routes } from './Routes';\nimport { CAPTCHA_SITE_KEY } from './constants';\n\nconst App = (): JSX.Element => {\n return (\n \n \n \n \n \n );\n};\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(\n process.env.PUBLIC_URL,\n window.location.href\n );\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' }\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root'),\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n","module.exports = __webpack_public_path__ + \"static/media/zebu_logo.e5c90ba2.svg\";","module.exports = __webpack_public_path__ + \"static/media/SignUp-BG.19978653.svg\";","module.exports = __webpack_public_path__ + \"static/media/chats__icon.952aa05b.svg\";","module.exports = __webpack_public_path__ + \"static/media/calls__icon.ae3ac5b2.svg\";","module.exports = __webpack_public_path__ + \"static/media/calendar__icon.c2780deb.svg\";","module.exports = __webpack_public_path__ + \"static/media/files__icon.4a2fcc4b.svg\";","module.exports = __webpack_public_path__ + \"static/media/Back.29cd9aa4.svg\";","module.exports = __webpack_public_path__ + \"static/media/check_icon.f0040879.svg\";","module.exports = __webpack_public_path__ + \"static/media/su_link.4c711e9f.svg\";","module.exports = __webpack_public_path__ + \"static/media/sg_phone.bf9a7ffd.svg\";","module.exports = __webpack_public_path__ + \"static/media/sw_check_circled.2fbc4733.svg\";","module.exports = __webpack_public_path__ + \"static/media/emailIcon.04f3ee5e.svg\";","module.exports = __webpack_public_path__ + \"static/media/eyeIcon.9de785fa.svg\";","module.exports = __webpack_public_path__ + \"static/media/eyeIconOff.6daf15ea.svg\";","module.exports = __webpack_public_path__ + \"static/media/lockIcon.4836f951.svg\";","module.exports = __webpack_public_path__ + \"static/media/loader.8ddf137f.svg\";","module.exports = __webpack_public_path__ + \"static/media/sg_circle_close.dd5aadea.svg\";","module.exports = __webpack_public_path__ + \"static/media/sb_lock.2cedfded.svg\";"],"sourceRoot":""}