/*
 * Os ícones da casa, casados pelo nome do item.
 *
 * Duas bibliotecas, porque insumo não é produto: produto pronto usa a arte da
 * galeria de precificação (/icones/precificacao) mais a coleção de
 * /icones/estoque/produtos; matéria-prima usa /icones/estoque/insumos.
 * A ORDEM das regras importa (o específico vem antes do genérico: "letra
 * caixa" antes de "caixa", "pó cola" antes de "cola"). Quem não casa com
 * família nenhuma devolve null e a tela usa o avatar de inicial.
 */

const P = "/icones/precificacao";
const E = "/icones/estoque/produtos";
const I = "/icones/estoque/insumos";

const PRODUTOS: Array<[RegExp, string]> = [
  [/wind/, `${P}/wind-banner.png`],
  [/fachada/, `${P}/fachada-lona.png`],
  [/painel|backdrop/, `${E}/painel-festa.svg`],
  [/banner|lona/, `${P}/banner-lona.png`],
  [/etiqueta|rotulo/, `${P}/etiqueta-rotulo.png`],
  [/imantado|\bima\b|geladeira/, `${E}/ima-geladeira.svg`],
  [/parede/, `${E}/adesivo-parede.svg`],
  [/adesivo|vinil|plotagem/, `${P}/adesivo-vinil.png`],
  [/quadro|canvas/, `${E}/quadro-canvas.svg`],
  [/placa|acm|chapa|pvc|acrilico/, `${P}/placa-acm.png`],
  [/cartao/, `${P}/cartao-visita.png`],
  [/flyer|panfleto|folheto/, `${P}/flyer.png`],
  [/caneca|xicara/, `${P}/caneca-sublimada.png`],
  [/squeeze|garrafa/, `${E}/squeeze.svg`],
  [/taca/, `${E}/taca.svg`],
  [/copo/, `${E}/copo-long.svg`],
  [/camiseta.*sublim|sublim.*camiseta|poliester/, `${P}/camiseta-sublimada.png`],
  [/camiseta|blusa|moletom|dtf/, `${P}/camiseta-dtf.png`],
  [/chaveiro/, `${P}/chaveiro-mdf.png`],
  [/impressao 3d|filamento|3d/, `${P}/impressao-3d.png`],
  [/caderneta|caderno|agenda|bloco/, `${E}/caderneta.svg`],
  [/sacola|bolsa|ecobag/, `${E}/sacola.svg`],
  [/azulejo/, `${E}/azulejo.svg`],
  [/mousepad|mouse pad/, `${E}/mousepad.svg`],
  [/almofada/, `${E}/almofada.svg`],
  [/chinelo|sandalia/, `${E}/chinelo.svg`],
  [/\bbone\b|\bboné\b/, `${E}/bone.svg`],
  [/avental/, `${E}/avental.svg`],
  [/calendario/, `${E}/calendario.svg`],
  [/convite/, `${E}/convite.svg`],
  [/envelope/, `${E}/envelope.svg`],
  [/\bpasta\b/, `${E}/pasta.svg`],
  [/cracha/, `${E}/cracha.svg`],
  [/topo de bolo|topper|topo bolo/, `${E}/topo-bolo.svg`],
  [/\btag\b/, `${E}/tag.svg`],
  [/luminoso|luminaria|neon/, `${E}/luminoso.svg`],
  [/letra caixa|letra-caixa|letreiro/, `${E}/letra-caixa.svg`],
  [/faixa/, `${E}/faixa.svg`],
  [/cavalete/, `${E}/cavalete.svg`],
  [/display|totem/, `${E}/display.svg`],
  [/trofeu|medalha/, `${E}/trofeu.svg`],
  [/carimbo/, `${E}/carimbo.svg`],
  [/caixa/, `${E}/caixa-mdf.svg`],
  [/botton|boton|broche/, `${E}/botton.svg`],
];

const INSUMOS: Array<[RegExp, string]> = [
  [/tinta/, `${I}/tinta.svg`],
  [/laminacao/, `${I}/laminacao.svg`],
  [/ribbon/, `${I}/ribbon.svg`],
  [/\bfita\b/, `${I}/fita.svg`],
  [/lona|vinil|filme|bobina|rolo/, `${I}/bobina.svg`],
  [/transfer|sublimatic/, `${I}/papel-transfer.svg`],
  [/papel|folha|couche|miolo|resma|offset|fotografico/, `${I}/resma-papel.svg`],
  [/caneca|xicara/, `${I}/caneca-blank.svg`],
  [/camiseta|blusa|algodao|poliester/, `${I}/camiseta-blank.svg`],
  [/filamento|\bpla\b|\babs\b|petg/, `${I}/filamento.svg`],
  [/\bpo\b/, `${I}/po-dtf.svg`],
  [/cola/, `${I}/cola.svg`],
  [/verniz/, `${I}/verniz.svg`],
  [/sarrafo|bastao|madeira|ripa/, `${I}/bastao.svg`],
  [/ponteira|tampinha/, `${I}/ponteira-banner.svg`],
  [/caixinha|caixa|embalagem/, `${I}/embalagem-caixa.svg`],
  [/\bsaco\b|plastico/, `${I}/saco-plastico.svg`],
  [/mdf/, `${I}/chapa-mdf.svg`],
  [/acrilico|acetato|\bps\b/, `${I}/chapa-acrilico.svg`],
  [/manta|imantad/, `${I}/manta-ima.svg`],
  [/\beva\b/, `${I}/eva.svg`],
  [/tecido|lycra|oxford|malha/, `${I}/tecido.svg`],
  [/linha|torsal|corda|cordao|cordinha|barbante/, `${I}/linha.svg`],
  [/click|clique/, `${I}/click-impressao.svg`],
  [/toner|cartucho/, `${I}/toner.svg`],
  [/ilhos|argola|pingente|parafuso|bucha|ferragem/, `${I}/ferragens.svg`],
  [/chapa/, `${I}/chapa-mdf.svg`],
];

const TROCAS: Record<string, string> = {
  "á": "a", "à": "a", "â": "a", "ã": "a", "ä": "a",
  "é": "e", "ê": "e", "è": "e",
  "í": "i", "î": "i",
  "ó": "o", "ô": "o", "õ": "o", "ö": "o",
  "ú": "u", "û": "u", "ü": "u",
  "ç": "c",
};

const semAcentos = (s: string) =>
  s.toLowerCase().replace(/[áàâãäéêèíîóôõöúûüç]/g, (ch) => TROCAS[ch] || ch);

function casar(nome: string, regras: Array<[RegExp, string]>): string | null {
  const alvo = semAcentos(nome || "");
  for (const [regra, caminho] of regras) {
    if (regra.test(alvo)) return caminho;
  }
  return null;
}

export function iconeDoProduto(nome: string): string | null {
  return casar(nome, PRODUTOS);
}

export function iconeDoInsumo(nome: string): string | null {
  return casar(nome, INSUMOS);
}
