{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "footer-3",
  "title": "Footer Exemple 3",
  "description": "",
  "dependencies": [
    "framer-motion",
    "lucide-react"
  ],
  "files": [
    {
      "path": "registry/default/blocks/Footer/footer3.tsx",
      "content": "\"use client\";\r\n\r\n/**\r\n * Footer3\r\n * ────────────────────────────────────────────────────────────────────────\r\n * A CTA banner + footer section, reproduced from the provided screenshot,\r\n * restyled with BagUI's design tokens (bagui.vercel.app):\r\n *   - Font: Geist (next/font/google) — falls back to Inter/system-ui if\r\n *     the project hasn't wired up the --font-geist-sans CSS variable yet.\r\n *   - Colors: BagUI's monochrome shadcn \"neutral\" system — near-black\r\n *     (#09090b / zinc-950) surfaces, white, and the zinc gray scale.\r\n *     No blue — the original hero gradient is reinterpreted as a\r\n *     monochrome ambient light on a zinc-950 panel.\r\n *\r\n * Dependencies (already present in a standard BagUI/shadcn setup):\r\n *   npm install framer-motion lucide-react\r\n *\r\n * Font setup (in app/layout.tsx), same as BagUI:\r\n *   import { Geist } from \"next/font/google\";\r\n *   const geistSans = Geist({ subsets: [\"latin\"], variable: \"--font-geist-sans\" });\r\n *   <body className={`${geistSans.variable} font-sans`}>...\r\n */\r\n\r\nimport { useState } from \"react\";\r\nimport Image from \"next/image\";\r\nimport { motion, useReducedMotion, type Variants } from \"framer-motion\";\r\nimport { ChevronRight } from \"lucide-react\";\r\nimport {\r\n  FaXTwitter, // X\r\n  FaInstagram, // Instagram\r\n  FaLinkedin, // LinkedIn\r\n  FaFacebook,\r\n} from \"react-icons/fa6\";\r\n\r\n// ─── Font stack (Geist first, graceful fallback) ──────────────────────────\r\nconst font = {\r\n  fontFamily: \"var(--font-geist-sans), Geist, Inter, system-ui, sans-serif\",\r\n} as const;\r\n\r\n// ─── Motion variants ───────────────────────────────────────────────────────\r\nconst stagger: Variants = {\r\n  hidden: {},\r\n  visible: { transition: { staggerChildren: 0.08, delayChildren: 0.05 } },\r\n};\r\n\r\nconst fadeUp: Variants = {\r\n  hidden: { opacity: 0, y: 16 },\r\n  visible: {\r\n    opacity: 1,\r\n    y: 0,\r\n    transition: { duration: 0.5, ease: \"easeOut\" },\r\n  },\r\n};\r\n\r\nconst heroVariant: Variants = {\r\n  hidden: { opacity: 0, scale: 0.97 },\r\n  visible: {\r\n    opacity: 1,\r\n    scale: 1,\r\n    transition: { duration: 0.6, ease: \"easeOut\" },\r\n  },\r\n};\r\n\r\n// ─── Content ────────────────────────────────────────────────────────────────\r\nconst PRODUCT_LINKS = [\"Features\", \"Pricing\", \"Integrations\", \"AI Agents\"];\r\nconst RESOURCE_LINKS = [\r\n  \"Documentation\",\r\n  \"Case Studies\",\r\n  \"Blog\",\r\n  \"Support Center\",\r\n];\r\n\r\nfunction XIcon({ className }: { className?: string }) {\r\n  return (\r\n    <svg\r\n      viewBox=\"0 0 24 24\"\r\n      className={className}\r\n      fill=\"currentColor\"\r\n      aria-hidden\r\n    >\r\n      <path d=\"M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z\" />\r\n    </svg>\r\n  );\r\n}\r\n\r\nconst SOCIALS: {\r\n  id: string;\r\n  label: string;\r\n  icon: React.ComponentType<{ className?: string }>;\r\n  href: string;\r\n}[] = [\r\n  { id: \"linkedin\", label: \"LinkedIn\", icon: FaLinkedin, href: \"#\" },\r\n  { id: \"x\", label: \"X\", icon: XIcon, href: \"#\" },\r\n  { id: \"instagram\", label: \"Instagram\", icon: FaFacebook, href: \"#\" },\r\n];\r\n\r\n// ─── Hero / CTA banner ──────────────────────────────────────────────────────\r\nfunction HeroBanner() {\r\n  const reduceMotion = useReducedMotion();\r\n\r\n  return (\r\n    <motion.div\r\n      variants={heroVariant}\r\n      initial=\"hidden\"\r\n      whileInView=\"visible\"\r\n      viewport={{ once: true, amount: 0.4 }}\r\n      className=\"relative isolate overflow-hidden rounded-[32px] bg-zinc-950 px-6 py-20 text-center sm:py-28\"\r\n    >\r\n      {/* ambient glow rising from the bottom, monochrome instead of blue */}\r\n      <motion.div\r\n        aria-hidden\r\n        className=\"pointer-events-none absolute inset-0\"\r\n        style={{\r\n          background:\r\n            \"radial-gradient(120% 65% at 50% 120%, rgba(255,255,255,0.24) 0%, rgba(255,255,255,0.08) 35%, transparent 68%)\",\r\n        }}\r\n        animate={reduceMotion ? undefined : { opacity: [0.55, 1, 0.55] }}\r\n        transition={{ duration: 6, repeat: Infinity, ease: \"easeInOut\" }}\r\n      />\r\n      {/* faint converging light beams */}\r\n      <div\r\n        aria-hidden\r\n        className=\"pointer-events-none absolute inset-0\"\r\n        style={{\r\n          background:\r\n            \"conic-gradient(from 205deg at 50% 105%, transparent 0deg, rgba(255,255,255,0.10) 35deg, transparent 80deg, transparent 280deg, rgba(255,255,255,0.10) 325deg, transparent 360deg)\",\r\n        }}\r\n      />\r\n      <div\r\n        aria-hidden\r\n        className=\"pointer-events-none absolute inset-x-0 bottom-0 h-24 bg-gradient-to-t from-white/15 to-transparent blur-2xl\"\r\n      />\r\n\r\n      <div className=\"relative z-10 mx-auto max-w-2xl\">\r\n        <h2\r\n          style={font}\r\n          className=\"text-3xl font-semibold leading-[1.15] tracking-tight text-white sm:text-5xl\"\r\n        >\r\n          Transform customer support\r\n          <br className=\"hidden sm:block\" /> with intelligent AI agents\r\n        </h2>\r\n\r\n        <motion.button\r\n          whileHover={{ scale: 1.03 }}\r\n          whileTap={{ scale: 0.97 }}\r\n          style={font}\r\n          className=\"mt-9 inline-flex items-center gap-1.5 rounded-full bg-white px-6 py-3 text-sm font-semibold text-zinc-950 transition-colors duration-200 hover:bg-zinc-100 focus:outline-none focus-visible:ring-2 focus-visible:ring-white/60 focus-visible:ring-offset-2 focus-visible:ring-offset-zinc-950 cursor-pointer\"\r\n        >\r\n          Start Free Trial\r\n          <ChevronRight className=\"h-4 w-4\" />\r\n        </motion.button>\r\n      </div>\r\n    </motion.div>\r\n  );\r\n}\r\n\r\nfunction SocialLink({\r\n  icon: Icon,\r\n  href,\r\n  label,\r\n}: {\r\n  icon: React.ComponentType<{ className?: string }>;\r\n  href: string;\r\n  label: string;\r\n}) {\r\n  return (\r\n    <a\r\n      href={href}\r\n      aria-label={label}\r\n      className=\"flex h-9 w-9 items-center justify-center rounded-lg border border-zinc-200 text-zinc-600 transition-colors duration-200 hover:border-zinc-950 hover:bg-zinc-950 hover:text-white focus:outline-none focus-visible:ring-2 focus-visible:ring-zinc-400\"\r\n    >\r\n      <Icon className=\"h-4 w-4\" />\r\n    </a>\r\n  );\r\n}\r\n\r\nfunction BrandColumn() {\r\n  return (\r\n    <motion.div variants={fadeUp} className=\"flex flex-col gap-5 lg:max-w-xs\">\r\n      <div className=\"flex items-center gap-2\">\r\n        <Image\r\n          src=\"/logo.png\"\r\n          alt=\"AutoMagic Logo\"\r\n          width={20}\r\n          height={20}\r\n          className=\"object-contain\"\r\n        />\r\n\r\n        <span style={font} className=\"text-lg font-semibold text-zinc-950\">\r\n          Bag\\Ui\r\n        </span>\r\n      </div>\r\n      <p style={font} className=\"text-sm leading-relaxed text-zinc-500\">\r\n        Modern AI support platform designed to automate conversations and\r\n        deliver faster customer responses.\r\n      </p>\r\n      <div className=\"flex items-center gap-2.5\">\r\n        {SOCIALS.map((s) => (\r\n          <SocialLink key={s.id} icon={s.icon} href={s.href} label={s.label} />\r\n        ))}\r\n      </div>\r\n    </motion.div>\r\n  );\r\n}\r\n\r\nfunction LinkColumn({ title, links }: { title: string; links: string[] }) {\r\n  return (\r\n    <motion.div variants={fadeUp} className=\"flex flex-col gap-4\">\r\n      <h4 style={font} className=\"text-sm font-semibold text-zinc-950\">\r\n        {title}\r\n      </h4>\r\n      <ul className=\"flex flex-col gap-3\">\r\n        {links.map((l) => (\r\n          <li key={l}>\r\n            <a\r\n              href=\"#\"\r\n              style={font}\r\n              className=\"text-sm text-zinc-500 transition-colors duration-200 hover:text-zinc-950\"\r\n            >\r\n              {l}\r\n            </a>\r\n          </li>\r\n        ))}\r\n      </ul>\r\n    </motion.div>\r\n  );\r\n}\r\n\r\nfunction CompanyColumn() {\r\n  const [email, setEmail] = useState(\"\");\r\n\r\n  return (\r\n    <motion.div variants={fadeUp} className=\"flex flex-col gap-4\">\r\n      <h4 style={font} className=\"text-sm font-semibold text-zinc-950\">\r\n        Company\r\n      </h4>\r\n      <p style={font} className=\"text-sm leading-relaxed text-zinc-500\">\r\n        Helping teams create faster, smarter, and more reliable customer support\r\n        experiences with AI\r\n      </p>\r\n      <form\r\n        onSubmit={(e) => e.preventDefault()}\r\n        className=\"flex items-center justify-between gap-1 rounded-full border border-zinc-200 py-1 pl-4 pr-1 transition-colors duration-200 focus-within:border-zinc-400\"\r\n      >\r\n        <input\r\n          type=\"email\"\r\n          required\r\n          value={email}\r\n          onChange={(e) => setEmail(e.target.value)}\r\n          placeholder=\"Email address\"\r\n          style={font}\r\n          className=\"w-full bg-transparent text-sm text-zinc-900 placeholder:text-zinc-400 focus:outline-none\"\r\n        />\r\n        <motion.button\r\n          type=\"submit\"\r\n          whileHover={{ scale: 1.03 }}\r\n          whileTap={{ scale: 0.97 }}\r\n          style={font}\r\n          className=\"flex shrink-0 items-center gap-1 rounded-full bg-zinc-950 px-4 py-2 text-sm font-medium text-white transition-colors duration-200 hover:bg-zinc-800 focus:outline-none focus-visible:ring-2 focus-visible:ring-zinc-400\"\r\n        >\r\n          Subscribe\r\n          <ChevronRight className=\"h-3.5 w-3.5\" />\r\n        </motion.button>\r\n      </form>\r\n    </motion.div>\r\n  );\r\n}\r\n\r\n// ─── Bottom bar ─────────────────────────────────────────────────────────────\r\nfunction BottomBar() {\r\n  const year = new Date().getFullYear();\r\n\r\n  return (\r\n    <motion.div\r\n      initial={{ opacity: 0, y: 12 }}\r\n      whileInView={{ opacity: 1, y: 0 }}\r\n      viewport={{ once: true, amount: 0.4 }}\r\n      transition={{ duration: 0.5, ease: \"easeOut\", delay: 0.1 }}\r\n      className=\"mt-10 flex flex-col items-center justify-between gap-3 rounded-xl bg-zinc-100 px-6 py-4 sm:flex-row\"\r\n    >\r\n      <p style={font} className=\"text-xs text-zinc-500\">\r\n        © {year} Bag\\Ui. All rights reserved.\r\n      </p>\r\n      <div\r\n        style={font}\r\n        className=\"flex items-center gap-4 text-xs text-zinc-500\"\r\n      >\r\n        <a\r\n          href=\"#\"\r\n          className=\"transition-colors duration-200 hover:text-zinc-950\"\r\n        >\r\n          Privacy Policy\r\n        </a>\r\n        <span className=\"h-3 w-px bg-zinc-300\" aria-hidden />\r\n        <a\r\n          href=\"#\"\r\n          className=\"transition-colors duration-200 hover:text-zinc-950\"\r\n        >\r\n          Terms &amp; Conditions\r\n        </a>\r\n      </div>\r\n    </motion.div>\r\n  );\r\n}\r\n\r\n// ─── Main export ────────────────────────────────────────────────────────────\r\nexport default function Footer3() {\r\n  return (\r\n    <footer className=\"w-full px-4 py-10 sm:px-6 lg:px-10\">\r\n      <div className=\"mx-auto max-w-7xl\">\r\n        <HeroBanner />\r\n\r\n        <motion.div\r\n          variants={stagger}\r\n          initial=\"hidden\"\r\n          whileInView=\"visible\"\r\n          viewport={{ once: true, amount: 0.2 }}\r\n          className=\"mt-16 grid grid-cols-1 gap-10 sm:grid-cols-2 lg:grid-cols-[1.4fr_1fr_1fr_1.2fr]\"\r\n        >\r\n          <BrandColumn />\r\n          <LinkColumn title=\"Product\" links={PRODUCT_LINKS} />\r\n          <LinkColumn title=\"Resources\" links={RESOURCE_LINKS} />\r\n          <CompanyColumn />\r\n        </motion.div>\r\n\r\n        <BottomBar />\r\n      </div>\r\n    </footer>\r\n  );\r\n}\r\n",
      "type": "registry:block",
      "target": "components/Footer-ex-3.tsx"
    }
  ],
  "type": "registry:block"
}