{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "patient-info-card",
  "title": "Patient Info Card",
  "description": "Profile card with avatar, name, and labeled detail rows.",
  "registryDependencies": [
    "https://components.exe.xyz/r/avatar.json",
    "https://components.exe.xyz/r/utils.json"
  ],
  "files": [
    {
      "path": "src/components/blocks/patient-info-card.tsx",
      "content": "import type { ReactNode } from \"react\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/components/ui/avatar\"\n\nexport type PatientDetail = {\n  label: string\n  value: ReactNode\n}\n\nfunction initialsFrom(name: string) {\n  return name\n    .split(/\\s+/)\n    .filter(Boolean)\n    .slice(0, 2)\n    .map((part) => part.charAt(0).toUpperCase())\n    .join(\"\")\n}\n\nexport function PatientInfoCard({\n  name,\n  avatarSrc,\n  initials,\n  subtitle,\n  details,\n  actions,\n  className,\n}: {\n  name: string\n  avatarSrc?: string\n  initials?: string\n  subtitle?: string\n  details: PatientDetail[]\n  actions?: ReactNode\n  className?: string\n}) {\n  const fallback = initials ?? initialsFrom(name)\n\n  return (\n    <section\n      data-slot=\"patient-info-card\"\n      className={cn(\n        \"flex w-full max-w-sm flex-col rounded-[2px] border border-border bg-card\",\n        className\n      )}\n    >\n      <header className=\"flex items-start gap-3 border-b border-border px-3 py-3\">\n        <Avatar size=\"lg\" className=\"size-12\">\n          {avatarSrc ? <AvatarImage src={avatarSrc} alt=\"\" /> : null}\n          <AvatarFallback>{fallback}</AvatarFallback>\n        </Avatar>\n        <div className=\"min-w-0 flex-1\">\n          <h2 className=\"font-heading text-base font-medium tracking-tight\">\n            {name}\n          </h2>\n          {subtitle ? (\n            <p className=\"font-mono text-[11px] text-muted-foreground\">\n              {subtitle}\n            </p>\n          ) : null}\n        </div>\n        {actions ? (\n          <div className=\"flex shrink-0 items-center gap-1.5\">{actions}</div>\n        ) : null}\n      </header>\n      <dl className=\"flex flex-col\">\n        {details.map((row) => (\n          <div\n            key={row.label}\n            className=\"flex items-baseline justify-between gap-4 border-b border-border px-3 py-2.5 last:border-b-0\"\n          >\n            <dt className=\"font-mono text-[11px] text-muted-foreground\">\n              {row.label}\n            </dt>\n            <dd className=\"text-right text-sm\">{row.value}</dd>\n          </div>\n        ))}\n      </dl>\n    </section>\n  )\n}\n",
      "type": "registry:block"
    }
  ],
  "type": "registry:block"
}