1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
//! Widgets, themes, and optional components for [egui](https://github.com/emilk/egui).
//!
//! This crate is **not** a drop-in replacement for stock egui widgets. It
//! ships a themed widget set, a palette of built-in looks, a live theme
//! editor, and a few higher-level components (credentials form, QR image,
//! Linux QR scanner).
//!
//! There are no crate-root re-exports. Import from the modules:
//!
//! ```
//! use egui_elements::theme::{Theme, ThemeKind};
//! use egui_elements::widgets::{Button, ComboBox, Label, Modal, SecureTextEdit, Window};
//! use egui_elements::utils::theme_switcher;
//! ```
//!
//! # Quick start
//!
//! ```no_run
//! use egui::{Context, Ui};
//! use egui_elements::theme::{Theme, ThemeKind};
//! use egui_elements::widgets::Button;
//!
//! fn ui(ctx: &Context, ui: &mut Ui) {
//! let mut theme = Theme::new(ThemeKind::TokyoNight);
//! theme.install(ctx);
//!
//! if ui.add(Button::new("Save")).clicked() {
//! // …
//! }
//! }
//! ```
//!
//! Custom widgets pick up [`visuals`] from the installed
//! [`Theme`](crate::theme::Theme). You can still override a single widget
//! with `.visuals(...)`.
//!
//! # Modules
//!
//! - [`theme`] / [`themes`] — palettes, [`ThemeKind`](crate::theme::ThemeKind), install
//! - [`widgets`] — [`Button`](crate::widgets::Button), [`Label`](crate::widgets::Label),
//! [`ComboBox`](crate::widgets::ComboBox), [`Modal`](crate::widgets::Modal),
//! [`SecureTextEdit`](crate::widgets::SecureTextEdit), [`MultiLabel`](crate::widgets::MultiLabel),
//! [`Window`](crate::widgets::Window)
//! - [`components`] — feature-gated composites (`secure-types`, `qr-image`, `qr-scanner`)
//! - [`editor`] — live [`ThemeEditor`](crate::editor::ThemeEditor)
//! - [`utils`] — [`theme_switcher`](crate::utils::theme_switcher), HSLA helpers
//! - [`overlay`] — dimming overlay for stacked windows
//! - [`visuals`] — per-widget chrome (`ButtonVisuals`, `TextEditVisuals`, …)
//!
//! # Features
//!
//! | Feature | What it enables |
//! |---------|-----------------|
//! | `serde` | `Serialize` / `Deserialize` on theme types; `egui/serde` |
//! | `lucide` | [`egui-lucide`](https://docs.rs/egui-lucide) SVG icons. Also enabled by `secure-types` and `qr-scanner`. |
//! | `secure-types` | [`SecureString`](https://docs.rs/secure-types) buffers, credentials form, virtual keyboard |
//! | `qr-image` | Encode a string as a QR [`Image`](egui::Image) |
//! | `qr-scanner` | Linux screen-capture QR scanner (`xcap` + `rqrr-zeroize`) |
//! | `elegance` | Push the current palette into [`egui-elegance`](https://docs.rs/egui-elegance) |
//! | `full` | All of the above |
//!
//! Run the showcase with:
//!
//! ```text
//! cargo run --example demo --features full
//! ```
//!
//! See the crate README for system packages required by `qr-scanner`.
//!
//! [`ComboBox`](crate::widgets::ComboBox) and [`Window`](crate::widgets::Window) have
//! the same names as [`egui::ComboBox`] and [`egui::Window`]. Import this crate's
//! widgets after `use egui::*`, or alias one of them.
pub use OverlayManager;
pub use ;
pub use ;
pub use SecureTextEdit;
pub use egui_lucide;
pub use QRScanner;
pub use ;
pub use QrImage;