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