// @ts-nocheck /** * Build a fully-formed product webpage that demonstrates a design system in * action — not just a list of tokens, but a real-feeling marketing / * product page (nav, hero, social proof, feature grid, dashboard preview, * pricing, testimonials, FAQ, CTA, footer) styled entirely from the * tokens we extract from the system's DESIGN.md. * * Same parsing utilities as design-system-preview.js — kept inline rather * than imported so the two views can evolve independently. */ export function renderDesignSystemShowcase(id, raw) { const titleMatch = /^#\s+(.+?)\s*$/m.exec(raw); const rawTitle = titleMatch?.[1] ?? id; const title = cleanTitle(rawTitle); const subtitle = extractSubtitle(raw) || 'A design system rendered as a real product surface.'; const colors = extractColors(raw); const fonts = extractFonts(raw); const bg = pickColor(colors, ['page background', 'background', 'canvas', 'paper', 'bg ', 'page bg']) ?? '#ffffff'; const fg = pickColor(colors, ['heading', 'foreground', 'ink', 'fg', 'text', 'navy', 'graphite']) ?? '#0a0a0a'; const accent = pickColor(colors, ['primary brand', 'brand primary', 'primary', 'brand', 'accent']) ?? firstNonNeutral(colors) ?? '#2f6feb'; const accent2 = pickColor(colors, ['secondary', 'tertiary', 'highlight', 'support']) ?? secondNonNeutral(colors, accent) ?? accent; const muted = pickColor(colors, ['muted', 'subtle', 'caption', 'meta', 'neutral']) ?? '#666666'; const border = pickColor(colors, ['border', 'divider', 'rule', 'stroke']) ?? '#e6e6e6'; const surface = pickColor(colors, ['surface', 'card', 'background-secondary', 'panel', 'elevated']) ?? mixSurface(bg); const display = fonts.display ?? fonts.heading ?? "system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif"; const body = fonts.body ?? display; const mono = fonts.mono ?? "ui-monospace, 'JetBrains Mono', monospace"; const accentFg = pickReadableForeground(accent); const accent2Fg = pickReadableForeground(accent2); const productName = title; const tagline = oneLine(subtitle).slice(0, 120); return ` ${escapeHtml(productName)} — showcase
${escapeHtml(productName)} · live preview

The system that makes ${escapeHtml(productName)} feel like ${escapeHtml(productName)}.

${escapeHtml(tagline)}

4.9 · App Store rating SOC 2 · Type II compliant 120k+ active teams
Trusted by teams shipping serious work
Northwind Pioneer Lattice Atlas Co. Voltage Foundry
What it does

Every primitive a fast team needs.

A system styled entirely from the tokens of ${escapeHtml(productName)} — palette, typography, surfaces, and motion. Drop it into any product and it stays in character.

${featureCard('★', 'Tokens that compose', 'Color, type, spacing, and elevation defined once and reused across every surface — from a marketing hero to a row in a table.')} ${featureCard('◐', 'Light & dark in lockstep', 'Every component ships with both modes. The accent reads as confident in either context, and contrast meets WCAG AA out of the box.')} ${featureCard('⌘', 'Desktop-first, but mobile-honest', 'Layouts collapse from a 12-column desktop grid to a focused single column without losing density or rhythm.')} ${featureCard('▣', 'Production-grade primitives', '40+ components — from the obvious (button, input) to the load-bearing (data table, command bar, empty states).')} ${featureCard('↗', 'Designed for handoff', 'Every spec carries a Figma frame, a code snippet, and a "do/don’t" pair so engineers don’t have to guess.')} ${featureCard('∞', 'Built to evolve', 'Tokens version semver-style. A palette refresh ships through one file — no component code touches.')}
In production

A workspace, fully styled.

This is the same component library you'd use in your app — rendered with ${escapeHtml(productName)} tokens.

Overview

↑ 12.4% this week
${kpi('MRR', '$184,210', '+8.2%')} ${kpi('Active orgs', '2,914', '+121')} ${kpi('Conversion', '4.6%', '+0.4 pp')} ${kpi('Net retention', '113%', '+2 pp')}
Revenue · last 12 weeks USD · weekly
${inlineLineChart()}
Top accounts
View all
${listRow('Northwind Trading', 'Annual · NA', '$48,200', 'up')} ${listRow('Pioneer Robotics', 'Quarterly · EMEA', '$31,890', 'up')} ${listRow('Atlas Cooperative', 'Annual · APAC', '$22,400', '')} ${listRow('Foundry Group', 'Monthly · NA', '$14,750', 'up')}
Activity
Live
${activityRow('Renewal closed', 'Lattice · 11m ago')} ${activityRow('Trial started', 'Voltage · 22m ago')} ${activityRow('Plan upgraded', 'Pioneer · 1h ago')} ${activityRow('Invoice paid', 'Atlas · 2h ago')}
Pricing

