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`, `application`, `data`)
6//! enables its members. The 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 application;
30pub mod data;
31pub mod feedback;
32pub mod forms;
33pub mod icon;
34#[cfg(feature = "slider")]
35mod inert;
36pub mod keys;
37pub mod layout;
38#[cfg(any(
39    feature = "avatar",
40    feature = "badge",
41    feature = "button",
42    feature = "tabs",
43    feature = "toggle"
44))]
45mod natural;
46pub mod navigation;
47pub mod overlay;
48pub mod primitives;
49pub mod theme;
50
51pub use icon::{Glyph, Icon};
52pub use keys::{Chord, Keymap};
53
54#[cfg(feature = "command-palette")]
55pub use application::command_palette;
56#[cfg(feature = "menubar")]
57pub use application::menubar;
58#[cfg(feature = "status-bar")]
59pub use application::status_bar;
60#[cfg(feature = "toolbar")]
61pub use application::toolbar;
62
63#[cfg(feature = "data-table")]
64pub use data::data_table;
65#[cfg(feature = "tree")]
66pub use data::tree;
67
68#[cfg(feature = "alert")]
69pub use feedback::alert;
70#[cfg(feature = "badge")]
71pub use feedback::badge;
72#[cfg(feature = "progress")]
73pub use feedback::progress;
74#[cfg(feature = "spinner")]
75pub use feedback::spinner;
76#[cfg(feature = "avatar")]
77pub use feedback::{avatar, avatar_group};
78
79#[cfg(feature = "combobox")]
80pub use forms::combobox;
81#[cfg(feature = "select")]
82pub use forms::select;
83#[cfg(feature = "textarea")]
84pub use forms::textarea;
85#[cfg(feature = "field")]
86pub use forms::{field, label};
87
88#[cfg(feature = "accordion")]
89pub use layout::accordion;
90#[cfg(feature = "card")]
91pub use layout::card;
92#[cfg(feature = "resizable-panel")]
93pub use layout::resizable_panel;
94#[cfg(feature = "split-pane")]
95pub use layout::split_pane;
96#[cfg(feature = "stack")]
97pub use layout::{hstack, vstack};
98
99#[cfg(feature = "command")]
100pub use navigation::command;
101#[cfg(feature = "pagination")]
102pub use navigation::pagination;
103#[cfg(feature = "sidebar")]
104pub use navigation::sidebar;
105#[cfg(feature = "breadcrumb")]
106pub use navigation::{breadcrumb, crumb};
107#[cfg(feature = "tabs")]
108pub use navigation::{tab, tabs};
109
110#[cfg(feature = "context-menu")]
111pub use overlay::context_menu;
112#[cfg(feature = "dropdown-menu")]
113pub use overlay::dropdown_menu;
114#[cfg(feature = "popover")]
115pub use overlay::popover;
116#[cfg(feature = "tooltip")]
117pub use overlay::tooltip;
118#[cfg(feature = "dialog")]
119pub use overlay::{alert_dialog, dialog};
120#[cfg(feature = "toast")]
121pub use overlay::{toast, toasts};
122
123#[cfg(feature = "button")]
124pub use primitives::button;
125#[cfg(feature = "checkbox")]
126pub use primitives::checkbox;
127#[cfg(feature = "icon-button")]
128pub use primitives::icon_button;
129#[cfg(feature = "input")]
130pub use primitives::input;
131#[cfg(feature = "scroll-area")]
132pub use primitives::scroll_area;
133#[cfg(feature = "slider")]
134pub use primitives::slider;
135#[cfg(feature = "switch")]
136pub use primitives::switch;
137#[cfg(feature = "toggle")]
138pub use primitives::toggle;
139#[cfg(feature = "toggle-group")]
140pub use primitives::toggle_group;
141#[cfg(feature = "radio")]
142pub use primitives::{radio, radio_group};
143#[cfg(feature = "separator")]
144pub use primitives::{separator, vertical_separator};