// 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 (
<>