"use client";

import { Search } from "lucide-react";
import { usePathname, useRouter, useSearchParams } from "next/navigation";
import { useEffect, useState } from "react";

const ACTIONS = [
  "Neueinstellung",
  "Wiedereinstellung",
  "Rückkehr",
  "Austritt",
  "Versetzung",
  "Ausschreibung",
  "Interne Besetzung",
  "Beförderung",
  "Reorganisation",
  "Reorganisation rückgängig",
  "Karenz",
  "Vertragsänderung",
  "Stammdatenänderung",
  "Gehaltsanpassung",
];

export function AuditFilters() {
  const router = useRouter();
  const pathname = usePathname();
  const searchParams = useSearchParams();
  const [q, setQ] = useState(searchParams.get("q") ?? "");

  useEffect(() => {
    const handle = setTimeout(() => {
      const current = new URLSearchParams(searchParams.toString());
      if (q) current.set("q", q);
      else current.delete("q");
      current.delete("page");
      const next = current.toString();
      if (next !== searchParams.toString()) router.push(`${pathname}?${next}`);
    }, 300);
    return () => clearTimeout(handle);
    // eslint-disable-next-line react-hooks/exhaustive-deps
  }, [q]);

  function updateParam(key: string, value: string) {
    const params = new URLSearchParams(searchParams.toString());
    if (value) params.set(key, value);
    else params.delete(key);
    params.delete("page");
    router.push(`${pathname}?${params.toString()}`);
  }

  return (
    <div className="flex flex-wrap items-center gap-3">
      <div className="flex min-w-[240px] flex-1 items-center gap-2 rounded border border-border bg-white px-3 py-2">
        <Search className="h-4 w-4 shrink-0 text-ink-muted" />
        <input
          value={q}
          onChange={(e) => setQ(e.target.value)}
          placeholder="Objekt, Details, Benutzer:in…"
          className="w-full text-sm text-ink outline-none placeholder:text-ink-muted"
        />
      </div>
      <select
        defaultValue={searchParams.get("action") ?? ""}
        onChange={(e) => updateParam("action", e.target.value)}
        className="rounded border border-border bg-white px-3 py-2 text-sm text-ink"
      >
        <option value="">Alle Aktionen</option>
        {ACTIONS.map((a) => (
          <option key={a} value={a}>
            {a}
          </option>
        ))}
      </select>
    </div>
  );
}
