Skip to content

Button

A premium interactive trigger button supporting multiple variants, sizes, loading indicators, and custom icons.


Try Now


Usage

tsx
import { Button } from "@lablnet/ui";
import { Mail, ArrowRight } from "lucide-react";

export default function Example() {
  return (
    <div className="flex gap-4">
      {/* Visual styling variants */}
      <Button variant="primary">Primary</Button>
      <Button variant="secondary">Secondary</Button>
      <Button variant="outline">Outline</Button>
      <Button variant="destructive">Destructive</Button>
      
      {/* Loaders and icons */}
      <Button isLoading>Processing...</Button>
      <Button leftIcon={<Mail className="h-4 w-4" />}>Mail</Button>
    </div>
  );
}

Customization

Props

PropTypeDefaultDescription
variantprimary, secondary, outline, ghost, link, destructive"primary"Sets component visual design variant
sizedefault, sm, lg, icon"default"Component dimensions
isLoadingbooleanfalseShows loading spinner and disables trigger
leftIconReact.ReactNode-Inner leading icon alignment
rightIconReact.ReactNode-Inner trailing icon alignment

CSS Variables

Customize colors dynamically via HSL variables in your CSS:

css
:root {
  --primary: 262.1 83.3% 57.8%;          /* Primary color HSL */
  --primary-foreground: 210 40% 98%;    /* Text color for primary button */
  --destructive: 0 84.2% 60.2%;         /* Destructive color HSL */
}