{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "team-3",
  "title": "Hover Reveal Bio Cards",
  "description": "Four-column grid of eight team member cards that reveal a bio and social links on hover.",
  "dependencies": [
    "@base-ui/react"
  ],
  "registryDependencies": [
    "avatar",
    "card"
  ],
  "files": [
    {
      "path": "registry/blocks/team/3/team-block.tsx",
      "content": "import { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Card } from \"@/components/ui/card\"\nimport { cn } from \"@/lib/utils\"\n\nconst members = [\n  {\n    name: \"Clara Hoffmann\",\n    role: \"Chief Executive Officer\",\n    bio: \"Scaled three enterprise platforms from seed to IPO. Leads with clarity and an obsession for customer impact.\",\n    img: \"https://i.pravatar.cc/150?img=5\",\n  },\n  {\n    name: \"Marcus Tran\",\n    role: \"Chief Technology Officer\",\n    bio: \"Former staff engineer at Google. Builds resilient distributed systems and the teams that maintain them.\",\n    img: \"https://i.pravatar.cc/150?img=12\",\n  },\n  {\n    name: \"Amara Osei\",\n    role: \"Head of Design\",\n    bio: \"Crafts interfaces that win awards and convert users. Believes great design is invisible until it's gone.\",\n    img: \"https://i.pravatar.cc/150?img=20\",\n  },\n  {\n    name: \"Lena Kovac\",\n    role: \"VP of Engineering\",\n    bio: \"Led platform migrations at Stripe and Figma. Turns technical debt into roadmap wins quarter after quarter.\",\n    img: \"https://i.pravatar.cc/150?img=32\",\n  },\n  {\n    name: \"Daniel Reyes\",\n    role: \"Head of Product\",\n    bio: \"Zero-to-one product thinker. Shipped features now used by over four million people across the globe.\",\n    img: \"https://i.pravatar.cc/150?img=14\",\n  },\n  {\n    name: \"Sophie Laurent\",\n    role: \"Head of Marketing\",\n    bio: \"Turned brand storytelling into a growth engine twice, at companies you already know and trust.\",\n    img: \"https://i.pravatar.cc/150?img=45\",\n  },\n  {\n    name: \"Yuki Tanaka\",\n    role: \"Head of Data\",\n    bio: \"Built the analytics backbone powering every decision. Makes numbers tell stories executives act on.\",\n    img: \"https://i.pravatar.cc/150?img=60\",\n  },\n  {\n    name: \"Noah Bennett\",\n    role: \"Head of Operations\",\n    bio: \"Keeps the company running like clockwork. Scaled support and finance through three hypergrowth phases.\",\n    img: \"https://i.pravatar.cc/150?img=68\",\n  },\n]\n\nconst socials = [\n  { label: \"X\", icon: XOutlineMark },\n  { label: \"LinkedIn\", icon: LinkedinOutlineMark },\n  { label: \"GitHub\", icon: GithubOutlineMark },\n  { label: \"Dribbble\", icon: DribbbleOutlineMark },\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-muted/30 px-6 py-16 text-foreground\">\n      <div className=\"mx-auto w-full max-w-6xl\">\n        <div className=\"mx-auto max-w-2xl text-center\">\n          <h2 className=\"font-heading text-3xl font-bold tracking-tight sm:text-4xl\">\n            Meet the Acme team\n          </h2>\n          <p className=\"mt-4 text-base text-muted-foreground\">\n            A small, senior crew that has shipped products used by millions.\n            Hover a card to learn what makes each of them tick.\n          </p>\n        </div>\n\n        <div className=\"mt-12 grid grid-cols-1 gap-5 sm:grid-cols-2 md:grid-cols-4\">\n          {members.map(({ name, role, bio, img }) => (\n            <Card\n              key={name}\n              className=\"group relative overflow-hidden p-0 transition-all duration-300 hover:shadow-lg hover:ring-1 hover:ring-border\"\n            >\n              <div className=\"flex flex-col items-center gap-4 px-6 py-10 text-center\">\n                <Avatar className=\"size-20 border border-border\">\n                  <AvatarImage src={img} alt={name} className=\"grayscale\" />\n                  <AvatarFallback className=\"bg-muted text-lg font-semibold\">\n                    {getInitials(name)}\n                  </AvatarFallback>\n                </Avatar>\n                <div className=\"flex flex-col gap-1\">\n                  <span className=\"text-base leading-tight font-semibold\">\n                    {name}\n                  </span>\n                  <span className=\"text-sm text-muted-foreground\">{role}</span>\n                </div>\n              </div>\n\n              <div\n                className={cn(\n                  \"absolute inset-0 flex flex-col items-center justify-center gap-5 bg-card/95 px-6 text-center opacity-0 backdrop-blur-sm transition-all duration-300\",\n                  \"translate-y-3 group-hover:translate-y-0 group-hover:opacity-100\"\n                )}\n              >\n                <p className=\"text-sm leading-relaxed text-muted-foreground\">\n                  {bio}\n                </p>\n                <div className=\"flex items-center gap-2\">\n                  {socials.map(({ label, icon: Icon }) => (\n                    <a\n                      key={label}\n                      href=\"#\"\n                      aria-label={`${name} on ${label}`}\n                      className=\"flex size-9 items-center justify-center rounded-full border border-border bg-background text-muted-foreground transition-colors hover:border-primary hover:text-primary\"\n                    >\n                      <Icon className=\"size-4\" aria-hidden=\"true\" />\n                    </a>\n                  ))}\n                </div>\n              </div>\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 DribbbleOutlineMark({ 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=\"M19.9887 11.5716C19.9029 9.94513 19.3313 8.44745 18.4163 7.22097C18.1749 7.48407 17.8785 7.7698 17.4957 8.09159C16.5881 8.85458 15.4887 9.54307 14.1834 10.101C14.3498 10.4506 14.5029 10.7899 14.6376 11.1098L14.6388 11.1125C14.6652 11.1742 14.6879 11.2306 14.7321 11.3418C14.7379 11.3562 14.7433 11.3697 14.7485 11.3825C16.2621 11.2122 17.8576 11.2749 19.4049 11.4845C19.6106 11.5123 19.805 11.5415 19.9887 11.5716ZM10.6044 4.1213C10.7783 4.36621 10.9602 4.62859 11.1803 4.95378C11.7929 5.8589 12.396 6.81391 12.9604 7.79507C13.0749 7.99416 13.187 8.19289 13.2964 8.39112C14.5193 7.90993 15.5296 7.30281 16.3438 6.62486C16.6731 6.35063 16.9383 6.093 17.1403 5.86972C15.7501 4.70277 13.9571 4 12 4C11.524 4 11.0576 4.04158 10.6044 4.1213ZM4.25266 9.99755C4.83145 9.98452 5.48467 9.94941 6.29303 9.87518C7.90024 9.72758 9.54141 9.46249 11.1549 9.05274C10.5719 8.03721 9.93888 7.02331 9.29452 6.05378C8.98479 5.58775 8.68357 5.14992 8.45484 4.82642C6.39541 5.84613 4.83794 7.72658 4.25266 9.99755ZM5.78366 17.036C6.17111 16.4693 6.68061 15.8314 7.35797 15.1374C8.81199 13.6478 10.5286 12.4878 12.5139 11.8473C12.5417 11.8391 12.5604 11.8336 12.576 11.829C12.411 11.4651 12.2562 11.1405 12.1003 10.8342C10.2643 11.3687 8.3303 11.703 6.40279 11.8762C5.46319 11.9606 4.62005 11.9981 4 12.0044C4.00102 13.9112 4.66915 15.662 5.78366 17.036ZM15.0045 19.4166C14.9001 18.8745 14.7669 18.2706 14.5899 17.574C14.2689 16.3112 13.8668 15.012 13.373 13.7078C11.3712 14.4343 9.77574 15.4974 8.54309 16.7649C7.94904 17.3757 7.51244 17.9537 7.22642 18.4203C8.55892 19.4127 10.2109 20 12 20C13.0626 20 14.0769 19.7928 15.0045 19.4166ZM16.8778 18.3414C18.4073 17.1632 19.4985 15.444 19.8652 13.4703C19.5253 13.3865 19.094 13.3005 18.6196 13.2346C17.5756 13.0897 16.5014 13.0655 15.4409 13.2018C15.8933 14.4764 16.2642 15.7332 16.5608 16.9361C16.6903 17.4614 16.7958 17.9358 16.8778 18.3414ZM12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22Z\" />\n    </svg>\n  )\n}\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-3.tsx"
    }
  ],
  "meta": {
    "height": "748px",
    "tier": "free"
  },
  "categories": [
    "team"
  ],
  "type": "registry:block"
}