// Sections — Hero, Marquee, Services, Projects, Approach, Contact, Footer
const { useState, useEffect, useRef } = React;
/* ============== NAV ============== */
function Nav({ t, lang, setLang }) {
const [scrolled, setScrolled] = useState(false);
useEffect(() => {
const onScroll = () => setScrolled(window.scrollY > 40);
window.addEventListener("scroll", onScroll, { passive: true });
return () => window.removeEventListener("scroll", onScroll);
}, []);
return (
);
}
/* ============== HERO ============== */
function Hero({ t, hero, starIntensity }) {
return (
{hero === "stars" ? (
) : (
)}
{t.hero.eyebrow}
{t.hero.title1}
{t.hero.title2}
{t.hero.title3}
{t.hero.lede}
{/* small status row at bottom */}
);
}
/* ============== MARQUEE ============== */
function Marquee({ t }) {
return (
{Array.from({ length: 4 }).map((_, i) => (
✦ {t.marquee}
))}
);
}
/* ============== SERVICES ============== */
function Services({ t }) {
const [open, setOpen] = useState(0);
return (
{t.services.eyebrow}
{t.services.title}
{t.services.lede}
{t.services.items.map((it, i) => (
setOpen(i)}
>
{it.n}
{it.name}
{it.ru}
{it.tag}
→
{it.desc}
{it.bullets.map((b, j) => (
- ✦ {b}
))}
))}
);
}
function ServiceIllustration({ kind }) {
const imgs = [
{ src: "assets/catalog/p05_1_917x1295.png", alt: "Steel-frame industrial construction at sunset" },
{ src: "assets/catalog/p10_1_724x1024.png", alt: "Workforce dining hall on a construction site" },
{ src: "assets/catalog/p13_3_1238x1037.png", alt: "Steel pipe inventory in sourcing warehouse" },
];
const im = imgs[kind];
return (
);
}
/* ============== GALLERY ============== */
function Gallery({ t }) {
const [tab, setTab] = useState(0);
const tabName = t.gallery.tabs[tab];
const items = t.gallery.items[tabName] || [];
return (
{t.gallery.eyebrow}
{t.gallery.title}
{t.gallery.lede}
{t.gallery.tabs.map((name, i) => (
))}
{items.map((it, i) => (
{it.img ? (

) : (
)}
{it.name}
{it.meta}
))}
);
}
/* ============== PROJECTS (deprecated, kept for compatibility) ============== */
function Projects({ t }) {
const items = [
{ tag: "Construction", year: "2025", name: "Private residence · Köpetdag district", size: "1 800 m²", scope: "Turn-key build, marble interiors, bespoke joinery" },
{ tag: "Catering", year: "2025", name: "Diplomatic reception · Berkarar Hall", size: "1 200 guests", scope: "Six-course service, full crew, equipment" },
{ tag: "Sourcing", year: "2024", name: "Hotel re-fit · Awaza coast", size: "240 rooms", scope: "Lighting, stone, HoReCa equipment" },
{ tag: "Construction", year: "2024", name: "Office HQ · Magtymguly Avenue", size: "4 200 m²", scope: "Fit-out, acoustic ceilings, terrace" },
{ tag: "Catering", year: "2024", name: "Wedding · Toý Mekany", size: "780 guests", scope: "Traditional + European menus" },
{ tag: "Sourcing", year: "2023", name: "Government complex · Aşgabat", size: "9 700 m²", scope: "Italian stone, bespoke fittings" },
];
return (
{t.work.eyebrow}
{t.work.title}
{t.work.lede}
{items.map((p, i) => (
))}
);
}
function ProjectCard({ idx, p }) {
const aspect = idx === 0 ? "tall" : idx === 3 ? "wide" : "std";
return (
{p.tag} · {p.year}
{p.name}
{p.size}
·
{p.scope}
);
}
/* ============== APPROACH ============== */
function Approach({ t }) {
return (
{t.approach.eyebrow}
{t.approach.title}
{t.approach.lede}
{t.approach.steps.map((s, i) => (
-
{s.n}
))}
);
}
/* ============== CONTACT ============== */
function Contact({ t }) {
const [form, setForm] = useState({ name: "", company: "", type: t.contact.form.types[0], message: "" });
const [sent, setSent] = useState(false);
const submit = (e) => {
e.preventDefault();
setSent(true);
setTimeout(() => setSent(false), 4000);
};
return (
);
}
/* ============== FOOTER ============== */
function Footer({ t }) {
return (
);
}
/* ============== PLACEHOLDER ============== */
function Placeholder({ label, tone = "warm" }) {
return (
);
}
Object.assign(window, { Nav, Hero, Marquee, Services, Gallery, Projects, Approach, Contact, Footer, Placeholder });