README.md

# PyraUI – Phoenix LiveView UI Library

A modular, reusable UI library for Phoenix LiveView applications, enabling developers to rapidly build interactive, responsive, and consistent interfaces.

## Features

- ✅ **LiveView-first**: Components work natively in `.heex` templates
- ✅ **Composable & Modular**: Each component is independent and reusable
- ✅ **Minimal JavaScript**: Reactive behavior handled by Phoenix assigns
- ✅ **Theme-ready**: Light/dark mode support (coming soon)
- ✅ **Developer-friendly**: Semantic naming, minimal boilerplate

## Installation

Add to your `mix.exs`:

```elixir
def deps do
  [
    {:pyraui, path: "../pyraui"}  # or {:pyraui, git: "..."}
  ]
end
```

Then import in your `PyrauiWeb` module or use `use PyrauiWeb, :html` in your templates.

## Components

### Base Elements

- **Button**: Primary, secondary, ghost, danger, success variants with loading states
- **Input**: Text inputs with validation and helper text
- **Textarea**: Multi-line text inputs
- **Select**: Dropdown selects
- **Checkbox**: Checkbox inputs with labels
- **Radio**: Radio button inputs
- **Label**: Form labels

### Layout Components

- **Card**: Content containers with padding and shadows

### Feedback Components

- **Alert**: Info, success, warning, error notifications

## Usage Examples

### Button

```heex
<.button>Click me</.button>
<.button variant="primary" size="lg">Large Button</.button>
<.button disabled={true}>Disabled</.button>
<.button loading={true}>Loading...</.button>
```

### Input

```heex
<.input type="text" label="Name" field={@form[:name]} />
<.input type="email" label="Email" field={@form[:email]} error="Invalid email" />
```

### Alert

```heex
<.alert variant="success">Operation successful!</.alert>
<.alert variant="error">Something went wrong</.alert>
<.alert variant="info" dismissible={true}>Information message</.alert>
```

### Card

```heex
<.card>
  <h2>Card Title</h2>
  <p>Card content</p>
</.card>
```

## Development

This project also serves as a playground/demo application:

1. Clone the repository
2. Install dependencies: `mix deps.get`
3. Start the server: `mix phx.server`
4. Visit http://localhost:4000 to see the component playground

## Roadmap

- [ ] More layout components (Grid, Stack, Spacer)
- [ ] Modal/Dialog component
- [ ] Tooltip component
- [ ] Progress bars and spinners
- [ ] Navigation components (Tabs, Accordion, Dropdown)
- [ ] Data display components (Table, List, Badge, Avatar)
- [ ] Dark mode theme support
- [ ] JavaScript hooks for advanced interactions

## License

MIT