// app.jsx — router, quick-view modal, tweaks, mount const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "palette": ["#FAF9F6", "#0A0A0A", "#C76B4F"], "accent": "#C76B4F", "headFont": "Playfair Display", "bodyScale": 17, "density": "regular", "cardStyle": "editorial" }/*EDITMODE-END*/; const HEAD_FONTS = { "Playfair Display": "'Playfair Display', Georgia, serif", "Cormorant Garamond": "'Cormorant Garamond', Georgia, serif", "Fraunces": "'Fraunces', Georgia, serif", }; /* ---------------- Quick view modal ---------------- */ function QuickView({ p, go, onClose, onAdd, onToast }) { const [size, setSize] = React.useState("M"); React.useEffect(() => { const onKey = (e) => { if (e.key === "Escape") onClose(); }; window.addEventListener("keydown", onKey); return () => window.removeEventListener("keydown", onKey); }, []); return (
e.stopPropagation()}>
{p.cat}

{p.name}

{p.rating} · {p.reviews} yorum
{fmt(p.price)}{p.old && {fmt(p.old)}}

{p.fabric} · özel dikiş ve titiz atölye işçiliği.

Beden
{["XS","S","M","L","XL"].map((s) => )}
); } /* ---------------- App ---------------- */ function App() { const [t, setTweak] = useTweaks(TWEAK_DEFAULTS); const [route, setRoute] = React.useState("home"); const [pid, setPid] = React.useState(null); const [cart, setCart] = React.useState(0); const [quick, setQuick] = React.useState(null); const [push, toastNode] = useToasts(); const go = React.useCallback((r, id = null) => { if (r === "collection") { push("Koleksiyon lansmanımız çok yakında gerçekleşecektir! ✦"); return; } setRoute(r); if (id) setPid(id); window.scrollTo({ top: 0, behavior: "auto" }); }, [push]); const onAdd = React.useCallback(() => setCart((c) => c + 1), []); const onFav = React.useCallback(() => push("Favorilere eklendi ♥"), [push]); // apply tweaks to CSS variables React.useEffect(() => { const r = document.documentElement.style; const pal = t.palette || TWEAK_DEFAULTS.palette; r.setProperty("--bg", pal[0]); r.setProperty("--ink", pal[1]); r.setProperty("--accent", t.accent || pal[2]); r.setProperty("--terracotta", t.accent || pal[2]); r.setProperty("--font-head", HEAD_FONTS[t.headFont] || HEAD_FONTS["Playfair Display"]); r.setProperty("--font-size-base", `${t.bodyScale}px`); document.body.style.fontSize = `${t.bodyScale}px`; r.setProperty("--u", t.density === "compact" ? ".82" : t.density === "comfy" ? "1.14" : "1"); }, [t]); let screen; if (route === "collection") screen = ; else if (route === "product") screen = ; else if (route === "story") screen = ; else if (route === "vton") screen = ; else screen = ; return ( <>