"use client";

import Link from "next/link";
import { CreditCard, Mail, MapPin, Phone, ShieldCheck } from "lucide-react";
import type { Destino } from "@/lib/navegacao-da-loja";
import type { VendorCategoria, VendorContato } from "./VendorShell";

/*
  O rodapé que a loja montou no editor, no template Vendor.

  O mesmo desenho do rodapé de sempre do Vendor (cores, container, títulos
  em caixa alta, o bloco "Compra 100% segura" e a linha do CNPJ), com as
  colunas de links da loja, o texto "Sobre" e os blocos que ela deixou
  ligados. Só monta quando o rodapé publicado é diferente do padrão.
*/

export type VendorColunaPronta = { id: string; titulo: string; links: Array<{ id: string; rotulo: string; destino: Destino }> };

function LinkDoRodape({ destino, children }: { destino: Destino; children: React.ReactNode }) {
  const classe = "block transition-opacity hover:opacity-100";
  const alvo = destino.novaAba ? "_blank" : undefined;
  const rel = destino.novaAba || destino.externo ? "noopener noreferrer" : undefined;
  return destino.externo ? (
    <a href={destino.href} target={alvo} rel={rel} className={classe}>
      {children}
    </a>
  ) : (
    <Link href={destino.href} target={alvo} rel={rel} className={classe}>
      {children}
    </Link>
  );
}

