"use client";

import type { Locale } from "@/lib/i18n";
import type { PeriodPreset } from "@/lib/types";
import { create } from "zustand";

type OenoscopeState = {
  locale: Locale;
  period: PeriodPreset;
  periodMode: "preset" | "custom";
  customRange: { from: string; to: string };
  selectedCuvees: string[];
  setLocale: (locale: Locale) => void;
  setPeriod: (period: PeriodPreset) => void;
  setCustomRange: (range: { from: string; to: string }) => void;
  toggleCuvee: (cuveeId: string) => void;
};

export const useOenoscopeStore = create<OenoscopeState>((set) => ({
  locale: "fr",
  period: "90d",
  periodMode: "preset",
  customRange: { from: "2026-02-25", to: "2026-05-26" },
  selectedCuvees: ["chevalier-rouge", "chevalier-blanc", "esprit-rouge"],
  setLocale: (locale) => set({ locale }),
  setPeriod: (period) => set({ period, periodMode: "preset" }),
  setCustomRange: (customRange) => set({ customRange, periodMode: "custom" }),
  toggleCuvee: (cuveeId) =>
    set((state) => {
      const selectedCuvees = state.selectedCuvees.includes(cuveeId)
        ? state.selectedCuvees.filter((id) => id !== cuveeId)
        : [...state.selectedCuvees, cuveeId];
      return { selectedCuvees: selectedCuvees.length ? selectedCuvees : [cuveeId] };
    })
}));
