"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>
);
}
pnpm dlx shadcn@latest add https://matos-ui.com/r/button.jsonimport { Button } from "@/components/matos-ui/button"<Button>Click me</Button><Button loading loadingText="Saving...">
Save changes
</Button>The Button component accepts all props from @base-ui-components/react Button plus the following:
| Prop | Type | Default |
|---|---|---|
variant | "default" | "secondary" | "outline" | "ghost" | "destructive" | "link" | "default" |
size | "default" | "xs" | "sm" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | "default" |
loading | boolean | false |
loadingText | ReactNode | children |
loadingIcon | ReactNode | Spinner |
On This Page
Install Matos UI
Choose a package manager and copy one command for every component.