{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "changelog-03",
  "title": "Changelog 03",
  "description": "A simple changelog block",
  "files": [
    {
      "path": "src/registry/blocks/radix/changelog-03/components/changelog.tsx",
      "content": "import { Dot } from \"lucide-react\";\nimport { Separator } from \"@/registry/bases/radix/ui/separator\";\n\nconst changelogs = [\n  {\n    version: \"1.0.0\",\n    date: \"2025-06-01\",\n    title: \"Initial Launch\",\n    description:\n      \"We're live! The very first release of our Shadcn UI blocks is here. This version includes the core blocks, dark mode support, and a complete landing page setup to get you started. Thanks for being here from day one!\",\n    features: [\n      \"Released 10+ customized Shadcn UI blocks\",\n      \"Dark mode support\",\n      \"Landing page with hero, features, and footer sections\",\n    ],\n  },\n  {\n    version: \"1.1.0\",\n    date: \"2025-06-10\",\n    title: \"Pricing Block + Accessibility Improvements\",\n    description:\n      \"We've added a sleek pricing block with a monthly/yearly toggle. Accessibility improvements make your UI more inclusive, and we fixed a few layout issues to ensure a smoother mobile experience.\",\n    features: [\"Added pricing block with monthly/yearly toggle\"],\n    changes: [\"Improved accessibility for buttons and links\"],\n    fixes: [\"Fixed mobile layout issues on testimonials section\"],\n  },\n  {\n    version: \"1.2.0\",\n    date: \"2025-06-20\",\n    title: \"Blog Layout + Search Enhancements\",\n    description:\n      \"Introducing a brand-new blog layout designed for content creators. Search now supports fuzzy matching to make discovery easier. We've also optimized assets for faster load times.\",\n    features: [\"Introduced a clean blog layout for content creators\"],\n    changes: [\n      \"Search bar now uses fuzzy filtering\",\n      \"Optimized all images for performance and SEO\",\n    ],\n  },\n  {\n    version: \"1.3.0\",\n    date: \"2025-07-01\",\n    title: \"Premium Blocks & Theme Customization\",\n    description:\n      \"This is a big one! We're rolling out premium blocks for advanced use cases, along with filtering options and customizable color themes so you can match your brand identity effortlessly.\",\n    features: [\n      \"Launched premium blocks section\",\n      \"Added category and search filters\",\n      \"Introduced customizable color themes\",\n    ],\n  },\n  {\n    version: \"1.3.1\",\n    date: \"2025-07-05\",\n    title: \"Minor Fixes\",\n    description:\n      \"A quick patch to clean up a few UI glitches. Fixed image paths and polished up the theme switcher to eliminate flicker issues. Nothing major, but definitely smoother!\",\n    fixes: [\n      \"Fixed broken image links in logo cloud\",\n      \"Resolved theme switcher flicker issue on dark mode\",\n    ],\n  },\n].reverse();\n\nconst formatDate = (date: Date) => {\n  return date.toLocaleDateString(\"en-US\", {\n    month: \"short\",\n    day: \"numeric\",\n    year: \"numeric\",\n  });\n};\n\nexport default function Changelog() {\n  return (\n    <section className=\"mx-auto max-w-3xl px-6 py-16\">\n      <h2 className=\"text-balance font-medium text-4xl tracking-tight\">\n        Changelog\n      </h2>\n      <p className=\"mt-2 text-balance text-lg text-muted-foreground tracking-[-0.015em] sm:mt-3 sm:text-xl\">\n        We ship fast. Track all the new features, updates, and fixes in one\n        place.\n      </p>\n\n      <Separator className=\"mt-9\" />\n\n      <div className=\"mt-10 flex flex-col gap-6\">\n        {changelogs.map((changelog) => (\n          <div\n            className=\"rounded-xl bg-muted px-6 py-8 sm:px-8\"\n            key={changelog.version}\n          >\n            <div>\n              <div className=\"flex items-center text-muted-foreground tracking-tight\">\n                v{changelog.version} <Dot />{\" \"}\n                {formatDate(new Date(changelog.date))}\n              </div>\n              <h3 className=\"mt-3 font-medium text-2xl tracking-[-0.02em]\">\n                {changelog.title}\n              </h3>\n              <span className=\"mt-2 block text-lg text-muted-foreground tracking-tight sm:hidden\">\n                {changelog.date}\n              </span>\n\n              <p className=\"mt-3 text-foreground/80\">{changelog.description}</p>\n\n              <div className=\"mt-4 space-y-4 text-foreground/80\">\n                {changelog.features && (\n                  <div>\n                    <ChangelogSection\n                      items={changelog.features}\n                      title=\"Features:\"\n                    />\n                  </div>\n                )}\n\n                {changelog.changes && (\n                  <ChangelogSection\n                    items={changelog.changes}\n                    title=\"Changes:\"\n                  />\n                )}\n\n                {changelog.fixes && (\n                  <ChangelogSection items={changelog.fixes} title=\"Fixes:\" />\n                )}\n              </div>\n            </div>\n          </div>\n        ))}\n      </div>\n    </section>\n  );\n}\n\nconst ChangelogSection = ({\n  title,\n  items,\n}: {\n  title: string;\n  items: string[];\n}) => {\n  return (\n    <div>\n      <h4 className=\"mb-1 flex items-center gap-2 font-medium text-foreground text-lg\">\n        {title}\n      </h4>\n      <ul className=\"list-disc pl-5\">\n        {items.map((item) => (\n          <li key={item}>{item}</li>\n        ))}\n      </ul>\n    </div>\n  );\n};\n",
      "type": "registry:component"
    }
  ],
  "type": "registry:block"
}