"use client";

import { useEffect, useState } from "react";
import { usePathname } from "next/navigation";
import { CONTACT } from "@/lib/vulai-content";

// Ticket-buying pages: a single event page (/events/<slug>) and the order /
// ticket pages after checkout. The WhatsApp button is hidden there -- buyers
// were using it to message the VibePass line about individual orders.
// Listing pages (/events, /events/calendar) and the Vulai showcase keep it.
const NO_WHATSAPP = /^\/(events\/(?!calendar$|vulai$)[^/]+|orders\/.*)$/;

// Floating, fixed-position helpers:
//  • a WhatsApp chat button that hands the visitor off to a real person
//    (not on ticket-buying pages, see above), and
//  • a back-to-top button that fades in once the page has scrolled.
export default function FloatingActions() {
  const [showTop, setShowTop] = useState(false);
  const showWhatsApp = !NO_WHATSAPP.test(usePathname() ?? "");

  useEffect(() => {
    const onScroll = () => setShowTop(window.scrollY > 400);
    onScroll();
    window.addEventListener("scroll", onScroll, { passive: true });
    return () => window.removeEventListener("scroll", onScroll);
  }, []);

  const whatsappNumber = CONTACT.phone.replace(/[^\d]/g, "");
  const prefill = encodeURIComponent(
    "Hi VibePass 👋 I'd like to ask about tickets and events."
  );
  const whatsappUrl = `https://wa.me/${whatsappNumber}?text=${prefill}`;

  return (
    <div className="fixed bottom-5 right-5 z-50 flex flex-col items-center gap-3">
      {/* Back-to-top — rendered first so it sits above the chat button, matching
          the stacked layout, and only once the user has scrolled down. */}
      <button
        type="button"
        onClick={() => window.scrollTo({ top: 0, behavior: "smooth" })}
        aria-label="Back to top"
        title="Back to top"
        className={`grid h-11 w-11 place-items-center rounded-full bg-white text-[#0a0b0f] shadow-lg ring-1 ring-black/5 transition-all duration-300 hover:bg-white/90 ${
          showTop ? "opacity-100 translate-y-0" : "pointer-events-none opacity-0 translate-y-2"
        }`}
      >
        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.2" strokeLinecap="round" strokeLinejoin="round" className="h-5 w-5" aria-hidden>
          <path d="M12 19V5" />
          <path d="m5 12 7-7 7 7" />
        </svg>
      </button>

      {/* WhatsApp chat assistant — opens a live conversation with support. */}
      {showWhatsApp && (
      <a
        href={whatsappUrl}
        target="_blank"
        rel="noopener noreferrer"
        aria-label="Chat with us on WhatsApp"
        title="Chat with us on WhatsApp"
        className="group relative grid h-14 w-14 place-items-center rounded-full bg-[#25D366] text-white shadow-lg shadow-[#25D366]/30 transition-transform hover:scale-105 active:scale-95"
      >
        {/* gentle attention pulse */}
        <span className="absolute inset-0 -z-10 rounded-full bg-[#25D366] opacity-60 motion-safe:animate-ping" />
        <svg viewBox="0 0 24 24" fill="currentColor" className="h-7 w-7" aria-hidden>
          <path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.885-9.885 9.885M20.52 3.449C18.24 1.245 15.24 0 12.045 0 5.463 0 .104 5.334.101 11.892c0 2.096.549 4.14 1.595 5.945L0 24l6.335-1.652a12.062 12.062 0 005.71 1.447h.005c6.585 0 11.946-5.335 11.949-11.893a11.821 11.821 0 00-3.479-8.413" />
        </svg>
      </a>
      )}
    </div>
  );
}
