import {
  createContext,
  useContext,
  useMemo,
  useState,
  type Dispatch,
  type ReactNode,
  type SetStateAction,
} from "react";

type SiteChromeContextValue = {
  hasPageFooter: boolean;
  setHasPageFooter: Dispatch<SetStateAction<boolean>>;
};

const SiteChromeContext = createContext<SiteChromeContextValue | null>(null);

export function SiteChromeProvider({ children }: { children: ReactNode }) {
  const [hasPageFooter, setHasPageFooter] = useState(false);
  const value = useMemo(
    () => ({ hasPageFooter, setHasPageFooter }),
    [hasPageFooter]
  );
  return <SiteChromeContext.Provider value={value}>{children}</SiteChromeContext.Provider>;
}

const noop = () => {};

export function useSiteChrome(): SiteChromeContextValue {
  const ctx = useContext(SiteChromeContext);
  if (!ctx) {
    return { hasPageFooter: false, setHasPageFooter: noop };
  }
  return ctx;
}
