// Shared components: Nav, Footer, ProductCard, LotusMark, etc.
const { useState, useEffect, useRef } = React;
const WA_LINK = "https://wa.me/971527452161?text=Hi%20Marushika%2C%20I%27d%20like%20to%20book%20a%20showroom%20appointment";
const BOOK_LINK = "https://booking.marushikaofficial.com/";
const EMAIL = "gallery@marushikaofficial.com";
// ---------- Lotus Mark (drawn, matches logo silhouette) ----------
function LotusMark({ size = 32, color = "currentColor", className = "" }) {
return (
);
}
// ---------- Wordmark ----------
function Wordmark({ color = "currentColor", scale = 1 }) {
// Use the real logo file for fidelity
return (
Each series is a self-contained study — folklore, geometry, and the discipline of a textile studio.
);
}
// ---------- Nav ----------
function Nav({ route, go }) {
const [scrolled, setScrolled] = useState(false);
const [mega, setMega] = useState(false);
const [mobile, setMobile] = useState(false);
useEffect(() => {
const on = () => setScrolled(window.scrollY > 40);
on();
window.addEventListener("scroll", on, { passive: true });
return () => window.removeEventListener("scroll", on);
}, []);
const transparent = route.name === "home" && !scrolled;
const navClass = "nav" + (!transparent ? " solid" : "");
const linkColor = transparent ? "var(--ivory)" : "var(--ink)";
const linkClass = (key) => "nav-link" + (route.name === key || (key === "collections" && route.name === "collection") ? " active" : "");
return (
one atelier.
{sub}
}