{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./app/assets/images/welcome.svg","webpack:///./app/assets/images/password_lock.svg","webpack:///./app/assets/images/keycaps.svg","webpack:///./app/assets/images/summary_backpack.svg","webpack:///./app/assets/images/email.svg","webpack:///./app/assets/images/badge.svg","webpack:///./app/assets/images/onb-terms_conditions.svg","webpack:///./app/react/onboardingStudent/common/constants.js","webpack:///./app/react/onboardingStudent/context/onboardingStudentContext.js","webpack:///./app/react/onboardingStudent/common/LocMap.js","webpack:///./app/react/onboardingStudent/common/components/Loc.js","webpack:///./app/react/onboardingStudent/common/endpoints.js","webpack:///./app/react/onboardingStudent/common/components/LanguageHelp.js","webpack:///./app/react/onboardingStudent/pages/ChoosePath.js","webpack:///./app/react/onboardingStudent/common/utils/FormUtilComponents.js","webpack:///./app/react/onboardingStudent/common/utils/useStepper.js","webpack:///./app/react/onboardingStudent/common/components/BottomNav.js","webpack:///./app/react/onboardingStudent/pages/CreatePassword.js","webpack:///./app/react/onboardingStudent/pages/EnterClassCode.js","webpack:///./app/react/onboardingStudent/common/components/BottomLink.js","webpack:///./app/react/onboardingStudent/common/services.js","webpack:///./app/react/onboardingStudent/common/components/StudentLoginForm.js","webpack:///./app/react/onboardingStudent/pages/SignIn.js","webpack:///./app/react/onboardingStudent/pages/SignUp.js","webpack:///./app/react/onboardingStudent/pages/Summary.js","webpack:///./app/react/onboardingStudent/pages/WhatIsYourEmail.js","webpack:///./app/react/onboardingStudent/pages/WhatIsYourName.js","webpack:///./app/react/onboardingStudent/pages/TermsAndConditions.js","webpack:///./app/react/onboardingStudent/common/components/ResetConfirmDialog.js","webpack:///./app/react/onboardingStudent/common/components/OnboardingNavBar.js","webpack:///./app/react/onboardingStudent/common/components/FlashMessage.js","webpack:///./app/react/onboardingStudent/common/components/Stepper.js","webpack:///./app/react/onboardingStudent/OnboardingStudentManager.js","webpack:///./app/react/onboardingStudent/App.js","webpack:///./app/react/jsPacks/onboardingStudent/signUpFlow.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","e","Promise","resolve","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","SOCIAL_SSO","STD_ONBOARDING_PATH","LOC_LIST","lang","copy","flag","English","French","Japanese","Korean","Chinese","Russian","Ukrainian","Spanish","Portuguese","Arabic","Italian","Turkish","Polish","OnboardingStudentState","createContext","displayName","OnboardingStudentDispatch","ACTIONS","setIsInvitation","isInvitation","type","payload","setClassCode","classCode","setLocale","setYumiClass","yumiClass","setCurrentStep","step","setSocialSso","social","reducer","state","action","isSm","locale","find","loc","currentStep","firstName","lastName","password","email","remoteErrors","socialSso","stepsLength","Error","useStudentOnboardingContext","useContext","dispatch","undefined","StudentOnboardingProvider","children","initialState","getInitialState","useReducer","setState","Provider","propTypes","PropTypes","node","isRequired","locMap","french","Summary","Email","Password","Welcome","japanese","korean","chinese","russian","ukrainian","spanish","portuguese","arabic","italian","turkish","polish","Loc","fontSize","color","fontWeight","props","defaultProps","oneOfType","number","array","string","oneOf","keys","findClassByCode","MenuItem","styled","TransparentButton","withConfig","shouldForwardProp","attrs","borderRadius","display","py","px","textAlign","width","as","href","disabled","theme","colors","blue500","white","LangButton","mx","mb","border","borderColor","blue100","blue700","selected","MotionIcon","motion","Icon","TooltipContent","Dropdown","useState","isOpen","setOpen","currentTab","useEffect","onOpenChange","asChild","position","top","zIndex","bg","boxShadow","alignItems","icon","ml","animate","rotate","align","sideOffset","mt","map","onClick","ButtonList","content","flexWrap","justifyContent","src","alt","mr","LanguageHelp","CreateAccountButton","Button","fontSizes","black","blue400","blue300","LogInButton","yellow400","yellow300","ChoosePath","history","useHistory","error","setError","addToast","useToast","location","useLocation","param","URLSearchParams","search","loading","setLoading","classCodeParam","xhr","url","method","then","res","id","flexDirection","minHeight","title","height","letterSpacing","my","lineHeight","flex","pathname","Field","OriginalField","media","md","sm","CodeInput","Text","marginBottom","input","inputStyles","useStepper","setNextStep","setPreviousStep","BottomNav","prevTitle","nextTitle","prevLink","nextLink","role","secondary","adaptive","CreatePassword","schema","Yup","shape","required","min","initialValues","initialErrors","validationSchema","validateOnBlur","validateOnChange","style","formik","field","errors","touched","values","isValid","autoComplete","Lock","forwardedAs","InputPassword","iconRight","isFieldValid","weight","getFieldRightIcon","placeholder","func","bool","isAndroid","test","navigator","userAgent","invalidCodeError","EnterClassCode","refs","useRef","Array","createRef","invitationCode","setInvitationCode","signUpError","setSignupError","foundClass","setFoundClass","max","handleNextPage","preventDefault","debounceHandleFindClass","useDebounce","parsedClassCode","join","includes","setFieldValue","validateField","Keycaps","code","onKeyInput","REGULAR_EXPRESSIONS","onlyOneAlphanumeric","newInvitationCode","toUpperCase","current","focus","ref","maxLength","onBlur","onInput","nativeEvent","onKeyDown","onChange","target","onPaste","text","clipboardData","getData","index","stopPropagation","invitationDefaultClass","pr","size","pl","teachers","avatar_url","teacher_name","BottomLink","matchLogin","useRouteMatch","path","hoverColor","checkEmail","memoizeOne","studentCheckEmail","LOGIN_ERROR_MESSAGES","invalid","last_attempt","locked","StudentLoginForm","login","remember_me","getErrorMessage","onSubmit","formValues","signIn","user","class_code","after_sign_in_path","response","status","timeout","getFieldBorderColor","SignIn","routePathname","cleverSsoUrl","googleSsoUrl","styledAs","Credentials","handleSsoClick","SignupHeading","signupError","handleRegistration","studentSignUp","submitSignup","first_name","last_name","yumi_class_code","err","console","warn","acceptedTerms","Backpack","maxHeight","overflow","CheckboxField","htmlFor","right","WhatIsYourEmail","emailLoading","setEmailLoading","validateOnMount","setFieldError","email_taken","setTimeout","setEmail","WhatIsYourName","matches","Badge","setFirstName","setLastName","TermsAndConditions","getSocialUrl","Clipboard","ResetConfirmDialog","open","handleOpenChange","onCancel","onConfirmOk","Root","Portal","Overlay","StyledContent","$zIndex","onOpenAutoFocus","onPointerDownOutside","overflowY","Title","Close","CloseButton","RegularNavbar","matchSignup","background","backgroundImage","to","Logo","OnboardingNavBar","matchRoot","exact","dialogOpen","setDialogOpen","FlashMessage","flashMessage","stepSize","innerHeight","Stepper","setBorderColor","setBackgroundColor","setColor","transform","idx","backgroundColor","SignUpManager","matchTerms","maxBreakpoint","useIncludedMediaQuery","rawBreakpoints","setIsSmallBreakpoint","shouldShowStepper","App","WebFont","load","google","families","basename","ElliiThemeProvider","document","addEventListener","ReactDOM","render","querySelector"],"mappings":"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","file":"onboardingStudent/signUpFlow.c3e16618c6db1d405bc7.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"onboardingStudent/signUpFlow\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// The chunk loading function for additional chunks\n \t// Since all referenced chunks are already included\n \t// in this file, this function is empty here.\n \t__webpack_require__.e = function requireEnsure() {\n \t\treturn Promise.resolve();\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"//d3uk5h2fsqai9v.cloudfront.net/js-packs/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([1525,\"vendor\",\"package-common\",\"ellii\",\"react\",\"endpoints\",\"email_preferences~lti/deep-link~lti/registration~onboardingStudent/signUpFlow\",\"onboardingEnglishApp/onboardingEnglishApp~onboardingStudent/signUpFlow\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","module.exports = __webpack_public_path__ + \"media/images/welcome-83945835.svg\";","module.exports = __webpack_public_path__ + \"media/images/password_lock-57e6dcb6.svg\";","module.exports = __webpack_public_path__ + \"media/images/keycaps-96202945.svg\";","module.exports = __webpack_public_path__ + \"media/images/summary_backpack-588cb92a.svg\";","module.exports = __webpack_public_path__ + \"media/images/email-a8c16c9e.svg\";","module.exports = __webpack_public_path__ + \"media/images/badge-7c2ccf6d.svg\";","module.exports = __webpack_public_path__ + \"media/images/onb-terms_conditions-b19f374c.svg\";","import French from 'Images/localization/french.png'\nimport Japanese from 'Images/localization/japanese.png'\nimport Korean from 'Images/localization/korean.png'\nimport Chinese from 'Images/localization/chinese.png'\nimport Russian from 'Images/localization/russian.png'\nimport Ukrainian from 'Images/localization/ukrainian.png'\nimport Spanish from 'Images/localization/spanish.png'\nimport Portuguese from 'Images/localization/portuguese.png'\nimport Arabic from 'Images/localization/arabic.png'\nimport Italian from 'Images/localization/italian.png'\nimport Turkish from 'Images/localization/turkish.png'\nimport English from 'Images/localization/english.png'\nimport Polish from 'Images/localization/polish.png'\n\nexport const SOCIAL_SSO = {\n google: 'google',\n clever: 'clever',\n}\n\nexport const STD_ONBOARDING_PATH = {\n basename: '/students',\n root: '/',\n login: '/login',\n signup: '/signup',\n}\n\nexport const LOC_LIST = [\n {\n lang: 'english',\n copy: 'English',\n flag: English,\n },\n {\n lang: 'french',\n copy: 'Français',\n flag: French,\n },\n {\n lang: 'japanese',\n copy: '日本語',\n flag: Japanese,\n },\n {\n lang: 'korean',\n copy: '한국어',\n flag: Korean,\n },\n {\n lang: 'chinese',\n copy: '中文',\n flag: Chinese,\n },\n {\n lang: 'russian',\n copy: 'Русский',\n flag: Russian,\n },\n {\n lang: 'ukrainian',\n copy: 'Українська',\n flag: Ukrainian,\n },\n {\n lang: 'spanish',\n copy: 'Español',\n flag: Spanish,\n },\n {\n lang: 'portuguese',\n copy: 'Português',\n flag: Portuguese,\n },\n {\n lang: 'arabic',\n copy: 'العربية',\n flag: Arabic,\n },\n {\n lang: 'italian',\n copy: 'Italiano',\n flag: Italian,\n },\n {\n lang: 'turkish',\n copy: 'Türkçe',\n flag: Turkish,\n },\n {\n lang: 'polish',\n copy: 'Polski',\n flag: Polish,\n },\n]\n\nexport const SIGNUP_ERROR_MESSAGE = {\n existingUsernameError: 'Existing: This username is already in use',\n invalidCodeError: 'Invalid invitation code',\n teacherReachedTheLimit:\n 'Sorry, this class is full! Please talk to your teacher.',\n generalError: 'We’re sorry. Something went wrong. Please try again',\n}\n","import { createContext, useContext, useReducer } from 'react'\nimport PropTypes from 'prop-types'\nimport R from 'ramda'\n\nimport getInitialState from 'Common/utils/getInitialState'\nimport { LOC_LIST } from '../common/constants'\n\n// CONTEXT OBJECTS\nconst OnboardingStudentState = createContext()\nOnboardingStudentState.displayName = 'OnboardingStudentState'\n\nconst OnboardingStudentDispatch = createContext()\nOnboardingStudentDispatch.displayName = 'OnboardingStudentDispatch'\n\nconst ACTIONS = {\n setIsInvitation: 'set is invitation',\n setLocale: 'set locale',\n setYumiClass: 'set yumiClass',\n setCurrentStep: 'set current step',\n setFirstName: 'set first name',\n setLastName: 'set last name',\n setPassword: 'set password',\n setEmail: 'set email',\n setRemoteErrors: 'set remote errors',\n setClassCode: 'set class code',\n setSocialSso: 'set social sso',\n setIsSmallBreakpoint: 'set is small breakpoint',\n setStepsLength: 'set steps length',\n resetState: 'reset state',\n}\n\n// ACTION CREATORS\nconst setIsSmallBreakpoint = isSm => ({\n type: ACTIONS.setIsSmallBreakpoint,\n payload: isSm,\n})\n\nconst setIsInvitation = isInvitation => ({\n type: ACTIONS.setIsInvitation,\n payload: isInvitation,\n})\n\nconst setClassCode = classCode => ({\n type: ACTIONS.setClassCode,\n payload: classCode,\n})\n\nconst setLocale = lang => ({\n type: ACTIONS.setLocale,\n payload: lang,\n})\n\nconst setYumiClass = yumiClass => ({\n type: ACTIONS.setYumiClass,\n payload: yumiClass,\n})\n\nconst setCurrentStep = step => ({\n type: ACTIONS.setCurrentStep,\n payload: step,\n})\n\nconst setFirstName = firstName => ({\n type: ACTIONS.setFirstName,\n payload: firstName,\n})\n\nconst setLastName = lastName => ({\n type: ACTIONS.setLastName,\n payload: lastName,\n})\n\nconst setPassword = password => ({\n type: ACTIONS.setPassword,\n payload: password,\n})\n\nconst setEmail = email => ({\n type: ACTIONS.setEmail,\n payload: email,\n})\n\nconst setRemoteErrors = errors => ({\n type: ACTIONS.setRemoteErrors,\n payload: errors,\n})\n\nconst setSocialSso = social => ({\n type: ACTIONS.setSocialSso,\n payload: social,\n})\n\nconst setStepsLength = steps => ({\n type: ACTIONS.setStepsLength,\n payload: steps,\n})\n\nconst resetState = () => ({\n type: ACTIONS.resetState,\n payload: null,\n})\n\nfunction reducer(state, action) {\n const { type, payload } = action\n\n return R.cond([\n [\n R.equals(ACTIONS.setIsSmallBreakpoint),\n () => {\n return {\n ...state,\n isSm: payload,\n }\n },\n ],\n [\n R.equals(ACTIONS.setIsInvitation),\n () => {\n return {\n ...state,\n isInvitation: payload,\n }\n },\n ],\n [\n R.equals(ACTIONS.setClassCode),\n () => {\n return {\n ...state,\n classCode: payload,\n }\n },\n ],\n [\n R.equals(ACTIONS.setLocale),\n () => {\n if (payload === 'english') {\n return {\n ...state,\n locale: null,\n }\n }\n return {\n ...state,\n locale: LOC_LIST.find(loc => loc.lang === payload).lang,\n }\n },\n ],\n [\n R.equals(ACTIONS.setYumiClass),\n () => {\n return {\n ...state,\n yumiClass: payload,\n }\n },\n ],\n [\n R.equals(ACTIONS.setCurrentStep),\n () => {\n return {\n ...state,\n currentStep: payload,\n }\n },\n ],\n [\n R.equals(ACTIONS.setFirstName),\n () => {\n return {\n ...state,\n firstName: payload,\n }\n },\n ],\n [\n R.equals(ACTIONS.setLastName),\n () => {\n return {\n ...state,\n lastName: payload,\n }\n },\n ],\n [\n R.equals(ACTIONS.setPassword),\n () => {\n return {\n ...state,\n password: payload,\n }\n },\n ],\n [\n R.equals(ACTIONS.setEmail),\n () => {\n return {\n ...state,\n email: payload,\n }\n },\n ],\n [\n R.equals(ACTIONS.setRemoteErrors),\n () => {\n return {\n ...state,\n remoteErrors: payload,\n }\n },\n ],\n [\n R.equals(ACTIONS.setSocialSso),\n () => {\n return {\n ...state,\n socialSso: payload,\n }\n },\n ],\n [\n R.equals(ACTIONS.setStepsLength),\n () => {\n return {\n ...state,\n stepsLength: payload,\n }\n },\n ],\n [\n R.equals(ACTIONS.resetState),\n () => {\n return {\n ...state,\n isInvitation: null,\n classCode: null,\n currentStep: null,\n locale: null,\n yumiClass: null,\n firstName: null,\n lastName: null,\n email: null,\n password: null,\n remoteErrors: null,\n socialSso: null,\n stepsLength: null,\n }\n },\n ],\n [\n R.T,\n () => {\n throw new Error(`Unhandled action type: ${type}`)\n },\n ],\n ])(type)\n}\n\n// CUSTOM HOOK\nfunction useStudentOnboardingContext() {\n const state = useContext(OnboardingStudentState)\n const dispatch = useContext(OnboardingStudentDispatch)\n\n if (state === undefined || dispatch === undefined)\n throw new Error(\n 'useStudentOnboardingContext must be used within a StudentOnboardingProvider'\n )\n return [state, dispatch]\n}\n\n// CONTEXT PROVIDER\nfunction StudentOnboardingProvider({ children }) {\n const initialState = getInitialState()\n const [state, setState] = useReducer(reducer, {\n isSm: null,\n isInvitation: null,\n classCode: null,\n currentStep: null,\n locale: null,\n yumiClass: null,\n firstName: null,\n lastName: null,\n email: null,\n password: null,\n remoteErrors: null,\n socialSso: null,\n stepsLength: null,\n ...initialState,\n })\n\n return (\n \n \n {children}\n \n \n )\n}\n\nStudentOnboardingProvider.propTypes = {\n children: PropTypes.node.isRequired,\n}\n\nexport {\n StudentOnboardingProvider,\n resetState,\n setClassCode,\n setCurrentStep,\n setEmail,\n setFirstName,\n setIsInvitation,\n setIsSmallBreakpoint,\n setLastName,\n setLocale,\n setPassword,\n setRemoteErrors,\n setSocialSso,\n setStepsLength,\n setYumiClass,\n useStudentOnboardingContext,\n}\n","const locMap = {\n french: {\n 'I’m new': 'Je suis nouveau sur ce site.',\n 'Log in': 'Se connecter.',\n 'Sign up with Google': 'S’inscrire avec Google.',\n 'Sign up with Clever': 'S’inscrire avec Clever.',\n 'Create account': 'Créer un compte.',\n 'Enter your class code': 'Entrez votre code de classe',\n 'First name': 'Prénom',\n 'Last name': 'Nom de famille',\n Summary: 'Récapitulatif',\n 'I agree to Ellii’s terms':\n 'J’accepte les conditions et la politique de confidentialité.',\n 'Ellii Student Login Page': 'Page de connexion pour les étudiants d’Ellii',\n 'What’s your name?': 'Comment vous appelez-vous?',\n 'What’s your email?': 'Quel est votre email?',\n 'Welcome back!': 'Bienvenue à nouveau!',\n 'Terms and Conditions': 'Conditions générales',\n 'Create an Ellii student account': 'Créez un compte étudiant Ellii',\n Email: 'Email',\n Password: 'Mot de passe',\n 'Create a password': 'Créer un mot de passe',\n 'Log in with Google': 'Se connecter avec Google',\n 'Log in with Clever': 'Se connecter avec Clever',\n Welcome: 'Bienvenue',\n },\n japanese: {\n 'I’m new': 'このサイトは初めてです',\n 'Log in': 'ログインする',\n 'Sign up with Google': 'Googleでサインアップする',\n 'Sign up with Clever': 'Cleverでサインアップする',\n 'Create account': 'アカウントを作成する',\n 'Enter your class code': 'クラスコードを入力してください',\n 'First name': '名前',\n 'Last name': '姓',\n Summary: 'まとめ',\n 'I agree to Ellii’s terms': '利用規約とプライバシーポリシーに同意します',\n 'Ellii Student Login Page': 'Elliiの学生ログインページ',\n 'What’s your name?': 'お名前は何ですか?',\n 'What’s your email?': 'あなたのメールは何ですか?',\n 'Welcome back!': 'おかえりなさい!',\n 'Terms and Conditions': '利用規約',\n 'Create an Ellii student account': 'Ellii学生アカウントを作成する',\n Email: 'メール',\n Password: 'パスワード',\n 'Create a password': 'パスワードを作成する',\n 'Log in with Google': 'Googleでログインする',\n 'Log in with Clever': 'Cleverでログインする',\n Welcome: 'ようこそ',\n },\n korean: {\n 'I’m new': '이 사이트는 처음입니다',\n 'Log in': '로그인',\n 'Sign up with Google': 'Google로 가입하기',\n 'Sign up with Clever': 'Clever로 가입하기',\n 'Create account': '계정을 만들다',\n 'Enter your class code': '클래스 코드를 입력하십시오',\n 'First name': '이름',\n 'Last name': '성',\n Summary: '요약',\n 'I agree to Ellii’s terms': '이용 약관 및 개인정보 처리방침에 동의합니다',\n 'Ellii Student Login Page': 'Ellii 학생 로그인 페이지',\n 'What’s your name?': '이름이 무엇입니까?',\n 'What’s your email?': '이메일은 무엇입니까?',\n 'Welcome back!': '다시 오신 것을 환영합니다!',\n 'Terms and Conditions': '이용 약관',\n 'Create an Ellii student account': 'Ellii 학생 계정을 만드십시오',\n Email: '이메일',\n Password: '비밀번호',\n 'Create a password': '비밀번호를 생성하십시오',\n 'Log in with Google': 'Google로 로그인하십시오',\n 'Log in with Clever': 'Clever로 로그인하십시오',\n Welcome: '환영합니다',\n },\n chinese: {\n 'I’m new': '我是这个网站的新用户',\n 'Log in': '登录',\n 'Sign up with Google': '用Google注册',\n 'Sign up with Clever': '用Clever注册',\n 'Create account': '创建账户',\n 'Enter your class code': '输入您的班级代码',\n 'First name': '名字',\n 'Last name': '姓',\n Summary: '总结',\n 'I agree to Ellii’s terms': '我同意服务条款和隐私政策',\n 'Ellii Student Login Page': 'Ellii学生登录页面',\n 'What’s your name?': '你叫什么名字?',\n 'What’s your email?': '你的电子邮件是什么?',\n 'Welcome back!': '欢迎回来!',\n 'Terms and Conditions': '服务条款',\n 'Create an Ellii student account': '创建一个Ellii学生账户',\n Email: '电子邮件',\n Password: '密码',\n 'Create a password': '创建密码',\n 'Log in with Google': '用Google登录',\n 'Log in with Clever': '用Clever登录',\n Welcome: '欢迎',\n },\n russian: {\n 'I’m new': 'Я новичок на этом сайте',\n 'Log in': 'Вход',\n 'Sign up with Google': 'Зарегистрироваться через Google',\n 'Sign up with Clever': 'Зарегистрироваться через Clever',\n 'Create account': 'Создать аккаунт',\n 'Enter your class code': 'Введите код вашего класса',\n 'First name': 'Имя',\n 'Last name': 'Фамилия',\n Summary: 'Итог',\n 'I agree to Ellii’s terms':\n 'Я согласен с условиями и политикой конфиденциальности',\n 'Ellii Student Login Page': 'Страница входа для студентов Ellii',\n 'What’s your name?': 'Как тебя зовут?',\n 'What’s your email?': 'Какой у вас адрес электронной почты?',\n 'Welcome back!': 'Добро пожаловать обратно!',\n 'Terms and Conditions': 'Условия и положения',\n 'Create an Ellii student account': 'Создайте учебный аккаунт Ellii',\n Email: 'Электронная почта',\n Password: 'Пароль',\n 'Create a password': 'Создать пароль',\n 'Log in with Google': 'Войти через Google',\n 'Log in with Clever': 'Войти через Clever',\n Welcome: 'Добро пожаловать',\n },\n ukrainian: {\n 'I’m new': 'Я новий на цьому сайті',\n 'Log in': 'Увійти',\n 'Sign up with Google': 'Зареєструватися через Google',\n 'Sign up with Clever': 'Зареєструватися через Clever',\n 'Create account': 'Створити обліковий запис',\n 'Enter your class code': 'Введіть код вашого класу',\n 'First name': 'Ім&’я',\n 'Last name': 'Прізвище',\n Summary: 'Підсумок',\n 'I agree to Ellii’s terms':\n 'Я погоджуюсь з умовами та політикою конфіденційності',\n 'Ellii Student Login Page': 'Сторінка входу для студентів Ellii',\n 'What’s your name?': 'Як вас звати?',\n 'What’s your email?': 'Яка ваша електронна пошта?',\n 'Welcome back!': 'Ласкаво просимо назад!',\n 'Terms and Conditions': 'Умови та положення',\n 'Create an Ellii student account': 'Створити аккаунт студента Ellii',\n Email: 'Електронна пошта',\n Password: 'Пароль',\n 'Create a password': 'Створити пароль',\n 'Log in with Google': 'Увійти через Google',\n 'Log in with Clever': 'Увійти через Clever',\n Welcome: 'Ласкаво просимо',\n },\n spanish: {\n 'I’m new': 'Soy nuevo en este sitio',\n 'Log in': 'Iniciar sesión',\n 'Sign up with Google': 'Regístrate con Google',\n 'Sign up with Clever': 'Regístrate con Clever',\n 'Create account': 'Crear una cuenta',\n 'Enter your class code': 'Ingresa tu código de clase',\n 'First name': 'Nombre',\n 'Last name': 'Apellido',\n Summary: 'Resumen',\n 'I agree to Ellii’s terms':\n 'Acepto los términos y la política de privacidad',\n 'Ellii Student Login Page':\n 'Página de inicio de sesión para estudiantes de Ellii',\n 'What’s your name?': '¿Cómo te llamas?',\n 'What’s your email?': '¿Cuál es tu correo electrónico?',\n 'Welcome back!': '¡Bienvenido de nuevo!',\n 'Terms and Conditions': 'Términos y condiciones',\n 'Create an Ellii student account': 'Crea una cuenta de estudiante de Ellii',\n Email: 'Correo electrónico',\n Password: 'Contraseña',\n 'Create a password': 'Crea una contraseña',\n 'Log in with Google': 'Inicia sesión con Google',\n 'Log in with Clever': 'Inicia sesión con Clever',\n Welcome: 'Bienvenido',\n },\n portuguese: {\n 'I’m new': 'Sou novo neste site',\n 'Log in': 'Entrar',\n 'Sign up with Google': 'Inscreva-se com o Google',\n 'Sign up with Clever': 'Inscreva-se com o Clever',\n 'Create account': 'Criar uma conta',\n 'Enter your class code': 'Digite o seu código de classe',\n 'First name': 'Nome',\n 'Last name': 'Sobrenome',\n Summary: 'Resumo',\n 'I agree to Ellii’s terms':\n 'Concordo com os termos e a política de privacidade',\n 'Ellii Student Login Page': 'Página de login para estudantes da Ellii',\n 'What’s your name?': 'Qual é o seu nome',\n 'What’s your email?': 'Qual é o seu email',\n 'Welcome back!': 'Bem-vindo de volta',\n 'Terms and Conditions': 'Termos e condições',\n 'Create an Ellii student account': 'Crie uma conta de estudante Ellii',\n Email: 'Email',\n Password: 'Senha',\n 'Create a password': 'Criar uma senha',\n 'Log in with Google': 'Entrar com o Google',\n 'Log in with Clever': 'Entrar com o Clever',\n Welcome: 'Bem-vindo',\n },\n arabic: {\n 'I’m new': 'أنا جديد في هذا الموقع',\n 'Log in': 'تسجيل الدخول',\n 'Sign up with Google': 'تسجيل الدخول مع جوجل(Google)',\n 'Sign up with Clever': 'تسجيل الدخول مع جوجل(Clever)',\n 'Create account': 'إنشاء حساب',\n 'Enter your class code': 'أدخل رمز الفصل الدراسي الخاص بك',\n 'First name': 'الاسم الأول',\n 'Last name': 'الاسم الأخير',\n Summary: 'ملخص',\n 'I agree to Ellii’s terms': 'أوافق على الشروط وسياسة الخصوصية',\n 'Ellii Student Login Page': 'Ellii صفحة تسجيل الدخول لطلاب',\n 'What’s your name?': 'ما اسمك؟',\n 'What’s your email?': 'ما هو بريدك الإلكتروني؟',\n 'Welcome back!': 'مرحبا بك مجددا!',\n 'Terms and Conditions': 'الشروط والأحكام',\n 'Create an Ellii student account': 'أنشئ حساب طالب Ellii',\n Email: 'البريد الإلكتروني',\n Password: 'كلمه السر',\n 'Create a password': 'إنشاء كلمة مرور',\n 'Log in with Google': 'تسجيل الدخول باستخدام Google',\n 'Log in with Clever': 'تسجيل الدخول باستخدام Clever',\n Welcome: 'أهلاً وسهلاً',\n },\n italian: {\n 'I’m new': 'Sono nuovo su questo sito.',\n 'Log in': 'Accedi',\n 'Sign up with Google': 'Iscriviti con Google.',\n 'Sign up with Clever': 'Iscriviti con Clever.',\n 'Create account': 'Crea un account',\n 'Enter your class code': 'Inserisci il tuo codice classe',\n 'First name': 'Nome',\n 'Last name': 'Cognome',\n Summary: 'Riepilogo',\n 'I agree to Ellii’s terms': 'Accetto i termini e la politica sulla privacy',\n 'Ellii Student Login Page': 'Pagina di accesso per gli studenti di Ellii',\n 'What’s your name?': 'Come ti chiami?',\n 'What’s your email?': 'Qual è la tua email?',\n 'Welcome back!': 'Bentornato!',\n 'Terms and Conditions': 'Termini e condizioni',\n 'Create an Ellii student account': 'Crea un account studente Ellii',\n Email: 'Email',\n Password: 'Password',\n 'Create a password': 'Crea una password',\n 'Log in with Google': 'Accedi con Google',\n 'Log in with Clever': 'Accedi con Clever',\n Welcome: 'Benvenuto',\n },\n turkish: {\n 'I’m new': 'Bu siteye yeni geldim',\n 'Log in': 'Oturum aç',\n 'Sign up with Google': 'Google ile kaydol',\n 'Sign up with Clever': 'Clever ile kaydol',\n 'Create account': 'Bir hesap oluştur',\n 'Enter your class code': 'Sınıf kodunuzu girin',\n 'First name': 'İsim',\n 'Last name': 'Soyadı',\n Summary: 'Özet',\n 'I agree to Ellii’s terms':\n 'Şartları ve gizlilik politikasını kabul ediyorum',\n 'Ellii Student Login Page': 'Ellii Öğrenci Giriş Sayfası',\n 'What’s your name?': 'Adın ne',\n 'What’s your email?': 'E-posta adresin nedir',\n 'Welcome back!': 'Tekrar hoş geldiniz',\n 'Terms and Conditions': 'Şartlar ve koşullar',\n 'Create an Ellii student account': 'Bir Ellii öğrenci hesabı oluştur',\n Email: 'E-posta',\n Password: 'Şifre',\n 'Create a password': 'Bir şifre oluştur',\n 'Log in with Google': 'Google ile giriş yap',\n 'Log in with Clever': 'Clever ile giriş yap',\n Welcome: 'Hoş geldiniz',\n },\n polish: {\n 'I’m new': 'Jestem nowy na tej stronie',\n 'Log in': 'Zaloguj się',\n 'Sign up with Google': 'Zarejestruj się za pomocą Google',\n 'Sign up with Clever': 'Zarejestruj się za pomocą Clever',\n 'Create account': 'Utwórz konto',\n 'Enter your class code': 'Wprowadź kod swojej klasy',\n 'First name': 'Imię',\n 'Last name': 'Nazwisko',\n Summary: 'Podsumowanie',\n 'I agree to Ellii’s terms':\n 'Zgadzam się z regulaminem i polityką prywatności.',\n 'Ellii Student Login Page': 'Strona logowania dla studentów Ellii',\n 'What’s your name?': 'Jak masz na imię?',\n 'What’s your email?': 'Jaki jest twój email?',\n 'Welcome back!': 'Witamy z powrotem!',\n 'Terms and Conditions': 'Warunki i Zasady',\n 'Create an Ellii student account': 'Utwórz konto studenta Ellii',\n Email: 'Email',\n Password: 'Hasło',\n 'Create a password': 'Utwórz hasło',\n 'Log in with Google': 'Zaloguj się za pomocą Google.',\n 'Log in with Clever': 'Zaloguj się za pomocą Clever.',\n Welcome: 'Witamy',\n },\n}\n\nexport default locMap\n","import PropTypes from 'prop-types'\n\nimport { Box, Text } from '@redriverpress/system'\n\nimport locMap from '../LocMap'\nimport { useStudentOnboardingContext } from '../../context/onboardingStudentContext'\n\nexport default function Loc({ fontSize, color, fontWeight, copy, ...props }) {\n const [{ locale }] = useStudentOnboardingContext()\n\n return (\n \n \n {locMap[locale][copy]}\n \n \n )\n}\n\nLoc.defaultProps = {\n fontSize: 1,\n color: 'gray700',\n fontWeight: '600',\n}\n\nLoc.propTypes = {\n fontSize: PropTypes.oneOfType([PropTypes.number, PropTypes.array]),\n color: PropTypes.string,\n fontWeight: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n copy: PropTypes.oneOf([...Object.keys(locMap.french)]).isRequired,\n}\n","const findClassByCode = classCode =>\n `/api/v3/students/classes/find_class_by_codes?class_code=${classCode}`\n\nexport default findClassByCode\n","import { useState, useEffect } from 'react'\nimport * as DropdownMenu from '@radix-ui/react-dropdown-menu'\nimport styled from 'styled-components'\nimport { motion } from 'framer-motion'\nimport {\n Box,\n Container,\n Icon,\n Image,\n Text,\n TransparentButton,\n shouldForwardProp,\n} from '@redriverpress/system'\nimport R from 'ramda'\n\nimport Tooltip from 'Common/components/ClickableTooltip'\n\nimport { LOC_LIST } from '../constants'\nimport {\n useStudentOnboardingContext,\n setLocale,\n} from '../../context/onboardingStudentContext'\n\nconst MenuItem = styled(TransparentButton)\n .withConfig({ shouldForwardProp })\n .attrs(props => ({\n borderRadius: 'rounded',\n color: 'black',\n display: 'block',\n fontSize: 0,\n fontWeight: 600,\n py: 2,\n px: ['0.75rem', null, 3], // 0.75rem on mobile so items in full width menus line up w/ site container\n textAlign: 'left',\n width: 1,\n as: props.as || (props.href ? 'a' : 'button'),\n }))`\n transition: unset; /* Override link global style */\n\n /* Radix manages focus programatically, so it's triggered on hover as well */\n &:focus {\n background: ${props =>\n props.disabled ? 'transparent' : props.theme.colors.blue500};\n color: ${props =>\n props.disabled ? 'currentColor' : props.theme.colors.white};\n outline: none;\n }\n`\n\nconst LangButton = styled(TransparentButton).attrs(() => ({\n mx: 1,\n mb: 2,\n border: '1px solid',\n borderColor: 'gray300',\n borderRadius: 'small',\n}))`\n &:hover {\n background-color: ${props => props.theme.colors.blue100};\n border-color: ${props => props.theme.colors.blue500};\n }\n\n &:focus-visible {\n box-shadow: inset 0 0 0 2px ${props => props.theme.colors.white},\n 0 0 0 2px ${props => props.theme.colors.blue700};\n z-index: 1;\n }\n\n background-color: ${props => props.selected && props.theme.colors.blue100};\n border-color: ${props => props.selected && props.theme.colors.blue500};\n`\n\nconst MotionIcon = motion(Icon)\n\nconst TooltipContent = () => (\n \n Choose a language to help you sign up or log in to Ellii.\n\n \n Still having trouble? Ask your teacher to help you sign\n up or log in.\n \n \n)\n\nconst Dropdown = () => {\n const [{ locale }, dispatch] = useStudentOnboardingContext()\n const [isOpen, setOpen] = useState(false)\n\n const currentTab = R.find(R.propEq('lang', locale), LOC_LIST)\n\n useEffect(() => {\n // Close menu when locale changes\n setOpen(false)\n }, [locale])\n\n return (\n setOpen(o)}>\n \n \n \n \n Help in other languages{' '}\n {currentTab ? `(${currentTab?.copy})` : ''}\n \n \n \n \n \n \n \n {LOC_LIST.map(loc => (\n \n dispatch(setLocale(loc.lang))}>\n {loc.copy}\n \n \n ))}\n \n \n \n )\n}\n\nconst ButtonList = ({ ...props }) => {\n const [{ locale }, dispatch] = useStudentOnboardingContext()\n\n return (\n \n \n \n Help in other languages\n \n\n {/* ----- TOOLTIP ----- */}\n } />\n \n\n \n {LOC_LIST.map(loc => (\n dispatch(setLocale(loc.lang))}\n >\n {loc.copy}\n {loc.copy}\n \n ))}\n \n \n )\n}\n\nexport default function LanguageHelp({ ...props }) {\n const [{ isSm }] = useStudentOnboardingContext()\n return isSm ? : \n}\n","import { useEffect, useState } from 'react'\nimport { useLocation, useHistory } from 'react-router-dom'\nimport styled from 'styled-components'\nimport {\n Box,\n Button,\n Icon,\n Image,\n LoadingOverlay,\n Text,\n useToast,\n} from '@redriverpress/system'\nimport xhr from 'Common/utils/xhr'\n\nimport Welcome from 'Images/welcome.svg'\nimport { STD_ONBOARDING_PATH } from '../common/constants'\nimport {\n useStudentOnboardingContext,\n setClassCode,\n setYumiClass,\n setIsInvitation,\n setCurrentStep,\n} from '../context/onboardingStudentContext'\nimport Loc from '../common/components/Loc'\nimport findClassByCode from '../common/endpoints'\n\nimport LanguageHelp from '../common/components/LanguageHelp'\n\nconst CreateAccountButton = styled(Button)`\n font-size: ${props => props.theme.fontSizes[2]};\n color: ${props => props.theme.colors.black};\n background-color: ${props => props.theme.colors.blue400};\n &:hover,\n &:focus {\n background: ${props => props.theme.colors.blue300};\n color: ${props => props.theme.colors.black};\n }\n`\n\nconst LogInButton = styled(Button)`\n font-size: ${props => props.theme.fontSizes[2]};\n color: ${props => props.theme.colors.black};\n background-color: ${props => props.theme.colors.yellow400};\n &:hover,\n &:focus {\n background: ${props => props.theme.colors.yellow300};\n color: ${props => props.theme.colors.black};\n }\n`\n\nexport default function ChoosePath() {\n const history = useHistory()\n const [error, setError] = useState(false)\n const { addToast } = useToast()\n const [{ locale }, dispatch] = useStudentOnboardingContext()\n const location = useLocation()\n const param = new URLSearchParams(location.search)\n\n const [loading, setLoading] = useState(false)\n\n useEffect(() => {\n const classCodeParam = param.get('class_code')\n\n if (classCodeParam) {\n dispatch(setIsInvitation(true))\n setLoading(true)\n xhr({\n url: findClassByCode(classCodeParam),\n method: 'GET',\n })\n .then(res => {\n setLoading(false)\n dispatch(setYumiClass(res.data))\n dispatch(setClassCode(classCodeParam))\n })\n .catch(() => {\n setLoading(false)\n setError(true)\n addToast({\n id: 'class-code-error',\n content: 'Invalid link. Please ask your teacher for the new link.',\n type: 'warning',\n })\n })\n } else {\n dispatch(setIsInvitation(false))\n }\n }, [location])\n\n useEffect(() => {\n dispatch(setCurrentStep(null))\n }, [])\n\n return (\n <>\n {loading && }\n \n \n \n \n Welcome\n \n {!!locale && (\n \n )}\n \n\n \n \n {\n history.push({ pathname: STD_ONBOARDING_PATH.signup })\n }}\n disabled={error}\n >\n \n I’m new\n \n\n {!!locale && (\n \n )}\n \n \n {\n history.push({ pathname: STD_ONBOARDING_PATH.login })\n }}\n disabled={error}\n >\n \n Log in\n \n\n {!!locale && (\n \n )}\n \n \n \n \n \n )\n}\n","import styled from 'styled-components'\n\nimport { Text, theme, media, inputStyles } from '@redriverpress/system'\n\nimport OriginalField from 'Common/components/forms/Field'\n\nexport const Field = styled(OriginalField).attrs(() => ({\n height: '3.375rem',\n fontSize: [0, null, 2],\n}))`\n border: ${props =>\n props.borderColor\n ? `1px solid ${theme.colors[props.borderColor]}`\n : 'none'};\n ${media.md`\n height: 3.8rem;\n `}\n ${media.sm`\n height: 3.375rem;\n `}\n`\n\nexport const InputLabel = styled(Text).attrs(() => ({\n as: 'label',\n fontSize: 3,\n fontWeight: '600',\n marginBottom: 2,\n}))``\n\nexport const CodeInput = styled.input`\n ${inputStyles}\n\n box-shadow: none;\n width: 100%;\n height: 3.75rem;\n line-height: 1.4;\n text-align: center;\n box-sizing: border-box;\n font-size: ${theme.fontSizes[4]};\n min-width: 0;\n border: ${props =>\n props.borderColor\n ? `2px solid ${theme.colors[props.borderColor]}`\n : 'none'};\n`\n","import {\n useStudentOnboardingContext,\n setCurrentStep,\n} from '../../context/onboardingStudentContext'\n\nconst useStepper = () => {\n const [\n { currentStep, isInvitation, stepsLength },\n dispatch,\n ] = useStudentOnboardingContext()\n\n const setNextStep = () => {\n !isInvitation &&\n currentStep < stepsLength &&\n dispatch(setCurrentStep(currentStep + 1))\n }\n const setPreviousStep = () => {\n !isInvitation &&\n currentStep !== 1 &&\n dispatch(setCurrentStep(currentStep - 1))\n }\n\n return {\n setNextStep,\n setPreviousStep,\n }\n}\n\nexport default useStepper\n","import PropTypes from 'prop-types'\nimport { Box, Button, LoadingButton, Icon } from '@redriverpress/system'\nimport useStepper from '../utils/useStepper'\n\nexport default function BottomNav({\n prevTitle,\n nextTitle,\n prevLink,\n nextLink,\n disabled,\n loading,\n}) {\n const { setNextStep, setPreviousStep } = useStepper()\n\n const handleNext = () => {\n setNextStep()\n nextLink()\n }\n\n const handlePrev = () => {\n setPreviousStep()\n prevLink()\n }\n\n return (\n \n \n \n {prevTitle}\n \n \n {nextTitle}\n \n \n \n )\n}\n\nBottomNav.defaultProps = {\n nextTitle: 'Next',\n prevTitle: 'Back',\n disabled: false,\n loading: false,\n}\n\nBottomNav.propTypes = {\n nextTitle: PropTypes.string,\n prevTitle: PropTypes.string,\n prevLink: PropTypes.func.isRequired,\n nextLink: PropTypes.func.isRequired,\n disabled: PropTypes.bool,\n loading: PropTypes.bool,\n}\n","import { Formik, Form } from 'formik'\nimport * as Yup from 'yup'\nimport { useHistory } from 'react-router-dom'\n\nimport Lock from 'Images/password_lock.svg'\nimport { Box, Icon, Heading, Image } from '@redriverpress/system'\n\nimport InputPassword from 'Common/components/forms/InputPassword'\n\nimport Loc from '../common/components/Loc'\nimport { Field } from '../common/utils/FormUtilComponents'\nimport {\n useStudentOnboardingContext,\n setPassword,\n} from '../context/onboardingStudentContext'\nimport { STD_ONBOARDING_PATH } from '../common/constants'\nimport BottomNav from '../common/components/BottomNav'\n\nexport default function CreatePassword() {\n const history = useHistory()\n const [{ locale }, dispatch] = useStudentOnboardingContext()\n\n const schema = Yup.object().shape({\n password: Yup.string()\n .required('Password is required')\n .min(8, 'Minimum 8 characters'),\n })\n\n return (\n \n \n {formik => {\n const { errors, touched, values, isValid } = formik\n\n const isFieldValid = field =>\n touched[field] && !!values[field] && !errors[field]\n\n const getFieldBorderColor = field => {\n if (!touched[field]) return null\n if (errors[field]) return 'red700'\n return null\n }\n\n const getFieldRightIcon = field => {\n if (!touched[field]) return null\n\n if (isFieldValid(field))\n return (\n \n )\n\n return (\n \n )\n }\n\n const handleSubmit = () => {\n dispatch(setPassword(values.password))\n history.push({ pathname: `${STD_ONBOARDING_PATH.signup}/summary` })\n }\n\n return (\n \n \n \n \n Create a password\n \n {!!locale && (\n \n )}\n \n \n {!!locale && (\n \n )}\n \n \n \n \n\n {/* Footer w/ nav */}\n \n history.push({\n pathname: `${STD_ONBOARDING_PATH.signup}/what-is-your-email`,\n })\n }\n nextLink={handleSubmit}\n disabled={!isValid}\n />\n \n )\n }}\n \n \n )\n}\n","import { createRef, useState, useRef, useEffect } from 'react'\nimport { useHistory } from 'react-router-dom'\nimport { Formik, Form } from 'formik'\nimport * as Yup from 'yup'\nimport R from 'ramda'\n\nimport xhr from 'Common/utils/xhr'\nimport useDebounce from 'Common/hooks/useDebounce'\n\nimport Keycaps from 'Images/keycaps.svg'\nimport {\n Box,\n Button,\n CoverImage,\n Icon,\n Heading,\n Image,\n LoadingOverlay,\n} from '@redriverpress/system'\n\nimport { REGULAR_EXPRESSIONS } from 'Common/constants/regularExpressions'\nimport { CodeInput } from '../common/utils/FormUtilComponents'\nimport useStepper from '../common/utils/useStepper'\nimport { STD_ONBOARDING_PATH } from '../common/constants'\nimport {\n useStudentOnboardingContext,\n setYumiClass,\n setClassCode,\n} from '../context/onboardingStudentContext'\nimport Loc from '../common/components/Loc'\nimport findClassByCode from '../common/endpoints'\n\nconst isAndroid = /Android/.test(navigator.userAgent)\nconst invalidCodeError = 'Invalid invitation code'\n\nexport default function EnterClassCode() {\n const history = useHistory()\n const { setNextStep } = useStepper()\n const [\n { locale, socialSso, yumiClass, isInvitation },\n dispatch,\n ] = useStudentOnboardingContext()\n\n const refs = useRef([...new Array(6)].map(() => createRef()))\n const [invitationCode, setInvitationCode] = useState(\n [...new Array(6)].map(() => '')\n )\n const [signUpError, setSignupError] = useState(null) // check this on flow submission\n const [foundClass, setFoundClass] = useState(false)\n const [loading, setLoading] = useState(false)\n\n const schema = Yup.object().shape({\n invitationCode: Yup.string()\n .min(6, 'Invalid invitation code')\n .max(6, 'Invalid invitation code')\n .required('Invitation code is required'),\n })\n\n const handleFindClass = () => {\n const parsedClassCode = invitationCode.join('')\n dispatch(setClassCode(parsedClassCode))\n xhr({\n url: findClassByCode(parsedClassCode),\n method: 'GET',\n })\n .then(res => {\n dispatch(setYumiClass(res.data))\n setLoading(false)\n setFoundClass(true)\n setSignupError(null)\n })\n .catch(() => {\n setLoading(false)\n setFoundClass(false)\n setSignupError(invalidCodeError)\n })\n }\n\n const handleNextPage = e => {\n e.preventDefault()\n !isInvitation && setNextStep()\n socialSso\n ? history.push({\n pathname: `${STD_ONBOARDING_PATH.signup}/terms-and-conditions`,\n })\n : history.push({\n pathname: `${STD_ONBOARDING_PATH.signup}/what-is-your-name`,\n })\n }\n\n const debounceHandleFindClass = useDebounce(handleFindClass, 1000)\n\n useEffect(() => {\n if (!invitationCode.includes('')) {\n setLoading(true)\n debounceHandleFindClass()\n }\n }, [invitationCode])\n\n return (\n \n \n {formik => {\n const { setFieldValue, validateField, touched, errors } = formik\n\n return (\n
\n \n \n {/* ----- HEADER ----- */}\n \n \n Enter your class code\n \n {!!locale && (\n \n )}\n\n {/* ----- INPUT FIELDS ----- */}\n \n \n {invitationCode.map((code, i) => {\n const getBorderColor = () => {\n if (!touched.invitationCode && !code) {\n return 'gray300'\n }\n if (\n (errors.invitationCode && !code) ||\n R.equals(signUpError, invalidCodeError)\n ) {\n return 'red700'\n }\n\n return 'gray300'\n }\n\n const onKeyInput = key => {\n if (R.equals(signUpError, invalidCodeError))\n setSignupError(null) // clearing invalid code message\n // if not alphanumeric, onChange will take care of that (backspace, delete, arrows, etc)\n if (\n !R.test(\n REGULAR_EXPRESSIONS.onlyOneAlphanumeric,\n key\n )\n )\n return\n\n const newInvitationCode = R.update(\n i,\n key.toUpperCase(),\n invitationCode\n )\n\n setInvitationCode(newInvitationCode)\n setFieldValue(\n 'invitationCode',\n newInvitationCode.join('')\n )\n\n if (i < refs.current.length - 1)\n refs.current[i + 1].current.focus()\n }\n return (\n {\n validateField('invitationCode')\n }}\n // onKeyDown doesn't work on Android, so we need a fallback\n onInput={e => {\n if (!isAndroid) return\n const key = e.nativeEvent.data[0]\n onKeyInput(key)\n }}\n // using key event because max length is 1, so if user presses a key, this replaces the input\n onKeyDown={({ key }) => {\n if (isAndroid) return\n onKeyInput(key)\n }}\n onChange={e => {\n if (R.equals(signUpError, invalidCodeError))\n setSignupError(null) // clearing invalid code message\n // if alphanumeric, onKeyDown will take care of that\n if (\n R.test(\n REGULAR_EXPRESSIONS.onlyOneAlphanumeric,\n e.target.value\n )\n )\n return\n\n const newInvitationCode = R.update(\n i,\n e.target.value,\n invitationCode\n )\n\n setInvitationCode(newInvitationCode)\n setFieldValue(\n 'invitationCode',\n newInvitationCode.join('')\n )\n }}\n value={code}\n onPaste={e => {\n if (R.equals(signUpError, invalidCodeError))\n setSignupError(null) // clearing invalid code message\n const text = e.clipboardData\n .getData('Text')\n .toUpperCase()\n const newInvitationCode = invitationCode.map(\n (t, index) =>\n R.lt(index, text.length) ? text[index] : t\n )\n setInvitationCode(newInvitationCode)\n setFieldValue(\n 'invitationCode',\n newInvitationCode.join('')\n )\n e.stopPropagation() // to prevent from calling onKeyDown event and pasting a 'V' if cmd/ctrl + V\n e.preventDefault() // to prevent from actual pasting in case it's larger than 6 chars\n }}\n />\n )\n })}\n \n \n\n {signUpError && (\n \n {signUpError}\n \n )}\n \n\n {/* ----- CLASS INFO ----- */}\n {foundClass && yumiClass && (\n \n {!yumiClass.invitationDefaultClass && (\n \n \n {yumiClass.name}\n \n )}\n \n \n {yumiClass.teachers[0].teacher_name}\n \n \n )}\n\n {/* ----- FOOTER W/ NAV ----- */}\n \n \n Next\n \n \n \n \n \n )\n }}\n \n {loading && }\n \n )\n}\n","import { useRouteMatch, useHistory } from 'react-router-dom'\nimport { Box, Text, Link, TransparentButton } from '@redriverpress/system'\n\nimport {\n useStudentOnboardingContext,\n setCurrentStep,\n} from '../../context/onboardingStudentContext'\nimport { STD_ONBOARDING_PATH } from '../constants'\n\nexport default function BottomLink() {\n const history = useHistory()\n const matchLogin = useRouteMatch({\n path: STD_ONBOARDING_PATH.login,\n })\n const [{ classCode }, dispatch] = useStudentOnboardingContext()\n\n const getLink = () => {\n dispatch(setCurrentStep(1))\n history.push({\n pathname: classCode\n ? `${STD_ONBOARDING_PATH.signup}/what-is-your-name`\n : `${STD_ONBOARDING_PATH.signup}/enter-class-code`,\n })\n }\n\n return (\n \n \n {matchLogin ? (\n \n Don’t have an account?{' '}\n \n Sign up\n \n \n ) : (\n \n Have an account?{' '}\n \n Log in\n \n \n )}\n \n \n )\n}\n","import xhr from 'Common/utils/xhr'\nimport { studentSignUp, studentCheckEmail } from 'Endpoints'\nimport memoizeOne from 'memoize-one'\n\nconst validateEmail = email =>\n xhr({\n url: studentCheckEmail,\n method: 'POST',\n data: { email },\n })\n\n// since formik validates a lot of times the username and email fields, then we store the responses in memory\nexport const checkEmail = memoizeOne(validateEmail)\n\nexport const submitSignup = data => {\n return xhr({\n method: 'POST',\n url: studentSignUp,\n data,\n })\n}\n\nexport async function signIn(data) {\n return xhr({\n url: '/students/sign_in',\n method: 'POST',\n data,\n })\n}\n","import R from 'ramda'\nimport { useState } from 'react'\nimport { Formik, Form } from 'formik'\nimport * as Yup from 'yup'\nimport { Box, LoadingButton, useToast, Link } from '@redriverpress/system'\n\nimport InputPassword from 'Common/components/forms/InputPassword'\n\nimport { useStudentOnboardingContext } from '../../context/onboardingStudentContext'\nimport Loc from './Loc'\nimport { Field } from '../utils/FormUtilComponents'\nimport { signIn } from '../services'\n\nconst LOGIN_ERROR_MESSAGES = {\n invalid: 'Your username, email, or password is incorrect.',\n last_attempt: 'You have one more attempt before your account is locked.',\n locked: 'Your account is locked, please contact our support for assistance.',\n}\n\nexport default function StudentLoginForm() {\n const [{ locale, classCode }] = useStudentOnboardingContext()\n\n const [loading, setLoading] = useState(false)\n const { addToast } = useToast()\n\n const schema = Yup.object().shape({\n login: Yup.string().required('Email or username is required'),\n password: Yup.string().required('Password is required'),\n })\n\n const initialValues = {\n login: '',\n password: '',\n remember_me: false,\n }\n\n const getErrorMessage = error => {\n // Default to invalid\n return LOGIN_ERROR_MESSAGES[error] || LOGIN_ERROR_MESSAGES.invalid\n }\n\n const handleSubmit = formValues => {\n setLoading(true)\n\n const user = R.merge({ class_code: classCode }, formValues)\n\n signIn({ user })\n .then(res => {\n window.location.href = res.data.after_sign_in_path\n ? res.data.after_sign_in_path\n : '/students/dashboard'\n })\n .catch(res => {\n setLoading(false)\n const error = { ...res }\n if (error.response.status !== 401) {\n addToast({\n id: 'login-error',\n content: 'There was a problem. Please try again.',\n type: 'warning',\n timeout: 5000,\n })\n } else {\n addToast({\n id: 'login-error',\n content: getErrorMessage(error.response.data.error),\n type: 'warning',\n timeout: 5000,\n })\n }\n })\n }\n\n return (\n \n {formik => {\n const { errors, touched, isValid } = formik\n\n const getFieldBorderColor = field => {\n if (!touched[field]) return null\n if (errors[field]) return 'red700'\n return null\n }\n\n return (\n \n \n {/* FIELDS */}\n\n \n {!!locale && (\n \n )}\n \n \n\n \n {!!locale && (\n \n )}\n \n \n\n \n \n Log in\n \n {!!locale && (\n \n )}\n \n \n \n Forgot password?\n \n \n \n \n )\n }}\n \n )\n}\n","import { useEffect } from 'react'\nimport { useLocation } from 'react-router-dom'\nimport { Box, Heading, SSOButton, Text } from '@redriverpress/system'\n\nimport Loc from '../common/components/Loc'\nimport {\n setSocialSso,\n useStudentOnboardingContext,\n} from '../context/onboardingStudentContext'\nimport BottomLink from '../common/components/BottomLink'\nimport StudentLoginForm from '../common/components/StudentLoginForm'\n\nexport default function SignIn() {\n const { pathname: routePathname } = useLocation()\n const [\n { cleverSsoUrl, googleSsoUrl, locale },\n dispatch,\n ] = useStudentOnboardingContext()\n\n useEffect(() => {\n dispatch(setSocialSso(null))\n }, [routePathname])\n\n return (\n \n \n Ellii student login page\n \n {!!locale && (\n \n )}\n\n \n {/* Google */}\n \n \n Log in with Google\n \n {!!locale && (\n \n )}\n \n\n {/* Clever */}\n \n \n Log in with Clever\n \n {!!locale && (\n \n )}\n \n \n\n {/* ------------- Divider ------------- */}\n \n \n \n or\n \n \n \n\n \n\n \n \n )\n}\n","import { useEffect } from 'react'\nimport { useHistory, useLocation } from 'react-router-dom'\nimport {\n Box,\n Button,\n Icon,\n Heading,\n SSOButton,\n Text,\n} from '@redriverpress/system'\n\nimport Loc from '../common/components/Loc'\nimport { SOCIAL_SSO, STD_ONBOARDING_PATH } from '../common/constants'\nimport {\n setClassCode,\n setSocialSso,\n setYumiClass,\n useStudentOnboardingContext,\n setCurrentStep,\n} from '../context/onboardingStudentContext'\nimport BottomLink from '../common/components/BottomLink'\n\nexport default function Credentials() {\n const history = useHistory()\n const { pathname: routePathname } = useLocation()\n\n const [\n { classCode, cleverSsoUrl, googleSsoUrl, isInvitation, locale },\n dispatch,\n ] = useStudentOnboardingContext()\n\n const goToNextPage = () => {\n dispatch(setCurrentStep(1))\n dispatch(setSocialSso(null))\n if (!classCode) {\n history.push({\n pathname: `${STD_ONBOARDING_PATH.signup}/enter-class-code`,\n })\n }\n\n if (classCode) {\n history.push({\n pathname: `${STD_ONBOARDING_PATH.signup}/what-is-your-name`,\n })\n }\n }\n\n const handleSsoClick = social => {\n dispatch(setCurrentStep(1))\n social === 'google'\n ? dispatch(setSocialSso(SOCIAL_SSO.google))\n : dispatch(setSocialSso(SOCIAL_SSO.clever))\n\n if (classCode) {\n history.push({\n pathname: `${STD_ONBOARDING_PATH.signup}/terms-and-conditions`,\n })\n } else {\n history.push({\n pathname: `${STD_ONBOARDING_PATH.signup}/enter-class-code`,\n })\n }\n }\n\n const getSignupHeading = () => {\n if (googleSsoUrl.includes('redirect_to_sign_up')) {\n return 'We could not find your Google account. Sign up for Ellii'\n }\n if (cleverSsoUrl.includes('redirect_to_sign_up')) {\n return 'We could not find your Clever account. Sign up for Ellii'\n }\n\n return 'Create an Ellii student account'\n }\n\n const SignupHeading = getSignupHeading()\n\n useEffect(() => {\n dispatch(setSocialSso(null))\n if (!isInvitation) {\n dispatch(setClassCode(null))\n dispatch(setYumiClass(null))\n }\n }, [routePathname])\n\n return (\n \n \n {SignupHeading}\n \n {!!locale && (\n \n )}\n\n \n {/* Google */}\n \n handleSsoClick('google')}\n style={{ alignItems: 'stretch' }}\n >\n Sign up with Google\n \n {!!locale && (\n \n )}\n \n\n {/* Clever */}\n \n handleSsoClick('clever')}\n style={{ alignItems: 'stretch' }}\n >\n Sign up with Clever\n \n {!!locale && (\n \n )}\n \n \n\n {/* ------------- Divider ------------- */}\n \n \n \n or\n \n \n \n\n {/* ------------- Create account / Login form ------------- */}\n\n <>\n \n \n \n {!!locale && (\n \n )}\n \n\n \n \n )\n}\n","import { useState } from 'react'\nimport { useHistory } from 'react-router-dom'\nimport { Formik, Form } from 'formik'\nimport * as Yup from 'yup'\nimport {\n Box,\n Heading,\n Image,\n Link,\n Text,\n useToast,\n} from '@redriverpress/system'\n\nimport CheckboxField from 'Common/components/forms/CheckboxField'\nimport Backpack from 'Images/summary_backpack.svg'\nimport Loc from '../common/components/Loc'\nimport { useStudentOnboardingContext } from '../context/onboardingStudentContext'\nimport { STD_ONBOARDING_PATH } from '../common/constants'\nimport { submitSignup } from '../common/services'\nimport BottomNav from '../common/components/BottomNav'\n\nexport default function Summary() {\n const history = useHistory()\n const { addToast } = useToast()\n const [\n { classCode, email, firstName, lastName, locale, password, yumiClass },\n ] = useStudentOnboardingContext()\n\n const [loading, setLoading] = useState(false)\n const [signupError, setSignupError] = useState(null)\n\n const handleRegistration = () => {\n setLoading(true)\n setSignupError(null)\n\n const data = {\n user: {\n email,\n first_name: firstName,\n last_name: lastName,\n password,\n yumi_class_code: classCode,\n },\n }\n\n submitSignup(data)\n .then(() => {\n window.location = '/students/dashboard?first_time=true'\n })\n .catch(err => {\n setLoading(false)\n setSignupError(err)\n // eslint-disable-next-line no-console\n console.warn(signupError)\n addToast({\n id: 'registration-error',\n content: 'There was a problem. Please try again.',\n type: 'warning',\n })\n })\n }\n\n const schema = Yup.object().shape({\n acceptedTerms: Yup.boolean()\n .required()\n .oneOf([true], 'You must accept the terms'),\n })\n\n if (!password) return null\n\n return (\n <>\n \n \n \n \n \n \n \n \n Summary\n \n {!!locale && (\n \n )}\n \n\n \n {!yumiClass.invitationDefaultClass && (\n \n \n Class name\n \n \n {yumiClass.name}\n \n \n )}\n\n \n \n First name\n \n \n {firstName}\n \n \n\n \n \n Last name\n \n \n {lastName}\n \n \n\n \n \n Email address\n \n \n {email}\n \n \n\n \n \n Password\n \n \n ********\n \n \n \n\n \n {formik => {\n const { isValid } = formik\n\n return (\n \n \n \n \n \n \n \n I agree to Ellii’s terms and privacy policy.{' '}\n \n {' '}\n View the Privacy Policy and Terms\n \n .\n \n \n \n {!!locale && (\n \n )}\n\n {/* Footer w/ nav */}\n \n history.push({\n pathname: `${STD_ONBOARDING_PATH.signup}/create-password`,\n })\n }\n nextLink={handleRegistration}\n nextTitle={\n yumiClass.invitationDefaultClass ? 'Join' : 'Join class'\n }\n loading={loading}\n disabled={!isValid}\n />\n \n )\n }}\n \n \n \n \n \n \n )\n}\n","import { useState } from 'react'\nimport { useHistory } from 'react-router-dom'\nimport { Formik, Form } from 'formik'\nimport * as Yup from 'yup'\n\nimport Email from 'Images/email.svg'\nimport {\n Box,\n Icon,\n Heading,\n Image,\n LoadingSpinner,\n} from '@redriverpress/system'\nimport Loc from '../common/components/Loc'\nimport { Field } from '../common/utils/FormUtilComponents'\nimport {\n useStudentOnboardingContext,\n setEmail,\n} from '../context/onboardingStudentContext'\nimport { checkEmail } from '../common/services'\nimport { STD_ONBOARDING_PATH } from '../common/constants'\nimport BottomNav from '../common/components/BottomNav'\n\nexport default function WhatIsYourEmail() {\n const history = useHistory()\n const [{ locale, email }, dispatch] = useStudentOnboardingContext()\n const [emailLoading, setEmailLoading] = useState(false)\n\n const schema = Yup.object().shape({\n email: Yup.string()\n .email('Please enter a valid email address.')\n .required('Email address is required'),\n })\n\n return (\n \n \n {formik => {\n const { errors, touched, values, isValid, setFieldError } = formik\n\n const isFieldValid = field =>\n touched[field] && !!values[field] && !errors[field]\n\n const getFieldBorderColor = field => {\n if (!touched[field] || emailLoading) return null\n if (errors[field]) return 'red700'\n return null\n }\n\n const getFieldRightIcon = field => {\n if (!touched[field]) return null\n\n if (emailLoading) return \n\n if (isFieldValid(field))\n return (\n \n )\n\n return (\n \n )\n }\n\n const handleSubmit = () => {\n setEmailLoading(true)\n\n if (!values.email) return\n checkEmail(values.email).then(({ data }) => {\n setEmailLoading(false)\n if (data.email_taken) {\n setTimeout(\n () =>\n setFieldError(\n 'email',\n 'The email is not valid or already exists.'\n ),\n 1\n )\n } else {\n dispatch(setEmail(values.email))\n history.push({\n pathname: `${STD_ONBOARDING_PATH.signup}/create-password`,\n })\n }\n })\n }\n\n return (\n \n \n \n \n What’s your email?\n \n {!!locale && (\n \n )}\n \n \n {!!locale && (\n \n )}\n \n \n \n \n\n {/* Footer w/ nav */}\n \n history.push({\n pathname: `${STD_ONBOARDING_PATH.signup}/what-is-your-name`,\n })\n }\n nextLink={handleSubmit}\n disabled={!isValid}\n />\n \n )\n }}\n \n \n )\n}\n","import { useHistory } from 'react-router-dom'\n\nimport { Formik, Form } from 'formik'\nimport * as Yup from 'yup'\n\nimport Badge from 'Images/badge.svg'\nimport { Box, Icon, Heading, Image } from '@redriverpress/system'\nimport { REGULAR_EXPRESSIONS } from 'Common/constants/regularExpressions'\nimport BottomNav from '../common/components/BottomNav'\n\nimport {\n useStudentOnboardingContext,\n setFirstName,\n setLastName,\n} from '../context/onboardingStudentContext'\n\nimport Loc from '../common/components/Loc'\nimport { STD_ONBOARDING_PATH } from '../common/constants'\nimport { Field } from '../common/utils/FormUtilComponents'\n\nexport default function WhatIsYourName() {\n const history = useHistory()\n const [\n { locale, firstName, lastName },\n dispatch,\n ] = useStudentOnboardingContext()\n\n const schema = Yup.object().shape({\n firstName: Yup.string()\n .min(1, 'Minimum 1 character')\n .max(50, 'Maximum 50 characters')\n .required('First name is required')\n .matches(REGULAR_EXPRESSIONS.name, 'First name has invalid characters.'),\n lastName: Yup.string()\n .min(1, 'Minimum 1 character')\n .max(50, 'Maximum 50 characters')\n .required('Last name is required')\n .matches(REGULAR_EXPRESSIONS.name, 'Last name has invalid characters.'),\n })\n\n return (\n \n \n {formik => {\n const { errors, touched, values, isValid } = formik\n\n const handleSubmit = () => {\n dispatch(setFirstName(values.firstName))\n dispatch(setLastName(values.lastName))\n history.push({\n pathname: `${STD_ONBOARDING_PATH.signup}/what-is-your-email`,\n })\n }\n\n const isFieldValid = field =>\n touched[field] && !!values[field] && !errors[field]\n\n const getFieldBorderColor = field => {\n if (!touched[field]) return null\n if (errors[field]) return 'red700'\n return null\n }\n\n const getFieldRightIcon = field => {\n if (!touched[field]) return null\n\n if (isFieldValid(field))\n return (\n \n )\n\n return (\n \n )\n }\n\n return (\n \n \n \n \n What’s your name?\n \n {!!locale && (\n \n )}\n \n \n {!!locale && (\n \n )}\n \n \n \n {!!locale && (\n \n )}\n \n \n \n \n\n {/* Footer w/ nav */}\n \n history.push({\n pathname: `${STD_ONBOARDING_PATH.signup}/enter-class-code`,\n })\n }\n nextLink={handleSubmit}\n disabled={!isValid}\n />\n \n )\n }}\n \n \n )\n}\n","import { useEffect } from 'react'\nimport { useHistory } from 'react-router-dom'\nimport { Formik, Form } from 'formik'\nimport * as Yup from 'yup'\n\nimport { Box, Button, Icon, Image, Text, Link } from '@redriverpress/system'\n\nimport Clipboard from 'Images/onb-terms_conditions.svg'\nimport CheckboxField from 'Common/components/forms/CheckboxField'\nimport Loc from '../common/components/Loc'\n\nimport { useStudentOnboardingContext } from '../context/onboardingStudentContext'\nimport { SOCIAL_SSO, STD_ONBOARDING_PATH } from '../common/constants'\n\nexport default function TermsAndConditions() {\n const history = useHistory()\n const [\n { locale, socialSso, googleSsoUrl, cleverSsoUrl, classCode, isInvitation },\n ] = useStudentOnboardingContext()\n\n const schema = Yup.object().shape({\n acceptedTerms: Yup.boolean()\n .required()\n .oneOf([true], 'You must accept the terms'),\n })\n\n const getSocialUrl = () => {\n if (socialSso === SOCIAL_SSO.google) return googleSsoUrl\n if (socialSso === SOCIAL_SSO.clever) return cleverSsoUrl\n }\n\n const checkClassCode = () => {\n if (socialSso)\n return getSocialUrl().includes('class_code')\n ? ''\n : `&class_code=${classCode}`\n return null\n }\n\n useEffect(() => {\n if (!socialSso) history.push({ pathname: STD_ONBOARDING_PATH.signup })\n }, [])\n\n return (\n \n \n \n \n Terms and Conditions\n \n {!!locale && (\n \n )}\n \n\n \n {formik => {\n const { values } = formik\n\n return (\n \n \n \n \n \n \n \n \n I agree to Ellii’s terms and privacy policy.{' '}\n \n {' '}\n View the Privacy Policy and Terms\n \n .\n \n \n \n {!!locale && (\n \n )}\n \n\n \n {!isInvitation && (\n \n history.push({\n pathname: `${STD_ONBOARDING_PATH.signup}/enter-class-code`,\n })\n }\n secondary\n adaptive\n >\n \n Back\n \n )}\n \n Join class\n \n \n \n \n )\n }}\n \n \n )\n}\n","import PropTypes from 'prop-types'\nimport { Box, Button, Dialog, Icon, Heading, Text } from '@redriverpress/system'\n\nexport default function ResetConfirmDialog({\n open,\n handleOpenChange,\n onCancel,\n onConfirmOk,\n}) {\n return (\n \n \n \n {\n e.preventDefault()\n }}\n onPointerDownOutside={e => {\n e.preventDefault()\n handleOpenChange(false)\n }}\n style={{ overflowY: 'auto' }}\n >\n {/* Title */}\n \n \n \n Are you sure you want to exit the sign up process?\n \n \n\n \n \n \n \n\n {/* Content */}\n \n Exiting out of this sign-up process before completing it will result\n in losing any information you’ve entered.\n \n\n {/* Buttons */}\n \n \n \n Leave page\n \n \n \n \n \n \n )\n}\n\nResetConfirmDialog.propTypes = {\n open: PropTypes.bool.isRequired,\n handleOpenChange: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired,\n onConfirmOk: PropTypes.func.isRequired,\n}\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { useHistory, useRouteMatch, Link as RouterLink } from 'react-router-dom'\n\nimport {\n Box,\n Container,\n IconButton,\n Image,\n Link,\n Text,\n} from '@redriverpress/system'\nimport Logo from 'Images/ellii-logo-rgb-yellow-bulb.svg'\n\nimport {\n resetState,\n useStudentOnboardingContext,\n} from '../../context/onboardingStudentContext'\nimport ResetConfirmDialog from './ResetConfirmDialog'\nimport { STD_ONBOARDING_PATH } from '../constants'\n\nconst CloseButton = ({ onClick }) => (\n \n \n \n \n \n)\n\nCloseButton.propTypes = {\n onClick: PropTypes.func.isRequired,\n}\n\nconst RegularNavbar = ({ matchSignup }) => (\n \n \n \n \n Ellii logo\n \n \n Are you a teacher?{' '}\n {matchSignup ? (\n Sign up\n ) : (\n Log in\n )}\n \n \n \n \n)\n\nRegularNavbar.defaultProps = {\n matchSignup: null,\n}\n\nRegularNavbar.propTypes = {\n // eslint-disable-next-line react/forbid-prop-types\n matchSignup: PropTypes.object,\n}\n\nexport default function OnboardingNavBar() {\n const history = useHistory()\n const matchRoot = useRouteMatch({\n path: STD_ONBOARDING_PATH.root,\n exact: true,\n })\n const matchSignup = useRouteMatch({\n path: STD_ONBOARDING_PATH.signup,\n exact: true,\n })\n const matchLogin = useRouteMatch({\n path: STD_ONBOARDING_PATH.login,\n })\n\n const [, dispatch] = useStudentOnboardingContext()\n\n const [dialogOpen, setDialogOpen] = useState(false)\n\n const handleResetOnboarding = () => {\n setDialogOpen(false)\n dispatch(resetState())\n history.push({ pathname: STD_ONBOARDING_PATH.root })\n }\n\n const shouldShowCloseButton = !matchRoot && !matchSignup && !matchLogin\n\n if (shouldShowCloseButton) {\n return (\n <>\n setDialogOpen(true)} />\n setDialogOpen(isOpen)}\n onCancel={() => setDialogOpen(false)}\n onConfirmOk={handleResetOnboarding}\n />\n \n )\n }\n\n return \n}\n","import { useEffect } from 'react'\n\nimport { useToast } from '@redriverpress/system'\n\nimport { useStudentOnboardingContext } from '../../context/onboardingStudentContext'\n\nexport default function FlashMessage() {\n const { addToast } = useToast()\n\n const [{ flashMessage }] = useStudentOnboardingContext()\n\n useEffect(() => {\n if (flashMessage) {\n addToast(flashMessage)\n }\n }, [flashMessage])\n\n return null\n}\n","import { useEffect } from 'react'\nimport { Box, Text } from '@redriverpress/system'\nimport {\n setStepsLength,\n useStudentOnboardingContext,\n} from '../../context/onboardingStudentContext'\n\nconst stepSize = [null, null, '3rem', '4rem']\nconst { innerHeight } = window\n\nexport default function Stepper() {\n const [\n { currentStep, isInvitation, isSm, stepsLength },\n dispatch,\n ] = useStudentOnboardingContext()\n\n const setBorderColor = step =>\n !!currentStep && currentStep >= step ? 'blue500' : 'white'\n\n const setBackgroundColor = step =>\n !!currentStep && currentStep > step ? 'blue500' : 'white'\n\n const setColor = step => {\n if (currentStep === step) return 'blue500'\n if (!!currentStep && currentStep > step) {\n return 'white'\n }\n return 'black'\n }\n\n useEffect(() => {\n dispatch(setStepsLength(isInvitation ? 4 : 5))\n }, [])\n\n return isSm ? (\n \n \n {currentStep}\n \n of {stepsLength}\n \n ) : (\n \n {[...new Array(stepsLength)].map((step, idx) => {\n return (\n \n \n \n {idx + 1}\n \n \n {idx + 1 !== stepsLength && (\n \n )}\n \n )\n })}\n \n )\n}\n","import { useEffect } from 'react'\nimport {\n Route,\n Switch,\n useHistory,\n useRouteMatch,\n useLocation,\n} from 'react-router-dom'\nimport { Container, rawBreakpoints } from '@redriverpress/system'\n\nimport useIncludedMediaQuery from 'Common/hooks/useIncludedMediaQuery'\n\nimport {\n setIsSmallBreakpoint,\n setSocialSso,\n useStudentOnboardingContext,\n} from './context/onboardingStudentContext'\nimport {\n ChoosePath,\n CreatePassword,\n EnterClassCode,\n SignIn,\n SignUp,\n Summary,\n TermsAndConditions,\n WhatIsYourEmail,\n WhatIsYourName,\n} from './pages'\nimport OnboardingNavBar from './common/components/OnboardingNavBar'\nimport FlashMessage from './common/components/FlashMessage'\nimport Stepper from './common/components/Stepper'\nimport { STD_ONBOARDING_PATH } from './common/constants'\n\nexport default function SignUpManager() {\n const history = useHistory()\n const { pathname } = useLocation()\n\n const matchRoot = useRouteMatch({\n path: STD_ONBOARDING_PATH.root,\n exact: true,\n })\n const matchSignup = useRouteMatch({\n path: STD_ONBOARDING_PATH.signup,\n exact: true,\n })\n const matchLogin = useRouteMatch({\n path: STD_ONBOARDING_PATH.login,\n })\n const matchTerms = useRouteMatch({\n path: `${STD_ONBOARDING_PATH.signup}/terms-and-conditions`,\n })\n\n const { maxBreakpoint } = useIncludedMediaQuery(rawBreakpoints.sm)\n const isSm = maxBreakpoint\n\n const [\n { cleverSsoUrl, googleSsoUrl, socialSso, currentStep },\n dispatch,\n ] = useStudentOnboardingContext()\n\n useEffect(() => {\n if (googleSsoUrl.includes('redirect_to_sign_up') && !currentStep) {\n dispatch(setSocialSso('google'))\n history.push({\n pathname: `${STD_ONBOARDING_PATH.signup}`,\n })\n }\n\n if (cleverSsoUrl.includes('redirect_to_sign_up') && !currentStep) {\n dispatch(setSocialSso('clever'))\n history.push({\n pathname: `${STD_ONBOARDING_PATH.signup}`,\n })\n }\n\n if (!matchRoot && !matchSignup && !matchLogin && !currentStep) {\n history.push({ pathname: STD_ONBOARDING_PATH.root })\n }\n }, [pathname])\n\n useEffect(() => {\n dispatch(setIsSmallBreakpoint(isSm))\n }, [maxBreakpoint])\n\n const shouldShowStepper =\n !socialSso && !matchRoot && !matchLogin && !matchSignup && !matchTerms\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 {shouldShowStepper && }\n \n \n \n )\n}\n","import ElliiThemeProvider from 'Common/components/ElliiThemeProvider'\nimport WebFont from 'webfontloader'\nimport { BrowserRouter as Router } from 'react-router-dom'\n\nimport { GlobalStyle, Toaster } from '@redriverpress/system'\n\nimport { STD_ONBOARDING_PATH } from './common/constants'\nimport { StudentOnboardingProvider } from './context/onboardingStudentContext'\nimport OnboardingStudentManager from './OnboardingStudentManager'\n\nexport default function App() {\n WebFont.load({\n google: {\n families: ['Open Sans:400italic,300,400,600,600italic,700,700italic'],\n },\n })\n\n return (\n \n \n \n \n \n \n \n \n \n \n )\n}\n","import ReactDOM from 'react-dom'\n\nimport App from '../../onboardingStudent/App'\n\ndocument.addEventListener('DOMContentLoaded', () => {\n ReactDOM.render(, document.querySelector('#root'))\n})\n"],"sourceRoot":""}