{"$schema":"https://ui.shadcn.com/schema/registry-item.json","name":"changelog-list","type":"registry:block","title":"Changelog List","description":"Releases on a timeline rail — versions, dates, no fluff.","categories":["changelog"],"dependencies":[],"registryDependencies":["badge"],"files":[{"path":"registry/blocks/changelog-list.tsx","content":"import { Badge } from \"@/components/ui/badge\";\nimport { cn } from \"@/lib/utils\";\n\nconst releases = [\n  {\n    version: \"2.4\",\n    date: \"2026-06-28\",\n    title: \"Edge functions everywhere\",\n    items: [\n      \"Functions now deploy to all 30 regions by default\",\n      \"Cold starts cut by 92% on the new runtime\",\n      \"Streaming responses out of beta\",\n    ],\n  },\n  {\n    version: \"2.3\",\n    date: \"2026-06-02\",\n    title: \"Postgres branching\",\n    items: [\n      \"Copy-on-write database branches for every preview\",\n      \"One-click promote and rollback\",\n    ],\n  },\n  {\n    version: \"2.2\",\n    date: \"2026-05-11\",\n    title: \"Quality of life\",\n    items: [\n      \"Audit log export (CSV and API)\",\n      \"Deploy comments notify the right people, finally\",\n      \"Dark mode for email notifications\",\n    ],\n  },\n];\n\nexport default function ChangelogList() {\n  return (\n    <section className=\"bg-background\">\n      <div className=\"mx-auto w-full max-w-3xl px-6 py-20 sm:py-24\">\n        <div className=\"mb-12\">\n          <h2 className=\"text-2xl font-semibold tracking-tight text-balance sm:text-3xl\">\n            What's new\n          </h2>\n          <p className=\"mt-2 text-muted-foreground\">\n            Every release, in order. No \"minor fixes and improvements\".\n          </p>\n        </div>\n\n        {releases.map((release, index) => (\n          <article key={release.version} className=\"relative flex gap-6 pb-12 last:pb-0\">\n            {index < releases.length - 1 && (\n              <span\n                aria-hidden\n                className=\"absolute top-8 left-3.25 h-full w-px bg-border\"\n              />\n            )}\n            <span\n              aria-hidden\n              className={cn(\n                \"mt-1.5 size-6.75 shrink-0 rounded-full border-8 border-background ring-1 ring-border\",\n                index === 0 ? \"bg-foreground\" : \"bg-muted-foreground/40\",\n              )}\n            />\n            <div className=\"min-w-0\">\n              <div className=\"flex flex-wrap items-center gap-3\">\n                <h3 className=\"text-lg font-semibold tracking-tight\">\n                  {release.title}\n                </h3>\n                <Badge variant=\"outline\" className=\"font-mono text-xs\">\n                  v{release.version}\n                </Badge>\n                <time className=\"font-mono text-xs text-muted-foreground tabular-nums\">\n                  {release.date}\n                </time>\n              </div>\n              <ul className=\"mt-3 space-y-1.5\">\n                {release.items.map((item) => (\n                  <li key={item} className=\"flex gap-2.5 text-sm text-muted-foreground\">\n                    <span\n                      aria-hidden\n                      className=\"mt-2 size-1 shrink-0 rounded-full bg-muted-foreground/50\"\n                    />\n                    {item}\n                  </li>\n                ))}\n              </ul>\n            </div>\n          </article>\n        ))}\n      </div>\n    </section>\n  );\n}\n","type":"registry:block","target":"components/blocks/changelog/changelog-list.tsx"}]}