Button

A Neo-brutalist button component with multiple variants, sizes, and states.

Import

tsx
import { Button } from 'fxui-core';

Usage

tsx
<Button>Click me</Button>

Variants

tsx
<Button variant="default">Default</Button>
<Button variant="outline">Outline</Button>
<Button variant="ghost">Ghost</Button>
<Button variant="destructive">Destructive</Button>
<Button variant="neon">Neon</Button>

Sizes

tsx
<Button size="sm">Small</Button>
<Button size="md">Medium</Button>
<Button size="lg">Large</Button>
<Button size="icon" aria-label="Star">★</Button>

Loading State

tsx
<Button isLoading>Saving...</Button>

With Icons

tsx
<Button leftIcon={<ArrowLeftIcon />}>Back</Button>
<Button rightIcon={<ArrowRightIcon />}>Next</Button>

Disabled

tsx
<Button disabled>Disabled</Button>

API Reference

| Prop | Type | Default | Description | |------|------|---------|-------------| | variant | 'default' \| 'outline' \| 'ghost' \| 'destructive' \| 'neon' | 'default' | Visual style | | size | 'sm' \| 'md' \| 'lg' \| 'icon' | 'md' | Button size | | isLoading | boolean | false | Shows spinner, disables interaction | | leftIcon | ReactNode | — | Icon rendered before label | | rightIcon | ReactNode | — | Icon rendered after label | | disabled | boolean | false | Disables the button | | className | string | — | Additional Tailwind classes |

Extends all native <button> HTML attributes.