"use client";

import { useEffect, useState } from "react";
import { Moon, Sun } from "lucide-react";

/**
 * Sakelar tema gelap/terang.
 * Preferensi disimpan di cookie `velo-theme` sehingga server merender
 * class tema langsung di <html> — bebas kedip dan tanpa skrip anti-flash.
 */
export default function ThemeToggle({ className = "" }: { className?: string }) {
  const [light, setLight] = useState(false);
  const [mounted, setMounted] = useState(false);

  useEffect(() => {
    setLight(document.documentElement.classList.contains("light"));
    setMounted(true);
  }, []);

  function toggle() {
    const next = !light;
    setLight(next);
    document.documentElement.classList.toggle("light", next);
    document.cookie = `velo-theme=${next ? "light" : "dark"}; path=/; max-age=31536000; samesite=lax`;
  }

  return (
    <button
      onClick={toggle}
      aria-label={light ? "Aktifkan mode gelap" : "Aktifkan mode terang"}
      title={light ? "Mode gelap" : "Mode terang"}
      className={`glow-border grid size-10 place-items-center rounded-full text-fg transition-colors hover:bg-panel-strong ${className}`}
    >
      {mounted && light ? (
        <Moon size={16} strokeWidth={1.8} />
      ) : (
        <Sun size={16} strokeWidth={1.8} />
      )}
    </button>
  );
}
