// Общий JSX карточки Obsidian Wrapped для next/og ImageResponse (1080×1920, ДС-2). // Flexbox + inline-стили (Satori не поддерживает grid/внешний CSS). Без emoji // (Satori их не рендерит без эмодзи-шрифта). Используется серверным OG-роутом. import type { Archetype, Period } from "@/app/(student)/wrapped/_client/types"; export interface CardData { noteCount: number; linkCount: number; tagCount: number; topTag: string | null; archetype: Archetype | null; score: number; period: Period; } const ARCHETYPE_RU: Record = { architect: "Архитектор", gardener: "Садовник", librarian: "Библиотекарь", pragmatist: "Прагматик", }; const PERIOD_RU: Record = { year: "год", quarter: "квартал", all: "всё время" }; const BG = "#F5F5F0"; const FG = "#323232"; const ACCENT = "#E8F0D8"; const BORDER = "#AAAAAA"; const MUTED = "#666666"; function Metric({ n, l }: { n: number; l: string }) { return (
{n} {l}
); } export function wrappedCard(d: CardData) { return (
Obsidian Wrapped · 2026 {d.archetype ? ARCHETYPE_RU[d.archetype] : "Твой год"} зрелость {d.score}/100 · {PERIOD_RU[d.period] ?? "год"}
{d.topTag ? (
Топ-тег: #{d.topTag}
) : (
)}
second-brain.ru сделай свою на /wrapped
); }