{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "blog-card",
  "type": "registry:component",
  "title": "Blog Card",
  "description": "Card layout for displaying blog post previews.",
  "dependencies": [
    "@vllnt/ui@^0.2.1"
  ],
  "registryDependencies": [],
  "files": [
    {
      "path": "registry/default/blog-card/blog-card.tsx",
      "content": "import Link from \"next/link\";\n\nimport { Badge } from \"@vllnt/ui\";\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@vllnt/ui\";\n\ntype ContentCardPost = {\n  date?: string;\n  description: string;\n  slug: string;\n  tags?: string[];\n  title: string;\n  updatedDate?: string;\n};\n\ntype ContentCardProps = {\n  formatDate?: (date: string, lang: string) => string;\n  getDictValue?: (dict: Record<string, unknown>, path: string) => string;\n  href: string;\n  lang?: string;\n  post: ContentCardPost;\n  readMoreLabel?: string;\n  showBadge?: boolean;\n  showDate?: boolean;\n  showReadMore?: boolean;\n  updatedLabel?: string;\n};\n\nexport function ContentCard({\n  formatDate,\n  href,\n  lang,\n  post,\n  readMoreLabel,\n  showBadge = true,\n  showDate = true,\n  showReadMore = true,\n  updatedLabel,\n}: ContentCardProps) {\n  const shouldShowBadge = showBadge && post.tags && post.tags.length > 0;\n  const shouldShowDate = showDate && post.date && formatDate && lang;\n  const shouldShowUpdatedDate =\n    showDate && post.updatedDate && formatDate && lang;\n  const shouldShowHeaderMeta =\n    shouldShowBadge || shouldShowDate || shouldShowUpdatedDate;\n\n  return (\n    <Link className=\"block h-full\" href={href}>\n      <Card className=\"h-full flex flex-col hover:shadow-lg transition-shadow cursor-pointer\">\n        <CardHeader>\n          {shouldShowHeaderMeta ? (\n            <div className=\"flex items-center gap-2 mb-2\">\n              {shouldShowBadge ? (\n                <Badge className=\"text-xs\" variant=\"secondary\">\n                  {post.tags?.[0]}\n                </Badge>\n              ) : null}\n              {shouldShowDate && post.date && lang ? (\n                <span className=\"text-xs text-muted-foreground\">\n                  {formatDate(post.date, lang)}\n                </span>\n              ) : null}\n              {shouldShowUpdatedDate && post.updatedDate && lang ? (\n                <span className=\"text-xs text-muted-foreground\">\n                  {updatedLabel ? `${updatedLabel} ` : \"\"}\n                  {formatDate(post.updatedDate, lang)}\n                </span>\n              ) : null}\n            </div>\n          ) : null}\n          <CardTitle className=\"text-lg line-clamp-2\">{post.title}</CardTitle>\n          <CardDescription className=\"line-clamp-3\">\n            {post.description}\n          </CardDescription>\n        </CardHeader>\n        {showReadMore && readMoreLabel ? (\n          <CardContent className=\"mt-auto\">\n            <span className=\"inline-flex items-center gap-1 text-sm text-muted-foreground\">\n              {readMoreLabel} <span className=\"text-sm\">→</span>\n            </span>\n          </CardContent>\n        ) : null}\n      </Card>\n    </Link>\n  );\n}\n\n// Keep BlogCard as an alias for backward compatibility\nexport const BlogCard = ContentCard;\n",
      "type": "registry:component"
    }
  ],
  "version": "0.2.1",
  "stability": "stable"
}
