// BEGIN CHANGE: provider de idioma client-side (persiste em localStorage)
"use client";

import { createContext, useContext, useEffect, useState } from "react";
import { Lang, Messages, messages } from "./messages";

type I18nContext = {
  lang: Lang;
  setLang: (l: Lang) => void;
  t: Messages;
};

const STORAGE_KEY = "wa_lang";
const Ctx = createContext<I18nContext | null>(null);

export function LanguageProvider({ children }: { children: React.ReactNode }) {
  // Comeca em pt (igual ao prerender) e ajusta no client para evitar mismatch.
  const [lang, setLangState] = useState<Lang>("pt");

  useEffect(() => {
    const saved = localStorage.getItem(STORAGE_KEY) as Lang | null;
    if (saved && saved in messages) {
      setLangState(saved);
    }
  }, []);

  const setLang = (l: Lang) => {
    setLangState(l);
    localStorage.setItem(STORAGE_KEY, l);
    document.documentElement.lang = l === "pt" ? "pt-BR" : l;
  };

  return (
    <Ctx.Provider value={{ lang, setLang, t: messages[lang] }}>
      {children}
    </Ctx.Provider>
  );
}

export function useI18n() {
  const ctx = useContext(Ctx);
  if (!ctx) throw new Error("useI18n must be used within LanguageProvider");
  return ctx;
}
// END CHANGE
