VerifyEmailPage.vue 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <template>
  2. <q-page class="login-page column items-center justify-center">
  3. <div class="login-overlay" />
  4. <div class="login-card column items-center">
  5. <q-img :src="Logo" class="login-logo q-mb-lg" />
  6. <UserTypeBadge :tipo="tipo" />
  7. <p class="login-title">{{ $t("auth.verify_email_title") }}</p>
  8. <p class="login-description">
  9. {{ $t("auth.verify_email_description") }}
  10. </p>
  11. <div class="email-box q-mb-lg">
  12. <q-icon name="mdi-email-outline" size="16px" class="q-mr-xs" />
  13. <span>{{ email }}</span>
  14. </div>
  15. <q-btn
  16. class="full-width login-btn"
  17. color="secondary"
  18. :label="$t('auth.enter_code')"
  19. unelevated
  20. @click="goToCode"
  21. />
  22. <p class="login-hint q-mt-md">
  23. {{ $t("auth.no_email_hint") }}
  24. <a href="#" class="login-link" @click.prevent="resend">
  25. {{ $t("auth.check_spam") }}
  26. </a>
  27. </p>
  28. <a href="#" class="login-link q-mt-sm" @click.prevent="goBack">
  29. <q-icon name="mdi-arrow-left" size="12px" class="q-mr-xs" />
  30. {{ $t("auth.back_to_site") }}
  31. </a>
  32. </div>
  33. </q-page>
  34. </template>
  35. <script setup>
  36. import { useRouter, useRoute } from "vue-router";
  37. import Logo from "src/assets/logo_serprati.svg";
  38. import UserTypeBadge from "./components/UserTypeBadge.vue";
  39. const router = useRouter();
  40. const route = useRoute();
  41. const email = route.query.email ?? "";
  42. const tipo = route.query.tipo ?? "administrador";
  43. const goToCode = () =>
  44. router.push({ name: "VerifyCodePage", query: { email, tipo } });
  45. const resend = () =>
  46. router.push({ name: "ForgotPasswordPage", query: { tipo } });
  47. const goBack = () => router.push({ name: "LoginPage" });
  48. </script>
  49. <style lang="scss" scoped>
  50. @use "src/css/quasar.variables.scss";
  51. .login-page {
  52. min-height: 100dvh;
  53. background-image: url("src/assets/pessoas_fundo.jpg");
  54. background-size: cover;
  55. background-position: center;
  56. position: relative;
  57. }
  58. .login-overlay {
  59. position: absolute; inset: 0;
  60. background: rgba(74, 20, 140, 0.72);
  61. z-index: 0;
  62. }
  63. .login-card {
  64. position: relative; z-index: 1;
  65. width: 100%; max-width: 400px;
  66. padding: 32px 24px 40px;
  67. }
  68. .login-logo { width: 180px; filter: brightness(0) invert(1); }
  69. .login-title { color: #fff; font-size: 18px; font-weight: 700; margin: 0 0 8px; text-align: center; }
  70. .login-description { color: rgba(255,255,255,0.8); font-size: 13px; text-align: center; margin: 0 0 16px; }
  71. .email-box {
  72. display: flex; align-items: center;
  73. background: rgba(255,255,255,0.15);
  74. border-radius: 8px; padding: 8px 16px;
  75. color: #fff; font-size: 14px;
  76. }
  77. .login-btn { height: 44px; font-size: 15px; font-weight: 600; width: 100%; }
  78. .login-hint { color: rgba(255,255,255,0.65); font-size: 12px; text-align: center; margin: 0; }
  79. .login-link { color: rgba(255,255,255,0.75); font-size: 13px; text-decoration: none; cursor: pointer;
  80. &:hover { color: #fff; text-decoration: underline; }
  81. }
  82. </style>