diff --git a/src/app/pages/login-form/login-form.component.css b/src/app/pages/login-form/login-form.component.css index 4fa4b3e..c70a7bd 100644 --- a/src/app/pages/login-form/login-form.component.css +++ b/src/app/pages/login-form/login-form.component.css @@ -1,85 +1,152 @@ -.bg { - --background: linear-gradient(180deg, #e6dede, #e58a8a); +/* Import Google Font */ +@import url('https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700;800&display=swap'); + +/* ---- Page background ---- */ +ion-content.bg { + --background: transparent; + --overflow: hidden; + + &::before { + content: ''; + position: fixed; + inset: 0; + background: linear-gradient( + 160deg, + #f9e8e8 0%, + #f2c4c4 35%, + #e89898 70%, + #d97070 100% + ); + z-index: -1; + } } +/* ---- Centered container ---- */ .container { - text-align: center; - padding-top: 60px; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + min-height: 100%; + padding: 40px 24px; + font-family: 'Nunito', sans-serif; + gap: 10px; } +/* ---- Logo box ---- */ .logo-box { - width: 90px; - height: 90px; - margin: 0 auto 10px; - border-radius: 20px; - background: #f2eaea; + width: 80px; + height: 80px; + background: #ffffff; + border-radius: 22px; display: flex; align-items: center; justify-content: center; - - box-shadow: 8px 8px 15px #d1bcbc, - -8px -8px 15px #ffffff; + box-shadow: 0 4px 18px rgba(180, 80, 80, 0.18); + overflow: hidden; + margin-bottom: 4px; img { - width: 50px; + width: 52px; + height: 52px; + object-fit: contain; } } +/* ---- App title ---- */ h1 { - color: #b86b6b; - margin-bottom: 30px; + font-family: 'Nunito', sans-serif; + font-size: 28px; + font-weight: 800; + color: #b05050; + margin: 0 0 10px; + letter-spacing: 0.5px; } +/* ---- White card ---- */ .card { - width: 85%; - max-width: 320px; - margin: auto; - padding: 25px; - border-radius: 20px; - background: #f2eaea; - - box-shadow: 10px 10px 20px #cfaeae, - -10px -10px 20px #ffffff; + width: 100%; + max-width: 340px; + background: rgba(255, 255, 255, 0.88); + border-radius: 24px; + padding: 28px 24px 32px; + box-shadow: 0 8px 32px rgba(180, 80, 80, 0.12); + display: flex; + flex-direction: column; + gap: 14px; h3 { - color: #c27a7a; - margin-bottom: 20px; - font-weight: normal; + font-family: 'Nunito', sans-serif; + font-size: 16px; + font-weight: 700; + color: #b05050; + text-align: center; + margin: 0 0 4px; } } +/* ---- Inputs ---- */ .input { - margin: 10px 0; - border-radius: 20px; - - --background: #f2eaea; - --padding-start: 15px; - - box-shadow: inset 5px 5px 10px #d1bcbc, - inset -5px -5px 10px #ffffff; + --background: rgba(255, 255, 255, 0.95); + --border-radius: 50px; + --padding-start: 18px; + --padding-end: 18px; + --inner-padding-end: 0; + --highlight-color-focused: #d97070; + border-radius: 50px; + box-shadow: 0 2px 8px rgba(180, 80, 80, 0.10); + overflow: hidden; ion-input { - color: #a35c5c; + --placeholder-color: #c9a0a0; + --placeholder-opacity: 1; + --color: #6b3030; + font-family: 'Nunito', sans-serif; + font-size: 15px; + font-weight: 600; + caret-color: #d97070; } } +/* ---- Login button ---- */ .btn { - margin-top: 15px; - --background: #b86b6b; - --border-radius: 20px; + --background: #b05050; + --background-activated: #903838; + --border-radius: 50px; + --box-shadow: 0 4px 16px rgba(176, 80, 80, 0.35); + --color: #ffffff; + font-family: 'Nunito', sans-serif; + font-size: 16px; + font-weight: 700; + letter-spacing: 0.3px; + margin-top: 6px; + height: 48px; + transition: transform 0.15s ease, box-shadow 0.15s ease; - box-shadow: 5px 5px 10px #a45f5f, - -5px -5px 10px #ff9c9c; + &:active { + transform: scale(0.97); + --box-shadow: 0 2px 8px rgba(176, 80, 80, 0.25); + } } +/* ---- Sign-up link ---- */ .signup { - margin-top: 20px; - color: white; + text-align: center; + font-family: 'Nunito', sans-serif; font-size: 14px; + font-weight: 700; + color: #b05050; + line-height: 1.7; + margin-top: 6px; a { - color: white; - font-weight: bold; + color: #b05050; + font-weight: 800; text-decoration: underline; + text-underline-offset: 2px; + + &:hover { + color: #903838; + } } } \ No newline at end of file diff --git a/src/app/pages/login-form/login-form.component.html b/src/app/pages/login-form/login-form.component.html index 39bcccf..9d94226 100644 --- a/src/app/pages/login-form/login-form.component.html +++ b/src/app/pages/login-form/login-form.component.html @@ -28,7 +28,7 @@
Vous êtes nouveau ?
- Créez vous un compte ici + Créez vous un compte ici
diff --git a/src/app/pages/login-form/login-form.component.ts b/src/app/pages/login-form/login-form.component.ts index 9399107..299922c 100644 --- a/src/app/pages/login-form/login-form.component.ts +++ b/src/app/pages/login-form/login-form.component.ts @@ -26,6 +26,10 @@ export class LoginFormComponent { isLoading = false; + goToRegister() { + this.router.navigate(['/register']); + } + loginForm = this.fb.group({ name: ['', [Validators.required]], password: ['', [Validators.required]] @@ -34,6 +38,8 @@ export class LoginFormComponent { async submitForm(): Promise { if (this.loginForm.valid) { + + await this.navCtrl.navigateRoot(['main/messages']); this.isLoading = true; diff --git a/src/app/pages/register-form/register-form.component.css b/src/app/pages/register-form/register-form.component.css index e69de29..7b374a8 100644 --- a/src/app/pages/register-form/register-form.component.css +++ b/src/app/pages/register-form/register-form.component.css @@ -0,0 +1,160 @@ +@import url('https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700;800&display=swap'); + +/* ---- Page background ---- */ +ion-content.bg { + --background: transparent; + --overflow: hidden; + + &::before { + content: ''; + position: fixed; + inset: 0; + background: linear-gradient( + 160deg, + #f9e8e8 0%, + #f2c4c4 35%, + #e89898 70%, + #d97070 100% + ); + z-index: -1; + } +} + +/* ---- Centered container ---- */ +.container { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + min-height: 100%; + padding: 40px 24px; + font-family: 'Nunito', sans-serif; + gap: 10px; +} + +/* ---- Logo box ---- */ +.logo-box { + width: 80px; + height: 80px; + background: #ffffff; + border-radius: 22px; + display: flex; + align-items: center; + justify-content: center; + box-shadow: 0 4px 18px rgba(180, 80, 80, 0.18); + overflow: hidden; + margin-bottom: 4px; + + img { + width: 52px; + height: 52px; + object-fit: contain; + } +} + +/* ---- App title ---- */ +h1 { + font-family: 'Nunito', sans-serif; + font-size: 28px; + font-weight: 800; + color: #b05050; + margin: 0 0 10px; + letter-spacing: 0.5px; +} + +/* ---- White card ---- */ +.card { + width: 100%; + max-width: 340px; + background: rgba(255, 255, 255, 0.88); + border-radius: 24px; + padding: 28px 24px 32px; + box-shadow: 0 8px 32px rgba(180, 80, 80, 0.12); + display: flex; + flex-direction: column; + gap: 14px; + + h3 { + font-family: 'Nunito', sans-serif; + font-size: 16px; + font-weight: 700; + color: #b05050; + text-align: center; + margin: 0; + } + + .subtitle { + font-family: 'Nunito', sans-serif; + font-size: 13px; + font-weight: 600; + color: #c98080; + text-align: center; + margin: -6px 0 4px; + } +} + +/* ---- Inputs ---- */ +.input { + --background: rgba(255, 255, 255, 0.95); + --border-radius: 50px; + --padding-start: 18px; + --padding-end: 18px; + --inner-padding-end: 0; + --highlight-color-focused: #d97070; + border-radius: 50px; + box-shadow: 0 2px 8px rgba(180, 80, 80, 0.10); + overflow: hidden; + + ion-input { + --placeholder-color: #c9a0a0; + --placeholder-opacity: 1; + --color: #6b3030; + font-family: 'Nunito', sans-serif; + font-size: 15px; + font-weight: 600; + caret-color: #d97070; + } +} + +/* ---- Register button ---- */ +.btn { + --background: #b05050; + --background-activated: #903838; + --border-radius: 50px; + --box-shadow: 0 4px 16px rgba(176, 80, 80, 0.35); + --color: #ffffff; + font-family: 'Nunito', sans-serif; + font-size: 16px; + font-weight: 700; + letter-spacing: 0.3px; + margin-top: 6px; + height: 48px; + transition: transform 0.15s ease, box-shadow 0.15s ease; + + &:active { + transform: scale(0.97); + --box-shadow: 0 2px 8px rgba(176, 80, 80, 0.25); + } +} + +/* ---- Login link ---- */ +.signup { + text-align: center; + font-family: 'Nunito', sans-serif; + font-size: 14px; + font-weight: 700; + color: #b05050; + line-height: 1.7; + margin-top: 6px; + + a { + color: #b05050; + font-weight: 800; + text-decoration: underline; + text-underline-offset: 2px; + + &:hover { + color: #903838; + } + } +} \ No newline at end of file diff --git a/src/app/pages/register-form/register-form.component.html b/src/app/pages/register-form/register-form.component.html index e6b0721..b63cea3 100644 --- a/src/app/pages/register-form/register-form.component.html +++ b/src/app/pages/register-form/register-form.component.html @@ -1,22 +1,41 @@ - - - Inscrivez-vous à Knots !
- Commencez à nouer des liens !
-
+ - - Nom d'utilisateur -
- -

- Mot de Passe -
- -

- Confirmez votre mot de passe -
- -

+
- Créer son compte - \ No newline at end of file +
+ logo +
+ +

Knots

+ +
+ +

Inscrivez-vous à Knots !

+

Commencez à nouer des liens !

+ + + + + + + + + + + + + + + Créer son compte + + +
+ + + +
+ +
\ No newline at end of file diff --git a/src/app/pages/register-form/register-form.component.ts b/src/app/pages/register-form/register-form.component.ts index f1006e0..352db4f 100644 --- a/src/app/pages/register-form/register-form.component.ts +++ b/src/app/pages/register-form/register-form.component.ts @@ -1,26 +1,35 @@ -import { Component } from '@angular/core'; +import {Component, inject} from '@angular/core'; import { - IonButton, - IonCard, - IonCardContent, - IonCardHeader, - IonCardSubtitle, - IonCardTitle -} from "@ionic/angular/standalone"; - -@Component({ - selector: 'app-register-form', - imports: [ IonButton, IonCard, IonCardContent, IonCardHeader, - IonCardTitle, - IonCardSubtitle - ], + IonCardSubtitle, + IonCardTitle, IonContent, IonInput, IonItem +} from "@ionic/angular/standalone"; +import {Router} from "@angular/router"; + +@Component({ + selector: 'app-register-form', + imports: [ + IonButton, + IonCard, + IonCardContent, + IonCardHeader, + IonCardTitle, + IonCardSubtitle, + IonInput, + IonContent, + IonItem + ], templateUrl: './register-form.component.html', styleUrl: './register-form.component.css' }) export class RegisterFormComponent { + private router = inject(Router) + + goToLogin() { + this.router.navigate(['/login']); + } }