// Hero — animated backdrop, stacked headline with gold sheen word, stats.
const HERO_DEFAULT_SLIDES = [
'assets/photos/hero-1.jpg',
'assets/photos/hero-2.jpg',
'assets/photos/hero-3.jpg',
'assets/photos/hero-4.jpg',
];
const HERO_OV = (window.ARMAEK_OVERRIDES && window.ARMAEK_OVERRIDES.images) || {};
const HERO_SLIDES = HERO_DEFAULT_SLIDES.map((d, i) => (HERO_OV.hero && HERO_OV.hero[i]) || d);
function HeroSlides({ label }) {
const [idx, setIdx] = React.useState(0);
React.useEffect(() => {
if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) return;
const id = setInterval(() => setIdx((i) => (i + 1) % HERO_SLIDES.length), 5200);
return () => clearInterval(id);
}, []);
return (
{HERO_SLIDES.map((src, i) => (
})
))}
);
}
function Hero({ onQuote }) {
const { Icon } = window.ArmaekDesignSystem_06a5c5;
const { useReveal, Counter } = window.ArmaekLib;
const { lang } = window.ArmaekI18n.useLang();
const t = window.ArmaekI18n.STR[lang].hero;
const ref = useReveal();
const statDefaults = [[3, ''], [8, ''], [3, ''], [100, '%']];
const oStats = (window.ARMAEK_OVERRIDES || {}).stats;
const stats = statDefaults.map((d, i) => {
const v = oStats && oStats[i];
if (!v) return d;
const m = String(v).match(/^(\d+)\s*(.*)$/);
return m ? [parseInt(m[1], 10), m[2]] : d;
});
return (
{t.kicker}
{t.h1a}
{t.h1gold}
{t.lead}
{t.more}
{/* Mobile-only CTA row: headline -> photo -> buttons */}
{t.more}
{stats.map(([n, s], i) => (
))}
);
}
window.Hero = Hero;