// Rôle : affiche la section de prise en main de la home avec étapes, slider et accès rapides. import { useEffect, useMemo, useState } from "react"; const SLIDE_INTERVAL_MS = 4500; function prefersReducedMotion() { return typeof window !== "undefined" && window.matchMedia?.("(prefers-reduced-motion: reduce)").matches; } export function HomeOnboardingSection({ content, className = "", onCreateToolbox }) { const slides = useMemo(() => content?.slides || [], [content]); const [activeSlide, setActiveSlide] = useState(0); const [isPaused, setIsPaused] = useState(false); useEffect(() => { if (slides.length <= 1 || isPaused || prefersReducedMotion()) return undefined; const intervalId = window.setInterval(() => { setActiveSlide((current) => (current + 1) % slides.length); }, SLIDE_INTERVAL_MS); return () => window.clearInterval(intervalId); }, [isPaused, slides.length]); if (!content) return null; const currentSlide = slides[activeSlide] || slides[0]; return (

{content.eyebrow}

{content.title}

{content.description}

{content.stepsTitle}

    {content.steps.map((step, index) => (
  1. {index + 1}
    {step.title}

    {step.text}

  2. ))}
{onCreateToolbox && content.primaryAction && (
)}

{content.sliderTitle}

setIsPaused(true)} onMouseLeave={() => setIsPaused(false)} onFocus={() => setIsPaused(true)} onBlur={() => setIsPaused(false)} > {currentSlide && (
{currentSlide.alt}
{currentSlide.title} {currentSlide.text}
)} {slides.length > 1 && (
{slides.map((slide, index) => (
)}
{content.cards.map((card) => ( {card.text} {card.action} ))}
); }