{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "team-1",
  "title": "Member Cards With Socials",
  "description": "Team grid of six member cards, each with an avatar, name, role, short bio, and LinkedIn, X, and GitHub links.",
  "dependencies": [
    "@base-ui/react"
  ],
  "registryDependencies": [
    "avatar",
    "button",
    "card"
  ],
  "files": [
    {
      "path": "registry/blocks/team/1/team-block.tsx",
      "content": "import { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card, CardContent } from \"@/components/ui/card\"\n\nconst members = [\n  {\n    name: \"Clara Hoffmann\",\n    role: \"Co-founder & CEO\",\n    avatar: \"https://i.pravatar.cc/150?img=5\",\n    bio: \"Shapes strategy and culture. Previously founded two B2B SaaS companies and led growth at Stripe.\",\n    social: { linkedin: \"#\", twitter: \"#\", github: null },\n  },\n  {\n    name: \"Marcus Tran\",\n    role: \"Co-founder & CTO\",\n    avatar: \"https://i.pravatar.cc/150?img=12\",\n    bio: \"Architect behind the platform. Open-source contributor with a decade of distributed-systems experience.\",\n    social: { linkedin: \"#\", twitter: \"#\", github: \"#\" },\n  },\n  {\n    name: \"Amara Osei\",\n    role: \"Head of Design\",\n    avatar: \"https://i.pravatar.cc/150?img=49\",\n    bio: \"Crafts interfaces that feel inevitable. Former principal designer at Figma and Linear.\",\n    social: { linkedin: \"#\", twitter: \"#\", github: null },\n  },\n  {\n    name: \"Lena Kovač\",\n    role: \"VP of Engineering\",\n    avatar: \"https://i.pravatar.cc/150?img=24\",\n    bio: \"Scales teams and codebases with equal care. Led engineering at three Series B startups.\",\n    social: { linkedin: \"#\", twitter: null, github: \"#\" },\n  },\n  {\n    name: \"Daniel Reyes\",\n    role: \"Head of Product\",\n    avatar: \"https://i.pravatar.cc/150?img=33\",\n    bio: \"Turns customer problems into elegant solutions. Background in product management at Notion and Vercel.\",\n    social: { linkedin: \"#\", twitter: \"#\", github: null },\n  },\n  {\n    name: \"Yuna Park\",\n    role: \"Head of Marketing\",\n    avatar: \"https://i.pravatar.cc/150?img=44\",\n    bio: \"Builds brand from zero to recognizable. Previously ran marketing at Loom through their acquisition by Atlassian.\",\n    social: { linkedin: \"#\", twitter: \"#\", github: null },\n  },\n]\n\nfunction getInitials(name: string) {\n  return name\n    .split(\" \")\n    .map((part) => part[0])\n    .join(\"\")\n}\n\nexport default function TeamBlock() {\n  return (\n    <section className=\"flex w-full items-center justify-center bg-background px-6 py-20 text-foreground\">\n      <div className=\"mx-auto w-full max-w-5xl\">\n        <div className=\"mx-auto max-w-xl text-center\">\n          <span className=\"inline-block rounded-4xl border border-border px-3 py-1 text-xs font-semibold tracking-widest text-muted-foreground uppercase\">\n            Our Team\n          </span>\n          <h2 className=\"mt-5 font-heading text-4xl font-bold tracking-tight\">\n            The people behind Acme\n          </h2>\n          <p className=\"mt-4 leading-relaxed text-muted-foreground\">\n            A small, focused team that cares deeply about craft, reliability,\n            and the people who use what we build.\n          </p>\n        </div>\n\n        <div className=\"mt-14 grid grid-cols-1 gap-px overflow-hidden rounded-xl border border-border bg-border sm:grid-cols-2 md:grid-cols-3\">\n          {members.map(({ name, role, avatar, bio, social }) => (\n            <Card\n              key={name}\n              className=\"flex flex-col border-0 bg-card p-0 transition-colors duration-150 hover:bg-muted/40\"\n            >\n              <CardContent className=\"flex flex-1 flex-col gap-5 p-6\">\n                <div className=\"flex items-start gap-4\">\n                  <Avatar className=\"size-16 border border-border\">\n                    <AvatarImage\n                      src={avatar}\n                      alt={name}\n                      className=\"grayscale\"\n                    />\n                    <AvatarFallback className=\"text-sm font-medium\">\n                      {getInitials(name)}\n                    </AvatarFallback>\n                  </Avatar>\n                  <div className=\"flex flex-col items-start gap-2\">\n                    <span className=\"text-sm leading-none font-semibold text-foreground\">\n                      {name}\n                    </span>\n                    <span className=\"text-xs font-medium text-muted-foreground\">\n                      {role}\n                    </span>\n                    <div className=\"flex gap-0.5\">\n                      {social.linkedin && (\n                        <Button\n                          nativeButton={false}\n                          variant=\"secondary\"\n                          size=\"icon-sm\"\n                          render={\n                            <a\n                              href={social.linkedin}\n                              aria-label={`${name} on LinkedIn`}\n                            />\n                          }\n                        >\n                          <LinkedinOutlineMark className=\"size-4 text-muted-foreground transition-colors hover:text-foreground\" />\n                        </Button>\n                      )}\n                      {social.twitter && (\n                        <Button\n                          nativeButton={false}\n                          variant=\"secondary\"\n                          size=\"icon-sm\"\n                          render={\n                            <a\n                              href={social.twitter}\n                              aria-label={`${name} on X`}\n                            />\n                          }\n                        >\n                          <XOutlineMark className=\"size-4 text-muted-foreground transition-colors hover:text-foreground\" />\n                        </Button>\n                      )}\n                      {social.github && (\n                        <Button\n                          nativeButton={false}\n                          variant=\"secondary\"\n                          size=\"icon-sm\"\n                          render={\n                            <a\n                              href={social.github}\n                              aria-label={`${name} on GitHub`}\n                            />\n                          }\n                        >\n                          <GithubOutlineMark className=\"size-4 text-muted-foreground transition-colors hover:text-foreground\" />\n                        </Button>\n                      )}\n                    </div>\n                  </div>\n                </div>\n\n                <p className=\"text-sm leading-relaxed text-muted-foreground\">\n                  {bio}\n                </p>\n              </CardContent>\n            </Card>\n          ))}\n        </div>\n      </div>\n    </section>\n  )\n}\n\n// Brand marks are inlined rather than imported from an icon library, which\n// would drag a whole extra package into the consumer's install for a handful\n// of glyphs.\ntype MarkProps = React.ComponentProps<\"svg\"> & { size?: number | string }\n\nfunction GithubOutlineMark({ size = 24, ...props }: MarkProps) {\n  return (\n    <svg\n      viewBox=\"0 0 24 24\"\n      width={size}\n      height={size}\n      fill=\"currentColor\"\n      aria-hidden=\"true\"\n      {...props}\n    >\n      <path d=\"M5.88401 18.6533C5.58404 18.4526 5.32587 18.1975 5.0239 17.8369C4.91473 17.7065 4.47283 17.1524 4.55811 17.2583C4.09533 16.6833 3.80296 16.417 3.50156 16.3089C2.9817 16.1225 2.7114 15.5499 2.89784 15.0301C3.08428 14.5102 3.65685 14.2399 4.17672 14.4263C4.92936 14.6963 5.43847 15.1611 6.12425 16.0143C6.03025 15.8974 6.46364 16.441 6.55731 16.5529C6.74784 16.7804 6.88732 16.9182 6.99629 16.9911C7.20118 17.1283 7.58451 17.1874 8.14709 17.1311C8.17065 16.7489 8.24136 16.3783 8.34919 16.0358C5.38097 15.3104 3.70116 13.3952 3.70116 9.63971C3.70116 8.40085 4.0704 7.28393 4.75917 6.3478C4.5415 5.45392 4.57433 4.37284 5.06092 3.15636C5.1725 2.87739 5.40361 2.66338 5.69031 2.57352C5.77242 2.54973 5.81791 2.53915 5.89878 2.52673C6.70167 2.40343 7.83573 2.69705 9.31449 3.62336C10.181 3.41879 11.0885 3.315 12.0012 3.315C12.9129 3.315 13.8196 3.4186 14.6854 3.62277C16.1619 2.69 17.2986 2.39649 18.1072 2.52651C18.1919 2.54013 18.2645 2.55783 18.3249 2.57766C18.6059 2.66991 18.8316 2.88179 18.9414 3.15636C19.4279 4.37256 19.4608 5.45344 19.2433 6.3472C19.9342 7.28337 20.3012 8.39208 20.3012 9.63971C20.3012 13.3968 18.627 15.3048 15.6588 16.032C15.7837 16.447 15.8496 16.9105 15.8496 17.4121C15.8496 18.0765 15.8471 18.711 15.8424 19.4225C15.8412 19.6127 15.8397 19.8159 15.8375 20.1281C16.2129 20.2109 16.5229 20.5077 16.6031 20.9089C16.7114 21.4504 16.3602 21.9773 15.8186 22.0856C14.6794 22.3134 13.8353 21.5538 13.8353 20.5611C13.8353 20.4708 13.836 20.3417 13.8375 20.1145C13.8398 19.8015 13.8412 19.599 13.8425 19.4094C13.8471 18.7019 13.8496 18.0716 13.8496 17.4121C13.8496 16.7148 13.6664 16.2602 13.4237 16.051C12.7627 15.4812 13.0977 14.3973 13.965 14.2999C16.9314 13.9666 18.3012 12.8177 18.3012 9.63971C18.3012 8.68508 17.9893 7.89571 17.3881 7.23559C17.1301 6.95233 17.0567 6.54659 17.199 6.19087C17.3647 5.77663 17.4354 5.23384 17.2941 4.57702L17.2847 4.57968C16.7928 4.71886 16.1744 5.0198 15.4261 5.5285C15.182 5.69438 14.8772 5.74401 14.5932 5.66413C13.7729 5.43343 12.8913 5.315 12.0012 5.315C11.111 5.315 10.2294 5.43343 9.40916 5.66413C9.12662 5.74359 8.82344 5.69492 8.57997 5.53101C7.8274 5.02439 7.2056 4.72379 6.71079 4.58376C6.56735 5.23696 6.63814 5.77782 6.80336 6.19087C6.94565 6.54659 6.87219 6.95233 6.61423 7.23559C6.01715 7.8912 5.70116 8.69376 5.70116 9.63971C5.70116 12.8116 7.07225 13.9683 10.023 14.2999C10.8883 14.3971 11.2246 15.4769 10.5675 16.0482C10.3751 16.2156 10.1384 16.7802 10.1384 17.4121V20.5611C10.1384 21.5474 9.30356 22.2869 8.17878 22.09C7.63476 21.9948 7.27093 21.4766 7.36613 20.9326C7.43827 20.5204 7.75331 20.2116 8.13841 20.1276V19.1381C7.22829 19.1994 6.47656 19.0498 5.88401 18.6533Z\" />\n    </svg>\n  )\n}\n\nfunction LinkedinOutlineMark({ size = 24, ...props }: MarkProps) {\n  return (\n    <svg\n      viewBox=\"0 0 24 24\"\n      width={size}\n      height={size}\n      fill=\"currentColor\"\n      aria-hidden=\"true\"\n      {...props}\n    >\n      <path d=\"M12.001 9.55005C12.9181 8.61327 14.1121 8 15.501 8C18.5385 8 21.001 10.4624 21.001 13.5V21H19.001V13.5C19.001 11.567 17.434 10 15.501 10C13.568 10 12.001 11.567 12.001 13.5V21H10.001V8.5H12.001V9.55005ZM5.00098 6.5C4.17255 6.5 3.50098 5.82843 3.50098 5C3.50098 4.17157 4.17255 3.5 5.00098 3.5C5.8294 3.5 6.50098 4.17157 6.50098 5C6.50098 5.82843 5.8294 6.5 5.00098 6.5ZM4.00098 8.5H6.00098V21H4.00098V8.5Z\" />\n    </svg>\n  )\n}\n\nfunction XOutlineMark({ size = 24, ...props }: MarkProps) {\n  return (\n    <svg\n      viewBox=\"0 0 24 24\"\n      width={size}\n      height={size}\n      fill=\"currentColor\"\n      aria-hidden=\"true\"\n      {...props}\n    >\n      <path d=\"M10.4883 14.651L15.25 21H22.25L14.3917 10.5223L20.9308 3H18.2808L13.1643 8.88578L8.75 3H1.75L9.26086 13.0145L2.31915 21H4.96917L10.4883 14.651ZM16.25 19L5.75 5H7.75L18.25 19H16.25Z\" />\n    </svg>\n  )\n}\n",
      "type": "registry:component",
      "target": "components/blocks/team-1.tsx"
    }
  ],
  "meta": {
    "height": "803px",
    "tier": "free"
  },
  "docs": "Requires a `base-*` style in components.json (the `shadcn init` default). Legacy `new-york`/`radix-*` styles install Radix primitives, which reject the `render` prop this block uses.",
  "categories": [
    "team"
  ],
  "type": "registry:block"
}