diff --git a/src/components/dashboard/WelcomeSection.tsx b/src/components/dashboard/WelcomeSection.tsx index 4fe1ddb..e74a80c 100644 --- a/src/components/dashboard/WelcomeSection.tsx +++ b/src/components/dashboard/WelcomeSection.tsx @@ -1,7 +1,7 @@ 'use client'; import { useSession } from 'next-auth/react'; -import { useState, useEffect } from 'react'; +import { useState, useEffect, useRef } from 'react'; const WELCOME_GREETINGS = [ "Bienvenue", @@ -134,14 +134,32 @@ export function WelcomeSection() { const [welcomeMessage, setWelcomeMessage] = useState(''); const [timeMessage, setTimeMessage] = useState(''); const [greeting, setGreeting] = useState(''); + const [isAnimating, setIsAnimating] = useState(false); + const [particleCount, setParticleCount] = useState(0); + const containerRef = useRef(null); useEffect(() => { // Générer un message de bienvenue aléatoire setWelcomeMessage(getRandomWelcomeMessage()); setTimeMessage(getTimeBasedMessage()); setGreeting(getRandomGreeting()); + + // Animation d'entrée + setTimeout(() => setIsAnimating(true), 100); }, []); + const handleRefresh = () => { + setIsAnimating(false); + setParticleCount(prev => prev + 1); + + setTimeout(() => { + setWelcomeMessage(getRandomWelcomeMessage()); + setTimeMessage(getTimeBasedMessage()); + setGreeting(getRandomGreeting()); + setIsAnimating(true); + }, 300); + }; + if (!session?.user) { return null; } @@ -151,63 +169,165 @@ export function WelcomeSection() { session.user.email; return ( -
-
- {/* Avatar */} -
+
+ {/* Particules animées */} +
+ {Array.from({ length: 12 }).map((_, i) => ( +
+ ))} +
+ + {/* Effet de brillance */} +
+ +
+ {/* Avatar avec animations */} +
+
+ {session.user.avatar ? (
+
{/* eslint-disable-next-line @next/next/no-img-element */} Avatar -
- +
+
) : ( -
- +
+
)}
- {/* Message de bienvenue */} -
-

- {greeting}, {displayName} ! -

-

- {timeMessage} -

-

- {welcomeMessage} -

+ {/* Message de bienvenue avec animations */} +
+
+

+ + {greeting} + + , + + {displayName} + + ! +

+
+ +
+

+ {timeMessage} +

+
+ +
+

+ {welcomeMessage} +

+
- {/* Bouton pour changer le message */} + {/* Bouton avec animations avancées */}
+ +
); }