diff --git a/frontend/src/components/Footer.jsx b/frontend/src/components/Footer.jsx index e16923d..c12c9f8 100644 --- a/frontend/src/components/Footer.jsx +++ b/frontend/src/components/Footer.jsx @@ -20,7 +20,7 @@ export default function Footer() { {/* Partie principale */} -
+
{/* Logo */} @@ -185,7 +185,7 @@ export default function Footer() { 01 84 80 20 34 - + contact@thetiptop.fr diff --git a/frontend/src/components/Header.jsx b/frontend/src/components/Header.jsx index 0862d4f..ae0c831 100644 --- a/frontend/src/components/Header.jsx +++ b/frontend/src/components/Header.jsx @@ -9,7 +9,7 @@ export default function Header() { const navigate = useNavigate() const { user, logout } = useAuth() const isLoggedIn = !!user - const logoContent = Logo de Thé Tip Top + const logoContent = Logo de Thé Tip Top const handleLogout = () => { logout() @@ -40,12 +40,12 @@ export default function Header() { )} {/* Nav desktop */} -
) : (
- + Connexion - + Inscription
diff --git a/frontend/src/components/UserNav.jsx b/frontend/src/components/UserNav.jsx index 6582af3..fac7c82 100644 --- a/frontend/src/components/UserNav.jsx +++ b/frontend/src/components/UserNav.jsx @@ -6,6 +6,7 @@ export default function UserNav({ active }) { key: 'code', to: '/saisir-code-unique', label: 'Saisir un code', + shortLabel: 'Code', icon: ( @@ -16,6 +17,7 @@ export default function UserNav({ active }) { key: 'gains', to: '/mes-gains', label: 'Mes gains', + shortLabel: 'Mes gains', icon: ( @@ -26,6 +28,7 @@ export default function UserNav({ active }) { key: 'profile', to: '/profile', label: 'Profil', + shortLabel: 'Profil', icon: ( @@ -43,12 +46,12 @@ export default function UserNav({ active }) { className={`flex-1 flex items-center justify-center gap-1.5 py-3 text-xs sm:text-sm font-medium transition-colors border-b-2 ${ active === tab.key ? 'text-[#006B6B] border-[#006B6B]' - : 'text-gray-400 border-transparent hover:text-gray-600' + : 'text-gray-500 border-transparent hover:text-gray-600' }`} > {tab.icon} {tab.label} - {tab.label.split(' ')[0]} + {tab.shortLabel} ))}
diff --git a/frontend/src/context/AuthContext.jsx b/frontend/src/context/AuthContext.jsx index 552cb66..5035bb7 100644 --- a/frontend/src/context/AuthContext.jsx +++ b/frontend/src/context/AuthContext.jsx @@ -1,3 +1,5 @@ +/* eslint-disable react-refresh/only-export-components */ + import { createContext, useContext, useState } from 'react' const AuthContext = createContext(null) diff --git a/frontend/src/pages/Admin.jsx b/frontend/src/pages/Admin.jsx index 521c00a..7ff6674 100644 --- a/frontend/src/pages/Admin.jsx +++ b/frontend/src/pages/Admin.jsx @@ -8,7 +8,7 @@ function StatCard({ label, value, sub }) {

{value ?? '—'}

{label}

- {sub &&

{sub}

} + {sub &&

{sub}

}
) } @@ -145,6 +145,9 @@ export default function Admin() { const csv = [header, ...rows] .map((row) => row.map((cell) => `"${String(cell).replace(/"/g, '""')}"`).join(';')) .join('\n') + // Le BOM en tete du fichier est indispensable : sans lui, Excel ouvre le + // CSV en ANSI et casse tous les accents. Ne pas le supprimer. + // eslint-disable-next-line no-irregular-whitespace const blob = new Blob([`${csv}`], { type: 'text/csv;charset=utf-8;' }) const url = URL.createObjectURL(blob) const link = document.createElement('a') @@ -196,7 +199,7 @@ export default function Admin() { if (loading) return (
-

Chargement...

+

Chargement...

) @@ -264,7 +267,7 @@ export default function Admin() { -

+

Les participations durent 30 jours, puis 30 jours supplémentaires sont laissés pour retirer les lots.

@@ -393,7 +396,7 @@ export default function Admin() { {emailingContacts.length === 0 && ( - + Aucun contact n'a accepté l'emailing pour le moment @@ -428,7 +431,7 @@ export default function Admin() { onChange={(e) => setTicketCode(e.target.value.toUpperCase())} placeholder="Code ticket (10 caractères)" maxLength={10} - className="flex-1 border border-gray-200 rounded-lg px-4 py-2.5 text-sm font-mono uppercase tracking-widest focus:outline-none focus:ring-2 focus:ring-[#006B6B] focus:border-[#006B6B]" + className="flex-1 min-w-0 border border-gray-200 rounded-lg px-4 py-2.5 text-sm font-mono uppercase tracking-widest focus:outline-none focus:ring-2 focus:ring-[#006B6B] focus:border-[#006B6B]" />