Mise à jour des formulaires d'inscription/connexion

This commit is contained in:
Rampeur
2025-08-08 10:44:51 +02:00
parent dbff41b9c8
commit e1e703c2d8
6 changed files with 122 additions and 110 deletions
+2
View File
@@ -79,3 +79,5 @@ sonar.properties
**/*.copy.ts **/*.copy.ts
**/*.copy.scss **/*.copy.scss
**/*.copy.html **/*.copy.html
certificates
+1
View File
@@ -7,6 +7,7 @@
}, },
"scripts": { "scripts": {
"dev": "next dev", "dev": "next dev",
"secure": "next dev --experimental-https",
"build": "next build", "build": "next build",
"start": "next start", "start": "next start",
"lint": "next lint", "lint": "next lint",
@@ -1,4 +1,4 @@
import { Button } from "@/modules/common/components/button"; import { Button, Form } from "react-bootstrap";
import { ErrorMessage } from "@/modules/common/components/errorMessage"; import { ErrorMessage } from "@/modules/common/components/errorMessage";
import { SubmissionResult, useForm } from "@conform-to/react"; import { SubmissionResult, useForm } from "@conform-to/react";
import { parseWithZod } from "@conform-to/zod"; import { parseWithZod } from "@conform-to/zod";
@@ -32,33 +32,36 @@ export const LoginForm = ({ result, action, isPending }: Props) => {
return ( return (
<> <>
<ErrorMessage messages={form.errors} /> <ErrorMessage messages={form.errors} />
<form id={form.id} onSubmit={form.onSubmit} action={action} noValidate={true}> <Form id={form.id} action={action} onSubmit={form.onSubmit} noValidate={true}>
<fieldset className="form-group"> <Form.Group className="mb-3" controlId="formEmail">
<input <Form.Label>Adresse email</Form.Label>
<Form.Control
type="email" type="email"
key={fields.email.key} key={fields.email.key}
name={fields.email.name} name={fields.email.name}
defaultValue={fields.email.initialValue} defaultValue={fields.email.initialValue}
placeholder="Email" placeholder="Votre adresse email"
className="form-control form-control-lg"
/> />
<ErrorMessage messages={fields.email.errors} /> <ErrorMessage messages={fields.email.errors} />
</fieldset> </Form.Group>
<fieldset className="form-group"> <Form.Group className="mb-3" controlId="formPassword">
<input <Form.Label>Mot de passe</Form.Label>
<Form.Control
type="password" type="password"
key={fields.password.key} key={fields.password.key}
name={fields.password.name} name={fields.password.name}
defaultValue={fields.password.initialValue} defaultValue={fields.password.initialValue}
placeholder="Password" placeholder="Mot de passe"
className="form-control form-control-lg" autoComplete="new-password"
/> />
<ErrorMessage messages={fields.password.errors} /> <ErrorMessage messages={fields.password.errors} />
</fieldset> </Form.Group>
<Button component="button" size="lg" type="submit" className="pull-xs-right" disabled={isPending}> <div className="d-flex justify-content-end">
<Button variant="primary" type="submit" disabled={isPending}>
Se connecter Se connecter
</Button> </Button>
</form> </div>
</Form>
</> </>
); );
}; };
@@ -1,4 +1,4 @@
import { Button, Form } from 'react-bootstrap'; import { Button, Form } from "react-bootstrap";
//import { Button } from "@/modules/common/components/button"; //import { Button } from "@/modules/common/components/button";
import { ErrorMessage } from "@/modules/common/components/errorMessage"; import { ErrorMessage } from "@/modules/common/components/errorMessage";
import { SubmissionResult, useForm } from "@conform-to/react"; import { SubmissionResult, useForm } from "@conform-to/react";
@@ -77,9 +77,6 @@ export const RegistrationForm = ({ result, action, isPending }: Props) => {
placeholder="Votre adresse email" placeholder="Votre adresse email"
/> />
<ErrorMessage messages={fields.email.errors} /> <ErrorMessage messages={fields.email.errors} />
<Form.Text className="text-muted">
Nous ne partagerons jamais votre email avec qui que ce soit.
</Form.Text>
</Form.Group> </Form.Group>
<Form.Group className="mb-3" controlId="formPassword"> <Form.Group className="mb-3" controlId="formPassword">
<Form.Label>Mot de passe</Form.Label> <Form.Label>Mot de passe</Form.Label>
@@ -93,9 +90,11 @@ export const RegistrationForm = ({ result, action, isPending }: Props) => {
/> />
<ErrorMessage messages={fields.password.errors} /> <ErrorMessage messages={fields.password.errors} />
</Form.Group> </Form.Group>
<div className="d-flex justify-content-end">
<Button variant="primary" type="submit" disabled={isPending}> <Button variant="primary" type="submit" disabled={isPending}>
Submit Créer mon compte
</Button> </Button>
</div>
</Form> </Form>
</> </>
); );
@@ -18,8 +18,8 @@ export const Footer = () => (
</Link> </Link>
<ul className="list-unstyled small"> <ul className="list-unstyled small">
<li className="mb-2"> <li className="mb-2">
L&apos;équipe de passionnés Ad Astra est réactive et à l&apos;écoute de vos demandes afin de vous L&apos;équipe Ad Astra est réactive et à l&apos;écoute de vos demandes afin de vous accompagner au mieux
accompagner au mieux et satisfaire vos besoins en fleurs et hashes CBD de qualité. et satisfaire vos besoins en fleurs et hashes CBD de qualité.
</li> </li>
<li className="mb-2">Exigez la qualité Ad Astra, vous la méritez.</li> <li className="mb-2">Exigez la qualité Ad Astra, vous la méritez.</li>
</ul> </ul>
@@ -124,7 +124,7 @@ export const Footer = () => (
</div> </div>
</div> </div>
</div> </div>
<hr className="mt-3 mb-4" /> <hr className="my-3" />
<p className="text-muted px-4 small">Copyright © 2025 Ad Astra</p> <p className="text-muted px-4 mb-2 small">Copyright © 2025 Ad Astra</p>
</footer> </footer>
); );
+8 -1
View File
@@ -5,7 +5,7 @@ $success: #7952b3;
$dark-blue: #141d5e; /*#171f50;*/ $dark-blue: #141d5e; /*#171f50;*/
$dark-grey: #222222; $dark-grey: #222222;
$gold: #d7c067; $gold: #d7c067;
$orange: #FF8300; $orange: #ff8300;
$time-grey: #b7b2aa; $time-grey: #b7b2aa;
$time-grey-dark: #474747; $time-grey-dark: #474747;
$dark-grey: #222222; $dark-grey: #222222;
@@ -34,6 +34,13 @@ body {
} }
} }
.error-messages {
width: 100%;
margin-top: 0.25rem;
font-size: 0.875em;
color: var(--bs-form-invalid-color);
}
.clock { .clock {
height: 100px; height: 100px;
.divider { .divider {