/* eslint-disable */ // Шапка, подвал, роутер. Хеш-роутинг. const NAV = [ { href: "#/", label: "Главная" }, { href: "#/services", label: "Услуги" }, { href: "#/products", label: "Продукты" }, { href: "#/approach", label: "Подход" }, { href: "#/team", label: "Команда" }, { href: "#/about", label: "О компании" }, { href: "#/contacts", label: "Контакты" } ]; const useHashRoute = () => { const [hash, setHash] = React.useState(window.location.hash || "#/"); React.useEffect(() => { const onChange = () => { setHash(window.location.hash || "#/"); window.scrollTo({ top: 0, behavior: "instant" }); }; window.addEventListener("hashchange", onChange); return () => window.removeEventListener("hashchange", onChange); }, []); return hash; }; const useTheme = () => { const [theme, setTheme] = React.useState(() => { return localStorage.getItem("wm-theme") || "light"; }); React.useEffect(() => { document.documentElement.setAttribute("data-theme", theme); localStorage.setItem("wm-theme", theme); }, [theme]); return [theme, setTheme]; }; const ThemeToggle = ({ theme, setTheme }) => ( ); const Header = ({ theme, setTheme, currentHash }) => { const [mobileOpen, setMobileOpen] = React.useState(false); // Блокируем скролл фона, когда дровер открыт React.useEffect(() => { if (mobileOpen) { const prev = document.body.style.overflow; document.body.style.overflow = "hidden"; return () => { document.body.style.overflow = prev; }; } }, [mobileOpen]); // Закрываем по Esc React.useEffect(() => { if (!mobileOpen) return; const onKey = (e) => { if (e.key === "Escape") setMobileOpen(false); }; window.addEventListener("keydown", onKey); return () => window.removeEventListener("keydown", onKey); }, [mobileOpen]); return (
ДИКИЙ МАРКС
Обсудить задачу
{mobileOpen && ReactDOM.createPortal(
setMobileOpen(false)} style={{ display: "flex", gap: 10, alignItems: "center", color: "var(--ink)", textDecoration: "none" }}> ДИКИЙ МАРКС
setMobileOpen(false)} className="btn btn-primary" style={{ width: "100%", justifyContent: "center" }}>Обсудить задачу
+7 913 600-02-15
ООО «ДИКИЙ МАРКС» · АККРЕДИТАЦИЯ № 75271
, document.body )}
); }; const Footer = () => ( ); // Хлебные крошки const Breadcrumb = ({ items }) => ( ); // Заголовок страницы const PageHeader = ({ eyebrow, title, lead, actions }) => (
{eyebrow && }

{title}

{lead &&

{lead}

} {actions &&
{actions}
}
); Object.assign(window, { useHashRoute, useTheme, Header, Footer, Breadcrumb, PageHeader, NAV });