Ajouter la page concept, améliorer la bannière, ajouter pages contact et concept au menu et ajouter la condition d'inscription pour plus de 18 ans

This commit is contained in:
Alexis SANOGO
2026-08-29 01:44:20 +02:00
parent fc9bcbf8da
commit a1ab2df975
22 changed files with 495 additions and 66 deletions

View File

@@ -6,6 +6,18 @@ import { useAuth } from '../context/AuthContext'
// Une naissance ne peut pas être dans le futur : borne haute du sélecteur.
const AUJOURD_HUI = new Date().toISOString().split('T')[0]
// Le jeu est réservé aux personnes majeures.
function hasAtLeast18Years(birthdate) {
const birth = new Date(birthdate)
const today = new Date()
let age = today.getFullYear() - birth.getFullYear()
const monthDiff = today.getMonth() - birth.getMonth()
if (monthDiff < 0 || (monthDiff === 0 && today.getDate() < birth.getDate())) {
age--
}
return age >= 18
}
// Valeurs alignées sur le tableau de bord admin, qui compte exactement
// "Homme" et "Femme" ; toute autre valeur retombe dans la catégorie "autre".
const GENRES = ['Femme', 'Homme', 'Autre']
@@ -51,6 +63,12 @@ export default function Inscription() {
const handleSubmit = async (e) => {
e.preventDefault()
setError('')
if (!hasAtLeast18Years(form.birthdate)) {
setError('Vous devez avoir au moins 18 ans pour vous inscrire.')
return
}
setLoading(true)
try {
await registerApi({
@@ -203,9 +221,10 @@ export default function Inscription() {
</div>
<div>
<label htmlFor="reg-birthdate" className="block text-sm font-medium text-gray-800 mb-1">Date de naissance</label>
<input type="date" id="reg-birthdate" name="birthdate" value={form.birthdate} onChange={handleChange} max={AUJOURD_HUI}
<label htmlFor="reg-birthdate" className="block text-sm font-medium text-gray-800 mb-1">Date de naissance <span className="text-gray-800">*</span></label>
<input type="date" id="reg-birthdate" name="birthdate" value={form.birthdate} onChange={handleChange} required max={AUJOURD_HUI}
className="w-full border border-gray-200 rounded-lg px-4 py-3 text-sm text-gray-700 focus:outline-none focus:ring-1 focus:ring-[#006B6B] focus:border-[#006B6B]" />
<p className="text-xs text-gray-500 mt-1">Le jeu-concours est réservé aux personnes majeures.</p>
</div>
<div>