function StoriesGrid({ cardStyle = "editorial", onOpen }) { const [filter, setFilter] = useState("Tutto"); const cats = ["Tutto", ...new Set(STORIES.map(s => s.cat))]; const shown = filter === "Tutto" ? STORIES : STORIES.filter(s => s.cat === filter); return ( {cats.map(c => ( setFilter(c)} style={{ padding: "8px 16px", borderRadius: 999, border: "1px solid " + (filter === c ? "var(--ink)" : "var(--line)"), background: filter === c ? "var(--ink)" : "transparent", color: filter === c ? "var(--paper)" : "var(--ink)", fontSize: 12, letterSpacing: "0.08em", textTransform: "uppercase", transition: "all .2s", }}>{c} ))} {shown.map((s, i) => )} ); } function Card({ story, variant, index, onOpen }) { const [hover, setHover] = useState(false); const isOverlay = variant === "overlay"; const isCompact = variant === "compact"; return ( { e.preventDefault(); onOpen && onOpen(story); }} onMouseEnter={() => setHover(true)} onMouseLeave={() => setHover(false)} className="card" style={{ display: "block", position: "relative", paddingBottom: isCompact ? 0 : 4, }}> {/* Image */} {String(index + 1).padStart(2, "0")} · {story.cat} {isOverlay && ( {story.title} {story.date} · {story.read} )} {!isOverlay && ( <> {story.title} {!isCompact && ( {story.dek} )} {story.author} {story.date} · {story.read} > )} ); } window.StoriesGrid = StoriesGrid;
{story.dek}