iced-cube 0.0.3

Themeable application components for the iced GUI library, with Lucide icons
Documentation
# iced-cube

Components for [iced](https://iced.rs) applications: buttons, inputs, selection controls, overlays, toasts, tabs and more, all drawn from one set of theme tokens so they look right together in light and dark mode. Icons come from [Lucide](https://lucide.dev) and are resolved at compile time.

Docs with live examples: https://sam-ruff.github.io/iced-cube/

```sh
cargo add iced@0.14 iced-cube
```

```rust
use iced::Element;
use iced_cube::primitives::button::Variant;
use iced_cube::{button, lucide};

#[derive(Debug, Clone)]
enum Message {
    Save,
}

fn view() -> Element<'static, Message> {
    button("Save")
        .icon(lucide!(Save))
        .variant(Variant::Primary)
        .on_press(Message::Save)
        .into()
}
```

Components never own your state. Anything stateful, such as tabs, accordions or the toast queue, gives you a plain struct with a pure `update` that you store and pass back in. Components that take data from background work do it through a subscription that owns a channel, so nothing is shared behind a lock.

## Running the examples

```sh
cargo run -p gallery
```

The gallery is the same code that runs in the browser on the docs site.

## Status

Early days. The API will change before 1.0, and minor releases may include breaking changes until then.

## Licence

MIT or Apache-2.0, at your option. Lucide icons are ISC licensed; see `LICENSE-LUCIDE`.