"use client";

import { createContext, useContext, useMemo, useState, type ReactNode } from "react";
import type { SiteId, VehicleGroup } from "@/lib/fleet/types";

interface FilterState {
  siteId: SiteId | "all";
  group: VehicleGroup | "all";
  setSiteId: (id: SiteId | "all") => void;
  setGroup: (g: VehicleGroup | "all") => void;
}

const FilterContext = createContext<FilterState | null>(null);

export function FilterProvider({ children }: { children: ReactNode }) {
  const [siteId, setSiteId] = useState<SiteId | "all">("all");
  const [group, setGroup] = useState<VehicleGroup | "all">("all");
  const value = useMemo(
    () => ({ siteId, group, setSiteId, setGroup }),
    [siteId, group],
  );
  return (
    <FilterContext.Provider value={value}>{children}</FilterContext.Provider>
  );
}

export function useFilters(): FilterState {
  const ctx = useContext(FilterContext);
  if (!ctx) throw new Error("useFilters außerhalb von FilterProvider");
  return ctx;
}
