Identidade visual, brindes e comunicação para empresas.
A Anacleto cria ou renova a identidade visual da sua empresa, personaliza brindes e kits corporativos e desenvolve fotografia, catálogos e sites para apresentar melhor sua marca e seus produtos.
Você explica o que precisa, recebe uma proposta e aprova os detalhes antes de começar.
01
Entendemos sua necessidade
Você conta seu objetivo, prazo e o tipo de solução que procura.
02
Enviamos uma proposta
Alinhamos opções, investimento, etapas e prazo conforme o projeto.
03
Você aprova e seguimos
Depois da aprovação dos detalhes, seguimos com a execução combinada.
Dúvidas frequentes
Antes de pedir orçamento.
Respostas rápidas para você saber como começar.
Posso contratar apenas um serviço?
Sim. Você pode contratar somente identidade visual, brindes, fotografia, catálogo ou site, ou combinar etapas conforme a necessidade da sua empresa.
Preciso já ter um logotipo?
Não. Se ainda não tem marca, você pode começar pela criação da identidade visual. Se já tem, podemos avaliar as aplicações em produtos e materiais.
Qual é a quantidade mínima de brindes?
Depende do produto, da técnica de personalização e do fornecedor. Informe o item e a quantidade aproximada para confirmarmos as condições na proposta.
Como o orçamento é definido?
Consideramos o escopo, os materiais, a quantidade, a personalização e o prazo. Antes de começar, você recebe uma proposta para avaliar e aprovar.
Vamos conversar?
Conte o que você precisa.
O formulário muda conforme o serviço escolhido para pedir só as informações úteis para o seu projeto. Ao finalizar, a mensagem fica pronta no WhatsApp para você revisar e enviar.
Sem compromisso nesta primeira conversaCampos específicos para cada tipo de serviçoVocê pode deixar em branco o que ainda não souber
Comece escolhendo o serviço. Depois aparecem algumas perguntas rápidas sobre ele.
Escolha uma opçãoCriar ou renovar identidade visualBrindes e kits personalizadosBonés e chapéus personalizadosFotografia e/ou catálogoSite institucional ou catálogo onlineAinda não sei — preciso de orientação
Escolha uma opçãoAinda não definiO quanto antesAté 15 diasDe 16 a 30 diasDe 31 a 60 diasMais de 60 diasTenho uma data específica
O WhatsApp será aberto com a mensagem preenchida. Você poderá revisar antes de enviar.
WhatsApp ↗
(() => {
const WHATSAPP_NUMBER = '5543991808193';
const form = document.getElementById('contactForm');
const service = document.getElementById('servico');
const panels = [...document.querySelectorAll('[data-panel]')];
const details = document.getElementById('detalhes');
const labels = {
nome:'Nome', empresa:'Empresa/marca', servico:'Serviço', tipoProduto:'Produto de interesse',
quantidade:'Quantidade aproximada', logoStatus:'Situação da logo', ocasiao:'Objetivo do pedido',
segmento:'Segmento da empresa', momentoMarca:'Momento da marca', aplicacaoMarca:'Aplicação da marca',
entregaCatalogo:'Entrega desejada', qtdProdutos:'Quantidade de produtos/modelos', tipoProdutos:'Tipo de produtos',
tipoSite:'Tipo de site', siteAtual:'Site atual', recursosSite:'Recursos desejados', prazo:'Prazo',
dataEntrega:'Data necessária', email:'E-mail', detalhes:'Detalhes adicionais'
};
function updatePanel() {
const value = service.value;
let active = '';
if (['Brindes e kits','Bonés e chapéus'].includes(value)) active = 'products';
else if (value === 'Identidade visual') active = 'brand';
else if (value === 'Fotografia e catálogo') active = 'catalog';
else if (value === 'Site') active = 'site';
panels.forEach(panel => {
const show = panel.dataset.panel === active;
panel.hidden = !show;
panel.disabled = !show;
panel.querySelectorAll('[required]').forEach(field => field.required = false);
});
const requiredByPanel = {
products: ['tipoProduto','quantidade','logoStatus'],
brand: ['segmento','momentoMarca'],
catalog: ['entregaCatalogo','qtdProdutos'],
site: ['tipoSite','recursosSite']
};
(requiredByPanel[active] || []).forEach(id => {
const field = document.getElementById(id);
if (field) field.required = true;
});
const dateWrap = document.getElementById('dataEntregaWrap');
const dateInput = document.getElementById('dataEntrega');
const exactDate = document.getElementById('prazo').value === 'Tenho uma data específica';
dateWrap.hidden = !exactDate;
dateInput.disabled = !exactDate;
dateInput.required = exactDate;
if (value === 'Identidade visual') details.placeholder = 'Conte o que sua empresa faz e o que gostaria que a marca transmitisse.';
else if (active === 'products') details.placeholder = 'Cores, referências, data do evento ou produto que imagina.';
else if (active === 'catalog') details.placeholder = 'Conte como pretende usar as fotos ou o catálogo.';
else if (active === 'site') details.placeholder = 'Páginas importantes, referências ou funcionalidades desejadas.';
else details.placeholder = 'Conte sua ideia ou dúvida. Se não souber ainda, pode deixar em branco.';
}
service.addEventListener('change', updatePanel);
document.getElementById('prazo').addEventListener('change', updatePanel);
updatePanel();
document.querySelectorAll('[data-pick-service]').forEach(link => {
link.addEventListener('click', () => {
service.value = link.dataset.pickService;
updatePanel();
});
});
form.addEventListener('submit', event => {
event.preventDefault();
if (!form.reportValidity()) return;
const data = new FormData(form);
const lines = ['Olá! Vim pelo site da Anacleto e gostaria de conversar sobre um projeto.',''];
for (const [key, value] of data.entries()) {
const text = String(value).trim();
if (!text) continue;
let displayValue = text;
if (key === 'dataEntrega') {
const parsedDate = new Date(text + 'T00:00:00');
if (!Number.isNaN(parsedDate.getTime())) displayValue = parsedDate.toLocaleDateString('pt-BR');
}
lines.push((labels[key] || key) + ': ' + displayValue);
}
lines.push('', 'Podemos conversar sobre as opções e os próximos passos?');
const url = 'https://wa.me/' + WHATSAPP_NUMBER + '?text=' + encodeURIComponent(lines.join('\n'));
window.open(url, '_blank', 'noopener,noreferrer');
const status = document.getElementById('formStatus');
status.textContent = 'Sua mensagem está pronta no WhatsApp. Se ele não abriu, abra por aqui: ';
const link = document.createElement('a');
link.href = url;
link.target = '_blank';
link.rel = 'noopener noreferrer';
link.textContent = 'continuar para o WhatsApp';
status.append(link);
status.hidden = false;
});
const menu = document.getElementById('menuToggle');
const nav = document.getElementById('navLinks');
menu.addEventListener('click', () => {
const open = nav.classList.toggle('open');
menu.setAttribute('aria-expanded', String(open));
menu.setAttribute('aria-label', open ? 'Fechar menu' : 'Abrir menu');
menu.textContent = open ? '×' : '☰';
});
nav.querySelectorAll('a').forEach(link => {
link.addEventListener('click', () => {
nav.classList.remove('open');
menu.setAttribute('aria-expanded', 'false');
menu.setAttribute('aria-label', 'Abrir menu');
menu.textContent = '☰';
});
});
const privacyDetails = document.getElementById('privacidade');
const privacyLink = document.querySelector('.footer-bottom a[href="#privacidade"]');
if (privacyLink && privacyDetails) {
privacyLink.addEventListener('click', () => { privacyDetails.open = true; });
}
document.getElementById('year').textContent = new Date().getFullYear();
const makeWhatsAppUrl = message => 'https://wa.me/' + WHATSAPP_NUMBER + '?text=' + encodeURIComponent(message);
document.getElementById('floatingWhatsapp').href = makeWhatsAppUrl('Olá! Vim pelo site da Anacleto e gostaria de conversar sobre um projeto.');
const toggleTheme = document.getElementById('anacletoThemeToggle');
const themeIcon = document.getElementById('anacletoThemeIcon');
function safeRead(key, fallback) {
try { return localStorage.getItem(key) || fallback; } catch (_) { return fallback; }
}
function safeWrite(key, value) {
try { localStorage.setItem(key, value); } catch (_) {}
}
function applyTheme(theme) {
const dark = theme === 'dark';
document.documentElement.classList.toggle('anacleto-dark', dark);
themeIcon.textContent = dark ? '☀' : '☾';
const label = dark ? 'Ativar modo claro' : 'Ativar modo escuro';
toggleTheme.setAttribute('aria-label', label);
toggleTheme.title = label;
safeWrite('anacleto-theme', dark ? 'dark' : 'light');
}
toggleTheme.addEventListener('click', () => {
applyTheme(document.documentElement.classList.contains('anacleto-dark') ? 'light' : 'dark');
});
applyTheme(safeRead('anacleto-theme', 'light'));
})();