{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "category-filter",
  "type": "registry:component",
  "title": "Category Filter",
  "description": "Filterable category selection for content lists.",
  "dependencies": [
    "@vllnt/ui@^0.2.1"
  ],
  "registryDependencies": [],
  "files": [
    {
      "path": "registry/default/category-filter/category-filter.tsx",
      "content": "\"use client\";\n\nimport Link from \"next/link\";\nimport { usePathname } from \"next/navigation\";\n\nimport { Badge } from \"@vllnt/ui\";\n\ntype CategoryFilterProps = {\n  categories: string[];\n  lang: string;\n};\n\nfunction slugify(text: string): string {\n  return text\n    .toLowerCase()\n    .normalize(\"NFD\")\n    .replaceAll(/[\\u0300-\\u036F]/g, \"\") // Remove diacritics\n    .replaceAll(/[^\\s\\w-]/g, \"\") // Remove special characters except spaces and hyphens\n    .trim()\n    .replaceAll(/\\s+/g, \"-\") // Replace spaces with hyphens\n    .replaceAll(/-+/g, \"-\") // Collapse consecutive hyphens\n    .replaceAll(/^-+|-+$/g, \"\"); // Remove leading/trailing hyphens\n}\n\nexport function CategoryFilter({ categories, lang }: CategoryFilterProps) {\n  const pathname = usePathname();\n\n  // Get all unique categories and sort them\n  // eslint-disable-next-line unicorn/prefer-spread\n  const allCategories: string[] = Array.from(new Set(categories)).sort();\n\n  if (allCategories.length === 0) {\n    return null;\n  }\n\n  return (\n    <div className=\"flex flex-wrap gap-2\">\n      {allCategories.map((category) => {\n        const categorySlug = slugify(category);\n        const isSelected = pathname.includes(`/${categorySlug}`);\n        const href = `/${lang}/${categorySlug}`;\n\n        if (isSelected) {\n          return (\n            <Badge className=\"cursor-default\" key={category} variant=\"default\">\n              {category.charAt(0).toUpperCase() + category.slice(1)}\n            </Badge>\n          );\n        }\n\n        return (\n          <Link href={href} key={category}>\n            <Badge\n              className=\"cursor-pointer hover:bg-primary hover:text-primary-foreground transition-colors\"\n              variant=\"secondary\"\n            >\n              {category.charAt(0).toUpperCase() + category.slice(1)}\n            </Badge>\n          </Link>\n        );\n      })}\n    </div>\n  );\n}\n",
      "type": "registry:component"
    }
  ],
  "version": "0.2.1",
  "stability": "stable"
}
