Button

PreviousNext

Displays a button or a component that looks like a button.

"use client";

import { useState } from "react";

import { Button } from "@/components/matos-ui/button";

export function ButtonDemo() {
  const [isLoading, setIsLoading] = useState(false);

  function handleLoading() {
    setIsLoading(true);
    window.setTimeout(() => setIsLoading(false), 1400);
  }

  return (
    <div className="flex flex-wrap items-center gap-3">
      <Button variant="default">Default</Button>
      <Button variant="secondary">Secondary</Button>
      <Button variant="outline">Outline</Button>
      <Button variant="ghost">Ghost</Button>
      <Button variant="destructive">Destructive</Button>
      <Button
        loading={isLoading}
        loadingText="Saving..."
        onClick={handleLoading}
      >
        Save changes
      </Button>
      <Button variant="link">Link</Button>
    </div>
  );
}

Installation

pnpm dlx shadcn@latest add https://matos-ui.com/r/button.json

Usage

import { Button } from "@/components/matos-ui/button"
<Button>Click me</Button>
<Button loading loadingText="Saving...">
  Save changes
</Button>

Reference

Props

The Button component accepts all props from @base-ui-components/react Button plus the following:

PropTypeDefault
variant"default" | "secondary" | "outline" | "ghost" | "destructive" | "link""default"
size"default" | "xs" | "sm" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg""default"
loadingbooleanfalse
loadingTextReactNodechildren
loadingIconReactNodeSpinner