Expanding Reveal Button

About this component

Expanding Reveal Button

An expanding icon button that reveals its label on hover or focus for compact layouts.

Usage

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

import { Button15 } from "@/components/beste/component/button15";
import Link from "next/link";
import { Mail } from "lucide-react";

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

<Button15
  label="Email us"
  icon={Mail}      // seal icon (default: ArrowRight)
  tone="outline"   // "dark" (default) | "primary" | "outline"
  rounded="lg"     // "full" (default) | "lg" | "md" | "none", mirrored onto the seal
  onClick={() => console.log("email us")}
/>

Props

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

PropTypeDefaultDescription
label*string—Button label, revealed as the pill expands on hover/focus
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—Seal icon (defaults to ArrowRight)
tone"dark" | "primary" | "outline"—Surface tone: solid dark (default), primary, or bordered outline
rounded"full" | "lg" | "md" | "none"—Corner radius, mirrored onto the seal (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