--- import { getCollection, render } from 'astro:content'; import BaseLayout from '../../layouts/BaseLayout.astro'; import VegaChart from '../../components/VegaChart.astro'; import Citations from '../../components/Citations.astro'; import ShareLink from '../../components/ShareLink.astro'; import { getChartSpec, severityUnits, tagModifier } from '../../lib/charts'; import { href } from '../../lib/url'; export async function getStaticPaths() { const sins = await getCollection('sins', ({ data }) => !data.draft); return sins.map((sin) => ({ params: { slug: sin.id }, props: { sin }, })); } const { sin } = Astro.props; const { Content } = await render(sin); const badSpec = getChartSpec(sin.data.badChart); const fixedSpec = getChartSpec(sin.data.fixedChart); // Canonical, shareable URL for this sin — the thing you paste into a thread. const pageUrl = new URL(href(`sins/${sin.id}/`), Astro.site).toString(); const ogImage = new URL(href(`og/${sin.id}.png`), Astro.site).toString(); ---
{sin.data.category}

{sin.data.title}

{sin.data.poke}

{sin.data.tags.map((t) => {t})}

The Sin

The Fix

Same numbers, both charts. Only the design changed.

Building a case? See every source we cite →