// Editorial Luxury — shared components
const { useState, useEffect, useRef } = React;
const D = window.EH_DATA;
const API = window.EH_API;
// Logo
const EditorialLogo = ({ light }) => (
ESTETIC HALLбьюти-коворкинг
);
// Header used on landing only
const EditorialHeader = ({ dark }) => {
const [scrolled, setScrolled] = useState(false);
const [user, setUser] = useState(null);
const [menuOpen, setMenuOpen] = useState(false);
useEffect(() => {
const f = () => setScrolled(window.scrollY > 60);
window.addEventListener('scroll', f);
return () => window.removeEventListener('scroll', f);
}, []);
useEffect(() => {
let active = true;
API.me().then(r => { if (active) setUser(r.user); }).catch(() => {});
return () => { active = false; };
}, []);
useEffect(() => {
const f = () => setMenuOpen(false);
window.addEventListener('hashchange', f);
return () => window.removeEventListener('hashchange', f);
}, []);
const cls = `eh-header ${dark ? 'dark' : ''} ${scrolled ? 'scrolled' : ''} ${menuOpen ? 'menu-open' : ''}`;
const close = () => setMenuOpen(false);
return (
ESTETIC HALLбьюти-коворкинг