"use client";

import { createContext, ReactNode, useContext, useMemo } from "react";
import { SiteTextMap, text, toResolvedSiteText } from "@/lib/site-text";

const SiteTextContext = createContext<SiteTextMap>(toResolvedSiteText());

type SiteTextProviderProps = {
  siteText?: SiteTextMap | null;
  children: ReactNode;
};

export function SiteTextProvider({ siteText, children }: SiteTextProviderProps) {
  const value = useMemo(() => toResolvedSiteText(siteText), [siteText]);
  return <SiteTextContext.Provider value={value}>{children}</SiteTextContext.Provider>;
}

export function useSiteText() {
  const siteText = useContext(SiteTextContext);

  return {
    siteText,
    t: (key: string, fallback?: string) => text(siteText, key, fallback),
  };
}
