);
}
/* ---------- FLOATING WHATSAPP ---------- */
function WhatsAppFloat() {
return (
);
}
/* ---------- SOLUTIONS FEATURE + SLIDER ---------- */
const SOLUTIONS = [
{ name: "Porta Pallet", img: "assets/produtos/porta-pallet.webp",
desc: "Favorecem a busca e seletividade por mercadorias e são adaptáveis às mudanças de layout em relação ao espaço em que estão inseridos." },
{ name: "Drive In", img: "assets/produtos/drive-in.webp",
desc: "Sem corredores, os produtos são armazenados em profundidade, possibilitando alta taxa de ocupação e volume de armazenagem." },
{ name: "Cantilever", img: "assets/produtos/cantilever.webp",
desc: "Sistema de armazenagem versátil, possibilita o armazenamento de diversos tipos e dimensões de mercadorias, como cargas longas." },
{ name: "Mezanino", img: "assets/produtos/mezanino.webp",
desc: "Sistema multifuncional, ideal para criar escritórios ou estoque. Também pode aumentar a área útil para ampliar a operação." },
{ name: "Mini Porta Pallet", img: "assets/produtos/mini-porta-pallet.webp",
desc: "Estrutura compacta ideal para cargas leves e fracionadas, com fácil montagem e máximo aproveitamento de altura." },
{ name: "Flow Rack", img: "assets/produtos/flow-rack.webp",
desc: "Aumento de produtividade e precisão na separação de pedidos e na organização da montagem de pedidos fracionados." },
{ name: "Push Back", img: "assets/produtos/push-back.webp",
desc: "Permite alta densidade em armazenagem e ótimo aproveitamento em volume de cargas armazenadas." },
{ name: "Dinâmico", img: "assets/produtos/dinamico.webp",
desc: "As mercadorias são abastecidas de um lado e retiradas do outro, garantindo que o primeiro palete armazenado seja o primeiro a sair." },
{ name: "Sistema para Carro Satélite", img: "assets/produtos/carro-satelite.webp",
desc: "Carga e descarga realizadas de forma semiautomática, por empilhadeiras convencionais ou automatizadas." },
{ name: "Rack Pallet", img: "assets/produtos/porta-pallet.webp",
desc: "Solução robusta e modular para paletização, garantindo organização, segurança e agilidade na movimentação de cargas." },
];
function SolutionsFeature() {
const [idx, setIdx] = useState(0);
const go = (dir) => setIdx(i => (i + dir + SOLUTIONS.length) % SOLUTIONS.length);
const cur = SOLUTIONS[idx];
// Preload all images so slide changes never wait on a network load
useEffect(() => {
SOLUTIONS.forEach(s => { const im = new Image(); im.src = s.img; });
}, []);
return (
);
}
/* ---------- PRODUCTS ---------- */
const PRODUCTS = [
{ name: "Porta Palete", img: "uploads/soluções/PORTA PALLET.png",
desc: "Favorecem a busca e seletividade por mercadorias e são adaptáveis às mudanças de layout em relação ao espaço que estão inseridos." },
{ name: "Mini Porta Palete", img: "uploads/soluções/MINI PORTA PALLET.png",
desc: "Estrutura compacta ideal para cargas leves e fracionadas, com fácil montagem e máximo aproveitamento de altura." },
{ name: "Drive-in", img: "uploads/soluções/DRIVE IN.png",
desc: "Sem corredores, os produtos são armazenados em profundidade, possibilitando alta taxa de ocupação e volume de armazenagem." },
{ name: "Dinâmico", img: "uploads/soluções/DINAMICO.png",
desc: "As mercadorias são abastecidas de um lado e retiradas do outro, garantindo que o primeiro palete armazenado seja o primeiro a sair." },
{ name: "Push Back", img: "uploads/soluções/PUSH BACK.png",
desc: "Permite alta densidade em armazenagem e ótimo aproveitamento em volume de cargas armazenadas." },
{ name: "Cantilever", img: "uploads/soluções/CANTILEVER.png",
desc: "Sistema com armazenagem versátil, possibilita o armazenamento de diversos tipos e dimensões de mercadorias." },
{ name: "Carro Satélite", img: "uploads/soluções/sistema para carro satelite.png",
desc: "Carga e descarga realizada de forma semiautomática, por empilhadeiras convencionais ou automatizadas." },
{ name: "Flow Rack", img: "uploads/soluções/FLOW RACK.png",
desc: "Aumento de produtividade e precisão na separação de pedidos e organização da montagem de pedidos fracionados." },
{ name: "Mezanino", img: "uploads/soluções/MEZANINO.png",
desc: "Sistema multifuncional, ideal para criar escritórios ou estoque. Também pode aumentar a área útil para ampliar a operação." },
];
function ProductCard({ p, i }) {
return (
Com anos de experiência, a Stock projeta e implementa soluções inovadoras em movimentação e armazenagem, utilizando materiais de alta resistência e tecnologia de ponta.
);
}
/* ---------- VIDEO BLOCK ---------- */
function VideoBlock() {
const [playing, setPlaying] = useState(false);
return (
{playing ? (
) : (
)}
A Stock desenvolve, projeta, produz e implementa.
Armazenagem e construtivos
Soluções em movimentação e armazenagem com estruturas de aço de alta resistência mecânica, projetadas sob medida para maximizar capacidade, otimizar fluxo logístico e reduzir custos operacionais. Mais de 200 clientes em todo o Brasil confiam na nossa engenharia.
);
}
/* ---------- CLIENTS ---------- */
const REVIEWS = [
{ name: "Brivaldo Moura", when: "4 meses atrás", initial: "B", color: "#5B6470",
text: "Atendimento com excelência! As estruturas são muito bem acabadas na qual supriu nossa necessidade de armazenagem com total segurança." },
{ name: "Leila Rendall", when: "4 meses atrás", initial: "L", color: "#2A73E8",
text: "Excelente experiência do início ao fim! O atendimento foi ágil e muito profissional, o projeto foi desenvolvido exatamente como precisávamos." },
{ name: "João Pedro", when: "4 meses atrás", initial: "J", color: "#1F9E52",
text: "Sem palavras para o atendimento! Entrega dentro do prazo, suporte rápido, as estruturas são de altíssima qualidade. Recomendo demais." },
{ name: "Ana Carolina", when: "5 meses atrás", initial: "A", color: "#C4392B",
text: "Equipe extremamente atenciosa e comprometida. Do projeto à instalação, tudo impecável. Nosso armazém ficou muito mais organizado." },
{ name: "Marcos Vinícius", when: "6 meses atrás", initial: "M", color: "#8E44AD",
text: "Profissionais competentes e produto de primeira linha. A montagem foi rápida e sem transtornos. Superou nossas expectativas." },
{ name: "Fernanda Lima", when: "7 meses atrás", initial: "F", color: "#E67E22",
text: "Melhor decisão que tomamos para nossa logística. Estruturas robustas, prazo cumprido e um pós-venda excelente. Nota 10!" },
];
function GoogleG({ size = 22 }) {
return (
);
}
function Stars() {
return (
);
}
const IG_URL = "https://www.instagram.com/stock.armazenagem/";
/* ====================================================================
FEED AUTOMÁTICO DO INSTAGRAM (modo seguro, proxy PHP)
--------------------------------------------------------------------
O token NÃO fica aqui no front-end. Ele mora no arquivo
instagram-feed.php, no servidor (Hostinger), que executa server-side
e nunca é baixado pelo navegador. Este site apenas chama esse PHP,
que devolve os posts já prontos (sem expor o token).
>> Para ativar (uma vez): <<
1. Faça upload do arquivo instagram-feed.php junto do site na Hostinger.
2. Abra instagram-feed.php e cole o token na linha $IG_TOKEN = '...';
3. Pronto. O feed passa a puxar os 3 posts mais recentes sozinho.
Enquanto o PHP não estiver no ar (ex.: preview local), o feed mostra
as imagens estáticas de fallback (GALLERY), o site nunca quebra.
==================================================================== */
const IG_FEED_ENDPOINT = "instagram-feed.php";
const GALLERY = [
{ img: "assets/produtos/porta-pallet.webp", caption: "Estrutura bem planejada é lucro no curto prazo." },
{ img: "assets/produtos/drive-in.webp", caption: "Seu estoque resolve, ou esconde problemas?" },
{ img: "assets/produtos/cantilever.webp", caption: "Organizar é o primeiro passo." },
{ img: "assets/produtos/flow-rack.webp", caption: "Stock 360°: estratégia e conexão." },
{ img: "assets/produtos/mezanino.webp", caption: "Alguns sinais são claros: hora de mudar." },
{ img: "assets/produtos/push-back.webp", caption: "Armazenar não é o suficiente." },
];
function Gallery() {
const [posts, setPosts] = useState(null);
useEffect(() => {
fetch(IG_FEED_ENDPOINT)
.then(r => r.ok ? r.json() : Promise.reject())
.then(data => {
if (data && data.data && data.data.length) {
setPosts(data.data.map(p => ({
img: p.media_type === 'VIDEO' ? (p.thumbnail_url || p.media_url) : p.media_url,
caption: (p.caption || '').split('\n')[0].slice(0, 90),
link: p.permalink,
video: p.media_type === 'VIDEO',
})));
}
})
.catch(() => {});
}, []);
const items = posts || GALLERY.slice(0, 3).map(g => ({ ...g, link: IG_URL, video: false }));
return (
);
}
/* ---------- NEWS ---------- */
const NEWS = [
{ date: "20 fev 2026", img: "assets/blog/estantes.webp", title: "Sistema de estantes: principais tipos e como escolher a melhor solução" },
{ date: "20 fev 2026", img: "assets/blog/estoque.webp", title: "A redução de estoque, o inimigo silencioso do armazém" },
{ date: "20 fev 2026", img: "assets/blog/sop.webp", title: "O que é o S&OP e qual seu impacto na logística" },
];
function News() {
return (
Últimas Notícias
Fique por Dentro das Novidades em Armazenagem
Acesse nossos artigos e mantenha-se atualizado sobre as melhores práticas e inovações do setor.