import { useRouter } from "next/router"; import Link from "next/link"; import { useState, ReactNode, ReactElement } from "react"; import cn from "classnames"; import { ThemeSwitch } from "nextra-theme-docs"; import VercelLogo from "./logos/Vercel"; import { useTurboSite, TurboSite } from "./SiteSwitcher"; function FooterLink({ href, children }: { href: string; children: ReactNode }) { const classes = "text-sm text-[#666666] dark:text-[#888888] no-underline betterhover:hover:text-gray-700 betterhover:hover:dark:text-white transition"; if (href.startsWith("http")) { return ( {children} ); } return ( {children} ); } function FooterHeader({ children }: { children: ReactNode }) { return

{children}

; } const navigation = { general: [ { name: "Blog", href: "/blog" }, { name: "Releases", href: "https://github.com/vercel/turbo/releases" }, ], repo: [ { name: "Documentation", href: "/repo/docs" }, { name: "API Reference", href: "/repo/docs/reference/command-line-reference", }, { name: "FAQ", href: "/repo/docs/faq" }, ], pack: [ { name: "Documentation", href: "/pack/docs" }, { name: "Features", href: "/pack/docs/features" }, ], support: [ { name: "GitHub", href: "https://github.com/vercel/turbo", }, { name: "Discord", href: "https://turbo.build/discord", }, ], company: (site: TurboSite) => [ { name: "Vercel", href: "https://vercel.com" }, { name: "Open Source Software", href: "https://vercel.com/oss?utm_source=turbo.build&utm_medium=referral&utm_campaign=footer-ossLink", }, { name: "Contact Sales", href: `https://vercel.com/${ site === "repo" ? "solutions/turborepo" : "contact/sales" }?utm_source=turbo.build&utm_medium=referral&utm_campaign=footer-enterpriseLink`, }, { name: "Twitter", href: "https://twitter.com/vercel" }, ], legal: [ { name: "Privacy Policy", href: "/privacy" }, { name: "Terms of Service", href: "/terms" }, ], }; export function FooterContent() { const site = useTurboSite(); return (
Resources
    {navigation.general.map((item) => (
  • {item.name}
  • ))}
Turborepo
    {navigation.repo.map((item) => (
  • {item.name}
  • ))}
Turbopack
    {navigation.pack.map((item) => (
  • {item.name}
  • ))}
Company
    {navigation.company(site).map((item) => (
  • {item.name}
  • ))}
Legal
    {navigation.legal.map((item) => (
  • {item.name}
  • ))}
Support
    {navigation.support.map((item) => (
  • {item.name}
  • ))}
Subscribe to our newsletter

Subscribe to the Turbo newsletter and stay updated on new releases and features, guides, and case studies.

© {new Date().getFullYear()} Vercel, Inc. All rights reserved.

); } function SubmitForm() { const [email, setEmail] = useState(""); const router = useRouter(); return (
{ fetch("/api/signup", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ email }), }) .then((res) => res.json()) .then((res) => { return router.push("/confirm"); }); e.preventDefault(); }} > setEmail(e.target.value)} className="border-[#666666] dark:border-[#888888] w-full min-w-0 px-4 py-2 text-base text-gray-900 placeholder-gray-500 bg-white border rounded-md appearance-none dark:text-white sm:text-sm dark:bg-transparent focus:outline-none focus:ring-2 focus:ring-gray-800 dark:focus:border-white focus:placeholder-gray-400" placeholder="you@example.com" />
); } export function Footer({ menu }: { menu?: boolean }): ReactElement { return ( ); }