"use client";

import { createContext, useContext } from "react";
import type { ProdutoDoEditor } from "./campos";
import type { SecaoDoEditor, Tema } from "@/lib/pagina-inicial";

/*
  O que o editor da página inicial empresta aos campos de dentro dos ajustes
  sem passar de mão em mão: a loja (dono, tema, cor, produtos) para o
  "Gerar banner", a prévia das seções agendadas e o "Salvar como bloco".
  Fora do editor o valor é null e os campos ficam como sempre foram.
*/
export type ContextoDoEditorDoPainel = {
  dono: string;
  tema: Tema;
  corDaLoja: string;
  produtos: ProdutoDoEditor[];
  /* Quem pode criar banners (catalog.banners.write ou marketing.manage). */
  podeGerarBanner: boolean;
  /* As agendadas vistas na prévia como se estivessem no ar. */
  previaNoAr: ReadonlySet<string>;
  alternarPrevia: (chave: string) => void;
  salvarComoBloco: (secao: SecaoDoEditor) => void;
};

export const ContextoDoPainel = createContext<ContextoDoEditorDoPainel | null>(null);

export function useEditorDoPainel() {
  return useContext(ContextoDoPainel);
}
