const { useState, useEffect, useRef } = React;
/* ------------ Icons (minimal, line) ------------ */
const IconPhone = () => (
);
const IconMail = () => (
);
const IconPin = () => (
);
const IconClock = () => (
);
const IconArrow = () => (
);
const IconInstagram = () => (
);
/* ------------ Tweak defaults ------------ */
const TWEAK_DEFAULS = /*EDITMODE-BEGIN*/{
"accent": "red"
}/*EDITMODE-END*/;
const ACCENTS = {
red: { hex: "#C8102E", soft: "#8A1523", label: "Red" },
muted: { hex: "#8F2A2A", soft: "#5E1A1A", label: "Muted" },
orange: { hex: "#E25822", soft: "#9A3A12", label: "Orange" }
};
/* ------------ Reveal on scroll ------------ */
function useReveal() {
useEffect(() => {
const els = document.querySelectorAll(".reveal");
const io = new IntersectionObserver((entries) => {
entries.forEach(e => {
if (e.isIntersecting) {
e.target.classList.add("in");
io.unobserve(e.target);
}
});
}, { threshold: 0.12 });
els.forEach(el => io.observe(el));
return () => io.disconnect();
});
}
/* ------------ Nav ------------ */
function Nav({ data }) {
return (
);
}
/* ------------ Hero ------------ */
function Hero({ data }) {
return (
{data.hero.subtitle} {p} {s.body} {data.contact.subtitle}
Onde a tua Moto ganha alma.
Uma oficina, um ofício.
O que fazemos dentro do armazém.
{s.title}
Passa pelo armazém.
{data.contact.address.line2}