# Component Specifications

Detailed specs for core components with states and variants.

## Button

### Variants

| Variant     | Background  | Text       | Border | Use Case          |
| ----------- | ----------- | ---------- | ------ | ----------------- |
| default     | primary     | white      | none   | Primary actions   |
| secondary   | gray-100    | gray-900   | none   | Secondary actions |
| outline     | transparent | foreground | border | Tertiary actions  |
| ghost       | transparent | foreground | none   | Subtle actions    |
| link        | transparent | primary    | none   | Navigation        |
| destructive | red-600     | white      | none   | Dangerous actions |

### Sizes

| Size    | Height | Padding X | Padding Y | Font Size | Icon Size |
| ------- | ------ | --------- | --------- | --------- | --------- |
| sm      | 32px   | 12px      | 6px       | 14px      | 16px      |
| default | 40px   | 16px      | 8px       | 14px      | 18px      |
| lg      | 48px   | 24px      | 12px      | 16px      | 20px      |
| icon    | 40px   | 0         | 0         | -         | 18px      |

### States

| State    | Background | Text     | Opacity | Cursor      |
| -------- | ---------- | -------- | ------- | ----------- |
| default  | token      | token    | 1       | pointer     |
| hover    | darker     | token    | 1       | pointer     |
| active   | darkest    | token    | 1       | pointer     |
| focus    | token      | token    | 1       | pointer     |
| disabled | muted      | muted-fg | 0.5     | not-allowed |
| loading  | token      | token    | 0.7     | wait        |

### Anatomy

```
┌─────────────────────────────────────┐
│  [icon]  Label Text  [icon]         │
└─────────────────────────────────────┘
     ↑                      ↑
  leading icon         trailing icon
```

---

## Input

### Variants

| Variant  | Description         |
| -------- | ------------------- |
| default  | Standard text input |
| textarea | Multi-line text     |
| select   | Dropdown selection  |
| checkbox | Boolean toggle      |
| radio    | Single selection    |
| switch   | Toggle switch       |

### Sizes

| Size    | Height | Padding   | Font Size |
| ------- | ------ | --------- | --------- |
| sm      | 32px   | 8px 12px  | 14px      |
| default | 40px   | 8px 12px  | 14px      |
| lg      | 48px   | 12px 16px | 16px      |

### States

| State    | Border   | Background | Ring        |
| -------- | -------- | ---------- | ----------- |
| default  | gray-300 | white      | none        |
| hover    | gray-400 | white      | none        |
| focus    | primary  | white      | primary/20% |
| error    | red-500  | white      | red/20%     |
| disabled | gray-200 | gray-100   | none        |

### Anatomy

```
Label (optional)
┌─────────────────────────────────────┐
│ [icon] Placeholder/Value   [action] │
└─────────────────────────────────────┘
Helper text or error message
```

---

## Card

### Variants

| Variant     | Shadow | Border | Use Case          |
| ----------- | ------ | ------ | ----------------- |
| default     | sm     | 1px    | Standard card     |
| elevated    | lg     | none   | Prominent content |
| outline     | none   | 1px    | Subtle container  |
| interactive | sm→md  | 1px    | Clickable card    |

### Anatomy

```
┌─────────────────────────────────────┐
│ Card Header                         │
│   Title                             │
│   Description                       │
├─────────────────────────────────────┤
│ Card Content                        │
│   Main content area                 │
│                                     │
├─────────────────────────────────────┤
│ Card Footer                         │
│   Actions                           │
└─────────────────────────────────────┘
```

### Spacing

| Area    | Padding     |
| ------- | ----------- |
| header  | 24px 24px 0 |
| content | 24px        |
| footer  | 0 24px 24px |
| gap     | 16px        |

---

## Badge

### Variants

| Variant     | Background  | Text       |
| ----------- | ----------- | ---------- |
| default     | primary     | white      |
| secondary   | gray-100    | gray-900   |
| outline     | transparent | foreground |
| destructive | red-600     | white      |
| success     | green-600   | white      |
| warning     | yellow-500  | gray-900   |

### Sizes

| Size    | Padding  | Font Size | Height |
| ------- | -------- | --------- | ------ |
| sm      | 4px 8px  | 11px      | 20px   |
| default | 4px 10px | 12px      | 24px   |
| lg      | 6px 12px | 14px      | 28px   |

---

## Alert

### Variants

| Variant     | Icon    | Background | Border     |
| ----------- | ------- | ---------- | ---------- |
| default     | info    | gray-50    | gray-200   |
| destructive | alert   | red-50     | red-200    |
| success     | check   | green-50   | green-200  |
| warning     | warning | yellow-50  | yellow-200 |

### Anatomy

```
┌─────────────────────────────────────┐
│ [icon]  Title                    [×]│
│         Description text            │
└─────────────────────────────────────┘
```

---

## Dialog

### Sizes

| Size    | Max Width   | Use Case              |
| ------- | ----------- | --------------------- |
| sm      | 384px       | Simple confirmations  |
| default | 512px       | Standard dialogs      |
| lg      | 640px       | Complex forms         |
| xl      | 768px       | Data-heavy dialogs    |
| full    | 100% - 32px | Full-screen on mobile |

### Anatomy

```
┌───────────────────────────────────────┐
│ Dialog Header                      [×]│
│   Title                               │
│   Description                         │
├───────────────────────────────────────┤
│ Dialog Content                        │
│   Scrollable if needed                │
│                                       │
├───────────────────────────────────────┤
│ Dialog Footer                         │
│                     [Cancel] [Confirm]│
└───────────────────────────────────────┘
```

---

## Table

### Row States

| State    | Background    | Use Case     |
| -------- | ------------- | ------------ |
| default  | white         | Normal row   |
| hover    | gray-50       | Mouse over   |
| selected | primary/10%   | Selected row |
| striped  | gray-50/white | Alternating  |

### Cell Alignment

| Content Type | Alignment |
| ------------ | --------- |
| Text         | Left      |
| Numbers      | Right     |
| Status/Badge | Center    |
| Actions      | Right     |

### Spacing

| Element                  | Value     |
| ------------------------ | --------- |
| cell padding             | 12px 16px |
| header padding           | 12px 16px |
| row height (compact)     | 40px      |
| row height (default)     | 48px      |
| row height (comfortable) | 56px      |
