BackButton

Discoverable bordered back-navigation pill with an adequate touch target.

import { BackButton }from "@/components/ui"

Basic

Full source

The complete component, read from src/components/ui/back-button.tsx.

back-button.tsx
"use client";

import Link from "next/link";
import { ArrowLeft } from "lucide-react";
import { cn } from "@/lib/utils";

interface BackButtonProps {

  href: string;

  label: string;

  className?: string;
}

export function BackButton({ href, label, className }: BackButtonProps) {
  return (
    <Link
      href={href}
      className={cn(
        "group inline-flex min-h-9 items-center gap-2 rounded-lg border border-border bg-bg px-3 text-sm font-medium text-text-secondary no-underline shadow-sm transition-colors",
        "hover:border-accent hover:bg-accent-light hover:text-accent",
        "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2",
        className
      )}
    >
      <ArrowLeft size={16} className="transition-transform group-hover:-translate-x-0.5" aria-hidden />
      <span>{label}</span>
    </Link>
  );
}

Dependencies

To use BackButton you also need the following. Copy these into your project alongside it.

Recommended folder structure

project structure
src/components/ui/
  └─ back-button.tsx
src/lib/
  └─ utils.ts