{"version":3,"file":"signIn-uRJIflwg.js","sources":["../../../app/javascript/src/modules/SignIn/SignInImage.vue","../../../app/javascript/src/modules/SignIn/SignIn.vue","../../../app/javascript/src/modules/SignIn/SignUp.vue","../../../app/javascript/src/modules/SignIn/ResetPassword.vue","../../../app/javascript/src/modules/SignIn/ForgetPassword.vue","../../../app/javascript/src/modules/SignIn/SocialLoginRedirect.vue","../../../app/javascript/src/routers/signIn.js","../../../app/javascript/src/views/SignIn.vue","../../../app/javascript/entrypoints/signIn.js"],"sourcesContent":["<template>\n  <div class=\"devise-form-container__image\">\n    <img src=\"https://assets.tourhero.com/tourhero/pages/home/hero_cover_new.jpg\">\n    <div class=\"image-text\">\n      <h2>Tailor-made <span class=\"red\">group adventures</span></h2>\n      <div class=\"image-description\">With TourHero, you plan the perfect trip–your way.<br>No pre-made itineraries,\n        no rigid schedules.<br>You get full freedom, and we take care of the rest.</div>\n    </div>\n  </div>\n</template>","<template>\n  <div class=\"devise-form-container__form\">\n    <div style=\"width: 100%\">\n      <!-- Social login view -->\n      <div v-if=\"nextAction === 'social_login'\">\n        <h2>{{ t(\"continue_with_social\") }}</h2>\n\n        <div class=\"social-login-message\">\n          {{ t(\"social_login_message\") }}\n        </div>\n\n        <ThirdPartyAuth\n          :providers=\"[providerName]\"\n          :showDivider=\"false\"\n        />\n      </div>\n\n      <!-- Regular sign in view -->\n      <div v-else>\n        <h2> {{ nextAction ? t(\"sign_in\") : t(\"welcome\") }}</h2>\n        <ThirdPartyAuth :providers=\"['google', 'facebook']\" :action=\"nextAction\" />\n        <form id=\"new_user\" name=\"sign_in_form\" method=\"post\" class=\"simple_form devise-form new_user\"\n          action=\"/en/users/sign_in\">\n          <input type=\"hidden\" name=\"authenticity_token\" :value=\"authenticityToken\" />\n          <input type=\"hidden\" name=\"method\" value=\"post\" />\n          <input type=\"hidden\" name=\"redirect_url\" :value=\"redirectUrl\" v-if=\"redirectUrl\" />\n          <input v-if=\"nextAction == 'sign_in'\" type=\"hidden\" name=\"commit\" value=\"Sign In\" />\n          <div class=\"form-inputs-container\">\n            <EmailField v-model=\"email\" />\n\n            <PasswordField v-if=nextAction>\n              <template #hint>\n                <div class=\"sign-in__forgot-password\">\n                  <a :href=\"`${resetPasswordUrl}?email=${encodeURIComponent(email)}`\">{{ t(\"forgot_password\") }}</a>\n                </div>\n              </template>\n            </PasswordField>\n          </div>\n\n          <div v-if=\"nextAction === 'reset_password'\">\n            <div class=\"sign-in__devise-action-info-message\">{{ t(\"reset_password_message\") }}</div>\n          </div>\n          <div v-if=\"errorMessage !== ''\">\n            <div class=\"sign-up__error-message-container\">{{ errorMessage }}</div>\n          </div>\n\n          <div class=\"form-actions\">\n            <Button id=\"sign-in-submit\" form=\"new_user\" type=\"submit\" color=\"secondary\" colorFilled rounded>\n              {{ [\"sign_in\", \"reset_password\"].includes(nextAction) ? t(\"sign_in\") : t('continue') }}\n            </Button>\n          </div>\n\n          <div v-if=\"nextAction\" style=\"width: 100%\">\n            <div class=\"sign-in__optional\">\n              <div class=\"sign-in__or\">\n                <div class=\"sign-in__or-line\"></div>\n                <div class=\"sign-in__or-text\">or</div>\n                <div class=\"sign-in__or-line\"></div>\n              </div>\n              <h3>{{ t(\"go_passwordless\") }}</h3>\n              <p>{{ t(\"send_a_secure_link\") }}</p>\n              <input type=\"hidden\" name=\"request_passwordless_link\" v-model=\"requestPasswordlessLink\" />\n              <Button id=\"sign-in-magic-link\" type=\"submit\" @click=\"requestLink\" color=\"tertiary\" rounded>{{ t(\"email_magic_link\") }}</Button>\n            </div>\n\n            <div v-if=\"nextAction === 'request_passwordless_link'\">\n              <div class=\"sign-in__devise-action-info-message\">{{ t(\"passwordless_link_message\") }}</div>\n            </div>\n          </div>\n        </form>\n      </div>\n    </div>\n  </div>\n  <SignInImage />\n</template>\n\n<script setup>\nimport SignInImage from '@/modules/SignIn/SignInImage.vue'\nimport { getErrorArray } from '@/utils/getErrorMessage.js';\nimport { Button } from '@/components/Theme';\nimport { ref, onMounted, computed } from \"vue\";\nimport { useShared } from \"@/helpers/vueHelpers.js\";\n\nimport { metaTagContent, dataTagContent } from \"@/helpers/documentHelpers.js\";\nimport EmailField from \"@/modules/SignIn/Components/EmailField.vue\";\nimport PasswordField from \"@/modules/SignIn/Components/PasswordField.vue\";\nimport ThirdPartyAuth from \"@/modules/SignIn/Components/ThirdPartyAuth.vue\";\n\nconst { t } = useShared();\n\nconst providerName = computed(() => {\n  const provider = metaTagContent('provider');\n  if (provider === 'google_oauth2') return 'google';\n  return provider || 'google';\n});\n\nconst form = ref(null)\nconst email = ref('');\nconst requestPasswordlessLink = ref('0')\nconst errorMessage = ref('');\nconst nextAction = ref(metaTagContent('nextAction') || \"\")\nconst authenticityToken = ref(metaTagContent('authenticityToken'))\nconst resetPasswordUrl = ref(metaTagContent('resetPasswordUrl'))\nconst redirectUrl = new URLSearchParams(window.location.search).get('redirect_url')\n\nonMounted(() => {\n  form.value = document.forms['sign_in_form']\n  email.value = dataTagContent('sign-in-main-app', 'email') || \"\"\n\n  if (dataTagContent('sign-in-main-app', 'errors')) {\n    const errorJson = JSON.parse(dataTagContent('sign-in-main-app', 'errors'))\n    errorMessage.value = getErrorArray(errorJson).join(', ')\n  }\n})\n\nfunction requestLink() {\n  requestPasswordlessLink.value = '1'\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.form-inputs-container {\n  display: flex;\n  flex-wrap: wrap;\n  width: 100%;\n  row-gap: $spacing-6;\n}\n\n.form-actions {\n  width: 100%;\n\n  @media (min-width: $breakpoint-sm) {\n    width: auto;\n  }\n}\n\n.sign-up__error-message-container {\n  width: 100%;\n  margin-top: $spacing-6;\n  background-color: $brand-secondary-light;\n  border: 1px solid $brand-secondary;\n  border-radius: $spacing-4;\n  padding: $spacing-4;\n}\n\n.sign-in__devise-action-info-message {\n  max-width: none;\n}\n\n.social-login-message {\n  margin: $spacing-6 0;\n}\n</style>\n\n<i18n lang=\"yaml\">\n  en:\n    welcome: Welcome!\n    sign_in: Sign in\n    forgot_password: Forgot your password?\n    reset_password_message: If this account exists, we'll send you a password reset email.\n    go_passwordless: Go passwordless\n    send_a_secure_link: Send a secure link to your email to sign in.\n    email_magic_link: Email me a magic link\n    passwordless_link_message: We've sent a magic link to your email. Please follow the link to sign in.\n    continue: Continue\n    continue_with_social: Continue with social account\n    social_login_message: Looks like you've previously signed in with a social account. Please continue with your social login.\n</i18n>\n","<template>\n  <div class=\"devise-form-container__form\">\n    <div style=\"width: 100%\">\n      <h2 class=\"header\"> {{ t(\"sign_up\") }}</h2>\n\n      <ThirdPartyAuth\n        :providers=\"['google']\"\n        action=\"sign_up\"\n        :showDivider=\"true\"\n      />\n\n      <form id=\"new_user\" v-on:submit.prevent=\"submit\" class=\"simple_form devise-form new_user\" method=\"post\"\n        action=\"/en/users\" accept-charset=\"UTF-8\">\n        <div class=\"form-inputs-container\">\n          <NameField v-model=\"name\" :error=\"errorFields.includes('name')\" />\n\n          <EmailField v-model=\"email\" :error=\"errorFields.includes('email')\" />\n\n          <div class=\"password_with_confirm_container\">\n            <PasswordField\n              label=\"Password\"\n              v-model=\"password\"\n              :error=\"errorFields.includes('password')\"\n              autocomplete=\"new-password\"\n            >\n              <template #hint=\"{ error }\">\n                <div :class=\"error ? 'password-hint-error' : 'password-hint'\">{{ passwordLength }} characters minimum</div>\n              </template>\n            </PasswordField>\n\n            <PasswordField\n              label=\"Password confirmation\"\n              v-model=\"passwordConfirmation\"\n              :error=\"errorFields.includes('password_confirmation')\"\n              autocomplete=\"new-password\"\n            />\n          </div>\n        </div>\n\n        <div v-if=\"errorMessage !== ''\">\n          <div class=\"sign-up__error-message-container\">{{ errorMessage }}</div>\n        </div>\n\n        <div class=\"form-actions\">\n          <Button type=\"submit\" :disabled=\"processing\" color=\"secondary\" colorFilled rounded>{{ t('sign_up') }}</Button>\n        </div>\n\n        <div class=\"sign-up-devise-links\">\n          <div v-for=\"(path, key) in links\" :key=\"key\">\n            <a :href=\"path\">{{ t(key) }}</a><br>\n          </div>\n        </div>\n\n        <RecaptchaTerms />\n      </form>\n    </div>\n  </div>\n  <SignInImage />\n</template>\n\n<script setup>\nimport SignInImage from '@/modules/SignIn/SignInImage.vue'\nimport { Button } from '@/components/Theme';\nimport { ref, onBeforeMount } from \"vue\";\nimport { useShared } from \"@/helpers/vueHelpers.js\";\nimport { useRoute } from \"vue-router\";\nimport { dataTagContent } from \"@/helpers/documentHelpers.js\";\nimport { getErrorFields, getErrorMessagesInSentence } from '@/utils/getErrorMessage.js';\nimport { redirectTo } from \"@/utils/functions.js\";\nimport NameField from \"@/modules/SignIn/Components/NameField.vue\";\nimport EmailField from \"@/modules/SignIn/Components/EmailField.vue\";\nimport PasswordField from \"@/modules/SignIn/Components/PasswordField.vue\";\nimport RecaptchaTerms from \"@/modules/SignIn/Components/RecaptchaTerms.vue\";\nimport ThirdPartyAuth from \"@/modules/SignIn/Components/ThirdPartyAuth.vue\";\nimport { useSignUp } from \"@/utils/auth.js\";\n\nconst { t } = useShared();\nconst route = useRoute()\n\nconst links = ref({})\nconst name = ref('');\nconst email = ref(route.query[\"user[email]\"] ?? \"\");\nconst password = ref('');\nconst passwordConfirmation = ref('');\nconst passwordLength = ref(0)\nconst processing = ref(false)\nconst errorFields = ref([])\nconst errorMessage = ref(\"\")\nconst signUp = useSignUp();\n\nonBeforeMount(() => {\n  passwordLength.value = dataTagContent('sign-in-main-app', 'passwordMinLength')\n  links.value = JSON.parse(dataTagContent('sign-in-main-app', 'deviseLinks'))\n});\n\nconst submit = async () => {\n  try {\n    processing.value = true;\n    const response = await signUp(\n      name.value,\n      email.value,\n      password.value,\n      passwordConfirmation.value,\n      {\n        \"itinerary_request_id\": route.query.itinerary_request_id,\n        \"chatroom_invitation_id\": route.query.chatroom_invitation_id\n      }\n    );\n    const locationUrl = response.headers.get(\"location\");\n    redirectTo(locationUrl || '/travelers/home');\n  } catch (err) {\n    console.log(err);\n    errorFields.value = getErrorFields(err)\n    errorMessage.value = getErrorMessagesInSentence(err);\n  } finally {\n    processing.value = false;\n  }\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.form-inputs-container {\n  display: flex;\n  flex-wrap: wrap;\n  width: 100%;\n  row-gap: $spacing-6;\n\n  &:deep(.input-error) {\n    border-color: $red !important;\n  }\n}\n\n.form-actions {\n  width: 100%;\n\n  @media (min-width: $breakpoint-sm) {\n    width: auto;\n  }\n}\n\n.sign-up__error-message-container {\n  width: 100%;\n  margin-top: $spacing-6;\n  background-color: $brand-secondary-light;\n  border: 1px solid $brand-secondary;\n  border-radius: $spacing-4;\n  padding: $spacing-4;\n}\n\n.password-hint {\n  margin-top: $spacing-2;\n  color: $grey-100\n}\n\n.password-hint-error {\n  margin-top: $spacing-2;\n  color: $red;\n}\n\n.sign-up-devise-links a {\n  font-size: $text-base;\n  color: $green-300;\n\n  &:not(:last-child) {\n    display: inline-block;\n    margin-bottom: $spacing-6;\n  }\n}\n</style>\n\n<i18n lang=\"yaml\">\n  en:\n    sign_up: Sign up\n    email: Email\n    password: Password\n    password_confirmation: Password confirmation\n    sign_in: Have an account? Sign in here\n    registration: Sign Up\n    new_password: Forgot your password?\n    confirmation: Didn't receive confirmation instructions?\n</i18n>\n","<template>\n  <div class=\"devise-form-container__form\">\n    <div style=\"width: 100%\">\n      <h2> {{ t(\"reset_password\") }}</h2>\n\n      <form id=\"change-password\" name=\"change-password_form\" method=\"post\" class=\"simple_form devise-form new_user\" :action=\"changePasswordPath\">\n        <input type=\"hidden\" name=\"_method\" value=\"put\" autocomplete=\"off\" />\n        <input type=\"hidden\" name=\"authenticity_token\" :value=\"authenticityToken\" />\n        <input type=\"hidden\" name=\"user[reset_password_token]\" :value=\"resetPasswordToken\" />\n\n        <div class=\"form-inputs-container\">\n          <div class=\"input password optional user_password\">\n            <div class=\"password_only_container\">\n              <div class=\"password_with_show field_with_hint\">\n                <label class=\"password required form-label__new\" for=\"user_password\">{{ t('new_user_password') }}</label>\n                <input class=\"form-input password required input__new\" autocomplete=\"new-password\" required=\"required\"\n                  aria-required=\"true\" :type=\"showPassword ? 'text' : 'password'\" name=\"user[password]\"\n                  id=\"user_password\" v-model=\"password\" />\n                <div class=\"password-hint\">\n                  {{ passwordLength }} characters minimum</div>\n                <div @click=\"toggleShowPassword\">\n                  <i v-if=\"showPassword\" class=\"icon icon-view-off-1 icon-resized\" />\n                  <i v-else class=\"icon icon-view-1\" />\n                </div>\n              </div>\n            </div>\n          </div>\n\n          <div class=\"input password optional user_password_confirmation\">\n            <div class=\"password_only_container\">\n              <div class=\"password_with_show\">\n                <label class=\"string required form-label__new\" for=\"user_password_confirmation\">{{ t('confirm_new_user_password') }}</label>\n                <input class=\"form-input password optional input__new\" autocomplete=\"current-password\"\n                  :type=\"showPassword ? 'text' : 'password'\" name=\"user[password_confirmation]\"\n                  id=\"user_password_confirmation\" v-model=\"passwordConfirmation\" />\n                <div @click=\"toggleShowPassword\">\n                  <i v-if=\"showPassword\" id=\"password_icon\" class=\"icon icon-view-off-1 icon-resized\" />\n                  <i v-else id=\"password_icon\" class=\"icon icon-view-1\" />\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n        <div v-if=\"errorMessage\">\n          <div class=\"sign-up__error-message-container\">{{ errorMessage }}</div>\n        </div>\n\n        <div class=\"form-actions\">\n          <Button id=\"change-password-submit\" form=\"change-password\" type=\"submit\" color=\"secondary\" colorFilled rounded>\n            {{ t('change_my_password') }}\n          </Button>\n        </div>\n\n        <div class=\"sign-up-devise-links\">\n          <div v-for=\"(path, key) in links\" :key=\"key\">\n            <a :href=\"path\">{{ t(key) }}</a><br>\n          </div>\n        </div>\n      </form>\n    </div>\n  </div>\n  <SignInImage />\n</template>\n\n<script setup>\nimport SignInImage from '@/modules/SignIn/SignInImage.vue'\nimport { useRoute } from \"vue-router\";\nimport { Button } from '@/components/Theme';\nimport { ref, onBeforeMount, onMounted } from \"vue\";\nimport { useShared } from \"@/helpers/vueHelpers.js\";\nimport { metaTagContent, dataTagContent } from \"@/helpers/documentHelpers.js\";\n\nconst { t } = useShared();\nconst route = useRoute();\n\nconst password = ref(null);\nconst passwordConfirmation = ref('');\nconst passwordLength = ref(0)\nconst links = ref({})\nconst errorMessage = ref('');\nconst authenticityToken = ref(metaTagContent('authenticityToken'))\nconst resetPasswordToken = ref(route.query.reset_password_token || metaTagContent('resetPasswordToken'))\nconst changePasswordPath = ref(metaTagContent('changePasswordPath'))\nconst showPassword = ref(false)\n\nonBeforeMount(() => {\n  passwordLength.value = dataTagContent('sign-in-main-app', 'passwordMinLength')\n  links.value = JSON.parse(dataTagContent('sign-in-main-app', 'deviseLinks'))\n});\n\nonMounted(() => {\n  if (dataTagContent('sign-in-main-app', 'errors')) {\n    const errorJson = JSON.parse(dataTagContent('sign-in-main-app', 'errors'))\n    errorMessage.value = errorJson[\"password\"]\n  }\n})\n\n\nfunction toggleShowPassword() {\n  showPassword.value = !showPassword.value\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.form-inputs-container {\n  display: flex;\n  flex-wrap: wrap;\n  width: 100%;\n  row-gap: $spacing-6;\n}\n\n.form-actions {\n  width: 100%;\n\n  @media (min-width: $breakpoint-sm) {\n    width: auto;\n  }\n}\n\n.input.password.optional.user_password {\n  .password_with_show {\n    height: 95px;\n\n    .icon {\n      position: absolute;\n      border-radius: 0.3rem;\n      top: 50%;\n      right: $spacing-4;\n      transform: translateY(-50%);\n      cursor: pointer;\n    }\n  }\n}\n\n.sign-up__error-message-container {\n  width: 100%;\n  margin-top: $spacing-6;\n  background-color: $brand-secondary-light;\n  border: 1px solid $brand-secondary;\n  border-radius: $spacing-4;\n  padding: $spacing-4;\n}\n\n.password-hint {\n  margin-top: $spacing-2;\n  color: $grey-100\n}\n\n.icon-resized {\n  font-size: 13px;\n  height: 18px;\n  width: 16px;\n  margin-top: 1px;\n}\n\n.sign-up-devise-links a {\n  font-size: $text-base;\n  color: $green-300;\n\n  &:not(:last-child) {\n    display: inline-block;\n    margin-bottom: $spacing-6;\n  }\n}\n</style>\n\n<i18n lang=\"yaml\">\nen:\n  reset_password: Reset your password\n  email: Email\n  new_user_password: New password\n  confirm_new_user_password: Confirm new password\n  change_my_password: Change my password\n  forgot_password: Forgot your password?\n  reset_password_message: If this account exists, we'll send you a password reset email.\n\n  continue: Continue\n\n  sign_in: Have an account? Sign in here\n  registration: Sign up\n  new_password: Forgot your password?\n  confirmation: Didn't receive confirmation instructions?\n</i18n>\n","<template>\n  <div class=\"devise-form-container__form\">\n    <div style=\"width: 100%\">\n      <h2 class=\"forget_password_header\"> {{ t('forgot_your_password') }}</h2>\n      <form id=\"request_reset_password\" name=\"request_reset_password_form\" @submit.prevent=\"submit\" method=\"post\" class=\"simple_form devise-form new_user\">\n        <input type=\"hidden\" name=\"authenticity_token\" :value=\"authenticityToken\" />\n        <input type=\"hidden\" name=\"method\" value=\"post\" />\n        <div class=\"form-inputs-container\">\n          <div class=\"input email required user_email field_without_errors\">\n            <label class=\"string required form-label__new\" for=\"user_email\">{{ t('email') }}</label>\n            <input class=\"form-input string required input__new\" autocomplete=\"email\" autofocus=\"autofocus\"\n              required=\"required\" :pattern=\"emailRegex.value\" title=\"name@domain.com\" aria-required=\"true\" type=\"email\"\n              name=\"user[email]\" id=\"user_email\" v-model=\"email\" />\n          </div>\n        </div>\n\n        <div v-if=\"nextAction === 'reset_password'\">\n          <div class=\"sign-in__devise-action-info-message\">{{ t(\"reset_password_message\") }}</div>\n        </div>\n        <div v-if=\"errorMessage !== ''\">\n          <div class=\"reset-password__error-message-container\">{{ errorMessage }}</div>\n        </div>\n\n        <div class=\"form-actions\">\n          <Button id=\"request_reset_password_submit\" form=\"request_reset_password\" :disabled=\"processing\" type=\"submit\" color=\"secondary\" colorFilled rounded>{{ t(\"send_password_instructions\") }}</Button>\n        </div>\n\n        <div class=\"forget-password-devise-links\">\n          <div v-for=\"(path, key) in links\" :key=\"key\">\n            <a :href=\"path\">{{ t(key) }}</a><br>\n          </div>\n        </div>\n      </form>\n    </div>\n  </div>\n  <SignInImage />\n</template>\n\n<script setup>\nimport api from '@/utils/api.js';\nimport SignInImage from '@/modules/SignIn/SignInImage.vue'\nimport { Button } from '@/components/Theme';\nimport { ref, onBeforeMount } from \"vue\";\nimport { useRoute } from \"vue-router\"\nimport { useShared } from \"@/helpers/vueHelpers.js\";\nimport { EMAIL_REGEX } from '@/utils/stringUtils.js';\nimport { metaTagContent, dataTagContent } from \"@/helpers/documentHelpers.js\";\n\nconst { t } = useShared();\nconst route = useRoute()\n\nonBeforeMount(() => {\n  links.value = JSON.parse(dataTagContent('sign-in-main-app', 'deviseLinks'))\n});\n\nconst resetPasswordUrl = metaTagContent('resetPasswordUrl')\n\nconst email = ref(route.query.email || \"\")\nconst emailRegex = ref(EMAIL_REGEX.source)\nconst nextAction = ref('')\nconst errorMessage = ref('')\nconst authenticityToken = ref(metaTagContent('authenticityToken'))\nconst links = ref({})\nconst processing = ref(false)\n\n\nasync function submit() {\n  processing.value = true;\n  try {\n    processing.value = true;\n    const response = await api.post(`${resetPasswordUrl}.json`, {\n      user: {\n        email: email.value,\n      },\n      authenticityToken: authenticityToken.value,\n    });\n\n    nextAction.value = response.data[\"next_action\"]\n    errorMessage.value = \"\"\n  } catch (err) {\n    console.log(err);\n    errorMessage.value = err.response.data[\"errors\"]\n    nextAction.value = \"\"\n  } finally {\n    processing.value = false;\n  }\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.forget_password_header {\n  margin: $spacing-6 0 $spacing-8 0;\n}\n\n.form-inputs-container {\n  margin-bottom: $spacing-2\n}\n\n.form-actions {\n  width: 100%;\n\n  @media (min-width: $breakpoint-sm) {\n    width: auto;\n  }\n}\n\n.forget-password-devise-links a {\n  font-size: $text-base;\n  color: $green-300;\n\n  &:not(:last-child) {\n    display: inline-block;\n    margin-bottom: $spacing-6;\n  }\n}\n\n.sign-in__devise-action-info-message {\n  max-width: none;\n}\n\n.reset-password__error-message-container {\n  width: 100%;\n  margin-top: $spacing-6;\n  background-color: $brand-secondary-light;\n  border: 1px solid $brand-secondary;\n  border-radius: $spacing-4;\n  padding: $spacing-4;\n}\n</style>\n\n<i18n lang=\"yaml\">\n  en:\n    forgot_your_password: Forgot your password?\n    email: Email\n    reset_password_message: If this account exists, we'll send you a password reset email.\n    sign_in: Have an account? Sign in here\n    registration: Sign up\n    new_password: Forgot your password?\n    send_password_instructions: Send reset instructions\n</i18n>\n","<template>\n  <div class=\"devise-form-container__form\">\n    <div style=\"width: 100%\">\n      <h2>{{ t(\"continue_with_social\") }}</h2>\n      \n      <div class=\"social-login-message\">\n        {{ t(\"social_login_message\") }}\n      </div>\n\n      <ThirdPartyAuth \n        :providers=\"[providerName]\" \n        :showDivider=\"false\"\n      />\n\n      <div class=\"back-link\">\n        <a href=\"/users/sign_in\">{{ t(\"back_to_signin\") }}</a>\n      </div>\n    </div>\n  </div>\n  <SignInImage />\n</template>\n\n<script setup>\nimport SignInImage from '@/modules/SignIn/SignInImage.vue';\nimport { useShared } from \"@/helpers/vueHelpers.js\";\nimport { computed } from \"vue\";\nimport ThirdPartyAuth from \"@/modules/SignIn/Components/ThirdPartyAuth.vue\";\nimport { metaTagContent } from \"@/helpers/documentHelpers.js\";\n\nconst { t } = useShared();\nconst provider = metaTagContent('provider') || 'google_oauth2';\n\nconst providerName = computed(() => {\n  if (provider === 'google_oauth2') return 'google';\n  return provider || 'google';\n});\n</script>\n\n<style lang=\"scss\" scoped>\n.social-login-message {\n  margin: $spacing-6 0;\n  color: $grey-100;\n  text-align: center;\n}\n\n.back-link {\n  margin-top: $spacing-8;\n  text-align: center;\n  \n  a {\n    color: $green-300;\n    text-decoration: none;\n    \n    &:hover {\n      text-decoration: underline;\n    }\n  }\n}\n</style>\n\n<i18n lang=\"yaml\">\n  en:\n    continue_with_social: Continue with social account\n    social_login_message: Looks like you've previously signed in with a social account. Please continue with your social login.\n    back_to_signin: Back to sign in\n</i18n>","import { createRouter, createWebHistory } from 'vue-router';\nimport { scrollBehavior } from \"@/helpers/vueHelpers.js\";\n\nimport SignIn from '@/modules/SignIn/SignIn.vue';\nimport SignUp from '@/modules/SignIn/SignUp.vue';\nimport ResetPassword from '@/modules/SignIn/ResetPassword.vue';\nimport ForgetPassword from '@/modules/SignIn/ForgetPassword.vue';\nimport SocialLoginRedirect from '@/modules/SignIn/SocialLoginRedirect.vue';\n\nexport default createRouter({\n  history: createWebHistory(),\n  routes: [\n    {\n      path: '/:lang/users/sign_in',\n      name: 'signin',\n      component: SignIn\n    },\n    {\n      path: '/:lang/users/social_login',\n      name: 'social_login',\n      component: SocialLoginRedirect\n    },\n    {\n      path: '/:lang/users/sign_up',\n      name: 'signup',\n      component: SignUp,\n    },\n    {\n      path: '/:lang/users/password/new',\n      name: 'forget_password',\n      component: ForgetPassword,\n    },\n    {\n      path: '/:lang/users/password',\n      name: 'reset_password',\n      component: ResetPassword,\n      alias: '/:lang/users/password/edit',\n    },\n  ],\n  scrollBehavior\n});\n","<template>\n  <div class=\"sign-in-main devise-form-container\">\n    <router-view></router-view>\n  </div>\n</template>\n","import { initVueAppOnLoad } from \"@/app\";\nimport router from '@/routers/signIn.js';\nimport App from '@/views/SignIn.vue';\n\ninitVueAppOnLoad('#sign-in-main-app', App, async app => app.use(router));"],"names":["_sfc_render","_ctx","_cache","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_createTextVNode","t","useShared","providerName","computed","provider","metaTagContent","form","ref","email","requestPasswordlessLink","errorMessage","nextAction","authenticityToken","resetPasswordUrl","redirectUrl","onMounted","dataTagContent","errorJson","getErrorArray","requestLink","route","useRoute","links","name","password","passwordConfirmation","passwordLength","processing","errorFields","signUp","useSignUp","onBeforeMount","submit","locationUrl","redirectTo","err","getErrorFields","getErrorMessagesInSentence","resetPasswordToken","changePasswordPath","showPassword","toggleShowPassword","emailRegex","EMAIL_REGEX","response","api","router","createRouter","createWebHistory","SignIn","SocialLoginRedirect","SignUp","ForgetPassword","ResetPassword","scrollBehavior","initVueAppOnLoad","App","app"],"mappings":"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"}