{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "testimonial",
  "title": "Testimonial",
  "author": "ncdai <dai@chanhdai.com>",
  "description": "Display user feedback with author info, avatar, and verified badge.",
  "files": [
    {
      "path": "src/registry/components/testimonial/testimonial.tsx",
      "content": "import type { ComponentProps } from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nexport function Testimonial({ className, ...props }: ComponentProps<\"figure\">) {\n  return (\n    <figure\n      data-slot=\"testimonial\"\n      className={cn(\"flex h-full flex-col\", className)}\n      {...props}\n    />\n  )\n}\n\nexport function TestimonialQuote({\n  className,\n  ...props\n}: ComponentProps<\"blockquote\">) {\n  return (\n    <blockquote\n      data-slot=\"testimonial-quote\"\n      className={cn(\n        \"grow px-4 py-3 text-base text-pretty text-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport function TestimonialAuthor({\n  className,\n  ...props\n}: ComponentProps<\"figcaption\">) {\n  return (\n    <figcaption\n      data-slot=\"testimonial-author\"\n      className={cn(\n        \"grid grid-cols-[auto_1fr] grid-rows-2 items-center gap-x-3.5 px-4 pt-1 pb-3\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport function TestimonialAvatar({\n  className,\n  ...props\n}: ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"testimonial-avatar\"\n      className={cn(\"relative row-span-2 size-8 shrink-0\", className)}\n      {...props}\n    />\n  )\n}\n\nexport function TestimonialAvatarImg({\n  className,\n  src,\n  alt,\n  ...props\n}: ComponentProps<\"img\">) {\n  return (\n    <img\n      data-slot=\"testimonial-avatar-img\"\n      className={cn(\"size-8 rounded-full select-none\", className)}\n      src={src}\n      alt={alt}\n      {...props}\n    />\n  )\n}\n\nexport function TestimonialAvatarRing({\n  className,\n  ...props\n}: ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"testimonial-avatar-ring\"\n      className={cn(\n        \"pointer-events-none absolute inset-0 rounded-full inset-ring-1 inset-ring-black/10 dark:inset-ring-white/15\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport function TestimonialAuthorName({\n  className,\n  ...props\n}: ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"testimonial-author-name\"\n      className={cn(\n        \"flex items-center gap-1.5 text-sm leading-4.5 font-semibold text-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport function TestimonialAuthorTagline({\n  className,\n  ...props\n}: ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"testimonial-author-tagline\"\n      className={cn(\n        \"text-xs leading-4 text-balance text-muted-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport function TestimonialVerifiedBadge({\n  className,\n  ...props\n}: ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"testimonial-verified-badge\"\n      className={cn(\n        \"flex [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5\",\n        className\n      )}\n      aria-hidden\n      {...props}\n    />\n  )\n}\n",
      "type": "registry:component",
      "target": "@components/testimonial.tsx"
    }
  ],
  "docs": "https://chanhdai.com/components/testimonial",
  "categories": [
    "marketing"
  ],
  "type": "registry:component"
}