Skip to content

Button

The Button component provides a flexible, accessible button with glass-morphism styling and multiple variants.

Preview

Installation

import { Button } from '@smc/darwin-ui';

Usage

import { Button } from '@smc/darwin-ui';
export function Example() {
return (
<Button variant="primary" size="default">
Click me
</Button>
);
}

Variants

Button supports 8 core variants:

VariantDescriptionUse Case
defaultGlass-effect backgroundGeneral actions
primaryBlue solid with glowMain CTAs
secondarySubtle glass effectSecondary actions
successGreen with glowConfirmations
warningAmber with glowCaution actions
destructiveRed with glowDelete/remove
outlineTransparent with borderSubtle actions
ghostTransparentMinimal UI

Sizes

<Button size="sm">Small</Button>
<Button size="default">Default</Button>
<Button size="lg">Large</Button>
<Button size="icon">
<IconComponent />
</Button>
SizeHeightUse Case
sm32pxCompact UI, tables
default36pxStandard buttons
lg44pxHero sections, emphasis
icon36pxIcon-only buttons

With Icons

import { Plus, Download, Settings } from 'lucide-react';
<Button variant="primary">
<Plus className="w-4 h-4" />
Add Item
</Button>
<Button variant="secondary">
<Download className="w-4 h-4" />
Download
</Button>
<Button size="icon" variant="ghost">
<Settings className="w-4 h-4" />
</Button>

Disabled State

<Button disabled>Disabled Button</Button>

Disabled buttons have reduced opacity and don’t respond to interactions.

API Reference

Props

PropTypeDefaultDescription
variantVariant"default"Visual style variant
sizeSize"default"Button size
disabledbooleanfalseDisable button
classNamestring-Additional classes
childrenReactNode-Button content

Types

type Variant =
| "default"
| "primary"
| "secondary"
| "success"
| "warning"
| "destructive"
| "outline"
| "ghost";
type Size = "default" | "sm" | "lg" | "icon";

Accessibility

  • Uses native <button> element for full keyboard support
  • Supports disabled state with proper aria-disabled
  • Focus ring visible for keyboard navigation
  • Color contrast meets WCAG 2.1 AA standards