Built for teams of one to one thousand.

Pick the plan that matches the way your team ships. Every tier ships the full token system.

${priceCard('Starter', '$0', 'Free forever', ['Single user', 'All core tokens', 'Up to 3 projects', 'Community support'])} ${priceCard('Team', '$24', 'per seat / month', ['Unlimited projects', 'Real-time co-edit', 'Brand themes', 'Priority email support'], true)} ${priceCard('Enterprise', 'Custom', 'volume pricing', ['SSO + SCIM', 'Audit logs', 'Custom token schemas', 'Dedicated success manager'])}
Customers

Loved by teams who care about craft.

${quote('"Our marketing site, our app, and our internal dashboards finally feel like the same product. The token system is doing all the work."', 'Mira Okafor', 'Head of Design · Pioneer')} ${quote('"We swapped our entire design language in an afternoon. Nothing broke. That’s the line, and we crossed it."', 'Caleb Renner', 'Engineering Lead · Northwind')}
FAQ

Questions, answered.

${faq('Is this a Figma library, a code library, or both?', 'Both. Tokens flow from one source of truth into Figma styles and into the codegen pipeline at the same time.')} ${faq('Can we ship our own brand theme?', 'Yes — fork the token file, change the palette and type stack, and every component reskins automatically.')} ${faq('What about accessibility?', 'Color contrast meets WCAG AA on every surface. Components ship with focus rings, ARIA roles, and keyboard handling.')} ${faq('How do you handle dark mode?', 'Every token has a paired dark value. The system flips at the document level — no per-component overrides needed.')}

Ship a product that finally feels finished.

Drop the system into your app today. The first project is on us.

Start free trial Talk to sales
`; } function featureCard(icon, title, body) { return `
${escapeHtml(icon)}

${escapeHtml(title)}

${escapeHtml(body)}

`; } function kpi(label, value, delta) { return `
${escapeHtml(label)}
${escapeHtml(value)}
${escapeHtml(delta)}
`; } function listRow(name, meta, value, status) { const badge = status === 'up' ? '' : '·'; return `
${escapeHtml(name)}
${escapeHtml(meta)}
${escapeHtml(value)}
${badge}
`; } function activityRow(name, meta) { return `
${escapeHtml(name)}
${escapeHtml(meta)}
`; } function priceCard(name, price, sub, features, featured) { return `
${escapeHtml(name)}
${escapeHtml(price)} ${escapeHtml(sub)}
Choose ${escapeHtml(name)}
`; } function quote(text, name, role) { return `

${escapeHtml(text)}

${escapeHtml(name)}
${escapeHtml(role)}
`; } function faq(q, a) { return `

${escapeHtml(q)}

${escapeHtml(a)}

