├── .babelrc ├── .circleci ├── config.yml ├── config_continue.yml ├── doTests.sh ├── generateConfig.sh ├── installJava.sh ├── markPassed.sh ├── markTesting.sh ├── publish.sh ├── setupAndTestWithFreeCore.sh └── updateDocsInWebsite.sh ├── .gitattributes ├── .github ├── PULL_REQUEST_TEMPLATE.md ├── helpers │ ├── .gitignore │ └── package.json └── workflows │ ├── chromatic.yml │ ├── github-actions-changelog.yml │ ├── lint-pr-title.yml │ ├── pre-commit-hook-run.yml │ ├── size-limit.yml │ ├── test-examples.yml │ ├── tests-pass-check-pr.yml │ ├── tests-visual.yml │ └── tests.yml ├── .gitignore ├── .mocharc.yml ├── .npmignore ├── .prettierignore ├── .prettierrc ├── .storybook ├── main.ts └── preview.ts ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE.md ├── README.md ├── addDevTag ├── addReleaseTag ├── docs ├── .nojekyll ├── assets │ ├── highlight.css │ ├── icons.css │ ├── icons.png │ ├── icons@2x.png │ ├── main.js │ ├── search.js │ ├── style.css │ ├── widgets.png │ └── widgets@2x.png ├── classes │ ├── dateProvider.DateProviderReference.html │ ├── index.default.html │ ├── recipe_authRecipe.default.html │ ├── recipe_emailpassword.default.html │ ├── recipe_emailverification.default.html │ ├── recipe_multifactorauth.default.html │ ├── recipe_multitenancy.default.html │ ├── recipe_oauth2provider.default.html │ ├── recipe_passwordless.default.html │ ├── recipe_recipeModule.default.html │ ├── recipe_session.BooleanClaim.html │ ├── recipe_session.PrimitiveArrayClaim.html │ ├── recipe_session.PrimitiveClaim.html │ ├── recipe_session.default.html │ ├── recipe_thirdparty.ActiveDirectory.html │ ├── recipe_thirdparty.Apple.html │ ├── recipe_thirdparty.Bitbucket.html │ ├── recipe_thirdparty.BoxySAML.html │ ├── recipe_thirdparty.Discord.html │ ├── recipe_thirdparty.Facebook.html │ ├── recipe_thirdparty.Github.html │ ├── recipe_thirdparty.Gitlab.html │ ├── recipe_thirdparty.Google.html │ ├── recipe_thirdparty.GoogleWorkspaces.html │ ├── recipe_thirdparty.LinkedIn.html │ ├── recipe_thirdparty.Okta.html │ ├── recipe_thirdparty.Twitter.html │ ├── recipe_thirdparty.default.html │ ├── recipe_totp.default.html │ ├── recipe_userroles.default.html │ └── recipe_webauthn.default.html ├── index.html ├── modules.html └── modules │ ├── dateProvider.html │ ├── index.html │ ├── recipe_authRecipe.html │ ├── recipe_emailpassword.html │ ├── recipe_emailverification.html │ ├── recipe_multifactorauth.html │ ├── recipe_multitenancy.html │ ├── recipe_oauth2provider.html │ ├── recipe_passwordless.html │ ├── recipe_recipeModule.html │ ├── recipe_session.html │ ├── recipe_thirdparty.html │ ├── recipe_totp.html │ ├── recipe_userroles.html │ └── recipe_webauthn.html ├── eslint ├── index.js └── package.json ├── examples ├── for-tests-react-16 │ ├── .env │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── public │ │ ├── background.svg │ │ ├── favicon.ico │ │ ├── index.css │ │ ├── index.html │ │ ├── logo192.png │ │ ├── logo512.png │ │ └── manifest.json │ └── src │ │ ├── App.css │ │ ├── App.js │ │ ├── AppWithReactDomRouter.js │ │ ├── AppWithReactDomRouterV5.js │ │ ├── AppWithoutRouter.js │ │ ├── Button.js │ │ ├── ErrorBoundary.js │ │ ├── Footer.js │ │ ├── Themes │ │ ├── Dark.js │ │ ├── Helium.js │ │ └── Hydrogen.js │ │ ├── index.css │ │ ├── index.js │ │ ├── logWithPrefix.js │ │ └── testContext.js ├── for-tests │ ├── .env │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── public │ │ ├── background.svg │ │ ├── favicon.ico │ │ ├── index.css │ │ ├── index.html │ │ ├── logo192.png │ │ ├── logo512.png │ │ └── manifest.json │ └── src │ │ ├── App.css │ │ ├── App.js │ │ ├── AppWithReactDomRouter.js │ │ ├── AppWithoutRouter.js │ │ ├── Button.js │ │ ├── ErrorBoundary.js │ │ ├── Footer.js │ │ ├── OAuth2Page.js │ │ ├── Themes │ │ ├── Dark.js │ │ ├── Helium.js │ │ └── Hydrogen.js │ │ ├── config.js │ │ ├── index.css │ │ ├── index.js │ │ ├── logWithPrefix.js │ │ └── testContext.js ├── with-account-linking │ ├── README.md │ ├── backend │ │ ├── config.ts │ │ ├── index.ts │ │ ├── package.json │ │ └── tsconfig.json │ ├── frontend │ │ ├── .env │ │ ├── .gitignore │ │ ├── LICENSE.md │ │ ├── package.json │ │ ├── public │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── manifest.json │ │ │ └── robots.txt │ │ ├── src │ │ │ ├── App.css │ │ │ ├── App.tsx │ │ │ ├── Home │ │ │ │ ├── CallAPIView.tsx │ │ │ │ ├── Home.css │ │ │ │ ├── SuccessView.tsx │ │ │ │ └── index.tsx │ │ │ ├── LinkingPage │ │ │ │ ├── index.tsx │ │ │ │ └── styles.css │ │ │ ├── assets │ │ │ │ ├── fonts │ │ │ │ │ └── MenloRegular.ttf │ │ │ │ └── images │ │ │ │ │ ├── arrow-right-icon.svg │ │ │ │ │ ├── background.png │ │ │ │ │ ├── blogs-icon.svg │ │ │ │ │ ├── celebrate-icon.svg │ │ │ │ │ ├── guide-icon.svg │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── separator-line.svg │ │ │ │ │ └── sign-out-icon.svg │ │ │ ├── config.tsx │ │ │ ├── index.css │ │ │ ├── index.tsx │ │ │ ├── react-app-env.d.ts │ │ │ └── useAsyncCallOnMount.ts │ │ └── tsconfig.json │ ├── package.json │ └── test │ │ └── basic.test.js ├── with-angular-thirdpartyemailpassword │ └── README.md ├── with-aws-lambda │ └── README.md ├── with-cli-login │ ├── .gitignore │ ├── README.md │ ├── api-server │ │ ├── index.ts │ │ └── tsconfig.json │ ├── cli.js │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── logo192.png │ │ ├── logo512.png │ │ ├── manifest.json │ │ └── robots.txt │ ├── src │ │ ├── App.css │ │ ├── App.test.tsx │ │ ├── App.tsx │ │ ├── Footer │ │ │ └── index.tsx │ │ ├── Home │ │ │ ├── CallAPIView.tsx │ │ │ ├── Logout.tsx │ │ │ ├── SuccessView.tsx │ │ │ └── index.tsx │ │ ├── MagicLinkScreen │ │ │ └── index.tsx │ │ ├── SessionExpiredPopup │ │ │ └── index.tsx │ │ ├── index.css │ │ ├── index.tsx │ │ ├── logo.svg │ │ ├── react-app-env.d.ts │ │ ├── reportWebVitals.ts │ │ └── setupTests.ts │ ├── test │ │ └── basic.test.js │ └── tsconfig.json ├── with-emailpassword-vercel │ ├── .gitignore │ ├── Dockerfile │ ├── LICENSE.md │ ├── README.md │ ├── api │ │ └── index.js │ ├── ignore_this.js │ ├── package.json │ ├── pm2.json │ ├── public │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── logo192.png │ │ ├── logo512.png │ │ ├── manifest.json │ │ └── robots.txt │ ├── scripts │ │ └── start_container.sh │ ├── src │ │ ├── App.css │ │ ├── App.js │ │ ├── App.test.js │ │ ├── Footer │ │ │ └── index.js │ │ ├── Home │ │ │ ├── CallAPIView.js │ │ │ ├── Logout.js │ │ │ ├── SuccessView.js │ │ │ └── index.js │ │ ├── SessionExpiredPopup │ │ │ └── index.jsx │ │ ├── index.css │ │ ├── index.js │ │ ├── logo.svg │ │ ├── reportWebVitals.js │ │ └── setupTests.js │ ├── test │ │ └── basic.test.js │ └── vercel.json ├── with-emailpassword │ └── README.md ├── with-emailverification-then-password-thirdpartyemailpassword │ ├── .gitignore │ ├── Dockerfile │ ├── LICENSE.md │ ├── README.md │ ├── api-server.js │ ├── ignore_this.js │ ├── package.json │ ├── pm2.json │ ├── public │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── logo192.png │ │ ├── logo512.png │ │ ├── manifest.json │ │ └── robots.txt │ ├── scripts │ │ └── start_container.sh │ ├── src │ │ ├── App.css │ │ ├── App.js │ │ ├── App.test.js │ │ ├── CustomSignUp │ │ │ └── index.js │ │ ├── Footer │ │ │ └── index.js │ │ ├── Home │ │ │ ├── CallAPIView.js │ │ │ ├── Logout.js │ │ │ ├── SuccessView.js │ │ │ └── index.js │ │ ├── SessionExpiredPopup │ │ │ └── index.js │ │ ├── SetPassword │ │ │ └── index.js │ │ ├── index.css │ │ ├── index.js │ │ ├── logo.svg │ │ ├── realPasswordClaim.js │ │ ├── reportWebVitals.js │ │ └── setupTests.js │ └── test │ │ └── basic.test.js ├── with-emailverification-with-otp │ ├── .env.example │ ├── .gitignore │ ├── README.md │ ├── api-server │ │ └── server.ts │ ├── images │ │ └── emailverification-with-otp.png │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── logo192.png │ │ ├── logo512.png │ │ ├── manifest.json │ │ └── robots.txt │ ├── src │ │ ├── App.css │ │ ├── App.test.tsx │ │ ├── App.tsx │ │ ├── Home │ │ │ └── index.tsx │ │ ├── index.css │ │ ├── index.tsx │ │ ├── logo.svg │ │ ├── react-app-env.d.ts │ │ ├── reportWebVitals.ts │ │ └── setupTests.ts │ ├── test │ │ └── basic.test.js │ └── tsconfig.json ├── with-hash-router │ ├── .gitignore │ ├── README.md │ ├── backend │ │ ├── config.ts │ │ ├── index.ts │ │ ├── package.json │ │ └── tsconfig.json │ ├── frontend │ │ ├── .env │ │ ├── .gitignore │ │ ├── LICENSE.md │ │ ├── package.json │ │ ├── public │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── manifest.json │ │ │ └── robots.txt │ │ ├── src │ │ │ ├── App.css │ │ │ ├── App.tsx │ │ │ ├── Home │ │ │ │ ├── CallAPIView.tsx │ │ │ │ ├── Home.css │ │ │ │ ├── SuccessView.tsx │ │ │ │ └── index.tsx │ │ │ ├── assets │ │ │ │ ├── fonts │ │ │ │ │ └── MenloRegular.ttf │ │ │ │ └── images │ │ │ │ │ ├── arrow-right-icon.svg │ │ │ │ │ ├── background.png │ │ │ │ │ ├── blogs-icon.svg │ │ │ │ │ ├── celebrate-icon.svg │ │ │ │ │ ├── guide-icon.svg │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── separator-line.svg │ │ │ │ │ └── sign-out-icon.svg │ │ │ ├── config.tsx │ │ │ ├── index.css │ │ │ ├── index.tsx │ │ │ ├── react-app-env.d.ts │ │ │ └── windowHandler.ts │ │ └── tsconfig.json │ ├── package.json │ └── test │ │ └── basic.test.js ├── with-hasura-thirdpartyemailpassword │ ├── .gitignore │ ├── Dockerfile │ ├── LICENSE.md │ ├── README.md │ ├── api-server.js │ ├── ignore_this.js │ ├── package.json │ ├── pm2.json │ ├── public │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── logo192.png │ │ ├── logo512.png │ │ ├── manifest.json │ │ └── robots.txt │ ├── scripts │ │ └── start_container.sh │ └── src │ │ ├── App.css │ │ ├── App.js │ │ ├── App.test.js │ │ ├── Footer │ │ └── index.js │ │ ├── Home │ │ ├── CallAPIView.js │ │ ├── Logout.js │ │ ├── SuccessView.js │ │ └── index.js │ │ ├── SessionExpiredPopup │ │ └── index.js │ │ ├── index.css │ │ ├── index.js │ │ ├── logo.svg │ │ ├── reportWebVitals.js │ │ └── setupTests.js ├── with-i18next │ ├── .gitignore │ ├── Dockerfile │ ├── LICENSE.md │ ├── README.md │ ├── api-server.js │ ├── ignore_this.js │ ├── package.json │ ├── pm2.json │ ├── public │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── logo192.png │ │ ├── logo512.png │ │ ├── manifest.json │ │ └── robots.txt │ ├── scripts │ │ └── start_container.sh │ ├── src │ │ ├── App.css │ │ ├── App.js │ │ ├── App.test.js │ │ ├── Footer │ │ │ └── index.js │ │ ├── Home │ │ │ ├── CallAPIView.js │ │ │ ├── Logout.js │ │ │ ├── SuccessView.js │ │ │ └── index.js │ │ ├── SessionExpiredPopup │ │ │ └── index.js │ │ ├── index.css │ │ ├── index.js │ │ ├── logo.svg │ │ ├── reportWebVitals.js │ │ └── setupTests.js │ └── test │ │ └── basic.test.js ├── with-legacy-2fa │ ├── .gitignore │ ├── README.md │ ├── api-server │ │ ├── index.ts │ │ ├── secondFactorClaim.ts │ │ └── tsconfig.json │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── logo192.png │ │ ├── logo512.png │ │ ├── manifest.json │ │ └── robots.txt │ ├── src │ │ ├── App.css │ │ ├── App.test.tsx │ │ ├── App.tsx │ │ ├── Footer │ │ │ └── index.tsx │ │ ├── Home │ │ │ ├── CallAPIView.tsx │ │ │ ├── Logout.tsx │ │ │ ├── SuccessView.tsx │ │ │ └── index.tsx │ │ ├── SecondFactor │ │ │ └── index.tsx │ │ ├── index.css │ │ ├── index.tsx │ │ ├── logo.svg │ │ ├── react-app-env.d.ts │ │ ├── reportWebVitals.ts │ │ ├── secondFactorClaim.tsx │ │ └── setupTests.ts │ ├── test │ │ └── basic.test.js │ └── tsconfig.json ├── with-localstorage │ ├── .gitignore │ ├── README.md │ ├── backend │ │ ├── config.ts │ │ ├── index.ts │ │ ├── package.json │ │ └── tsconfig.json │ ├── frontend │ │ ├── .env │ │ ├── .gitignore │ │ ├── LICENSE.md │ │ ├── package.json │ │ ├── public │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── manifest.json │ │ │ └── robots.txt │ │ ├── src │ │ │ ├── App.css │ │ │ ├── App.tsx │ │ │ ├── Home │ │ │ │ ├── CallAPIView.tsx │ │ │ │ ├── Home.css │ │ │ │ ├── SuccessView.tsx │ │ │ │ └── index.tsx │ │ │ ├── assets │ │ │ │ ├── fonts │ │ │ │ │ └── MenloRegular.ttf │ │ │ │ └── images │ │ │ │ │ ├── arrow-right-icon.svg │ │ │ │ │ ├── background.png │ │ │ │ │ ├── blogs-icon.svg │ │ │ │ │ ├── celebrate-icon.svg │ │ │ │ │ ├── guide-icon.svg │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── separator-line.svg │ │ │ │ │ └── sign-out-icon.svg │ │ │ ├── config.tsx │ │ │ ├── cookieHandler.ts │ │ │ ├── index.css │ │ │ ├── index.tsx │ │ │ └── react-app-env.d.ts │ │ └── tsconfig.json │ ├── package.json │ └── test │ │ └── basic.test.js ├── with-multifactorauth-phone-chooser │ ├── README.md │ ├── backend │ │ ├── config.ts │ │ ├── index.ts │ │ ├── package.json │ │ └── tsconfig.json │ ├── frontend │ │ ├── .env │ │ ├── .gitignore │ │ ├── LICENSE.md │ │ ├── package.json │ │ ├── public │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── manifest.json │ │ │ └── robots.txt │ │ ├── src │ │ │ ├── App.css │ │ │ ├── App.tsx │ │ │ ├── Home │ │ │ │ ├── CallAPIView.tsx │ │ │ │ ├── Home.css │ │ │ │ ├── SuccessView.tsx │ │ │ │ └── index.tsx │ │ │ ├── SelectPhone │ │ │ │ ├── SelectPhone.css │ │ │ │ └── index.tsx │ │ │ ├── assets │ │ │ │ ├── fonts │ │ │ │ │ └── MenloRegular.ttf │ │ │ │ └── images │ │ │ │ │ ├── arrow-right-icon.svg │ │ │ │ │ ├── background.png │ │ │ │ │ ├── blogs-icon.svg │ │ │ │ │ ├── celebrate-icon.svg │ │ │ │ │ ├── guide-icon.svg │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── separator-line.svg │ │ │ │ │ └── sign-out-icon.svg │ │ │ ├── config.tsx │ │ │ ├── index.css │ │ │ ├── index.tsx │ │ │ ├── react-app-env.d.ts │ │ │ └── useAsyncCallOnMount.ts │ │ └── tsconfig.json │ ├── package.json │ └── test │ │ └── basic.test.js ├── with-multifactorauth-recovery-codes │ ├── README.md │ ├── backend │ │ ├── config.ts │ │ ├── index.ts │ │ ├── package.json │ │ ├── recoveryCodeExistsClaim.ts │ │ └── tsconfig.json │ ├── frontend │ │ ├── .env │ │ ├── .gitignore │ │ ├── LICENSE.md │ │ ├── package.json │ │ ├── public │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── manifest.json │ │ │ └── robots.txt │ │ ├── src │ │ │ ├── App.css │ │ │ ├── App.tsx │ │ │ ├── CreateRecoveryCode │ │ │ │ ├── CreateRecoveryCode.css │ │ │ │ └── index.tsx │ │ │ ├── Home │ │ │ │ ├── CallAPIView.tsx │ │ │ │ ├── Home.css │ │ │ │ ├── SuccessView.tsx │ │ │ │ └── index.tsx │ │ │ ├── RecoveryCode │ │ │ │ ├── RecoveryCode.css │ │ │ │ └── index.tsx │ │ │ ├── assets │ │ │ │ ├── fonts │ │ │ │ │ └── MenloRegular.ttf │ │ │ │ └── images │ │ │ │ │ ├── arrow-right-icon.svg │ │ │ │ │ ├── background.png │ │ │ │ │ ├── blogs-icon.svg │ │ │ │ │ ├── celebrate-icon.svg │ │ │ │ │ ├── guide-icon.svg │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── separator-line.svg │ │ │ │ │ └── sign-out-icon.svg │ │ │ ├── config.tsx │ │ │ ├── index.css │ │ │ ├── index.tsx │ │ │ ├── react-app-env.d.ts │ │ │ ├── recoveryCodeExistsClaim.ts │ │ │ └── useAsyncCallOnMount.ts │ │ └── tsconfig.json │ ├── package.json │ └── test │ │ └── basic.test.js ├── with-multifactorauth │ └── README.md ├── with-multiple-email-sign-in │ ├── .gitignore │ ├── Dockerfile │ ├── LICENSE.md │ ├── README.md │ ├── api-server │ │ ├── .gitignore │ │ ├── emailLinkingMap.ts │ │ ├── epOverride.ts │ │ ├── evOverride.ts │ │ ├── index.ts │ │ └── tsconfig.json │ ├── ignore_this.js │ ├── package.json │ ├── pm2.json │ ├── public │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── logo192.png │ │ ├── logo512.png │ │ ├── manifest.json │ │ └── robots.txt │ ├── scripts │ │ └── start_container.sh │ ├── src │ │ ├── App.css │ │ ├── App.test.js │ │ ├── App.tsx │ │ ├── Footer │ │ │ └── index.tsx │ │ ├── Home │ │ │ ├── Logout.tsx │ │ │ ├── SuccessView.tsx │ │ │ └── index.tsx │ │ ├── SessionExpiredPopup │ │ │ └── index.tsx │ │ ├── index.css │ │ ├── index.js │ │ ├── logo.svg │ │ ├── react-app-env.d.ts │ │ ├── reportWebVitals.js │ │ └── setupTests.js │ ├── test │ │ └── basic.test.js │ └── tsconfig.json ├── with-netlify │ ├── .env │ ├── .gitignore │ ├── .netlify │ │ └── edge-functions-import-map.json │ ├── README.md │ ├── config │ │ └── supertokensConfig.js │ ├── netlify.toml │ ├── netlify │ │ └── functions │ │ │ ├── auth.js │ │ │ └── user.js │ ├── package.json │ ├── public │ │ ├── _redirects │ │ ├── background.svg │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── logo192.png │ │ ├── logo512.png │ │ ├── manifest.json │ │ └── robots.txt │ ├── server-local.js │ ├── src │ │ ├── App.css │ │ ├── App.test.tsx │ │ ├── App.tsx │ │ ├── Footer │ │ │ └── index.tsx │ │ ├── Home │ │ │ ├── CallAPIView.tsx │ │ │ ├── Logout.tsx │ │ │ ├── SuccessView.tsx │ │ │ └── index.tsx │ │ ├── index.css │ │ ├── index.tsx │ │ ├── logo.svg │ │ ├── react-app-env.d.ts │ │ ├── reportWebVitals.ts │ │ └── setupTests.ts │ ├── test │ │ └── basic.test.js │ └── tsconfig.json ├── with-next-iframe │ ├── .gitignore │ ├── README.md │ ├── config │ │ ├── appInfo.js │ │ ├── backendConfig.js │ │ ├── cookieHandler.js │ │ ├── frontendConfig.js │ │ └── windowHandler.js │ ├── package.json │ ├── pages │ │ ├── _app.js │ │ ├── api │ │ │ ├── auth │ │ │ │ └── [[...path]].js │ │ │ └── user.js │ │ ├── auth │ │ │ └── [[...path]].js │ │ ├── iframe.js │ │ └── index.js │ ├── public │ │ ├── favicon.ico │ │ └── vercel.svg │ └── styles │ │ ├── Home.module.css │ │ └── globals.css ├── with-next │ └── README.md ├── with-no-session-on-sign-up-thirdpartyemailpassword │ ├── .gitignore │ ├── Dockerfile │ ├── LICENSE.md │ ├── README.md │ ├── api-server │ │ └── index.js │ ├── ignore_this.js │ ├── package.json │ ├── pm2.json │ ├── public │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── logo192.png │ │ ├── logo512.png │ │ ├── manifest.json │ │ └── robots.txt │ ├── scripts │ │ └── start_container.sh │ ├── src │ │ ├── App.css │ │ ├── App.js │ │ ├── App.test.js │ │ ├── Footer │ │ │ └── index.js │ │ ├── Home │ │ │ ├── CallAPIView.js │ │ │ ├── Logout.js │ │ │ ├── SuccessView.js │ │ │ └── index.js │ │ ├── index.css │ │ ├── index.js │ │ ├── logo.svg │ │ ├── reportWebVitals.js │ │ └── setupTests.js │ └── test │ │ └── basic.test.js ├── with-okta-multi-tenant-pkce-flow │ ├── .gitignore │ ├── README.md │ ├── api-server │ │ ├── config.go │ │ ├── go.mod │ │ ├── go.sum │ │ ├── main.go │ │ ├── okta.go │ │ ├── override.go │ │ └── utils.go │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── logo192.png │ │ ├── logo512.png │ │ ├── manifest.json │ │ └── robots.txt │ ├── src │ │ ├── index.css │ │ ├── index.tsx │ │ ├── routes │ │ │ ├── dashboard.tsx │ │ │ └── index.tsx │ │ └── setupTests.tsx │ └── tsconfig.json ├── with-one-login-many-subdomains │ ├── .gitignore │ ├── README.md │ ├── api-server.js │ ├── frontend │ │ ├── .env │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── public │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── logo192.png │ │ │ ├── logo512.png │ │ │ ├── manifest.json │ │ │ └── robots.txt │ │ └── src │ │ │ ├── App.css │ │ │ ├── App.js │ │ │ ├── App.test.js │ │ │ ├── AuthPage.jsx │ │ │ ├── Footer │ │ │ └── index.js │ │ │ ├── Home │ │ │ ├── CallAPIView.js │ │ │ ├── Logout.js │ │ │ ├── SuccessView.js │ │ │ └── index.js │ │ │ ├── TenantSelector.jsx │ │ │ ├── index.css │ │ │ ├── index.js │ │ │ ├── logo.svg │ │ │ ├── reportWebVitals.js │ │ │ ├── setupTests.js │ │ │ └── utils.js │ ├── package.json │ ├── tenant-setup.mjs │ └── test_skipped │ │ └── basic.test.js ├── with-one-login-per-subdomain │ ├── .env │ ├── .gitignore │ ├── README.md │ ├── api-server.js │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── logo192.png │ │ ├── logo512.png │ │ ├── manifest.json │ │ └── robots.txt │ ├── src │ │ ├── App.css │ │ ├── App.js │ │ ├── Footer │ │ │ └── index.js │ │ ├── Home │ │ │ ├── CallAPIView.js │ │ │ ├── Logout.js │ │ │ ├── SuccessView.js │ │ │ └── index.js │ │ ├── index.css │ │ ├── index.js │ │ └── utils.js │ ├── tenant-setup.mjs │ └── test │ │ └── basic.test.js ├── with-passwordless │ └── README.md ├── with-phone-password-mfa │ ├── .env │ ├── .gitignore │ ├── README.md │ ├── api-server │ │ ├── index.ts │ │ └── tsconfig.json │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── logo192.png │ │ ├── logo512.png │ │ ├── manifest.json │ │ └── robots.txt │ ├── src │ │ ├── App.css │ │ ├── App.test.tsx │ │ ├── App.tsx │ │ ├── Footer │ │ │ └── index.tsx │ │ ├── Home │ │ │ ├── CallAPIView.tsx │ │ │ ├── Logout.tsx │ │ │ ├── SuccessView.tsx │ │ │ └── index.tsx │ │ ├── SessionExpiredPopup │ │ │ └── index.tsx │ │ ├── index.css │ │ ├── index.tsx │ │ ├── logo.svg │ │ ├── react-app-env.d.ts │ │ ├── reportWebVitals.ts │ │ └── setupTests.ts │ ├── test │ │ └── basic.test.js │ └── tsconfig.json ├── with-phone-password │ ├── .env │ ├── .gitignore │ ├── README.md │ ├── api-server │ │ ├── index.ts │ │ ├── phoneVerifiedClaim.ts │ │ └── tsconfig.json │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── logo192.png │ │ ├── logo512.png │ │ ├── manifest.json │ │ └── robots.txt │ ├── src │ │ ├── App.css │ │ ├── App.test.tsx │ │ ├── App.tsx │ │ ├── Footer │ │ │ └── index.tsx │ │ ├── Home │ │ │ ├── CallAPIView.tsx │ │ │ ├── Logout.tsx │ │ │ ├── SuccessView.tsx │ │ │ └── index.tsx │ │ ├── PhoneVerification │ │ │ ├── Footer.tsx │ │ │ └── index.tsx │ │ ├── SessionExpiredPopup │ │ │ └── index.tsx │ │ ├── index.css │ │ ├── index.tsx │ │ ├── logo.svg │ │ ├── phoneVerifiedClaim.ts │ │ ├── react-app-env.d.ts │ │ ├── reportWebVitals.ts │ │ └── setupTests.ts │ ├── test │ │ └── basic.test.js │ └── tsconfig.json ├── with-remix │ └── README.md ├── with-sign-in-up-split-emailpassword │ ├── .gitignore │ ├── Dockerfile │ ├── LICENSE.md │ ├── README.md │ ├── api-server.js │ ├── ignore_this.js │ ├── package.json │ ├── pm2.json │ ├── public │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── logo192.png │ │ ├── logo512.png │ │ ├── manifest.json │ │ └── robots.txt │ ├── scripts │ │ └── start_container.sh │ ├── src │ │ ├── App.css │ │ ├── App.js │ │ ├── App.test.js │ │ ├── Footer │ │ │ └── index.js │ │ ├── Home │ │ │ ├── CallAPIView.js │ │ │ ├── Logout.js │ │ │ ├── SuccessView.js │ │ │ └── index.js │ │ ├── SessionExpiredPopup │ │ │ └── index.jsx │ │ ├── index.css │ │ ├── index.js │ │ ├── logo.svg │ │ ├── reportWebVitals.js │ │ └── setupTests.js │ └── test │ │ └── basic.test.js ├── with-supabase │ ├── .env │ ├── .gitignore │ ├── README.md │ ├── config │ │ ├── appInfo.ts │ │ ├── backendConfig.ts │ │ └── frontendConfig.ts │ ├── next-env.d.ts │ ├── next.config.js │ ├── package.json │ ├── pages │ │ ├── _app.tsx │ │ ├── api │ │ │ ├── auth │ │ │ │ └── [[...path]].ts │ │ │ └── user.ts │ │ ├── auth │ │ │ └── [[...path]].tsx │ │ └── index.tsx │ ├── public │ │ ├── favicon.ico │ │ └── vercel.svg │ ├── styles │ │ ├── Home.module.css │ │ └── globals.css │ ├── tsconfig.json │ └── utils │ │ └── supabase.ts ├── with-svelte-react-thirdpartyemailpassword │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── public │ │ ├── favicon.png │ │ ├── global.css │ │ └── index.html │ ├── rollup.config.js │ ├── server.js │ ├── src │ │ ├── App.svelte │ │ ├── Navbar.svelte │ │ ├── global.d.ts │ │ └── main.ts │ ├── test │ │ └── basic.test.js │ └── tsconfig.json ├── with-thirdparty-2fa-passwordless │ └── README.md ├── with-thirdparty-google-onetap │ ├── .gitignore │ ├── README.md │ ├── backend │ │ ├── config.ts │ │ ├── index.ts │ │ ├── package.json │ │ └── tsconfig.json │ ├── frontend │ │ ├── .env │ │ ├── .gitignore │ │ ├── LICENSE.md │ │ ├── package.json │ │ ├── public │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── manifest.json │ │ │ └── robots.txt │ │ ├── src │ │ │ ├── App.css │ │ │ ├── App.tsx │ │ │ ├── Home │ │ │ │ ├── CallAPIView.tsx │ │ │ │ ├── Home.css │ │ │ │ ├── SuccessView.tsx │ │ │ │ └── index.tsx │ │ │ ├── assets │ │ │ │ ├── fonts │ │ │ │ │ └── MenloRegular.ttf │ │ │ │ └── images │ │ │ │ │ ├── arrow-right-icon.svg │ │ │ │ │ ├── background.png │ │ │ │ │ ├── blogs-icon.svg │ │ │ │ │ ├── celebrate-icon.svg │ │ │ │ │ ├── guide-icon.svg │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── separator-line.svg │ │ │ │ │ └── sign-out-icon.svg │ │ │ ├── config.tsx │ │ │ ├── google-one-tap │ │ │ │ ├── index.ts │ │ │ │ ├── types.ts │ │ │ │ ├── useGoogleOneTapLogin.ts │ │ │ │ └── useScript.ts │ │ │ ├── index.css │ │ │ ├── index.tsx │ │ │ └── react-app-env.d.ts │ │ └── tsconfig.json │ └── package.json ├── with-thirdparty-popup │ ├── .env │ ├── .gitignore │ ├── README.md │ ├── backend │ │ ├── config.ts │ │ ├── index.ts │ │ ├── package.json │ │ └── tsconfig.json │ ├── frontend │ │ ├── LICENSE.md │ │ ├── package.json │ │ ├── public │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── manifest.json │ │ │ └── robots.txt │ │ ├── src │ │ │ ├── App.css │ │ │ ├── App.tsx │ │ │ ├── Home │ │ │ │ ├── CallAPIView.tsx │ │ │ │ ├── Home.css │ │ │ │ ├── SuccessView.tsx │ │ │ │ └── index.tsx │ │ │ ├── assets │ │ │ │ ├── fonts │ │ │ │ │ └── MenloRegular.ttf │ │ │ │ └── images │ │ │ │ │ ├── arrow-right-icon.svg │ │ │ │ │ ├── background.png │ │ │ │ │ ├── blogs-icon.svg │ │ │ │ │ ├── celebrate-icon.svg │ │ │ │ │ ├── guide-icon.svg │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── separator-line.svg │ │ │ │ │ └── sign-out-icon.svg │ │ │ ├── config.tsx │ │ │ ├── index.css │ │ │ ├── index.tsx │ │ │ └── react-app-env.d.ts │ │ └── tsconfig.json │ └── package.json ├── with-thirdparty │ └── README.md ├── with-thirdpartyemailpassword-2fa-passwordless │ └── README.md ├── with-thirdpartyemailpassword-passwordless │ ├── .gitignore │ ├── Dockerfile │ ├── LICENSE.md │ ├── README.md │ ├── api-server │ │ ├── index.ts │ │ └── tsconfig.json │ ├── ignore_this.js │ ├── package.json │ ├── pm2.json │ ├── public │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── logo192.png │ │ ├── logo512.png │ │ ├── manifest.json │ │ └── robots.txt │ ├── scripts │ │ └── start_container.sh │ ├── src │ │ ├── App.css │ │ ├── App.tsx │ │ ├── Footer │ │ │ └── index.tsx │ │ ├── Home │ │ │ ├── CallAPIView.tsx │ │ │ ├── Logout.tsx │ │ │ ├── SuccessView.tsx │ │ │ └── index.tsx │ │ ├── SessionExpiredPopup │ │ │ └── index.tsx │ │ ├── index.css │ │ ├── index.tsx │ │ ├── logo.svg │ │ ├── react-app-env.d.ts │ │ ├── reportWebVitals.ts │ │ └── setupTests.ts │ ├── test │ │ └── basic.test.js │ └── tsconfig.json ├── with-thirdpartyemailpassword │ └── README.md ├── with-thirdpartypasswordless-electron │ ├── .eslintrc.json │ ├── .gitignore │ ├── README.md │ ├── api-server │ │ ├── index.js │ │ └── mailer.js │ ├── package.json │ ├── src │ │ ├── Footer │ │ │ └── index.tsx │ │ ├── Home │ │ │ ├── callAPIView.tsx │ │ │ ├── index.tsx │ │ │ ├── logout.tsx │ │ │ └── successView.tsx │ │ ├── SessionExpiredPopup │ │ │ └── index.tsx │ │ ├── cookieHandler.ts │ │ ├── index.css │ │ ├── index.html │ │ ├── index.ts │ │ ├── renderer.tsx │ │ └── windowHandler.ts │ ├── tsconfig.json │ ├── webpack.main.config.js │ ├── webpack.plugins.js │ ├── webpack.renderer.config.js │ └── webpack.rules.js ├── with-thirdpartypasswordless │ └── README.md ├── with-update-email-post-verification │ ├── README.md │ ├── backend │ │ ├── config.ts │ │ ├── index.ts │ │ ├── package.json │ │ └── tsconfig.json │ ├── frontend │ │ ├── .env │ │ ├── .gitignore │ │ ├── LICENSE.md │ │ ├── package.json │ │ ├── public │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── manifest.json │ │ │ └── robots.txt │ │ ├── src │ │ │ ├── App.css │ │ │ ├── App.tsx │ │ │ ├── Home │ │ │ │ ├── CallAPIView.tsx │ │ │ │ ├── Home.css │ │ │ │ ├── SuccessView.tsx │ │ │ │ └── index.tsx │ │ │ ├── assets │ │ │ │ ├── fonts │ │ │ │ │ └── MenloRegular.ttf │ │ │ │ └── images │ │ │ │ │ ├── arrow-right-icon.svg │ │ │ │ │ ├── background.png │ │ │ │ │ ├── blogs-icon.svg │ │ │ │ │ ├── celebrate-icon.svg │ │ │ │ │ ├── guide-icon.svg │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── separator-line.svg │ │ │ │ │ └── sign-out-icon.svg │ │ │ ├── config.tsx │ │ │ ├── index.css │ │ │ ├── index.tsx │ │ │ └── react-app-env.d.ts │ │ └── tsconfig.json │ ├── package.json │ └── test │ │ └── basic.test.js └── with-vue-thirdpartyemailpassword │ └── README.md ├── frontendDriverInterfaceSupported.json ├── hooks └── pre-commit.sh ├── index.d.ts ├── index.js ├── init.sh ├── jest.config.js ├── lib ├── .eslintignore ├── .eslintrc.js ├── build │ ├── arrowLeftIcon.js │ ├── authCompWrapper.js │ ├── authRecipe-shared.js │ ├── authRecipe-shared2.js │ ├── claims │ │ ├── booleanClaim.d.ts │ │ ├── primitiveArrayClaim.d.ts │ │ └── primitiveClaim.d.ts │ ├── components │ │ ├── SuperTokensBranding.d.ts │ │ ├── assets │ │ │ ├── arrowLeftIcon.d.ts │ │ │ ├── arrowRightIcon.d.ts │ │ │ ├── blockedIcon.d.ts │ │ │ ├── checkedIcon.d.ts │ │ │ ├── checkedRoundIcon.d.ts │ │ │ ├── emailLargeIcon.d.ts │ │ │ ├── errorIcon.d.ts │ │ │ ├── errorLargeIcon.d.ts │ │ │ ├── errorRoundIcon.d.ts │ │ │ ├── fingerPrintIcon.d.ts │ │ │ ├── heavyArrowLeftIcon.d.ts │ │ │ ├── logoutIcon.d.ts │ │ │ ├── multipleDevicesIcon.d.ts │ │ │ ├── otpEmailIcon.d.ts │ │ │ ├── otpSMSIcon.d.ts │ │ │ ├── passkeyIcon.d.ts │ │ │ ├── recoverySuccessIcon.d.ts │ │ │ ├── securityIcon.d.ts │ │ │ ├── showPasswordIcon.d.ts │ │ │ ├── smsLargeIcon.d.ts │ │ │ ├── somethingWentWrongIcon.d.ts │ │ │ ├── spinnerIcon.d.ts │ │ │ └── totpIcon.d.ts │ │ ├── authCompWrapper.d.ts │ │ ├── componentOverride │ │ │ ├── componentOverride.d.ts │ │ │ ├── componentOverrideContext.d.ts │ │ │ ├── genericComponentOverrideContext.d.ts │ │ │ ├── useComponentOverride.d.ts │ │ │ └── withOverride.d.ts │ │ ├── featureWrapper.d.ts │ │ ├── routingComponent.d.ts │ │ ├── superTokensRoute.d.ts │ │ ├── superTokensRouteV6.d.ts │ │ └── supertokensWrapper.d.ts │ ├── constants.d.ts │ ├── dateProvider │ │ ├── index.d.ts │ │ └── types.d.ts │ ├── emailLargeIcon.js │ ├── emailpassword-shared.js │ ├── emailpassword-shared2.js │ ├── emailpassword-shared3.js │ ├── emailpassword-shared4.js │ ├── emailpassword-shared5.js │ ├── emailpassword-shared6.js │ ├── emailpassword.js │ ├── emailpasswordprebuiltui.js │ ├── emailverification-shared.js │ ├── emailverification-shared2.js │ ├── emailverification.js │ ├── emailverificationprebuiltui.js │ ├── genericComponentOverrideContext.js │ ├── index.d.ts │ ├── index.js │ ├── index2.js │ ├── logger.d.ts │ ├── multifactorauth-shared.js │ ├── multifactorauth-shared2.js │ ├── multifactorauth-shared3.js │ ├── multifactorauth.js │ ├── multifactorauthprebuiltui.js │ ├── multitenancy-shared.js │ ├── multitenancy.js │ ├── oauth2provider-shared.js │ ├── oauth2provider-shared2.js │ ├── oauth2provider.js │ ├── oauth2providerprebuiltui.js │ ├── passwordless-shared.js │ ├── passwordless.js │ ├── passwordlessprebuiltui.js │ ├── recipe │ │ ├── authRecipe │ │ │ ├── componentOverrideContext.d.ts │ │ │ ├── components │ │ │ │ ├── feature │ │ │ │ │ └── authPage │ │ │ │ │ │ └── authPage.d.ts │ │ │ │ └── theme │ │ │ │ │ ├── authPage │ │ │ │ │ ├── authPageComponentList.d.ts │ │ │ │ │ ├── authPageFooter.d.ts │ │ │ │ │ ├── authPageHeader.d.ts │ │ │ │ │ └── index.d.ts │ │ │ │ │ └── themeBase.d.ts │ │ │ ├── index.d.ts │ │ │ ├── types.d.ts │ │ │ └── utils.d.ts │ │ ├── emailpassword │ │ │ ├── componentOverrideContext.d.ts │ │ │ ├── components │ │ │ │ ├── features │ │ │ │ │ ├── resetPasswordUsingToken │ │ │ │ │ │ └── index.d.ts │ │ │ │ │ ├── signin │ │ │ │ │ │ └── index.d.ts │ │ │ │ │ └── signup │ │ │ │ │ │ └── index.d.ts │ │ │ │ ├── library │ │ │ │ │ ├── backButton.d.ts │ │ │ │ │ ├── backToSignInButton.d.ts │ │ │ │ │ ├── button.d.ts │ │ │ │ │ ├── formBase.d.ts │ │ │ │ │ ├── formRow.d.ts │ │ │ │ │ ├── generalError.d.ts │ │ │ │ │ ├── index.d.ts │ │ │ │ │ ├── input.d.ts │ │ │ │ │ ├── inputError.d.ts │ │ │ │ │ └── label.d.ts │ │ │ │ └── themes │ │ │ │ │ ├── resetPasswordUsingToken │ │ │ │ │ ├── index.d.ts │ │ │ │ │ ├── resetPasswordEmail.d.ts │ │ │ │ │ └── submitNewPassword.d.ts │ │ │ │ │ ├── signIn │ │ │ │ │ └── index.d.ts │ │ │ │ │ ├── signUp │ │ │ │ │ └── index.d.ts │ │ │ │ │ ├── themeBase.d.ts │ │ │ │ │ └── translations.d.ts │ │ │ ├── constants.d.ts │ │ │ ├── functionOverrides.d.ts │ │ │ ├── index.d.ts │ │ │ ├── prebuiltui.d.ts │ │ │ ├── recipe.d.ts │ │ │ ├── types.d.ts │ │ │ ├── utils.d.ts │ │ │ └── validators.d.ts │ │ ├── emailverification │ │ │ ├── componentOverrideContext.d.ts │ │ │ ├── components │ │ │ │ ├── features │ │ │ │ │ └── emailVerification │ │ │ │ │ │ └── index.d.ts │ │ │ │ └── themes │ │ │ │ │ ├── emailVerification │ │ │ │ │ ├── index.d.ts │ │ │ │ │ ├── sendVerifyEmail.d.ts │ │ │ │ │ └── verifyEmailLinkClicked.d.ts │ │ │ │ │ └── translations.d.ts │ │ │ ├── constants.d.ts │ │ │ ├── emailVerificationClaim.d.ts │ │ │ ├── functionOverrides.d.ts │ │ │ ├── index.d.ts │ │ │ ├── prebuiltui.d.ts │ │ │ ├── recipe.d.ts │ │ │ ├── types.d.ts │ │ │ └── utils.d.ts │ │ ├── multifactorauth │ │ │ ├── componentOverrideContext.d.ts │ │ │ ├── components │ │ │ │ ├── features │ │ │ │ │ └── factorChooser │ │ │ │ │ │ └── index.d.ts │ │ │ │ └── themes │ │ │ │ │ ├── factorChooser │ │ │ │ │ ├── factorChooserFooter.d.ts │ │ │ │ │ ├── factorChooserHeader.d.ts │ │ │ │ │ ├── factorList.d.ts │ │ │ │ │ ├── factorOption.d.ts │ │ │ │ │ └── index.d.ts │ │ │ │ │ ├── themeBase.d.ts │ │ │ │ │ └── translations.d.ts │ │ │ ├── constants.d.ts │ │ │ ├── functionOverrides.d.ts │ │ │ ├── index.d.ts │ │ │ ├── multiFactorAuthClaim.d.ts │ │ │ ├── prebuiltui.d.ts │ │ │ ├── recipe.d.ts │ │ │ ├── types.d.ts │ │ │ └── utils.d.ts │ │ ├── multitenancy │ │ │ ├── componentOverrideContext.d.ts │ │ │ ├── components │ │ │ │ ├── features │ │ │ │ │ └── dynamicLoginMethodsSpinner │ │ │ │ │ │ └── index.d.ts │ │ │ │ └── themes │ │ │ │ │ ├── dynamicLoginMethodsSpinner │ │ │ │ │ └── index.d.ts │ │ │ │ │ └── themeBase.d.ts │ │ │ ├── dynamicLoginMethodsContext.d.ts │ │ │ ├── index.d.ts │ │ │ ├── recipe.d.ts │ │ │ ├── types.d.ts │ │ │ └── utils.d.ts │ │ ├── oauth2provider │ │ │ ├── componentOverrideContext.d.ts │ │ │ ├── components │ │ │ │ ├── features │ │ │ │ │ ├── oauth2LogoutScreen │ │ │ │ │ │ └── index.d.ts │ │ │ │ │ └── tryRefreshPage │ │ │ │ │ │ └── index.d.ts │ │ │ │ └── themes │ │ │ │ │ ├── oauth2LogoutScreen │ │ │ │ │ ├── OAuth2LogoutScreenInner.d.ts │ │ │ │ │ └── index.d.ts │ │ │ │ │ ├── themeBase.d.ts │ │ │ │ │ └── translations.d.ts │ │ │ ├── constants.d.ts │ │ │ ├── functionOverrides.d.ts │ │ │ ├── index.d.ts │ │ │ ├── prebuiltui.d.ts │ │ │ ├── recipe.d.ts │ │ │ ├── types.d.ts │ │ │ └── utils.d.ts │ │ ├── passwordless │ │ │ ├── componentOverrideContext.d.ts │ │ │ ├── components │ │ │ │ ├── features │ │ │ │ │ ├── continueWithPasswordless │ │ │ │ │ │ └── index.d.ts │ │ │ │ │ ├── linkClickedScreen │ │ │ │ │ │ └── index.d.ts │ │ │ │ │ ├── linkSent │ │ │ │ │ │ └── index.d.ts │ │ │ │ │ ├── mfa │ │ │ │ │ │ └── index.d.ts │ │ │ │ │ ├── signInAndUp │ │ │ │ │ │ └── index.d.ts │ │ │ │ │ ├── signInAndUpEPCombo │ │ │ │ │ │ └── index.d.ts │ │ │ │ │ └── userInputCode │ │ │ │ │ │ └── index.d.ts │ │ │ │ └── themes │ │ │ │ │ ├── continueWithPasswordless │ │ │ │ │ └── index.d.ts │ │ │ │ │ ├── linkClickedScreen │ │ │ │ │ └── index.d.ts │ │ │ │ │ ├── linkSent │ │ │ │ │ └── index.d.ts │ │ │ │ │ ├── mfa │ │ │ │ │ ├── index.d.ts │ │ │ │ │ ├── loadingScreen.d.ts │ │ │ │ │ ├── mfaFooter.d.ts │ │ │ │ │ ├── mfaHeader.d.ts │ │ │ │ │ ├── mfaOTPFooter.d.ts │ │ │ │ │ └── mfaOTPHeader.d.ts │ │ │ │ │ ├── signInUp │ │ │ │ │ ├── emailForm.d.ts │ │ │ │ │ ├── emailOrPhoneForm.d.ts │ │ │ │ │ ├── index.d.ts │ │ │ │ │ ├── phoneForm.d.ts │ │ │ │ │ ├── phoneNumberInput.d.ts │ │ │ │ │ └── resendButton.d.ts │ │ │ │ │ ├── signInUpEPCombo │ │ │ │ │ ├── continueWithPasswordlessFooter.d.ts │ │ │ │ │ ├── emailForm.d.ts │ │ │ │ │ ├── emailOrPhoneForm.d.ts │ │ │ │ │ └── index.d.ts │ │ │ │ │ ├── themeBase.d.ts │ │ │ │ │ ├── translations.d.ts │ │ │ │ │ └── userInputCodeForm │ │ │ │ │ ├── userInputCodeFormFooter.d.ts │ │ │ │ │ ├── userInputCodeFormHeader.d.ts │ │ │ │ │ └── userInputCodeFormScreen.d.ts │ │ │ ├── defaultPhoneNumberValidator.d.ts │ │ │ ├── functionOverrides.d.ts │ │ │ ├── index.d.ts │ │ │ ├── phoneNumberUtils.d.ts │ │ │ ├── prebuiltui.d.ts │ │ │ ├── recipe.d.ts │ │ │ ├── types.d.ts │ │ │ ├── utils.d.ts │ │ │ └── validators.d.ts │ │ ├── recipeModule │ │ │ ├── baseRecipeModule.d.ts │ │ │ ├── index.d.ts │ │ │ ├── types.d.ts │ │ │ └── utils.d.ts │ │ ├── recipeRouter │ │ │ └── index.d.ts │ │ ├── session │ │ │ ├── componentOverrideContext.d.ts │ │ │ ├── components │ │ │ │ ├── features │ │ │ │ │ └── accessDeniedScreen │ │ │ │ │ │ └── index.d.ts │ │ │ │ ├── library │ │ │ │ │ ├── backButton.d.ts │ │ │ │ │ └── logoutButton.d.ts │ │ │ │ └── themes │ │ │ │ │ ├── accessDeniedScreenTheme │ │ │ │ │ └── index.d.ts │ │ │ │ │ ├── themeBase.d.ts │ │ │ │ │ └── translations.d.ts │ │ │ ├── index.d.ts │ │ │ ├── prebuiltui.d.ts │ │ │ ├── recipe.d.ts │ │ │ ├── sessionAuth.d.ts │ │ │ ├── sessionContext.d.ts │ │ │ ├── types.d.ts │ │ │ ├── useClaimValue.d.ts │ │ │ ├── useSessionContext.d.ts │ │ │ └── utils.d.ts │ │ ├── thirdparty │ │ │ ├── componentOverrideContext.d.ts │ │ │ ├── components │ │ │ │ ├── features │ │ │ │ │ ├── signInAndUp │ │ │ │ │ │ └── index.d.ts │ │ │ │ │ └── signInAndUpCallback │ │ │ │ │ │ └── index.d.ts │ │ │ │ ├── library │ │ │ │ │ └── providerButton.d.ts │ │ │ │ └── themes │ │ │ │ │ ├── signInAndUp │ │ │ │ │ ├── index.d.ts │ │ │ │ │ └── providersForm.d.ts │ │ │ │ │ ├── signInAndUpCallback │ │ │ │ │ └── index.d.ts │ │ │ │ │ ├── themeBase.d.ts │ │ │ │ │ └── translations.d.ts │ │ │ ├── constants.d.ts │ │ │ ├── functionOverrides.d.ts │ │ │ ├── index.d.ts │ │ │ ├── prebuiltui.d.ts │ │ │ ├── providers │ │ │ │ ├── activeDirectory.d.ts │ │ │ │ ├── apple.d.ts │ │ │ │ ├── bitbucket.d.ts │ │ │ │ ├── boxySaml.d.ts │ │ │ │ ├── custom.d.ts │ │ │ │ ├── discord.d.ts │ │ │ │ ├── facebook.d.ts │ │ │ │ ├── github.d.ts │ │ │ │ ├── gitlab.d.ts │ │ │ │ ├── google.d.ts │ │ │ │ ├── googleWorkspaces.d.ts │ │ │ │ ├── index.d.ts │ │ │ │ ├── linkedIn.d.ts │ │ │ │ ├── okta.d.ts │ │ │ │ ├── twitter.d.ts │ │ │ │ └── types.d.ts │ │ │ ├── recipe.d.ts │ │ │ ├── types.d.ts │ │ │ └── utils.d.ts │ │ ├── totp │ │ │ ├── componentOverrideContext.d.ts │ │ │ ├── components │ │ │ │ ├── features │ │ │ │ │ └── mfa │ │ │ │ │ │ └── index.d.ts │ │ │ │ └── themes │ │ │ │ │ ├── mfa │ │ │ │ │ ├── blockedScreen.d.ts │ │ │ │ │ ├── index.d.ts │ │ │ │ │ ├── loadingScreen.d.ts │ │ │ │ │ ├── retryButton.d.ts │ │ │ │ │ ├── totpCodeForm.d.ts │ │ │ │ │ ├── totpCodeVerificationFooter.d.ts │ │ │ │ │ ├── totpCodeVerificationHeader.d.ts │ │ │ │ │ ├── totpDeviceInfoSection.d.ts │ │ │ │ │ ├── totpDeviceSetupFooter.d.ts │ │ │ │ │ └── totpDeviceSetupHeader.d.ts │ │ │ │ │ ├── themeBase.d.ts │ │ │ │ │ └── translations.d.ts │ │ │ ├── constants.d.ts │ │ │ ├── functionOverrides.d.ts │ │ │ ├── index.d.ts │ │ │ ├── prebuiltui.d.ts │ │ │ ├── recipe.d.ts │ │ │ ├── types.d.ts │ │ │ └── utils.d.ts │ │ ├── userroles │ │ │ └── index.d.ts │ │ └── webauthn │ │ │ ├── componentOverrideContext.d.ts │ │ │ ├── components │ │ │ ├── features │ │ │ │ ├── recoverAccountWithToken │ │ │ │ │ └── index.d.ts │ │ │ │ ├── sendRecoveryEmail │ │ │ │ │ └── index.d.ts │ │ │ │ ├── signIn │ │ │ │ │ └── index.d.ts │ │ │ │ └── signUp │ │ │ │ │ └── index.d.ts │ │ │ └── themes │ │ │ │ ├── continueWithPasskey │ │ │ │ └── index.d.ts │ │ │ │ ├── error │ │ │ │ └── passkeyNotSupportedError.d.ts │ │ │ │ ├── recoverAccountWithToken │ │ │ │ ├── index.d.ts │ │ │ │ └── success.d.ts │ │ │ │ ├── sendRecoveryEmail │ │ │ │ ├── emailSent.d.ts │ │ │ │ ├── index.d.ts │ │ │ │ └── recoverAccountForm.d.ts │ │ │ │ ├── signIn │ │ │ │ └── index.d.ts │ │ │ │ ├── signUp │ │ │ │ ├── confirmation.d.ts │ │ │ │ ├── continueWithoutPasskey.d.ts │ │ │ │ ├── featureBlocks.d.ts │ │ │ │ ├── index.d.ts │ │ │ │ ├── signUpForm.d.ts │ │ │ │ └── somethingWentWrong.d.ts │ │ │ │ ├── themeBase.d.ts │ │ │ │ └── translations.d.ts │ │ │ ├── constants.d.ts │ │ │ ├── functionOverrides.d.ts │ │ │ ├── index.d.ts │ │ │ ├── prebuiltui.d.ts │ │ │ ├── recipe.d.ts │ │ │ ├── types.d.ts │ │ │ └── utils.d.ts │ ├── recipeModule-shared.js │ ├── session-shared.js │ ├── session.js │ ├── sessionprebuiltui.js │ ├── superTokens.d.ts │ ├── thirdparty-shared.js │ ├── thirdparty.js │ ├── thirdpartyprebuiltui.js │ ├── totp-shared.js │ ├── totp.js │ ├── totpprebuiltui.js │ ├── translation │ │ ├── translationContext.d.ts │ │ ├── translationHelpers.d.ts │ │ └── translations.d.ts │ ├── translationContext.js │ ├── types.d.ts │ ├── ui-entry.js │ ├── ui │ │ ├── index.d.ts │ │ └── types.d.ts │ ├── usercontext │ │ ├── index.d.ts │ │ └── userContextWrapper.d.ts │ ├── userroles.js │ ├── utils.d.ts │ ├── utils.js │ ├── version.d.ts │ ├── webauthn-shared.js │ ├── webauthn.js │ └── webauthnprebuiltui.js ├── ts │ ├── claims │ │ ├── booleanClaim.ts │ │ ├── primitiveArrayClaim.ts │ │ └── primitiveClaim.ts │ ├── components │ │ ├── SuperTokensBranding.tsx │ │ ├── assets │ │ │ ├── arrowLeftIcon.tsx │ │ │ ├── arrowRightIcon.tsx │ │ │ ├── blockedIcon.tsx │ │ │ ├── checkedIcon.tsx │ │ │ ├── checkedRoundIcon.tsx │ │ │ ├── emailLargeIcon.tsx │ │ │ ├── errorIcon.tsx │ │ │ ├── errorLargeIcon.tsx │ │ │ ├── errorRoundIcon.tsx │ │ │ ├── fingerPrintIcon.tsx │ │ │ ├── heavyArrowLeftIcon.tsx │ │ │ ├── logoutIcon.tsx │ │ │ ├── multipleDevicesIcon.tsx │ │ │ ├── otpEmailIcon.tsx │ │ │ ├── otpSMSIcon.tsx │ │ │ ├── passkeyIcon.tsx │ │ │ ├── recoverySuccessIcon.tsx │ │ │ ├── securityIcon.tsx │ │ │ ├── showPasswordIcon.tsx │ │ │ ├── smsLargeIcon.tsx │ │ │ ├── somethingWentWrongIcon.tsx │ │ │ ├── spinnerIcon.tsx │ │ │ └── totpIcon.tsx │ │ ├── authCompWrapper.tsx │ │ ├── componentOverride │ │ │ ├── componentOverride.ts │ │ │ ├── componentOverrideContext.tsx │ │ │ ├── genericComponentOverrideContext.tsx │ │ │ ├── useComponentOverride.ts │ │ │ └── withOverride.tsx │ │ ├── featureWrapper.tsx │ │ ├── routingComponent.tsx │ │ ├── superTokensRoute.tsx │ │ ├── superTokensRouteV6.tsx │ │ └── supertokensWrapper.tsx │ ├── constants.ts │ ├── css.d.ts │ ├── dateProvider │ │ ├── index.ts │ │ └── types.ts │ ├── index.ts │ ├── logger.ts │ ├── react-dom.d.ts │ ├── recipe │ │ ├── authRecipe │ │ │ ├── componentOverrideContext.tsx │ │ │ ├── components │ │ │ │ ├── feature │ │ │ │ │ └── authPage │ │ │ │ │ │ └── authPage.tsx │ │ │ │ └── theme │ │ │ │ │ ├── authPage │ │ │ │ │ ├── authPageComponentList.tsx │ │ │ │ │ ├── authPageFooter.tsx │ │ │ │ │ ├── authPageHeader.tsx │ │ │ │ │ └── index.tsx │ │ │ │ │ └── themeBase.tsx │ │ │ ├── index.ts │ │ │ ├── types.ts │ │ │ └── utils.ts │ │ ├── emailpassword │ │ │ ├── componentOverrideContext.tsx │ │ │ ├── components │ │ │ │ ├── features │ │ │ │ │ ├── resetPasswordUsingToken │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── signin │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── signup │ │ │ │ │ │ └── index.tsx │ │ │ │ ├── library │ │ │ │ │ ├── backButton.tsx │ │ │ │ │ ├── backToSignInButton.tsx │ │ │ │ │ ├── button.tsx │ │ │ │ │ ├── formBase.tsx │ │ │ │ │ ├── formRow.tsx │ │ │ │ │ ├── generalError.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── input.tsx │ │ │ │ │ ├── inputError.tsx │ │ │ │ │ └── label.tsx │ │ │ │ └── themes │ │ │ │ │ ├── resetPasswordUsingToken │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── resetPasswordEmail.tsx │ │ │ │ │ └── submitNewPassword.tsx │ │ │ │ │ ├── signIn │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── signUp │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── styles.css │ │ │ │ │ ├── themeBase.tsx │ │ │ │ │ └── translations.ts │ │ │ ├── constants.ts │ │ │ ├── functionOverrides.ts │ │ │ ├── index.ts │ │ │ ├── prebuiltui.tsx │ │ │ ├── recipe.tsx │ │ │ ├── types.ts │ │ │ ├── utils.ts │ │ │ └── validators.ts │ │ ├── emailverification │ │ │ ├── componentOverrideContext.tsx │ │ │ ├── components │ │ │ │ ├── features │ │ │ │ │ └── emailVerification │ │ │ │ │ │ └── index.tsx │ │ │ │ └── themes │ │ │ │ │ ├── emailVerification │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── sendVerifyEmail.tsx │ │ │ │ │ └── verifyEmailLinkClicked.tsx │ │ │ │ │ └── translations.ts │ │ │ ├── constants.ts │ │ │ ├── emailVerificationClaim.ts │ │ │ ├── functionOverrides.ts │ │ │ ├── index.ts │ │ │ ├── prebuiltui.tsx │ │ │ ├── recipe.tsx │ │ │ ├── types.ts │ │ │ └── utils.ts │ │ ├── multifactorauth │ │ │ ├── componentOverrideContext.tsx │ │ │ ├── components │ │ │ │ ├── features │ │ │ │ │ └── factorChooser │ │ │ │ │ │ └── index.tsx │ │ │ │ └── themes │ │ │ │ │ ├── factorChooser │ │ │ │ │ ├── factorChooserFooter.tsx │ │ │ │ │ ├── factorChooserHeader.tsx │ │ │ │ │ ├── factorList.tsx │ │ │ │ │ ├── factorOption.tsx │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── styles.css │ │ │ │ │ ├── themeBase.tsx │ │ │ │ │ └── translations.ts │ │ │ ├── constants.ts │ │ │ ├── functionOverrides.ts │ │ │ ├── index.ts │ │ │ ├── multiFactorAuthClaim.ts │ │ │ ├── prebuiltui.tsx │ │ │ ├── recipe.tsx │ │ │ ├── types.ts │ │ │ └── utils.ts │ │ ├── multitenancy │ │ │ ├── componentOverrideContext.tsx │ │ │ ├── components │ │ │ │ ├── features │ │ │ │ │ └── dynamicLoginMethodsSpinner │ │ │ │ │ │ └── index.tsx │ │ │ │ └── themes │ │ │ │ │ ├── dynamicLoginMethodsSpinner │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── styles.css │ │ │ │ │ └── themeBase.tsx │ │ │ ├── dynamicLoginMethodsContext.tsx │ │ │ ├── index.ts │ │ │ ├── recipe.ts │ │ │ ├── types.ts │ │ │ └── utils.ts │ │ ├── oauth2provider │ │ │ ├── componentOverrideContext.tsx │ │ │ ├── components │ │ │ │ ├── features │ │ │ │ │ ├── oauth2LogoutScreen │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── tryRefreshPage │ │ │ │ │ │ └── index.tsx │ │ │ │ └── themes │ │ │ │ │ ├── oauth2LogoutScreen │ │ │ │ │ ├── OAuth2LogoutScreenInner.tsx │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── styles.css │ │ │ │ │ ├── themeBase.tsx │ │ │ │ │ └── translations.ts │ │ │ ├── constants.ts │ │ │ ├── functionOverrides.ts │ │ │ ├── index.ts │ │ │ ├── prebuiltui.tsx │ │ │ ├── recipe.ts │ │ │ ├── types.ts │ │ │ └── utils.ts │ │ ├── passwordless │ │ │ ├── componentOverrideContext.tsx │ │ │ ├── components │ │ │ │ ├── features │ │ │ │ │ ├── continueWithPasswordless │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── linkClickedScreen │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── linkSent │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── mfa │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── signInAndUp │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── signInAndUpEPCombo │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── userInputCode │ │ │ │ │ │ └── index.tsx │ │ │ │ └── themes │ │ │ │ │ ├── continueWithPasswordless │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── linkClickedScreen │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── linkSent │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── mfa │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── loadingScreen.tsx │ │ │ │ │ ├── mfaFooter.tsx │ │ │ │ │ ├── mfaHeader.tsx │ │ │ │ │ ├── mfaOTPFooter.tsx │ │ │ │ │ └── mfaOTPHeader.tsx │ │ │ │ │ ├── signInUp │ │ │ │ │ ├── emailForm.tsx │ │ │ │ │ ├── emailOrPhoneForm.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── phoneForm.tsx │ │ │ │ │ ├── phoneNumberInput.tsx │ │ │ │ │ └── resendButton.tsx │ │ │ │ │ ├── signInUpEPCombo │ │ │ │ │ ├── continueWithPasswordlessFooter.tsx │ │ │ │ │ ├── emailForm.tsx │ │ │ │ │ ├── emailOrPhoneForm.tsx │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── styles.css │ │ │ │ │ ├── themeBase.tsx │ │ │ │ │ ├── translations.ts │ │ │ │ │ └── userInputCodeForm │ │ │ │ │ ├── userInputCodeFormFooter.tsx │ │ │ │ │ ├── userInputCodeFormHeader.tsx │ │ │ │ │ └── userInputCodeFormScreen.tsx │ │ │ ├── defaultPhoneNumberValidator.ts │ │ │ ├── functionOverrides.ts │ │ │ ├── index.ts │ │ │ ├── phoneNumberUtils.ts │ │ │ ├── prebuiltui.tsx │ │ │ ├── recipe.tsx │ │ │ ├── types.ts │ │ │ ├── utils.ts │ │ │ └── validators.ts │ │ ├── recipeModule │ │ │ ├── baseRecipeModule.ts │ │ │ ├── index.ts │ │ │ ├── types.ts │ │ │ └── utils.ts │ │ ├── recipeRouter │ │ │ └── index.tsx │ │ ├── session │ │ │ ├── componentOverrideContext.tsx │ │ │ ├── components │ │ │ │ ├── features │ │ │ │ │ └── accessDeniedScreen │ │ │ │ │ │ └── index.tsx │ │ │ │ ├── library │ │ │ │ │ ├── backButton.tsx │ │ │ │ │ └── logoutButton.tsx │ │ │ │ └── themes │ │ │ │ │ ├── accessDeniedScreenTheme │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── styles.css │ │ │ │ │ ├── themeBase.tsx │ │ │ │ │ └── translations.ts │ │ │ ├── index.ts │ │ │ ├── prebuiltui.tsx │ │ │ ├── recipe.tsx │ │ │ ├── sessionAuth.tsx │ │ │ ├── sessionContext.ts │ │ │ ├── types.ts │ │ │ ├── useClaimValue.ts │ │ │ ├── useSessionContext.ts │ │ │ └── utils.ts │ │ ├── thirdparty │ │ │ ├── componentOverrideContext.tsx │ │ │ ├── components │ │ │ │ ├── features │ │ │ │ │ ├── signInAndUp │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── signInAndUpCallback │ │ │ │ │ │ └── index.tsx │ │ │ │ ├── library │ │ │ │ │ └── providerButton.tsx │ │ │ │ └── themes │ │ │ │ │ ├── signInAndUp │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── providersForm.tsx │ │ │ │ │ ├── signInAndUpCallback │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── styles.css │ │ │ │ │ ├── themeBase.tsx │ │ │ │ │ └── translations.ts │ │ │ ├── constants.tsx │ │ │ ├── functionOverrides.ts │ │ │ ├── index.ts │ │ │ ├── prebuiltui.tsx │ │ │ ├── providers │ │ │ │ ├── activeDirectory.tsx │ │ │ │ ├── apple.tsx │ │ │ │ ├── bitbucket.tsx │ │ │ │ ├── boxySaml.tsx │ │ │ │ ├── custom.tsx │ │ │ │ ├── discord.tsx │ │ │ │ ├── facebook.tsx │ │ │ │ ├── github.tsx │ │ │ │ ├── gitlab.tsx │ │ │ │ ├── google.tsx │ │ │ │ ├── googleWorkspaces.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── linkedIn.tsx │ │ │ │ ├── okta.tsx │ │ │ │ ├── twitter.tsx │ │ │ │ └── types.ts │ │ │ ├── recipe.tsx │ │ │ ├── types.ts │ │ │ └── utils.ts │ │ ├── totp │ │ │ ├── componentOverrideContext.tsx │ │ │ ├── components │ │ │ │ ├── features │ │ │ │ │ └── mfa │ │ │ │ │ │ └── index.tsx │ │ │ │ └── themes │ │ │ │ │ ├── mfa │ │ │ │ │ ├── blockedScreen.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── loadingScreen.tsx │ │ │ │ │ ├── retryButton.tsx │ │ │ │ │ ├── totpCodeForm.tsx │ │ │ │ │ ├── totpCodeVerificationFooter.tsx │ │ │ │ │ ├── totpCodeVerificationHeader.tsx │ │ │ │ │ ├── totpDeviceInfoSection.tsx │ │ │ │ │ ├── totpDeviceSetupFooter.tsx │ │ │ │ │ └── totpDeviceSetupHeader.tsx │ │ │ │ │ ├── styles.css │ │ │ │ │ ├── themeBase.tsx │ │ │ │ │ └── translations.ts │ │ │ ├── constants.ts │ │ │ ├── functionOverrides.ts │ │ │ ├── index.ts │ │ │ ├── prebuiltui.tsx │ │ │ ├── recipe.tsx │ │ │ ├── types.ts │ │ │ └── utils.ts │ │ ├── userroles │ │ │ └── index.ts │ │ └── webauthn │ │ │ ├── componentOverrideContext.tsx │ │ │ ├── components │ │ │ ├── features │ │ │ │ ├── recoverAccountWithToken │ │ │ │ │ └── index.tsx │ │ │ │ ├── sendRecoveryEmail │ │ │ │ │ └── index.tsx │ │ │ │ ├── signIn │ │ │ │ │ └── index.tsx │ │ │ │ └── signUp │ │ │ │ │ └── index.tsx │ │ │ └── themes │ │ │ │ ├── continueWithPasskey │ │ │ │ └── index.tsx │ │ │ │ ├── error │ │ │ │ └── passkeyNotSupportedError.tsx │ │ │ │ ├── recoverAccountWithToken │ │ │ │ ├── index.tsx │ │ │ │ └── success.tsx │ │ │ │ ├── sendRecoveryEmail │ │ │ │ ├── emailSent.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── recoverAccountForm.tsx │ │ │ │ ├── signIn │ │ │ │ └── index.tsx │ │ │ │ ├── signUp │ │ │ │ ├── confirmation.tsx │ │ │ │ ├── continueWithoutPasskey.tsx │ │ │ │ ├── featureBlocks.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── signUpForm.tsx │ │ │ │ └── somethingWentWrong.tsx │ │ │ │ ├── styles.css │ │ │ │ ├── themeBase.tsx │ │ │ │ └── translations.ts │ │ │ ├── constants.ts │ │ │ ├── functionOverrides.ts │ │ │ ├── index.ts │ │ │ ├── prebuiltui.tsx │ │ │ ├── recipe.tsx │ │ │ ├── types.ts │ │ │ └── utils.ts │ ├── styles │ │ └── styles.css │ ├── superTokens.tsx │ ├── translation │ │ ├── translationContext.tsx │ │ ├── translationHelpers.ts │ │ └── translations.ts │ ├── types.ts │ ├── ui │ │ ├── index.tsx │ │ └── types.ts │ ├── usercontext │ │ ├── index.tsx │ │ └── userContextWrapper.tsx │ ├── utils.ts │ └── version.ts ├── tsconfig.json ├── tsconfig_dev.json └── tslint.json ├── other ├── checkTranslationKeys.js ├── page.screen.code-snippets └── rollup-plugin-css-string-import.mjs ├── package-lock.json ├── package.json ├── recipe ├── emailpassword │ ├── index.d.ts │ ├── index.js │ ├── prebuiltui.d.ts │ └── prebuiltui.js ├── emailverification │ ├── index.d.ts │ ├── index.js │ ├── prebuiltui.d.ts │ └── prebuiltui.js ├── multifactorauth │ ├── index.d.ts │ ├── index.js │ ├── prebuiltui.d.ts │ └── prebuiltui.js ├── multitenancy │ ├── index.d.ts │ └── index.js ├── oauth2provider │ ├── index.d.ts │ ├── index.js │ ├── prebuiltui.d.ts │ └── prebuiltui.js ├── passwordless │ ├── index.d.ts │ ├── index.js │ ├── prebuiltui.d.ts │ └── prebuiltui.js ├── session │ ├── index.d.ts │ ├── index.js │ ├── prebuiltui.d.ts │ └── prebuiltui.js ├── thirdparty │ ├── index.d.ts │ ├── index.js │ ├── prebuiltui.d.ts │ └── prebuiltui.js ├── totp │ ├── index.d.ts │ ├── index.js │ ├── prebuiltui.d.ts │ └── prebuiltui.js ├── userroles │ ├── index.d.ts │ └── index.js └── webauthn │ ├── index.d.ts │ ├── index.js │ ├── prebuiltui.d.ts │ └── prebuiltui.js ├── rollup.config.mjs ├── runExample.sh ├── stories ├── allrecipes.stories.tsx ├── authPage.stories.tsx ├── emailpassword.stories.tsx ├── emailverification.stories.tsx ├── errorBoundary.tsx ├── factorChooser.stories.tsx ├── oauth2provider.stories.tsx ├── otpMFA.stories.tsx ├── passwordless.stories.tsx ├── thirdparty.stories.tsx ├── thirdpartyemailpassword.stories.tsx ├── thirdpartypasswordless.stories.tsx ├── totpMFA.stories.tsx └── utils.ts ├── test ├── .env.example.js ├── .env.js ├── constants.js ├── end-to-end │ ├── accountlinking.test.js │ ├── emailverification.test.js │ ├── embed.test.js │ ├── generalerror.test.js │ ├── getRedirectionURL.test.js │ ├── mfa.chooserscreen.test.js │ ├── mfa.default_reqs.test.js │ ├── mfa.factorscreen.otp.test.js │ ├── mfa.factorscreen.totp.test.js │ ├── mfa.firstFactors.test.js │ ├── mfa.helpers.js │ ├── mfa.requirement_handling.test.js │ ├── mfa.signin.test.js │ ├── multitenancy.dynamic_login_methods.test.js │ ├── multitenancy.mock.test.js │ ├── multitenancy.tenant_interactions.test.js │ ├── oauth2provider.test.js │ ├── pages │ │ ├── AuthPage.js │ │ ├── EmailVerificationPage.js │ │ ├── Page.js │ │ └── ResetPasswordPage.js │ ├── passwordless.allrecipes.email.test.js │ ├── passwordless.allrecipes.email_or_phone.test.js │ ├── passwordless.allrecipes.phone.test.js │ ├── passwordless.email.test.js │ ├── passwordless.email_or_phone.test.js │ ├── passwordless.phone.test.js │ ├── passwordless.test_gen.js │ ├── refresherrors.test.js │ ├── resetpasswordusingtoken.test.js │ ├── routing.test.js │ ├── signin-rrdv5.test.js │ ├── signin-rrdv6.test.js │ ├── signin.test.js │ ├── signup.test.js │ ├── thirdparty.test.js │ ├── thirdpartyemailpassword.test.js │ ├── thirdpartypasswordless.pwless.email.test.js │ ├── thirdpartypasswordless.pwless.email_or_phone.test.js │ ├── thirdpartypasswordless.pwless.phone.test.js │ ├── thirdpartypasswordless.test.js │ ├── thirdpartypasswordless.tp.test.js │ ├── userContext.test.js │ ├── userroles.test.js │ ├── webauthn.helpers.js │ ├── webauthn.recover_account.test.js │ ├── webauthn.recovery_email.test.js │ ├── webauthn.signin.test.js │ └── webauthn.signup.test.js ├── exampleTestHelpers.js ├── findExamplesWithTests.sh ├── helpers.js ├── prepTestApp.sh ├── server │ ├── .env │ ├── .env.example │ ├── .gitignore │ ├── index.js │ ├── package-lock.json │ ├── package.json │ ├── utils.js │ └── webauthn │ │ ├── wasm_exec.js │ │ └── webauthn.wasm ├── startTestApp.sh ├── test.mocha.env.js ├── unit │ ├── authPage.test.tsx │ ├── componentOverrides.test.tsx │ ├── components │ │ └── componentOverride │ │ │ └── withOverride.test.tsx │ ├── css.d.ts │ ├── dateProvider.test.ts │ ├── exports.test.tsx │ ├── index.test.ts │ ├── mockStyle.js │ ├── recipe │ │ ├── emailpassword │ │ │ ├── emailPassword.test.tsx │ │ │ ├── signInUp.test.tsx │ │ │ ├── utils.test.ts │ │ │ └── validators.test.ts │ │ ├── passwordless │ │ │ ├── passwordless.test.ts │ │ │ └── signInUp.test.tsx │ │ ├── session │ │ │ ├── sessionAuth.test.tsx │ │ │ └── utils.unit.test.ts │ │ └── thirdparty │ │ │ ├── signInUp.test.tsx │ │ │ └── thirdParty.test.ts │ ├── selectComponentsToCoverAllFirstFactors.test.ts │ ├── ssr.test.tsx │ ├── tsconfig.test.json │ └── utils.test.tsx ├── updateExampleAppDeps.sh ├── visual │ └── basic.test.js ├── waitForServerStartup.sh └── with-typescript │ ├── .env │ ├── .gitignore │ ├── README.md │ ├── package-lock.json │ ├── package.json │ ├── public │ ├── _redirects │ ├── background.svg │ ├── favicon.ico │ ├── index.html │ ├── logo192.png │ ├── logo512.png │ ├── manifest.json │ └── robots.txt │ ├── src │ ├── App.css │ ├── App.test.tsx │ ├── App.tsx │ ├── Footer │ │ └── index.tsx │ ├── Home │ │ ├── CallAPIView.tsx │ │ ├── Logout.tsx │ │ ├── SuccessView.tsx │ │ └── index.tsx │ ├── Themes │ │ ├── Dark.ts │ │ ├── Helium.ts │ │ └── Hydrogen.ts │ ├── index.css │ ├── index.tsx │ ├── logo.svg │ ├── react-app-env.d.ts │ ├── reportWebVitals.ts │ └── setupTests.ts │ └── tsconfig.json ├── ui ├── index.d.ts └── index.js ├── utils └── dateProvider │ ├── index.d.ts │ ├── index.js │ ├── types.d.ts │ └── types.js └── webJsInterfaceSupported.json /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | "@babel/preset-env", 4 | [ 5 | "@babel/preset-typescript", 6 | { 7 | "allExtensions": true, 8 | "isTSX": true 9 | } 10 | ], 11 | ["@babel/preset-react", { "runtime": "automatic" }] 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /.circleci/generateConfig.sh: -------------------------------------------------------------------------------- 1 | frontendDriverJson=`cat ../frontendDriverInterfaceSupported.json` 2 | frontendDriverArray=`echo $frontendDriverJson | jq ".versions"` 3 | 4 | if [ -z "$SUPERTOKENS_API_KEY" ]; then 5 | echo "SUPERTOKENS_API_KEY missing" 6 | exit 1; 7 | fi 8 | 9 | sed -i -e 's/fdi-version: placeholder/fdi-version: '`printf "%q" $frontendDriverArray`'/' config_continue.yml 10 | -------------------------------------------------------------------------------- /.circleci/installJava.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | wget https://download.java.net/java/GA/jdk15.0.1/51f4f36ad4ef43e39d0dfdbaf6549e32/9/GPL/openjdk-15.0.1_linux-x64_bin.tar.gz 4 | mkdir /usr/java 5 | mv openjdk-15.0.1_linux-x64_bin.tar.gz /usr/java 6 | cd /usr/java 7 | tar -xzvf openjdk-15.0.1_linux-x64_bin.tar.gz 8 | rm openjdk-15.0.1_linux-x64_bin.tar.gz 9 | ln -s /usr/java/jdk-15.0.1/bin/java /usr/bin/java 10 | ln -s /usr/java/jdk-15.0.1/bin/javac /usr/bin/javac -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | lib/build/**/* linguist-generated=true -------------------------------------------------------------------------------- /.github/helpers/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | package-lock.json 3 | -------------------------------------------------------------------------------- /.github/helpers/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "helpers", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "axios": "^0.26.1", 14 | "github-workflow-helpers": "github:supertokens/github-workflow-helpers" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | .DS_Store 3 | /.history 4 | .vscode 5 | .idea 6 | coverage 7 | apiPassword 8 | releasePassword 9 | screenshot.jpeg 10 | /examples/**/**/package-lock.json 11 | /examples/**/**/yarn.lock 12 | /examples/**/package-lock.json 13 | /examples/**/yarn.lock 14 | /eslint/node_modules 15 | /test_report/ 16 | supertokens-auth-react-*.tgz 17 | **/node_modules 18 | stats.html 19 | -------------------------------------------------------------------------------- /.mocharc.yml: -------------------------------------------------------------------------------- 1 | spec: 2 | - test/unit/**/*.test.js 3 | - test/end-to-end/**/*.test.js 4 | reporter: spec 5 | slow: 20000 6 | timeout: 30000 7 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | docs/ -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "tabWidth": 4, 3 | "semi": true, 4 | "singleQuote": false, 5 | "printWidth": 120, 6 | "jsxBracketSameLine": true 7 | } 8 | -------------------------------------------------------------------------------- /.storybook/preview.ts: -------------------------------------------------------------------------------- 1 | import type { Preview } from "@storybook/react"; 2 | 3 | const preview: Preview = { 4 | parameters: { 5 | actions: { argTypesRegex: "^(w+.)*on[A-Z].*" }, 6 | controls: { 7 | matchers: { 8 | color: /(background|color)$/i, 9 | date: /Date$/i, 10 | boolean: /(is|show|loaded)/i, 11 | }, 12 | }, 13 | }, 14 | }; 15 | 16 | export default preview; 17 | -------------------------------------------------------------------------------- /docs/.nojekyll: -------------------------------------------------------------------------------- 1 | TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false. -------------------------------------------------------------------------------- /docs/assets/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/docs/assets/icons.png -------------------------------------------------------------------------------- /docs/assets/icons@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/docs/assets/icons@2x.png -------------------------------------------------------------------------------- /docs/assets/widgets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/docs/assets/widgets.png -------------------------------------------------------------------------------- /docs/assets/widgets@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/docs/assets/widgets@2x.png -------------------------------------------------------------------------------- /eslint/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "eslint-plugin-supertokens-auth-react", 3 | "version": "1.0.0", 4 | "main": "index.js" 5 | } 6 | -------------------------------------------------------------------------------- /examples/for-tests-react-16/.env: -------------------------------------------------------------------------------- 1 | SKIP_PREFLIGHT_CHECK=true -------------------------------------------------------------------------------- /examples/for-tests-react-16/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /examples/for-tests-react-16/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/for-tests-react-16/public/favicon.ico -------------------------------------------------------------------------------- /examples/for-tests-react-16/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/for-tests-react-16/public/logo192.png -------------------------------------------------------------------------------- /examples/for-tests-react-16/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/for-tests-react-16/public/logo512.png -------------------------------------------------------------------------------- /examples/for-tests-react-16/src/App.css: -------------------------------------------------------------------------------- 1 | .App { 2 | display: flex; 3 | flex-direction: column; 4 | justify-content: stretch; 5 | width: 100vw; 6 | height: 100vh; 7 | } 8 | 9 | .fill { 10 | display: flex; 11 | flex-direction: column; 12 | align-items: center; 13 | justify-content: center; 14 | flex: 1 1 auto; 15 | } 16 | 17 | .footer { 18 | align-self: "flex-end"; 19 | } 20 | -------------------------------------------------------------------------------- /examples/for-tests-react-16/src/index.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import ReactDOM from "react-dom"; 3 | import "./index.css"; 4 | import App from "./App"; 5 | 6 | ReactDOM.render( 7 | 8 | 9 | , 10 | document.getElementById("root") 11 | ); 12 | -------------------------------------------------------------------------------- /examples/for-tests-react-16/src/logWithPrefix.js: -------------------------------------------------------------------------------- 1 | export const logWithPrefix = (prefix) => (postfix) => console.log(`${prefix} ${postfix}`); 2 | -------------------------------------------------------------------------------- /examples/for-tests/.env: -------------------------------------------------------------------------------- 1 | SKIP_PREFLIGHT_CHECK=true -------------------------------------------------------------------------------- /examples/for-tests/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /examples/for-tests/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/for-tests/public/favicon.ico -------------------------------------------------------------------------------- /examples/for-tests/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/for-tests/public/logo192.png -------------------------------------------------------------------------------- /examples/for-tests/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/for-tests/public/logo512.png -------------------------------------------------------------------------------- /examples/for-tests/src/App.css: -------------------------------------------------------------------------------- 1 | .App { 2 | display: flex; 3 | flex-direction: column; 4 | justify-content: stretch; 5 | width: 100vw; 6 | height: 100vh; 7 | } 8 | 9 | .fill { 10 | display: flex; 11 | flex-direction: column; 12 | align-items: center; 13 | justify-content: center; 14 | flex: 1 1 auto; 15 | } 16 | 17 | .footer { 18 | align-self: "flex-end"; 19 | } 20 | -------------------------------------------------------------------------------- /examples/for-tests/src/index.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { createRoot } from "react-dom/client"; 3 | import "./index.css"; 4 | import App from "./App"; 5 | 6 | createRoot(document.getElementById("root")).render( 7 | 8 | 9 | 10 | ); 11 | -------------------------------------------------------------------------------- /examples/for-tests/src/logWithPrefix.js: -------------------------------------------------------------------------------- 1 | export const logWithPrefix = (prefix) => (postfix) => console.log(`${prefix} ${postfix}`); 2 | -------------------------------------------------------------------------------- /examples/with-account-linking/frontend/.env: -------------------------------------------------------------------------------- 1 | SKIP_PREFLIGHT_CHECK=true -------------------------------------------------------------------------------- /examples/with-account-linking/frontend/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /examples/with-account-linking/frontend/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-account-linking/frontend/public/favicon.ico -------------------------------------------------------------------------------- /examples/with-account-linking/frontend/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /examples/with-account-linking/frontend/src/assets/fonts/MenloRegular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-account-linking/frontend/src/assets/fonts/MenloRegular.ttf -------------------------------------------------------------------------------- /examples/with-account-linking/frontend/src/assets/images/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-account-linking/frontend/src/assets/images/background.png -------------------------------------------------------------------------------- /examples/with-account-linking/frontend/src/assets/images/index.ts: -------------------------------------------------------------------------------- 1 | import SeparatorLine from "./separator-line.svg"; 2 | import ArrowRight from "./arrow-right-icon.svg"; 3 | import SignOutIcon from "./sign-out-icon.svg"; 4 | import GuideIcon from "./guide-icon.svg"; 5 | import BlogsIcon from "./blogs-icon.svg"; 6 | import CelebrateIcon from "./celebrate-icon.svg"; 7 | 8 | export { SeparatorLine, ArrowRight, SignOutIcon, GuideIcon, BlogsIcon, CelebrateIcon }; 9 | -------------------------------------------------------------------------------- /examples/with-account-linking/frontend/src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", 4 | "Droid Sans", "Helvetica Neue", sans-serif; 5 | -webkit-font-smoothing: antialiased; 6 | -moz-osx-font-smoothing: grayscale; 7 | } 8 | 9 | code { 10 | font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace; 11 | } 12 | -------------------------------------------------------------------------------- /examples/with-account-linking/frontend/src/index.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import ReactDOM from "react-dom/client"; 3 | import "./index.css"; 4 | import App from "./App"; 5 | 6 | const root = ReactDOM.createRoot(document.getElementById("root") as HTMLElement); 7 | root.render( 8 | 9 | 10 | 11 | ); 12 | -------------------------------------------------------------------------------- /examples/with-account-linking/frontend/src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /examples/with-aws-lambda/README.md: -------------------------------------------------------------------------------- 1 | Please refer to [this](https://github.com/supertokens/supertokens-node/blob/master/examples/aws/with-emailpassword) example to set up SuperTokens with AWS Lambda. 2 | -------------------------------------------------------------------------------- /examples/with-cli-login/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /examples/with-cli-login/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-cli-login/public/favicon.ico -------------------------------------------------------------------------------- /examples/with-cli-login/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-cli-login/public/logo192.png -------------------------------------------------------------------------------- /examples/with-cli-login/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-cli-login/public/logo512.png -------------------------------------------------------------------------------- /examples/with-cli-login/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /examples/with-cli-login/src/App.test.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { render, screen } from "@testing-library/react"; 3 | import App from "./App"; 4 | 5 | test("renders learn react link", () => { 6 | render(); 7 | const linkElement = screen.getByText(/learn react/i); 8 | expect(linkElement).toBeInTheDocument(); 9 | }); 10 | -------------------------------------------------------------------------------- /examples/with-cli-login/src/SessionExpiredPopup/index.tsx: -------------------------------------------------------------------------------- 1 | import { useEffect } from "react"; 2 | import { redirectToAuth } from "supertokens-auth-react"; 3 | 4 | export default function SessionExpiredPopup() { 5 | useEffect(() => { 6 | window.alert("Session Expired. Please login again"); 7 | redirectToAuth(); 8 | }, []); 9 | 10 | return null; 11 | } 12 | -------------------------------------------------------------------------------- /examples/with-cli-login/src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", 4 | "Droid Sans", "Helvetica Neue", sans-serif; 5 | -webkit-font-smoothing: antialiased; 6 | -moz-osx-font-smoothing: grayscale; 7 | } 8 | 9 | code { 10 | font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace; 11 | } 12 | -------------------------------------------------------------------------------- /examples/with-cli-login/src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /examples/with-cli-login/src/setupTests.ts: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import "@testing-library/jest-dom"; 6 | -------------------------------------------------------------------------------- /examples/with-emailpassword-vercel/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:lts-alpine3.12 2 | 3 | RUN apk add curl 4 | 5 | WORKDIR /usr/src/app 6 | 7 | RUN npm i -g pm2 8 | 9 | USER node 10 | 11 | CMD ["pm2-docker", "start", "pm2.json"] 12 | 13 | EXPOSE 10000 14 | 15 | EXPOSE 10001 -------------------------------------------------------------------------------- /examples/with-emailpassword-vercel/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-emailpassword-vercel/public/favicon.ico -------------------------------------------------------------------------------- /examples/with-emailpassword-vercel/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-emailpassword-vercel/public/logo192.png -------------------------------------------------------------------------------- /examples/with-emailpassword-vercel/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-emailpassword-vercel/public/logo512.png -------------------------------------------------------------------------------- /examples/with-emailpassword-vercel/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /examples/with-emailpassword-vercel/scripts/start_container.sh: -------------------------------------------------------------------------------- 1 | docker run -d \ 2 | --restart=always \ 3 | --name demo-app \ 4 | --label name=demo-app \ 5 | --label type=app \ 6 | --label mode=production \ 7 | --volume /home/ubuntu/supertokens-auth-react/examples/with-emailpassword:/usr/src/app \ 8 | --publish 10000:10000 \ 9 | --publish 10001:10001 \ 10 | supertokens/demo -------------------------------------------------------------------------------- /examples/with-emailpassword-vercel/src/App.test.js: -------------------------------------------------------------------------------- 1 | import { render, screen } from "@testing-library/react"; 2 | import App from "./App"; 3 | 4 | test("renders learn react link", () => { 5 | render(); 6 | const linkElement = screen.getByText(/learn react/i); 7 | expect(linkElement).toBeInTheDocument(); 8 | }); 9 | -------------------------------------------------------------------------------- /examples/with-emailpassword-vercel/src/SessionExpiredPopup/index.jsx: -------------------------------------------------------------------------------- 1 | import { useEffect } from "react"; 2 | import { redirectToAuth } from "supertokens-auth-react"; 3 | 4 | export default function SessionExpiredPopup() { 5 | useEffect(() => { 6 | window.alert("Session Expired. Please login again"); 7 | redirectToAuth(); 8 | }, []); 9 | 10 | return null; 11 | } 12 | -------------------------------------------------------------------------------- /examples/with-emailpassword-vercel/src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", 4 | "Droid Sans", "Helvetica Neue", sans-serif; 5 | -webkit-font-smoothing: antialiased; 6 | -moz-osx-font-smoothing: grayscale; 7 | } 8 | 9 | code { 10 | font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace; 11 | } 12 | -------------------------------------------------------------------------------- /examples/with-emailpassword-vercel/src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import "@testing-library/jest-dom"; 6 | -------------------------------------------------------------------------------- /examples/with-emailpassword-vercel/vercel.json: -------------------------------------------------------------------------------- 1 | { 2 | "rewrites": [{ "source": "/api/(.*)", "destination": "/api" }] 3 | } 4 | -------------------------------------------------------------------------------- /examples/with-emailpassword/README.md: -------------------------------------------------------------------------------- 1 | ![SuperTokens banner](https://raw.githubusercontent.com/supertokens/supertokens-logo/master/images/Artboard%20%E2%80%93%2027%402x.png) 2 | 3 | # SuperTokens EmailPassword Demo app 4 | 5 | To get this demo app, please run the following command: 6 | 7 | ```bash 8 | npx create-supertokens-app@latest --recipe=emailpassword 9 | ``` 10 | -------------------------------------------------------------------------------- /examples/with-emailverification-then-password-thirdpartyemailpassword/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:lts-alpine3.12 2 | 3 | RUN apk add curl 4 | 5 | WORKDIR /usr/src/app 6 | 7 | RUN npm i -g pm2 8 | 9 | USER node 10 | 11 | CMD ["pm2-docker", "start", "pm2.json"] 12 | 13 | EXPOSE 10000 14 | 15 | EXPOSE 10001 -------------------------------------------------------------------------------- /examples/with-emailverification-then-password-thirdpartyemailpassword/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-emailverification-then-password-thirdpartyemailpassword/public/favicon.ico -------------------------------------------------------------------------------- /examples/with-emailverification-then-password-thirdpartyemailpassword/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-emailverification-then-password-thirdpartyemailpassword/public/logo192.png -------------------------------------------------------------------------------- /examples/with-emailverification-then-password-thirdpartyemailpassword/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-emailverification-then-password-thirdpartyemailpassword/public/logo512.png -------------------------------------------------------------------------------- /examples/with-emailverification-then-password-thirdpartyemailpassword/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /examples/with-emailverification-then-password-thirdpartyemailpassword/scripts/start_container.sh: -------------------------------------------------------------------------------- 1 | docker run -d \ 2 | --restart=always \ 3 | --name demo-app-thirdpartyemailpassword \ 4 | --label name=demo-app-thirdpartyemailpassword \ 5 | --volume /home/ubuntu/supertokens-auth-react/examples/with-thirdpartyemailpassword:/usr/src/app \ 6 | --publish 10004:10000 \ 7 | --publish 10005:10001 \ 8 | supertokens/demo -------------------------------------------------------------------------------- /examples/with-emailverification-then-password-thirdpartyemailpassword/src/App.test.js: -------------------------------------------------------------------------------- 1 | import { render, screen } from "@testing-library/react"; 2 | import App from "./App"; 3 | 4 | test("renders learn react link", () => { 5 | render(); 6 | const linkElement = screen.getByText(/learn react/i); 7 | expect(linkElement).toBeInTheDocument(); 8 | }); 9 | -------------------------------------------------------------------------------- /examples/with-emailverification-then-password-thirdpartyemailpassword/src/SessionExpiredPopup/index.js: -------------------------------------------------------------------------------- 1 | import { useEffect } from "react"; 2 | import { redirectToAuth } from "supertokens-auth-react"; 3 | 4 | export default function SessionExpiredPopup() { 5 | useEffect(() => { 6 | window.alert("Session Expired. Please login again"); 7 | redirectToAuth(); 8 | }, []); 9 | 10 | return null; 11 | } 12 | -------------------------------------------------------------------------------- /examples/with-emailverification-then-password-thirdpartyemailpassword/src/realPasswordClaim.js: -------------------------------------------------------------------------------- 1 | import { BooleanClaim } from "supertokens-auth-react/recipe/session"; 2 | 3 | export const RealPasswordClaim = new BooleanClaim({ 4 | id: "uses-real-password", 5 | refresh: async () => { 6 | // This is something we have no way of refreshing, so this is a no-op 7 | }, 8 | onFailureRedirection: () => "/set-password?show=signup", 9 | }); 10 | -------------------------------------------------------------------------------- /examples/with-emailverification-then-password-thirdpartyemailpassword/src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import "@testing-library/jest-dom"; 6 | -------------------------------------------------------------------------------- /examples/with-emailverification-with-otp/.env.example: -------------------------------------------------------------------------------- 1 | NODEMAILER_USER= 2 | NODEMAILER_PASSWORD= -------------------------------------------------------------------------------- /examples/with-emailverification-with-otp/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | .env 4 | 5 | # dependencies 6 | /node_modules 7 | /.pnp 8 | .pnp.js 9 | 10 | # testing 11 | /coverage 12 | 13 | # production 14 | /build 15 | 16 | # misc 17 | .DS_Store 18 | .env.local 19 | .env.development.local 20 | .env.test.local 21 | .env.production.local 22 | 23 | npm-debug.log* 24 | yarn-debug.log* 25 | yarn-error.log* 26 | -------------------------------------------------------------------------------- /examples/with-emailverification-with-otp/images/emailverification-with-otp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-emailverification-with-otp/images/emailverification-with-otp.png -------------------------------------------------------------------------------- /examples/with-emailverification-with-otp/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-emailverification-with-otp/public/favicon.ico -------------------------------------------------------------------------------- /examples/with-emailverification-with-otp/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-emailverification-with-otp/public/logo192.png -------------------------------------------------------------------------------- /examples/with-emailverification-with-otp/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-emailverification-with-otp/public/logo512.png -------------------------------------------------------------------------------- /examples/with-emailverification-with-otp/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /examples/with-emailverification-with-otp/src/App.test.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { render, screen } from "@testing-library/react"; 3 | import App from "./App"; 4 | 5 | test("renders learn react link", () => { 6 | render(); 7 | const linkElement = screen.getByText(/learn react/i); 8 | expect(linkElement).toBeInTheDocument(); 9 | }); 10 | -------------------------------------------------------------------------------- /examples/with-emailverification-with-otp/src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", 4 | "Droid Sans", "Helvetica Neue", sans-serif; 5 | -webkit-font-smoothing: antialiased; 6 | -moz-osx-font-smoothing: grayscale; 7 | } 8 | 9 | code { 10 | font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace; 11 | } 12 | -------------------------------------------------------------------------------- /examples/with-emailverification-with-otp/src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /examples/with-emailverification-with-otp/src/setupTests.ts: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import "@testing-library/jest-dom"; 6 | -------------------------------------------------------------------------------- /examples/with-hash-router/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | package-lock.json -------------------------------------------------------------------------------- /examples/with-hash-router/frontend/.env: -------------------------------------------------------------------------------- 1 | SKIP_PREFLIGHT_CHECK=true -------------------------------------------------------------------------------- /examples/with-hash-router/frontend/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /examples/with-hash-router/frontend/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-hash-router/frontend/public/favicon.ico -------------------------------------------------------------------------------- /examples/with-hash-router/frontend/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /examples/with-hash-router/frontend/src/assets/fonts/MenloRegular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-hash-router/frontend/src/assets/fonts/MenloRegular.ttf -------------------------------------------------------------------------------- /examples/with-hash-router/frontend/src/assets/images/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-hash-router/frontend/src/assets/images/background.png -------------------------------------------------------------------------------- /examples/with-hash-router/frontend/src/assets/images/index.ts: -------------------------------------------------------------------------------- 1 | import SeparatorLine from "./separator-line.svg"; 2 | import ArrowRight from "./arrow-right-icon.svg"; 3 | import SignOutIcon from "./sign-out-icon.svg"; 4 | import GuideIcon from "./guide-icon.svg"; 5 | import BlogsIcon from "./blogs-icon.svg"; 6 | import CelebrateIcon from "./celebrate-icon.svg"; 7 | 8 | export { SeparatorLine, ArrowRight, SignOutIcon, GuideIcon, BlogsIcon, CelebrateIcon }; 9 | -------------------------------------------------------------------------------- /examples/with-hash-router/frontend/src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", 4 | "Droid Sans", "Helvetica Neue", sans-serif; 5 | -webkit-font-smoothing: antialiased; 6 | -moz-osx-font-smoothing: grayscale; 7 | } 8 | 9 | code { 10 | font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace; 11 | } 12 | -------------------------------------------------------------------------------- /examples/with-hash-router/frontend/src/index.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import ReactDOM from "react-dom/client"; 3 | import "./index.css"; 4 | import App from "./App"; 5 | 6 | const root = ReactDOM.createRoot(document.getElementById("root") as HTMLElement); 7 | root.render( 8 | 9 | 10 | 11 | ); 12 | -------------------------------------------------------------------------------- /examples/with-hash-router/frontend/src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /examples/with-hasura-thirdpartyemailpassword/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:lts-alpine3.12 2 | 3 | RUN apk add curl 4 | 5 | WORKDIR /usr/src/app 6 | 7 | RUN npm i -g pm2 8 | 9 | USER node 10 | 11 | CMD ["pm2-docker", "start", "pm2.json"] 12 | 13 | EXPOSE 10000 14 | 15 | EXPOSE 10001 -------------------------------------------------------------------------------- /examples/with-hasura-thirdpartyemailpassword/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-hasura-thirdpartyemailpassword/public/favicon.ico -------------------------------------------------------------------------------- /examples/with-hasura-thirdpartyemailpassword/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-hasura-thirdpartyemailpassword/public/logo192.png -------------------------------------------------------------------------------- /examples/with-hasura-thirdpartyemailpassword/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-hasura-thirdpartyemailpassword/public/logo512.png -------------------------------------------------------------------------------- /examples/with-hasura-thirdpartyemailpassword/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /examples/with-hasura-thirdpartyemailpassword/scripts/start_container.sh: -------------------------------------------------------------------------------- 1 | docker run -d \ 2 | --restart=always \ 3 | --name demo-app-thirdpartyemailpassword \ 4 | --label name=demo-app-thirdpartyemailpassword \ 5 | --volume /home/ubuntu/supertokens-auth-react/examples/with-thirdpartyemailpassword:/usr/src/app \ 6 | --publish 10004:10000 \ 7 | --publish 10005:10001 \ 8 | supertokens/demo -------------------------------------------------------------------------------- /examples/with-hasura-thirdpartyemailpassword/src/App.test.js: -------------------------------------------------------------------------------- 1 | import { render, screen } from "@testing-library/react"; 2 | import App from "./App"; 3 | 4 | test("renders learn react link", () => { 5 | render(); 6 | const linkElement = screen.getByText(/learn react/i); 7 | expect(linkElement).toBeInTheDocument(); 8 | }); 9 | -------------------------------------------------------------------------------- /examples/with-hasura-thirdpartyemailpassword/src/SessionExpiredPopup/index.js: -------------------------------------------------------------------------------- 1 | import { useEffect } from "react"; 2 | import { redirectToAuth } from "supertokens-auth-react"; 3 | 4 | export default function SessionExpiredPopup() { 5 | useEffect(() => { 6 | window.alert("Session Expired. Please login again"); 7 | redirectToAuth(); 8 | }, []); 9 | 10 | return null; 11 | } 12 | -------------------------------------------------------------------------------- /examples/with-hasura-thirdpartyemailpassword/src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", 4 | "Droid Sans", "Helvetica Neue", sans-serif; 5 | -webkit-font-smoothing: antialiased; 6 | -moz-osx-font-smoothing: grayscale; 7 | } 8 | 9 | code { 10 | font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace; 11 | } 12 | -------------------------------------------------------------------------------- /examples/with-hasura-thirdpartyemailpassword/src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import "@testing-library/jest-dom"; 6 | -------------------------------------------------------------------------------- /examples/with-i18next/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:lts-alpine3.12 2 | 3 | RUN apk add curl 4 | 5 | WORKDIR /usr/src/app 6 | 7 | RUN npm i -g pm2 8 | 9 | USER node 10 | 11 | CMD ["pm2-docker", "start", "pm2.json"] 12 | 13 | EXPOSE 10000 14 | 15 | EXPOSE 10001 -------------------------------------------------------------------------------- /examples/with-i18next/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-i18next/public/favicon.ico -------------------------------------------------------------------------------- /examples/with-i18next/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-i18next/public/logo192.png -------------------------------------------------------------------------------- /examples/with-i18next/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-i18next/public/logo512.png -------------------------------------------------------------------------------- /examples/with-i18next/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /examples/with-i18next/scripts/start_container.sh: -------------------------------------------------------------------------------- 1 | docker run -d \ 2 | --restart=always \ 3 | --name demo-app-thirdpartyemailpassword \ 4 | --label name=demo-app-thirdpartyemailpassword \ 5 | --volume /home/ubuntu/supertokens-auth-react/examples/with-thirdpartyemailpassword:/usr/src/app \ 6 | --publish 10004:10000 \ 7 | --publish 10005:10001 \ 8 | supertokens/demo -------------------------------------------------------------------------------- /examples/with-i18next/src/App.test.js: -------------------------------------------------------------------------------- 1 | import { render, screen } from "@testing-library/react"; 2 | import App from "./App"; 3 | 4 | test("renders learn react link", () => { 5 | render(); 6 | const linkElement = screen.getByText(/learn react/i); 7 | expect(linkElement).toBeInTheDocument(); 8 | }); 9 | -------------------------------------------------------------------------------- /examples/with-i18next/src/SessionExpiredPopup/index.js: -------------------------------------------------------------------------------- 1 | import { useEffect } from "react"; 2 | import { redirectToAuth } from "supertokens-auth-react"; 3 | 4 | export default function SessionExpiredPopup() { 5 | useEffect(() => { 6 | window.alert("Session Expired. Please login again"); 7 | redirectToAuth(); 8 | }, []); 9 | 10 | return null; 11 | } 12 | -------------------------------------------------------------------------------- /examples/with-i18next/src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", 4 | "Droid Sans", "Helvetica Neue", sans-serif; 5 | -webkit-font-smoothing: antialiased; 6 | -moz-osx-font-smoothing: grayscale; 7 | } 8 | 9 | code { 10 | font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace; 11 | } 12 | -------------------------------------------------------------------------------- /examples/with-i18next/src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import "@testing-library/jest-dom"; 6 | -------------------------------------------------------------------------------- /examples/with-legacy-2fa/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /examples/with-legacy-2fa/api-server/secondFactorClaim.ts: -------------------------------------------------------------------------------- 1 | import { BooleanClaim } from "supertokens-node/recipe/session/claims"; 2 | 3 | export const SecondFactorClaim = new BooleanClaim({ 4 | fetchValue: () => false, 5 | key: "2fa-completed", 6 | }); 7 | -------------------------------------------------------------------------------- /examples/with-legacy-2fa/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-legacy-2fa/public/favicon.ico -------------------------------------------------------------------------------- /examples/with-legacy-2fa/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-legacy-2fa/public/logo192.png -------------------------------------------------------------------------------- /examples/with-legacy-2fa/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-legacy-2fa/public/logo512.png -------------------------------------------------------------------------------- /examples/with-legacy-2fa/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /examples/with-legacy-2fa/src/App.test.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { render, screen } from "@testing-library/react"; 3 | import App from "./App"; 4 | 5 | test("renders learn react link", () => { 6 | render(); 7 | const linkElement = screen.getByText(/learn react/i); 8 | expect(linkElement).toBeInTheDocument(); 9 | }); 10 | -------------------------------------------------------------------------------- /examples/with-legacy-2fa/src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", 4 | "Droid Sans", "Helvetica Neue", sans-serif; 5 | -webkit-font-smoothing: antialiased; 6 | -moz-osx-font-smoothing: grayscale; 7 | } 8 | 9 | code { 10 | font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace; 11 | } 12 | -------------------------------------------------------------------------------- /examples/with-legacy-2fa/src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /examples/with-legacy-2fa/src/secondFactorClaim.tsx: -------------------------------------------------------------------------------- 1 | import { BooleanClaim } from "supertokens-auth-react/recipe/session"; 2 | 3 | export const SecondFactorClaim = new BooleanClaim({ 4 | id: "2fa-completed", 5 | refresh: async () => { 6 | // This is something we have no way of refreshing, so this is a no-op 7 | }, 8 | onFailureRedirection: () => "/second-factor", 9 | }); 10 | -------------------------------------------------------------------------------- /examples/with-legacy-2fa/src/setupTests.ts: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import "@testing-library/jest-dom"; 6 | -------------------------------------------------------------------------------- /examples/with-localstorage/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | package-lock.json -------------------------------------------------------------------------------- /examples/with-localstorage/frontend/.env: -------------------------------------------------------------------------------- 1 | SKIP_PREFLIGHT_CHECK=true -------------------------------------------------------------------------------- /examples/with-localstorage/frontend/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /examples/with-localstorage/frontend/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-localstorage/frontend/public/favicon.ico -------------------------------------------------------------------------------- /examples/with-localstorage/frontend/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /examples/with-localstorage/frontend/src/assets/fonts/MenloRegular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-localstorage/frontend/src/assets/fonts/MenloRegular.ttf -------------------------------------------------------------------------------- /examples/with-localstorage/frontend/src/assets/images/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-localstorage/frontend/src/assets/images/background.png -------------------------------------------------------------------------------- /examples/with-localstorage/frontend/src/assets/images/index.ts: -------------------------------------------------------------------------------- 1 | import SeparatorLine from "./separator-line.svg"; 2 | import ArrowRight from "./arrow-right-icon.svg"; 3 | import SignOutIcon from "./sign-out-icon.svg"; 4 | import GuideIcon from "./guide-icon.svg"; 5 | import BlogsIcon from "./blogs-icon.svg"; 6 | import CelebrateIcon from "./celebrate-icon.svg"; 7 | 8 | export { SeparatorLine, ArrowRight, SignOutIcon, GuideIcon, BlogsIcon, CelebrateIcon }; 9 | -------------------------------------------------------------------------------- /examples/with-localstorage/frontend/src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", 4 | "Droid Sans", "Helvetica Neue", sans-serif; 5 | -webkit-font-smoothing: antialiased; 6 | -moz-osx-font-smoothing: grayscale; 7 | } 8 | 9 | code { 10 | font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace; 11 | } 12 | -------------------------------------------------------------------------------- /examples/with-localstorage/frontend/src/index.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import ReactDOM from "react-dom/client"; 3 | import "./index.css"; 4 | import App from "./App"; 5 | 6 | const root = ReactDOM.createRoot(document.getElementById("root") as HTMLElement); 7 | root.render( 8 | 9 | 10 | 11 | ); 12 | -------------------------------------------------------------------------------- /examples/with-localstorage/frontend/src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /examples/with-multifactorauth-phone-chooser/frontend/.env: -------------------------------------------------------------------------------- 1 | SKIP_PREFLIGHT_CHECK=true -------------------------------------------------------------------------------- /examples/with-multifactorauth-phone-chooser/frontend/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /examples/with-multifactorauth-phone-chooser/frontend/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-multifactorauth-phone-chooser/frontend/public/favicon.ico -------------------------------------------------------------------------------- /examples/with-multifactorauth-phone-chooser/frontend/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /examples/with-multifactorauth-phone-chooser/frontend/src/assets/fonts/MenloRegular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-multifactorauth-phone-chooser/frontend/src/assets/fonts/MenloRegular.ttf -------------------------------------------------------------------------------- /examples/with-multifactorauth-phone-chooser/frontend/src/assets/images/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-multifactorauth-phone-chooser/frontend/src/assets/images/background.png -------------------------------------------------------------------------------- /examples/with-multifactorauth-phone-chooser/frontend/src/assets/images/index.ts: -------------------------------------------------------------------------------- 1 | import SeparatorLine from "./separator-line.svg"; 2 | import ArrowRight from "./arrow-right-icon.svg"; 3 | import SignOutIcon from "./sign-out-icon.svg"; 4 | import GuideIcon from "./guide-icon.svg"; 5 | import BlogsIcon from "./blogs-icon.svg"; 6 | import CelebrateIcon from "./celebrate-icon.svg"; 7 | 8 | export { SeparatorLine, ArrowRight, SignOutIcon, GuideIcon, BlogsIcon, CelebrateIcon }; 9 | -------------------------------------------------------------------------------- /examples/with-multifactorauth-phone-chooser/frontend/src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", 4 | "Droid Sans", "Helvetica Neue", sans-serif; 5 | -webkit-font-smoothing: antialiased; 6 | -moz-osx-font-smoothing: grayscale; 7 | } 8 | 9 | code { 10 | font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace; 11 | } 12 | -------------------------------------------------------------------------------- /examples/with-multifactorauth-phone-chooser/frontend/src/index.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import ReactDOM from "react-dom/client"; 3 | import "./index.css"; 4 | import App from "./App"; 5 | 6 | const root = ReactDOM.createRoot(document.getElementById("root") as HTMLElement); 7 | root.render( 8 | 9 | 10 | 11 | ); 12 | -------------------------------------------------------------------------------- /examples/with-multifactorauth-phone-chooser/frontend/src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /examples/with-multifactorauth-recovery-codes/frontend/.env: -------------------------------------------------------------------------------- 1 | SKIP_PREFLIGHT_CHECK=true -------------------------------------------------------------------------------- /examples/with-multifactorauth-recovery-codes/frontend/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /examples/with-multifactorauth-recovery-codes/frontend/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-multifactorauth-recovery-codes/frontend/public/favicon.ico -------------------------------------------------------------------------------- /examples/with-multifactorauth-recovery-codes/frontend/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /examples/with-multifactorauth-recovery-codes/frontend/src/assets/fonts/MenloRegular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-multifactorauth-recovery-codes/frontend/src/assets/fonts/MenloRegular.ttf -------------------------------------------------------------------------------- /examples/with-multifactorauth-recovery-codes/frontend/src/assets/images/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-multifactorauth-recovery-codes/frontend/src/assets/images/background.png -------------------------------------------------------------------------------- /examples/with-multifactorauth-recovery-codes/frontend/src/assets/images/index.ts: -------------------------------------------------------------------------------- 1 | import SeparatorLine from "./separator-line.svg"; 2 | import ArrowRight from "./arrow-right-icon.svg"; 3 | import SignOutIcon from "./sign-out-icon.svg"; 4 | import GuideIcon from "./guide-icon.svg"; 5 | import BlogsIcon from "./blogs-icon.svg"; 6 | import CelebrateIcon from "./celebrate-icon.svg"; 7 | 8 | export { SeparatorLine, ArrowRight, SignOutIcon, GuideIcon, BlogsIcon, CelebrateIcon }; 9 | -------------------------------------------------------------------------------- /examples/with-multifactorauth-recovery-codes/frontend/src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", 4 | "Droid Sans", "Helvetica Neue", sans-serif; 5 | -webkit-font-smoothing: antialiased; 6 | -moz-osx-font-smoothing: grayscale; 7 | } 8 | 9 | code { 10 | font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace; 11 | } 12 | -------------------------------------------------------------------------------- /examples/with-multifactorauth-recovery-codes/frontend/src/index.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import ReactDOM from "react-dom/client"; 3 | import "./index.css"; 4 | import App from "./App"; 5 | 6 | const root = ReactDOM.createRoot(document.getElementById("root") as HTMLElement); 7 | root.render( 8 | 9 | 10 | 11 | ); 12 | -------------------------------------------------------------------------------- /examples/with-multifactorauth-recovery-codes/frontend/src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /examples/with-multifactorauth-recovery-codes/frontend/src/recoveryCodeExistsClaim.ts: -------------------------------------------------------------------------------- 1 | import { BooleanClaim } from "supertokens-auth-react/recipe/session"; 2 | 3 | export const RecoveryCodeExistsClaim = new BooleanClaim({ 4 | id: "rc", 5 | refresh: async () => { 6 | // This is something we have no way of refreshing, so this is a no-op 7 | }, 8 | onFailureRedirection: () => "/create-recovery-code", 9 | }); 10 | -------------------------------------------------------------------------------- /examples/with-multifactorauth/README.md: -------------------------------------------------------------------------------- 1 | ![SuperTokens banner](https://raw.githubusercontent.com/supertokens/supertokens-logo/master/images/Artboard%20%E2%80%93%2027%402x.png) 2 | 3 | # SuperTokens Multi-Factor Auth Demo app 4 | 5 | To get this demo app, please run the following command: 6 | 7 | ```bash 8 | npx create-supertokens-app@latest --recipe=multifactorauth 9 | ``` 10 | -------------------------------------------------------------------------------- /examples/with-multiple-email-sign-in/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:lts-alpine3.12 2 | 3 | RUN apk add curl 4 | 5 | WORKDIR /usr/src/app 6 | 7 | RUN npm i -g pm2 8 | 9 | USER node 10 | 11 | CMD ["pm2-docker", "start", "pm2.json"] 12 | 13 | EXPOSE 10000 14 | 15 | EXPOSE 10001 -------------------------------------------------------------------------------- /examples/with-multiple-email-sign-in/api-server/.gitignore: -------------------------------------------------------------------------------- 1 | primaryUserStore.json -------------------------------------------------------------------------------- /examples/with-multiple-email-sign-in/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-multiple-email-sign-in/public/favicon.ico -------------------------------------------------------------------------------- /examples/with-multiple-email-sign-in/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-multiple-email-sign-in/public/logo192.png -------------------------------------------------------------------------------- /examples/with-multiple-email-sign-in/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-multiple-email-sign-in/public/logo512.png -------------------------------------------------------------------------------- /examples/with-multiple-email-sign-in/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /examples/with-multiple-email-sign-in/scripts/start_container.sh: -------------------------------------------------------------------------------- 1 | docker run -d \ 2 | --restart=always \ 3 | --name demo-app-thirdpartyemailpassword \ 4 | --label name=demo-app-thirdpartyemailpassword \ 5 | --volume /home/ubuntu/supertokens-auth-react/examples/with-thirdpartyemailpassword:/usr/src/app \ 6 | --publish 10004:10000 \ 7 | --publish 10005:10001 \ 8 | supertokens/demo -------------------------------------------------------------------------------- /examples/with-multiple-email-sign-in/src/App.test.js: -------------------------------------------------------------------------------- 1 | import { render, screen } from "@testing-library/react"; 2 | import App from "./App"; 3 | 4 | test("renders learn react link", () => { 5 | render(); 6 | const linkElement = screen.getByText(/learn react/i); 7 | expect(linkElement).toBeInTheDocument(); 8 | }); 9 | -------------------------------------------------------------------------------- /examples/with-multiple-email-sign-in/src/SessionExpiredPopup/index.tsx: -------------------------------------------------------------------------------- 1 | import { useEffect } from "react"; 2 | import { redirectToAuth } from "supertokens-auth-react"; 3 | 4 | export default function SessionExpiredPopup() { 5 | useEffect(() => { 6 | window.alert("Session Expired. Please login again"); 7 | redirectToAuth(); 8 | }, []); 9 | 10 | return null; 11 | } 12 | -------------------------------------------------------------------------------- /examples/with-multiple-email-sign-in/src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", 4 | "Droid Sans", "Helvetica Neue", sans-serif; 5 | -webkit-font-smoothing: antialiased; 6 | -moz-osx-font-smoothing: grayscale; 7 | } 8 | 9 | code { 10 | font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace; 11 | } 12 | -------------------------------------------------------------------------------- /examples/with-multiple-email-sign-in/src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /examples/with-multiple-email-sign-in/src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import "@testing-library/jest-dom"; 6 | -------------------------------------------------------------------------------- /examples/with-netlify/.env: -------------------------------------------------------------------------------- 1 | SKIP_PREFLIGHT_CHECK=true -------------------------------------------------------------------------------- /examples/with-netlify/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | .eslintcache 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /examples/with-netlify/.netlify/edge-functions-import-map.json: -------------------------------------------------------------------------------- 1 | { 2 | "imports": { 3 | "@netlify/edge-functions": "https://edge.netlify.com/v1/index.ts", 4 | "netlify:edge": "https://edge.netlify.com/v1/index.ts?v=legacy" 5 | }, 6 | "scopes": {} 7 | } 8 | -------------------------------------------------------------------------------- /examples/with-netlify/netlify.toml: -------------------------------------------------------------------------------- 1 | [build] 2 | publish = "./build/" 3 | command = "npm install && npm run build" 4 | [dev] 5 | functionsPort = 3001 6 | -------------------------------------------------------------------------------- /examples/with-netlify/public/_redirects: -------------------------------------------------------------------------------- 1 | /* /index.html 200 -------------------------------------------------------------------------------- /examples/with-netlify/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-netlify/public/favicon.ico -------------------------------------------------------------------------------- /examples/with-netlify/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-netlify/public/logo192.png -------------------------------------------------------------------------------- /examples/with-netlify/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supertokens/supertokens-auth-react/92c7c1e5ae1952d64c78e96c8cedebfa81fefcab/examples/with-netlify/public/logo512.png -------------------------------------------------------------------------------- /examples/with-netlify/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /examples/with-netlify/server-local.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | const app = require("./netlify/functions/api").app; 4 | 5 | app.listen(8889, () => console.log("Local app listening on port 8889!")); 6 | -------------------------------------------------------------------------------- /examples/with-netlify/src/App.test.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { render, screen } from "@testing-library/react"; 3 | import App from "./App"; 4 | 5 | test("renders learn react link", () => { 6 | render(); 7 | const linkElement = screen.getByText(/learn react/i); 8 | expect(linkElement).toBeInTheDocument(); 9 | }); 10 | -------------------------------------------------------------------------------- /examples/with-netlify/src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", 4 | "Droid Sans", "Helvetica Neue", sans-serif; 5 | -webkit-font-smoothing: antialiased; 6 | -moz-osx-font-smoothing: grayscale; 7 | } 8 | 9 | code { 10 | font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace; 11 | } 12 | -------------------------------------------------------------------------------- /examples/with-netlify/src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /examples/with-netlify/src/setupTests.ts: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import "@testing-library/jest-dom"; 6 | -------------------------------------------------------------------------------- /examples/with-next-iframe/config/appInfo.js: -------------------------------------------------------------------------------- 1 | // const port = process.env.APP_PORT || 3000; 2 | 3 | export const websiteDomain = "https://ea5c-2405-201-b-c8d8-3106-c37c-c4e3-e3e3.ngrok-free.app"; 4 | export const apiBasePath = "/api/auth/"; 5 | export const appInfo = { 6 | appName: "SuperTokens Demo App", 7 | websiteDomain, 8 | apiDomain: websiteDomain, 9 | apiBasePath, 10 | }; 11 | -------------------------------------------------------------------------------- /examples/with-next-iframe/pages/iframe.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { websiteDomain } from "../config/appInfo"; 3 | 4 | export default function iframe() { 5 | return ( 6 |