how to use shadcn ui with next.js for button link

How to Use Shadcn UI with Next.js for Button Link

January 7, 2024 By Aaronn

In this tutorial, we'll see how to use button Link using Next.js and Shadcn UI.

how to use shadcn ui in next js 13


Before use Button with Link in next js 13 with shadcn ui you need to install npx shadcn-ui add button.

npx shadcn-ui@latest add button


1. Creating a Button as a Child Element with a Link in Next.js Using Shadcn UI.

import Link from "next/link"

import { Button } from "@/components/ui/button"

export default function page() {
  return (
    <div>
      <Button asChild>
        <Link href="/login">Login</Link>
      </Button>
    </div>
  )
}
next.js and shadcn ui button link

next.js and shadcn ui button link

2. Creating a Button Link in Next.js with Shadcn UI, Featuring Variants like Secondary, Destructive, and Outline.

import Link from "next/link"

import { Button } from "@/components/ui/button"

export default function page() {
  return (
    <div className="space-x-6">
      <Button asChild>
        <Link href="/login">Login</Link>
      </Button>
      <Button asChild variant="secondary">
        <Link href="/login">Login</Link>
      </Button>
      <Button asChild variant="destructive">
        <Link href="/login">Login</Link>
      </Button>
      <Button asChild variant="outline">
        <Link href="/login">Login</Link>
      </Button>
    </div>
  )
}
shadcn ui button link

shadcn ui button link

3. You can use the buttonVariants helper to create a link that looks like a button.

import Link from "next/link";

import { buttonVariants } from "@/components/ui/button";

export default function page() {
  return (
    <div>
      <Link className={buttonVariants({ variant: "outline" })} href="/login">
        login
      </Link>
    </div>
  );
}