`; } function inlineLineChart() { // Deterministic numbers so the chart looks specific (12 weekly data points). const data = [38, 44, 41, 52, 49, 61, 58, 67, 71, 76, 82, 88]; const max = Math.max(...data); const min = Math.min(...data); const w = 720; const h = 160; const padX = 8; const padY = 14; const stepX = (w - padX * 2) / (data.length - 1); const norm = (v) => padY + (h - padY * 2) * (1 - (v - min) / (max - min)); const points = data.map((v, i) => `${padX + i * stepX},${norm(v).toFixed(1)}`).join(' '); const area = `${padX},${h} ${points} ${w - padX},${h}`; return ` ${data.map((v, i) => ``).join('')} `; } function extractSubtitle(raw) { const lines = raw.split(/\r?\n/); const h1 = lines.findIndex((l) => /^#\s+/.test(l)); if (h1 === -1) return ''; const after = lines.slice(h1 + 1); const nextHeading = after.findIndex((l) => /^#{1,6}\s+/.test(l)); const window = (nextHeading === -1 ? after : after.slice(0, nextHeading)) .join('\n') .replace(/^>\s*Category:.*$/gim, '') .replace(/^>\s*/gm, '') .trim(); return window.split(/\n\n/)[0]?.slice(0, 240) ?? ''; } function extractColors(raw) { const colors = []; const seen = new Set(); function push(name, value) { const cleanName = name.replace(/[*_`]+/g, '').replace(/\s+/g, ' ').trim(); if (!cleanName || cleanName.length > 60) return; const v = normalizeHex(value); const key = `${cleanName.toLowerCase()}|${v}`; if (seen.has(key)) return; seen.add(key); colors.push({ name: cleanName, value: v }); } const reA = /^[\s>*-]*\**\s*([A-Za-z][A-Za-z0-9 /&()+_-]{1,40}?)\s*\**\s*[::]\s*`?(#[0-9a-fA-F]{3,8})/gm; let m; while ((m = reA.exec(raw)) !== null) push(m[1], m[2]); const reB = /\*\*([A-Za-z][A-Za-z0-9 /&()+_-]{1,40}?)\*\*\s*\(?\s*`?(#[0-9a-fA-F]{3,8})/g; while ((m = reB.exec(raw)) !== null) push(m[1], m[2]); return colors; } function extractFonts(raw) { const out = {}; const re = /^[\s>*-]*\**\s*([A-Za-z][A-Za-z /]{1,30}?)\s*\**\s*[::]\s*`?([^`\n]+?)`?$/gm; let m; while ((m = re.exec(raw)) !== null) { const label = m[1].toLowerCase(); const value = m[2].trim().replace(/[*_`]+$/g, '').trim(); if (!/[a-zA-Z]/.test(value)) continue; if (value.startsWith('#')) continue; if (/display|heading|h1|title/.test(label) && !out.display) out.display = value; else if (/body|text|paragraph|copy/.test(label) && !out.body) out.body = value; else if (/mono|code/.test(label) && !out.mono) out.mono = value; } return out; } function pickColor(colors, hints) { for (const hint of hints) { const needle = hint.toLowerCase(); const found = colors.find((c) => c.name.toLowerCase().includes(needle)); if (found) return found.value; } return null; } function firstNonNeutral(colors) { for (const c of colors) { const v = c.value.replace('#', '').toLowerCase(); if (v.length !== 6) continue; const r = parseInt(v.slice(0, 2), 16); const g = parseInt(v.slice(2, 4), 16); const b = parseInt(v.slice(4, 6), 16); const max = Math.max(r, g, b); const min = Math.min(r, g, b); const sat = max === 0 ? 0 : (max - min) / max; if (sat > 0.25) return c.value; } return null; } function secondNonNeutral(colors, exclude) { let seen = false; for (const c of colors) { const v = c.value.replace('#', '').toLowerCase(); if (v.length !== 6) continue; const r = parseInt(v.slice(0, 2), 16); const g = parseInt(v.slice(2, 4), 16); const b = parseInt(v.slice(4, 6), 16); const max = Math.max(r, g, b); const min = Math.min(r, g, b); const sat = max === 0 ? 0 : (max - min) / max; if (sat > 0.25) { if (c.value === exclude || (!seen)) { seen = true; continue; } return c.value; } } return null; } function pickReadableForeground(hex) { const n = normalizeHex(hex); if (n.length !== 7) return '#ffffff'; const r = parseInt(n.slice(1, 3), 16); const g = parseInt(n.slice(3, 5), 16); const b = parseInt(n.slice(5, 7), 16); const lum = (0.299 * r + 0.587 * g + 0.114 * b) / 255; return lum > 0.6 ? '#0a0a0a' : '#ffffff'; } function mixSurface(bg) { const n = normalizeHex(bg); if (n.length !== 7) return '#fafafa'; const r = parseInt(n.slice(1, 3), 16); const g = parseInt(n.slice(3, 5), 16); const b = parseInt(n.slice(5, 7), 16); const lum = (0.299 * r + 0.587 * g + 0.114 * b) / 255; // Lift dark backgrounds; tint light backgrounds slightly cooler. const adjust = lum < 0.4 ? 16 : -8; const fix = (v) => Math.max(0, Math.min(255, v + adjust)).toString(16).padStart(2, '0'); return `#${fix(r)}${fix(g)}${fix(b)}`; } function normalizeHex(hex) { let h = hex.toLowerCase(); if (h.length === 4) { h = '#' + h.slice(1).split('').map((c) => c + c).join(''); } return h; } function cleanTitle(raw) { return String(raw).replace(/^Design System (Inspired by|for)\s+/i, '').trim(); } function oneLine(s) { return String(s).replace(/\s+/g, ' ').trim(); } function escapeHtml(s) { return String(s).replace(/[&<>"']/g, (c) => c === '&' ? '&' : c === '<' ? '<' : c === '>' ? '>' : c === '"' ? '"' : ''', ); }