|
|
@@ -3,66 +3,68 @@
|
|
|
<div class="login-overlay" />
|
|
|
|
|
|
<div class="login-card column items-center">
|
|
|
- <q-img :src="Logo" class="login-logo q-mb-lg" />
|
|
|
+ <div class="column items-center fields-card">
|
|
|
+ <q-img :src="Logo" class="login-logo q-mb-lg" />
|
|
|
|
|
|
- <UserTypeBadge :tipo="tipo" />
|
|
|
+ <UserTypeBadge :tipo="tipo" />
|
|
|
|
|
|
- <p class="login-title">{{ $t("auth.enter_code_title") }}</p>
|
|
|
+ <p class="login-title">{{ $t("auth.enter_code_title") }}</p>
|
|
|
|
|
|
- <div class="email-box q-mb-lg">
|
|
|
- <q-icon name="mdi-email-outline" size="16px" class="q-mr-xs" />
|
|
|
- <span>{{ email }}</span>
|
|
|
- </div>
|
|
|
+ <div class="email-box q-mb-lg">
|
|
|
+ <q-icon name="mdi-email-outline" size="16px" class="q-mr-xs" />
|
|
|
+ <span>{{ email }}</span>
|
|
|
+ </div>
|
|
|
|
|
|
- <q-form
|
|
|
- ref="formRef"
|
|
|
- class="full-width"
|
|
|
- autocomplete="off"
|
|
|
- @submit="onSubmit"
|
|
|
- >
|
|
|
- <DefaultInput
|
|
|
- v-model="form.codigo"
|
|
|
- v-model:error="validationErrors.codigo"
|
|
|
- autofocus
|
|
|
- :label="$t('common.terms.code')"
|
|
|
- mask="######"
|
|
|
- :rules="[inputRules.required, (v) => (v && v.length === 6) || $t('validation.rules.code_length')]"
|
|
|
+ <q-form
|
|
|
+ ref="formRef"
|
|
|
+ class="full-width"
|
|
|
+ autocomplete="off"
|
|
|
+ @submit="onSubmit"
|
|
|
>
|
|
|
- <template #append>
|
|
|
- <q-icon name="mdi-numeric" color="grey-5" />
|
|
|
- </template>
|
|
|
- </DefaultInput>
|
|
|
+ <DefaultInput
|
|
|
+ v-model="form.codigo"
|
|
|
+ v-model:error="validationErrors.codigo"
|
|
|
+ autofocus
|
|
|
+ :label="$t('common.terms.code')"
|
|
|
+ mask="######"
|
|
|
+ :rules="[inputRules.required, (v) => (v && v.length === 6) || $t('validation.rules.code_length')]"
|
|
|
+ >
|
|
|
+ <template #append>
|
|
|
+ <q-icon name="mdi-numeric" color="grey-5" />
|
|
|
+ </template>
|
|
|
+ </DefaultInput>
|
|
|
+
|
|
|
+ <q-btn
|
|
|
+ class="full-width q-mt-sm login-btn"
|
|
|
+ color="violet-normal"
|
|
|
+ :label="$t('auth.verify')"
|
|
|
+ type="submit"
|
|
|
+ unelevated
|
|
|
+ :loading
|
|
|
+ >
|
|
|
+ <template #loading><q-spinner /></template>
|
|
|
+ </q-btn>
|
|
|
+ </q-form>
|
|
|
|
|
|
<q-btn
|
|
|
- class="full-width q-mt-sm login-btn"
|
|
|
- color="secondary"
|
|
|
- :label="$t('auth.verify')"
|
|
|
- type="submit"
|
|
|
- unelevated
|
|
|
- :loading
|
|
|
- >
|
|
|
- <template #loading><q-spinner /></template>
|
|
|
- </q-btn>
|
|
|
- </q-form>
|
|
|
-
|
|
|
- <q-btn
|
|
|
- flat
|
|
|
- :label="$t('common.actions.resend_email')"
|
|
|
- color="white"
|
|
|
- class="q-mt-md resend-btn"
|
|
|
- :loading="resending"
|
|
|
- @click="onResend"
|
|
|
- />
|
|
|
-
|
|
|
- <div class="column items-center q-mt-sm">
|
|
|
- <a href="#" class="login-link" @click.prevent="goToLogin">
|
|
|
- {{ $t("auth.remember_password") }}
|
|
|
- <strong>{{ $t("auth.do_login") }}</strong>
|
|
|
- </a>
|
|
|
- <a href="#" class="login-link q-mt-xs" @click.prevent="goBack">
|
|
|
- <q-icon name="mdi-arrow-left" size="12px" class="q-mr-xs" />
|
|
|
- {{ $t("auth.back_to_site") }}
|
|
|
- </a>
|
|
|
+ flat
|
|
|
+ :label="$t('common.actions.resend_email')"
|
|
|
+ color="violet-normal"
|
|
|
+ class="q-mt-md resend-btn"
|
|
|
+ :loading="resending"
|
|
|
+ @click="onResend"
|
|
|
+ />
|
|
|
+
|
|
|
+ <div class="column items-center q-mt-sm">
|
|
|
+ <a href="#" class="login-link" @click.prevent="goToLogin">
|
|
|
+ {{ $t("auth.remember_password") }}
|
|
|
+ <strong>{{ $t("auth.do_login") }}</strong>
|
|
|
+ </a>
|
|
|
+ <a href="#" class="login-link q-mt-xs" @click.prevent="goBack">
|
|
|
+ <q-icon name="mdi-arrow-left" size="12px" class="q-mr-xs" />
|
|
|
+ {{ $t("auth.back_to_site") }}
|
|
|
+ </a>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</q-page>
|
|
|
@@ -124,30 +126,87 @@ const goBack = () => router.push({ name: "LoginPage" });
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
-@use "src/css/quasar.variables.scss";
|
|
|
+@use "sass:map";
|
|
|
+@use "src/css/quasar.variables.scss" as *;
|
|
|
|
|
|
.login-page {
|
|
|
min-height: 100dvh;
|
|
|
background-image: url("src/assets/pessoas_fundo.jpg");
|
|
|
- background-size: cover; background-position: center; position: relative;
|
|
|
+ background-size: cover;
|
|
|
+ background-position: center;
|
|
|
+ position: relative;
|
|
|
+}
|
|
|
+
|
|
|
+.login-overlay {
|
|
|
+ position: absolute;
|
|
|
+ inset: 0;
|
|
|
+ background: rgba(74, 20, 140, 0.48);
|
|
|
+ z-index: 0;
|
|
|
+}
|
|
|
+
|
|
|
+.login-card {
|
|
|
+ z-index: 1;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ width: calc(100% - 32px);
|
|
|
+ min-height: calc(100dvh - 32px);
|
|
|
+ background: rgba(255, 255, 255, 0.747);
|
|
|
+ border-radius: 16px;
|
|
|
+ box-shadow: 0 4px 32px rgba(0, 0, 0, 0.15);
|
|
|
+}
|
|
|
+
|
|
|
+.fields-card {
|
|
|
+ width: 100%;
|
|
|
+ max-width: 600px;
|
|
|
+ padding: 32px;
|
|
|
+ border-radius: 12px;
|
|
|
+}
|
|
|
+
|
|
|
+.login-logo {
|
|
|
+ width: 380px;
|
|
|
}
|
|
|
-.login-overlay { position: absolute; inset: 0; background: rgba(74,20,140,0.72); z-index: 0; }
|
|
|
-.login-card { position: relative; z-index: 1; width: 100%; max-width: 400px; padding: 32px 24px 40px; }
|
|
|
-.login-logo { width: 180px; filter: brightness(0) invert(1); }
|
|
|
-.login-title { color: #fff; font-size: 18px; font-weight: 700; margin: 0 0 16px; text-align: center; }
|
|
|
+
|
|
|
+.login-title {
|
|
|
+ color: map.get($colors, "violet-normal");
|
|
|
+ font-size: 18px;
|
|
|
+ font-weight: 700;
|
|
|
+ margin: 0 0 16px;
|
|
|
+ text-align: center;
|
|
|
+}
|
|
|
+
|
|
|
.email-box {
|
|
|
- display: flex; align-items: center;
|
|
|
- background: rgba(255,255,255,0.15); border-radius: 8px; padding: 8px 16px;
|
|
|
- color: #fff; font-size: 14px;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ background: map.get($colors, "violet-light");
|
|
|
+ border-radius: 8px;
|
|
|
+ padding: 8px 16px;
|
|
|
+ color: map.get($colors, "violet-normal");
|
|
|
+ font-size: 14px;
|
|
|
+ font-weight: 500;
|
|
|
}
|
|
|
-.login-btn { height: 44px; font-size: 15px; font-weight: 600; }
|
|
|
-.resend-btn { font-size: 13px; text-decoration: underline; }
|
|
|
-.login-link { color: rgba(255,255,255,0.75); font-size: 13px; text-decoration: none; cursor: pointer;
|
|
|
- &:hover { color: #fff; text-decoration: underline; }
|
|
|
+
|
|
|
+.login-btn {
|
|
|
+ height: 44px;
|
|
|
+ font-size: 15px;
|
|
|
+ font-weight: 600;
|
|
|
+ letter-spacing: 0.5px;
|
|
|
}
|
|
|
-:deep(.q-field) {
|
|
|
- .q-field__control { background: rgba(255,255,255,0.12) !important; border-radius: 8px; }
|
|
|
- .q-field__label, .q-field__native, .q-field__input { color: #fff !important; }
|
|
|
- .q-field__bottom { color: rgba(255,100,100,0.9) !important; }
|
|
|
+
|
|
|
+.resend-btn {
|
|
|
+ font-size: 13px;
|
|
|
+ text-decoration: underline;
|
|
|
+}
|
|
|
+
|
|
|
+.login-link {
|
|
|
+ color: map.get($colors, "violet-normal");
|
|
|
+ font-size: 13px;
|
|
|
+ text-decoration: none;
|
|
|
+ cursor: pointer;
|
|
|
+
|
|
|
+ &:hover {
|
|
|
+ color: map.get($colors, "violet-normal-hover");
|
|
|
+ text-decoration: underline;
|
|
|
+ }
|
|
|
}
|
|
|
</style>
|