fix(frontend): logo/favicon corrects et pages d'authentification plus posees

Le src="logo.png" relatif resolvait mal sur les routes autres que "/" :
chemin absolu "/logo.png". Titre de page "Frontend" -> "EnerVision", favicon
regenere depuis l'icone reelle du logo. Pages login/change-password
retravaillees (fond degrade de marque, carte plus large, logo et titre plus
presents) via une classe .auth-page partagee plutot que dupliquee par page.
This commit is contained in:
Johan LEROY
2026-09-17 11:29:07 +02:00
parent 9c78c6dc38
commit bbafe7d119
10 changed files with 49 additions and 39 deletions
Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 57 KiB

@@ -1,7 +1,7 @@
<div class="auth-page"> <div class="auth-page">
<form class="auth-card-wrapper" [formGroup]="form" (ngSubmit)="onSubmit()"> <form class="auth-card-wrapper" [formGroup]="form" (ngSubmit)="onSubmit()">
<ev-card> <ev-card>
<img src="logo.png" alt="EnerVision" class="auth-logo" /> <img src="/logo.png" alt="EnerVision" class="auth-logo" />
<h1>Nouveau mot de passe</h1> <h1>Nouveau mot de passe</h1>
<p class="auth-subtitle">Votre mot de passe est provisoire, vous devez le modifier avant de continuer</p> <p class="auth-subtitle">Votre mot de passe est provisoire, vous devez le modifier avant de continuer</p>
@@ -1,34 +1,28 @@
:host { ev-card {
display: flex; padding: 3rem 2.5rem;
align-items: center; box-shadow:
justify-content: center; 0 20px 25px -5px rgba(0, 0, 0, 0.06),
min-height: 100vh; 0 8px 10px -6px rgba(0, 0, 0, 0.04);
background: var(--color-bg);
}
.auth-card-wrapper {
width: 100%;
max-width: 360px;
} }
.auth-logo { .auth-logo {
display: block; display: block;
height: 48px; height: 64px;
margin: 0 auto 1rem; margin: 0 auto 1.5rem;
} }
h1 { h1 {
margin: 0; margin: 0;
font-size: 1.5rem; font-size: 1.85rem;
font-weight: 700; font-weight: 700;
color: var(--color-text); color: var(--color-text);
text-align: center; text-align: center;
} }
.auth-subtitle { .auth-subtitle {
margin: 0.25rem 0 1.5rem; margin: 0.4rem 0 2rem;
color: var(--color-text-muted); color: var(--color-text-muted);
font-size: 0.9rem; font-size: 0.95rem;
line-height: 1.4; line-height: 1.4;
text-align: center; text-align: center;
} }
@@ -40,5 +34,5 @@ ev-alert {
ev-button { ev-button {
display: block; display: block;
margin-top: 1.5rem; margin-top: 1.75rem;
} }
@@ -1,7 +1,7 @@
<div class="auth-page"> <div class="auth-page">
<form class="auth-card-wrapper" [formGroup]="form" (ngSubmit)="onSubmit()"> <form class="auth-card-wrapper" [formGroup]="form" (ngSubmit)="onSubmit()">
<ev-card> <ev-card>
<img src="logo.png" alt="EnerVision" class="auth-logo" /> <img src="/logo.png" alt="EnerVision" class="auth-logo" />
<h1>Connexion</h1> <h1>Connexion</h1>
<p class="auth-subtitle">Accédez à votre espace EnerVision</p> <p class="auth-subtitle">Accédez à votre espace EnerVision</p>
@@ -1,34 +1,28 @@
:host { ev-card {
display: flex; padding: 3rem 2.5rem;
align-items: center; box-shadow:
justify-content: center; 0 20px 25px -5px rgba(0, 0, 0, 0.06),
min-height: 100vh; 0 8px 10px -6px rgba(0, 0, 0, 0.04);
background: var(--color-bg);
}
.auth-card-wrapper {
width: 100%;
max-width: 360px;
} }
.auth-logo { .auth-logo {
display: block; display: block;
height: 48px; height: 64px;
margin: 0 auto 1rem; margin: 0 auto 1.5rem;
} }
h1 { h1 {
margin: 0; margin: 0;
font-size: 1.5rem; font-size: 1.85rem;
font-weight: 700; font-weight: 700;
color: var(--color-text); color: var(--color-text);
text-align: center; text-align: center;
} }
.auth-subtitle { .auth-subtitle {
margin: 0.25rem 0 1.5rem; margin: 0.4rem 0 2rem;
color: var(--color-text-muted); color: var(--color-text-muted);
font-size: 0.9rem; font-size: 0.95rem;
text-align: center; text-align: center;
} }
@@ -39,5 +33,5 @@ ev-alert {
ev-button { ev-button {
display: block; display: block;
margin-top: 1.5rem; margin-top: 1.75rem;
} }
@@ -1,7 +1,7 @@
<div class="dashboard"> <div class="dashboard">
<header class="dashboard__header"> <header class="dashboard__header">
<div class="dashboard__brand"> <div class="dashboard__brand">
<img src="logo.png" alt="EnerVision" class="dashboard__logo" /> <img src="/logo.png" alt="EnerVision" class="dashboard__logo" />
<div> <div>
<h1>Vue d'ensemble</h1> <h1>Vue d'ensemble</h1>
<p class="dashboard__subtitle">Consommation instantanée du parc</p> <p class="dashboard__subtitle">Consommation instantanée du parc</p>
+2 -2
View File
@@ -2,10 +2,10 @@
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>Frontend</title> <title>EnerVision</title>
<base href="/" /> <base href="/" />
<meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="icon" type="image/x-icon" href="favicon.ico" /> <link rel="icon" type="image/x-icon" href="/favicon.ico" />
</head> </head>
<body> <body>
<app-root></app-root> <app-root></app-root>
+1
View File
@@ -1,5 +1,6 @@
@use 'styles/tokens'; @use 'styles/tokens';
@use 'styles/forms'; @use 'styles/forms';
@use 'styles/auth-page';
body { body {
margin: 0; margin: 0;
+16
View File
@@ -0,0 +1,16 @@
.auth-page {
display: flex;
align-items: center;
justify-content: center;
min-height: 100vh;
padding: var(--space-4);
box-sizing: border-box;
background: radial-gradient(circle at 15% 10%, var(--color-primary-light) 0%, transparent 45%),
radial-gradient(circle at 85% 90%, var(--color-primary-light) 0%, transparent 40%),
var(--color-bg);
}
.auth-card-wrapper {
width: 100%;
max-width: 420px;
}
@@ -29,6 +29,11 @@ s'appliquent directement à des `<label>`/`<input>` natifs liés par `formContro
composant `ControlValueAccessor` dédié, le gain n'en vaut pas la complexité pour des formulaires composant `ControlValueAccessor` dédié, le gain n'en vaut pas la complexité pour des formulaires
aussi simples que ceux de ce projet. aussi simples que ceux de ce projet.
La classe `.auth-page` (`apps/frontend/src/styles/_auth-page.scss`, importée globalement) porte
le fond dégradé et le centrage commun aux pages d'authentification (`login`, `change-password`,
et à terme `forgot-password`/`reset-password`) : elle enveloppe la carte, pas de duplication du
fond par page.
## Composants partagés ## Composants partagés
Dans `apps/frontend/src/app/shared/components/ui/`, chacun standalone, à importer directement Dans `apps/frontend/src/app/shared/components/ui/`, chacun standalone, à importer directement