iced-cube 0.0.5

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

iced-cube

Components for iced 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 and are resolved at compile time.

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

cargo add iced@0.14 iced-cube
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

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.