{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "footer-1",
  "title": "Brand Blurb With Link Columns",
  "description": "Site footer pairing a brand mark and tagline with three link columns and GitHub, X, and Discord social buttons.",
  "dependencies": [
    "@base-ui/react"
  ],
  "registryDependencies": [
    "button",
    "separator"
  ],
  "files": [
    {
      "path": "registry/blocks/footer/1/footer-block.tsx",
      "content": "import { Button } from \"@/components/ui/button\"\nimport { Separator } from \"@/components/ui/separator\"\n\nconst columns = [\n  { title: \"Product\", links: [\"Blocks\", \"Templates\", \"Pricing\", \"Changelog\"] },\n  { title: \"Resources\", links: [\"Docs\", \"Guides\", \"Support\", \"API\"] },\n  { title: \"Company\", links: [\"About\", \"Blog\", \"Careers\", \"Contact\"] },\n]\n\nconst socials = [\n  { label: \"GitHub\", icon: GithubMark },\n  { label: \"X\", icon: XMark },\n  { label: \"Discord\", icon: DiscordMark },\n]\n\nexport default function FooterBlock() {\n  return (\n    <section className=\"flex min-h-svh w-full flex-col justify-center bg-background text-foreground\">\n      <Separator />\n      <footer className=\"w-full px-4 py-10 sm:px-6\">\n        <div className=\"grid gap-8 md:grid-cols-2\">\n          <div className=\"max-w-sm\">\n            <a href=\"#\" className=\"flex items-center gap-2\">\n              <svg\n                viewBox=\"0 0 24 24\"\n                fill=\"currentColor\"\n                aria-hidden=\"true\"\n                className=\"size-6 shrink-0 text-primary\"\n              >\n                <rect\n                  x=\"3\"\n                  y=\"3\"\n                  width=\"8\"\n                  height=\"8\"\n                  transform=\"rotate(-6 7 7)\"\n                />\n                <rect\n                  x=\"3\"\n                  y=\"13\"\n                  width=\"8\"\n                  height=\"8\"\n                  transform=\"rotate(5 7 17)\"\n                />\n                <rect\n                  x=\"13\"\n                  y=\"13\"\n                  width=\"8\"\n                  height=\"8\"\n                  transform=\"rotate(-4 17 17)\"\n                />\n                <rect\n                  x=\"13\"\n                  y=\"3\"\n                  width=\"8\"\n                  height=\"8\"\n                  transform=\"rotate(15 17 7)\"\n                />\n              </svg>\n              <span className=\"text-lg font-bold tracking-tight\">Acme</span>\n            </a>\n            <p className=\"mt-3 text-sm text-muted-foreground\">\n              Everything your team needs to build, ship, and scale.\n            </p>\n          </div>\n          <div className=\"grid grid-cols-2 gap-8 sm:grid-cols-3\">\n            {columns.map((col) => (\n              <div key={col.title}>\n                <h3 className=\"font-heading text-sm font-bold tracking-tight\">\n                  {col.title}\n                </h3>\n                <ul className=\"mt-3 flex flex-col gap-2\">\n                  {col.links.map((link) => (\n                    <li key={link}>\n                      <a\n                        href=\"#\"\n                        className=\"text-sm text-muted-foreground transition-colors hover:text-foreground\"\n                      >\n                        {link}\n                      </a>\n                    </li>\n                  ))}\n                </ul>\n              </div>\n            ))}\n          </div>\n        </div>\n        <Separator className=\"mt-10\" />\n        <div className=\"flex flex-col items-start gap-4 pt-6 sm:flex-row sm:items-center sm:justify-between\">\n          <p className=\"text-sm text-muted-foreground\">\n            &copy; 2026 Acme. All rights reserved.\n          </p>\n          <div className=\"flex items-center gap-2\">\n            {socials.map((social) => (\n              <Button\n                key={social.label}\n                variant=\"outline\"\n                size=\"icon-sm\"\n                aria-label={social.label}\n                render={<a href=\"#\" />}\n                nativeButton={false}\n                className=\"rounded-lg text-muted-foreground hover:text-foreground\"\n              >\n                <social.icon className=\"size-4\" aria-hidden=\"true\" />\n              </Button>\n            ))}\n          </div>\n        </div>\n      </footer>\n      <Separator />\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 DiscordMark({ 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.3034 5.33716C17.9344 4.71103 16.4805 4.2547 14.9629 4C14.7719 4.32899 14.5596 4.77471 14.411 5.12492C12.7969 4.89144 11.1944 4.89144 9.60255 5.12492C9.45397 4.77471 9.2311 4.32899 9.05068 4C7.52251 4.2547 6.06861 4.71103 4.70915 5.33716C1.96053 9.39111 1.21766 13.3495 1.5891 17.2549C3.41443 18.5815 5.17612 19.388 6.90701 19.9187C7.33151 19.3456 7.71356 18.73 8.04255 18.0827C7.41641 17.8492 6.82211 17.5627 6.24904 17.2231C6.39762 17.117 6.5462 17.0003 6.68416 16.8835C10.1438 18.4648 13.8911 18.4648 17.3082 16.8835C17.4568 17.0003 17.5948 17.117 17.7434 17.2231C17.1703 17.5627 16.576 17.8492 15.9499 18.0827C16.2789 18.73 16.6609 19.3456 17.0854 19.9187C18.8152 19.388 20.5875 18.5815 22.4033 17.2549C22.8596 12.7341 21.6806 8.80747 19.3034 5.33716ZM8.5201 14.8459C7.48007 14.8459 6.63107 13.9014 6.63107 12.7447C6.63107 11.5879 7.45884 10.6434 8.5201 10.6434C9.57071 10.6434 10.4303 11.5879 10.4091 12.7447C10.4091 13.9014 9.57071 14.8459 8.5201 14.8459ZM15.4936 14.8459C14.4535 14.8459 13.6034 13.9014 13.6034 12.7447C13.6034 11.5879 14.4323 10.6434 15.4936 10.6434C16.5442 10.6434 17.4038 11.5879 17.3825 12.7447C17.3825 13.9014 16.5548 14.8459 15.4936 14.8459Z\" />\n    </svg>\n  )\n}\n\nfunction GithubMark({ 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 2C6.47598 2 2.00098 6.475 2.00098 12C2.00098 16.425 4.86348 20.1625 8.83848 21.4875C9.33848 21.575 9.52598 21.275 9.52598 21.0125C9.52598 20.775 9.51348 19.9875 9.51348 19.15C7.00098 19.6125 6.35098 18.5375 6.15098 17.975C6.03848 17.6875 5.55098 16.8 5.12598 16.5625C4.77598 16.375 4.27598 15.9125 5.11348 15.9C5.90098 15.8875 6.46348 16.625 6.65098 16.925C7.55098 18.4375 8.98848 18.0125 9.56348 17.75C9.65098 17.1 9.91348 16.6625 10.201 16.4125C7.97598 16.1625 5.65098 15.3 5.65098 11.475C5.65098 10.3875 6.03848 9.4875 6.67598 8.7875C6.57598 8.5375 6.22598 7.5125 6.77598 6.1375C6.77598 6.1375 7.61348 5.875 9.52598 7.1625C10.326 6.9375 11.176 6.825 12.026 6.825C12.876 6.825 13.726 6.9375 14.526 7.1625C16.4385 5.8625 17.276 6.1375 17.276 6.1375C17.826 7.5125 17.476 8.5375 17.376 8.7875C18.0135 9.4875 18.401 10.375 18.401 11.475C18.401 15.3125 16.0635 16.1625 13.8385 16.4125C14.201 16.725 14.5135 17.325 14.5135 18.2625C14.5135 19.6 14.501 20.675 14.501 21.0125C14.501 21.275 14.6885 21.5875 15.1885 21.4875C19.259 20.1133 21.9999 16.2963 22.001 12C22.001 6.475 17.526 2 12.001 2Z\" />\n    </svg>\n  )\n}\n\nfunction XMark({ 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=\"M17.6874 3.0625L12.6907 8.77425L8.37045 3.0625H2.11328L9.58961 12.8387L2.50378 20.9375H5.53795L11.0068 14.6886L15.7863 20.9375H21.8885L14.095 10.6342L20.7198 3.0625H17.6874ZM16.6232 19.1225L5.65436 4.78217H7.45745L18.3034 19.1225H16.6232Z\" />\n    </svg>\n  )\n}\n",
      "type": "registry:component",
      "target": "components/blocks/footer-1.tsx"
    }
  ],
  "meta": {
    "height": "335px",
    "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": [
    "footer"
  ],
  "type": "registry:block"
}