import { useCallback, useRef, useState } from 'react';
import { MoveHorizontal } from 'lucide-react';
import ScrollReveal from '@/components/ScrollReveal';

import avantImg from '@/assets/produits/covatherm-light-avant.jpg';
import apresImg from '@/assets/produits/covatherm-light-apres.jpg';

const CovaThermLightBeforeAfterES = () => {
  const [position, setPosition] = useState(50);
  const containerRef = useRef<HTMLDivElement>(null);
  const isDraggingRef = useRef(false);

  const updateFromClientX = useCallback((clientX: number) => {
    const el = containerRef.current;
    if (!el) return;
    const rect = el.getBoundingClientRect();
    const pct = ((clientX - rect.left) / rect.width) * 100;
    setPosition(Math.min(100, Math.max(0, pct)));
  }, []);

  const handlePointerDown = (e: React.PointerEvent) => {
    isDraggingRef.current = true;
    (e.target as HTMLElement).setPointerCapture?.(e.pointerId);
    updateFromClientX(e.clientX);
  };
  const handlePointerMove = (e: React.PointerEvent) => {
    if (!isDraggingRef.current) return;
    updateFromClientX(e.clientX);
  };
  const handlePointerUp = () => {
    isDraggingRef.current = false;
  };

  return (
    <section className="py-16 lg:py-24 bg-cream">
      <div className="container mx-auto px-4 lg:px-8 max-w-5xl">
        <ScrollReveal>
          <div className="mb-10 lg:mb-14 max-w-2xl">
            <p className="text-[10px] uppercase tracking-[0.25em] font-semibold text-primary/65 font-body mb-3">
              Antes / después
            </p>
            <h2
              className="font-satoshi text-3xl sm:text-4xl lg:text-5xl font-black text-foreground !leading-[1.05] mb-5"
              style={{ letterSpacing: '-0.03em' }}
            >
              El confort,
              <br />
              <span className="text-foreground/45">antes y después de CovaTherm Light.</span>
            </h2>
            <p className="text-foreground/70 text-base font-body leading-relaxed">
              Deslice el control para comparar el ambiente bajo un lucernario de
              policarbonato antes y después de aplicar el recubrimiento solar. La luz
              natural sigue presente, pero el deslumbramiento y el calor radiante
              desaparecen.
            </p>
          </div>
        </ScrollReveal>

        <ScrollReveal>
          <div
            ref={containerRef}
            className="relative w-full aspect-[4/3] sm:aspect-[16/10] rounded-2xl overflow-hidden shadow-[0_20px_60px_rgba(26,42,58,0.15)] select-none touch-none"
            onPointerDown={handlePointerDown}
            onPointerMove={handlePointerMove}
            onPointerUp={handlePointerUp}
            onPointerCancel={handlePointerUp}
          >
            {/* Después (debajo, completa) */}
            <img
              src={apresImg.src}
              alt="Lucernario tratado con CovaTherm Light: luz natural conservada, deslumbramiento eliminado y un descenso medio de 5 °C"
              className="absolute inset-0 w-full h-full object-cover"
              draggable={false}
              loading="lazy"
            />

            {/* Antes (encima, recortada) */}
            <img
              src={avantImg.src}
              alt="Lucernario sin tratar: luz abundante, pero con deslumbramiento y calor radiante sobre los puestos de trabajo"
              className="absolute inset-0 w-full h-full object-cover"
              style={{ clipPath: `inset(0 ${100 - position}% 0 0)` }}
              draggable={false}
              loading="lazy"
            />

            {/* Etiquetas */}
            <div className="absolute top-4 left-4 bg-foreground/80 backdrop-blur-sm text-white text-[10px] font-bold uppercase tracking-[0.2em] px-3 py-1.5 rounded-full">
              Antes
            </div>
            <div className="absolute top-4 right-4 bg-teal-vivid text-white text-[10px] font-bold uppercase tracking-[0.2em] px-3 py-1.5 rounded-full">
              Después
            </div>

            {/* Barra vertical + control */}
            <div
              className="absolute top-0 bottom-0 w-0.5 bg-white pointer-events-none"
              style={{ left: `${position}%`, transform: 'translateX(-50%)' }}
            >
              <div className="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-11 h-11 rounded-full bg-white shadow-[0_4px_20px_rgba(0,0,0,0.35)] flex items-center justify-center">
                <MoveHorizontal className="w-5 h-5 text-foreground" strokeWidth={2.25} />
              </div>
            </div>

            {/* Range accesible por teclado */}
            <input
              type="range"
              min={0}
              max={100}
              value={position}
              onChange={(e) => setPosition(Number(e.target.value))}
              aria-label="Posición del comparador antes / después"
              className="absolute inset-0 w-full h-full opacity-0 cursor-ew-resize"
            />
          </div>
        </ScrollReveal>

        <ScrollReveal>
          <div className="grid grid-cols-1 sm:grid-cols-2 gap-4 mt-6">
            <p className="text-sm text-foreground/65 font-body leading-relaxed">
              <strong className="text-foreground">Antes.</strong> La luz es abundante,
              pero el material translúcido provoca deslumbramiento y calor. Los puestos de
              trabajo situados debajo resultan incómodos.
            </p>
            <p className="text-sm text-foreground/65 font-body leading-relaxed sm:text-right">
              <strong className="text-foreground">Después.</strong> La luz se conserva, el
              deslumbramiento desaparece y el calor queda bloqueado. Descenso medio de 5 °C
              bajo las superficies tratadas.
            </p>
          </div>
        </ScrollReveal>
      </div>
    </section>
  );
};

export default CovaThermLightBeforeAfterES;
