Skip to main content

iced_cube/
lib.rs

1//! Themeable application components for [iced](https://iced.rs).
2//!
3//! Every component sits behind a Cargo feature named after it, such as
4//! `button` or `scroll-area`, and each group (`primitives`, `forms`,
5//! `layout`, `navigation`, `overlay`, `feedback`) enables its members. The
6//! default `full` feature enables all of them.
7//!
8//! ```no_run
9//! # #[cfg(feature = "button")]
10//! # fn main() {
11//! use iced_cube::{button, lucide};
12//! use iced_cube::primitives::button::Variant;
13//!
14//! #[derive(Debug, Clone)]
15//! enum Message { Save }
16//!
17//! let save: iced::Element<'_, Message> = button("Save")
18//!     .icon(lucide!(Save))
19//!     .variant(Variant::Primary)
20//!     .on_press(Message::Save)
21//!     .into();
22//! # }
23//! # #[cfg(not(feature = "button"))]
24//! # fn main() {}
25//! ```
26
27#![cfg_attr(docsrs, feature(doc_cfg))]
28
29pub mod feedback;
30pub mod forms;
31pub mod icon;
32#[cfg(feature = "slider")]
33mod inert;
34pub mod keys;
35pub mod layout;
36#[cfg(any(feature = "badge", feature = "button", feature = "tabs"))]
37mod natural;
38pub mod navigation;
39pub mod overlay;
40pub mod primitives;
41pub mod theme;
42
43pub use icon::{Glyph, Icon};
44pub use keys::{Chord, Keymap};
45
46#[cfg(feature = "alert")]
47pub use feedback::alert;
48#[cfg(feature = "badge")]
49pub use feedback::badge;
50#[cfg(feature = "progress")]
51pub use feedback::progress;
52#[cfg(feature = "spinner")]
53pub use feedback::spinner;
54
55#[cfg(feature = "combobox")]
56pub use forms::combobox;
57#[cfg(feature = "select")]
58pub use forms::select;
59#[cfg(feature = "textarea")]
60pub use forms::textarea;
61#[cfg(feature = "field")]
62pub use forms::{field, label};
63
64#[cfg(feature = "accordion")]
65pub use layout::accordion;
66#[cfg(feature = "card")]
67pub use layout::card;
68#[cfg(feature = "stack")]
69pub use layout::{hstack, vstack};
70
71#[cfg(feature = "command")]
72pub use navigation::command;
73#[cfg(feature = "tabs")]
74pub use navigation::{tab, tabs};
75
76#[cfg(feature = "context-menu")]
77pub use overlay::context_menu;
78#[cfg(feature = "dropdown-menu")]
79pub use overlay::dropdown_menu;
80#[cfg(feature = "popover")]
81pub use overlay::popover;
82#[cfg(feature = "tooltip")]
83pub use overlay::tooltip;
84#[cfg(feature = "dialog")]
85pub use overlay::{alert_dialog, dialog};
86#[cfg(feature = "toast")]
87pub use overlay::{toast, toasts};
88
89#[cfg(feature = "button")]
90pub use primitives::button;
91#[cfg(feature = "checkbox")]
92pub use primitives::checkbox;
93#[cfg(feature = "icon-button")]
94pub use primitives::icon_button;
95#[cfg(feature = "input")]
96pub use primitives::input;
97#[cfg(feature = "scroll-area")]
98pub use primitives::scroll_area;
99#[cfg(feature = "slider")]
100pub use primitives::slider;
101#[cfg(feature = "switch")]
102pub use primitives::switch;
103#[cfg(feature = "radio")]
104pub use primitives::{radio, radio_group};
105#[cfg(feature = "separator")]
106pub use primitives::{separator, vertical_separator};