export function VendorRodapeProprio({
  regiao,
  slug,
  nomeDaLoja,
  contato,
  linkDoWhats,
  categorias,
  linkDaCategoria,
  sobre,
  colunas,
  mostrarContato,
  mostrarRedes,
  mostrarPagamento,
  mostrarCategorias,
}: {
  regiao: Record<string, string>;
  slug: string;
  nomeDaLoja: string;
  contato: VendorContato;
  linkDoWhats: string | null;
  categorias: VendorCategoria[];
  linkDaCategoria: (categoria: VendorCategoria) => string;
  sobre: string;
  colunas: VendorColunaPronta[];
  mostrarContato: boolean;
  mostrarRedes: boolean;
  mostrarPagamento: boolean;
  mostrarCategorias: boolean;
}) {
  const titulo = "text-sm font-extrabold uppercase tracking-wide";
  return (
    <footer
      {...regiao}
      className="mt-10 border-t"
      style={{ backgroundColor: "var(--vd-footer-bg)", color: "var(--vd-footer-fg)", borderColor: "var(--vd-footer-border)" }}
    >
      <div className="mx-auto w-full max-w-6xl px-4 py-8">
        <div className="grid gap-8 sm:grid-cols-2 lg:grid-cols-4">
          {sobre ? (
            <section className="space-y-4">
              <h3 className={titulo}>Sobre a {nomeDaLoja}</h3>
              <div className="space-y-2 text-sm leading-relaxed opacity-80">
                {sobre.split(/\n+/).map((paragrafo, i) => (
                  <p key={i}>{paragrafo}</p>
                ))}
              </div>
            </section>
          ) : null}

          {mostrarContato ? (
            <section className="space-y-4">
              <h3 className={titulo}>Entre em contato</h3>
              <div className="space-y-3 text-sm opacity-80">
                {linkDoWhats ? (
                  <a href={linkDoWhats} target="_blank" rel="noopener noreferrer" className="flex gap-3 transition-opacity hover:opacity-100">
                    <Phone className="h-4 w-4 shrink-0" />
                    <span>{contato.whatsapp}</span>
                  </a>
                ) : null}
                {contato.telefone ? (
                  <p className="flex gap-3">
                    <Phone className="h-4 w-4 shrink-0" />
                    <span>{contato.telefone}</span>
                  </p>
                ) : null}
                {contato.email ? (
                  <a href={`mailto:${contato.email}`} className="flex gap-3 transition-opacity hover:opacity-100">
                    <Mail className="h-4 w-4 shrink-0" />
                    <span>{contato.email}</span>
                  </a>
                ) : null}
                {contato.endereco ? (
                  <p className="flex gap-3">
                    <MapPin className="h-4 w-4 shrink-0" />
                    <span>{contato.endereco}</span>
                  </p>
                ) : null}
              </div>
            </section>
          ) : null}

          {colunas.map((coluna) => (
            <section key={coluna.id} className="space-y-4">
              {coluna.titulo ? <h3 className={titulo}>{coluna.titulo}</h3> : null}
              <div className="space-y-2 text-sm opacity-80">
                {coluna.links.map((link) => (
                  <LinkDoRodape key={link.id} destino={link.destino}>
                    {link.rotulo}
                  </LinkDoRodape>
                ))}
              </div>
            </section>
          ))}

          {mostrarPagamento || mostrarCategorias ? (
            <section className="space-y-4">
              {mostrarPagamento ? (
                <>
                  <h3 className={titulo}>Formas de pagamento</h3>
                  <div className="flex flex-wrap gap-2">
                    {["Pix", "Cartão de crédito", "Boleto"].map((forma) => (
                      <span
                        key={forma}
                        className="inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium"
                        style={{ borderRadius: "var(--vd-radius-md)", backgroundColor: "rgba(255,255,255,0.08)" }}
                      >
                        <CreditCard className="h-3.5 w-3.5" />
                        {forma}
                      </span>
                    ))}
                  </div>
                </>
              ) : null}
              {mostrarCategorias && categorias.length ? (
                <>
                  <h3 className={`${titulo}${mostrarPagamento ? " pt-2" : ""}`}>Categorias</h3>
                  <div className="space-y-2 text-sm opacity-80">
                    {categorias.slice(0, 5).map((categoria) => (
                      <Link key={categoria.id} href={linkDaCategoria(categoria)} className="block transition-opacity hover:opacity-100">
                        {categoria.name}
                      </Link>
                    ))}
                  </div>
                </>
              ) : null}
            </section>
          ) : null}

          <section className="space-y-4">
            <h3 className={titulo}>Compra 100% segura</h3>
            <div className="flex items-start gap-3 p-4" style={{ borderRadius: "var(--vd-radius-lg)", backgroundColor: "rgba(255,255,255,0.06)" }}>
              <ShieldCheck className="mt-0.5 h-5 w-5 shrink-0 opacity-90" />
              <div className="min-w-0">
                <p className="text-sm font-semibold">Seus dados estão protegidos</p>
                <p className="mt-1 text-xs leading-relaxed opacity-70">
                  Loja com conexão segura e pagamento processado por instituição autorizada.
                </p>
              </div>
            </div>
            <div className="space-y-2 text-sm opacity-80">
              <Link href={`/${slug}/cliente`} className="block transition-opacity hover:opacity-100">
                Meus pedidos
              </Link>
              {mostrarRedes && contato.instagram ? (
                <a href={contato.instagram} target="_blank" rel="noopener noreferrer" className="block transition-opacity hover:opacity-100">
                  Instagram
                </a>
              ) : null}
              {mostrarRedes && contato.facebook ? (
                <a href={contato.facebook} target="_blank" rel="noopener noreferrer" className="block transition-opacity hover:opacity-100">
                  Facebook
                </a>
              ) : null}
            </div>
          </section>
        </div>

        {contato.cnpj ? (
          <p className="mt-8 border-t pt-6 text-justify text-xs leading-relaxed opacity-70" style={{ borderColor: "var(--vd-footer-border)" }}>
            {nomeDaLoja} · CNPJ {contato.cnpj}. O prazo de produção começa a contar depois da aprovação da arte e da
            confirmação do pagamento, e não inclui o tempo de entrega.
          </p>
        ) : null}

        <p className="pt-8 text-center text-[11px] font-light opacity-70">
          © {new Date().getFullYear()}, {nomeDaLoja}. Todos os direitos reservados.
        </p>
      </div>
    </footer>
  );
}
