Letter Roll Button

About this component

Letter Roll Button

A pill button whose label rolls up letter by letter with a staggered hover animation.

Usage

The import and the props worth knowing about, in one place.

import { Button13 } from "@/components/beste/component/button13";
import Link from "next/link";

// Compose the link with the render prop: your Link becomes the rendered
// element and the button content stays as its children.
<Button13 label="Start your project" render={<Link href="/contact" />} />

<Button13
  label="Explore services"
  tone="outline"   // "dark" (default) | "primary" | "outline"
  rounded="md"     // "full" (default) | "lg" | "md" | "none"
  hideIcon         // drop the trailing arrow
  onClick={() => console.log("explore services")}
/>

Props

Read from the component's own type, so this cannot drift from what it accepts.

PropTypeDefaultDescription
label*string—Button label (animated letter by letter on hover)
asChildboolean—Compose the rendered element shadcn-style (radix asChild): your element (e.g. a router Link) becomes the root and the button content is injected as its children. Pass the element without children of its own.
childrenReact.ReactElement—The element to render when `asChild` is set (e.g. your framework's Link)
hrefstring—Fallback link: renders a plain `<a>`. Prefer `asChild` with your framework's Link component for client-side navigation.
iconLucideIcon—Trailing icon (defaults to ArrowRight); pass null-like hide via showIcon
hideIconboolean—Hide the trailing icon
tone"dark" | "primary" | "outline"—Surface tone: solid dark (default), primary, or bordered outline
rounded"full" | "lg" | "md" | "none"—Corner radius (defaults to full)
onClickReact.MouseEventHandler<HTMLButtonElement>—Click handler (used when there is no href and no asChild)
classNamestring—Additional classes merged onto the button

More Button components

View all Button