--- /** * MOREMINIMORE - CASESTUDY (from v6-case) * Extracted from Desktop/moreminomore-mockup-v7-5.html lines 873-919 * * 2-col grid: image (left) + content (right, with stats + log + CTAs) * Currently used for Dataroot flagship case study only. * Hardcoded data — case_study body still lives in src/content/portfolio/dataroot.md * * Props: * - client: string (e.g. 'Dataroot') * - url?: string (link to client site) * - image?: string (default: dataroot.png from /images/portfolio/) * - stats: { value, label, coord }[] (default: Dataroot +373/+114/-28) * - quote: string (large pullquote with ) * - deck: string (subhead under quote) * - logs: { ts, level, text }[] (default: 3-line timeline) * - ctaPrimary?: { text, href } (default: อ่านเคสเต็ม → /portfolio) * - ctaSecondary?: { text, href } (default: ดูผลงานอื่น → /portfolio) * - id?: string (default: 'case') */ interface Stat { value: string; label: string; coord: string; } interface Log { ts: string; level: 'INFO' | 'SUCCESS' | 'WARN'; text: string; } interface CTA { text: string; href: string; } interface Props { client: string; url?: string; image?: string; stats: Stat[]; quote: string; deck: string; logs: Log[]; ctaPrimary?: CTA; ctaSecondary?: CTA; id?: string; } const { client, url, image = '/images/portfolio/dataroot.png', stats, quote, deck, logs, ctaPrimary = { text: 'อ่านเคสเต็ม →', href: '/portfolio' }, ctaSecondary = { text: 'ดูผลงานอื่น', href: '/portfolio' }, id = 'case', } = Astro.props; ---
{stats.map((stat) => (
{stat.label}
))}

{deck}

{logs.map((log) => (
{log.ts}{' '} {log.level}{' '} {log.text}
))}