1pub mod dialog;
2pub mod drop_down_menu;
3pub mod navbar;
4pub mod text_input;
5pub mod vertical_menu;
6
7use iced::Element;
8use iced_widget::container;
9
10use crate::{
11 theme::{ColorScheme, Palette},
12 widget::{
13 dialog::Dialog,
14 drop_down_menu::{DropDownMenu, Placement},
15 navbar::Navbar,
16 text_input::TextInput,
17 },
18};
19
20#[must_use]
21pub fn dialog<'a, Message, Theme, Renderer>(
22 is_open: bool,
23 base: impl Into<Element<'a, Message, Theme, Renderer>>,
24 content: impl Into<Element<'a, Message, Theme, Renderer>>,
25 palette: &'a Palette,
26) -> Dialog<'a, Message, Theme, Renderer>
27where
28 Renderer: 'a + iced_widget::core::Renderer + iced_widget::core::text::Renderer,
29 Theme: 'a + dialog::Catalog,
30 Message: 'a + Clone,
31 <Theme as container::Catalog>::Class<'a>: From<container::StyleFn<'a, Theme>>,
32{
33 Dialog::new(is_open, base, content, palette)
34}
35
36#[must_use]
37pub fn drop_down_menu<'a, Message, Theme, Renderer>(
38 trigger: impl Fn(bool) -> Element<'a, Message, Theme, Renderer> + 'a,
39 menu: Option<impl Into<Element<'a, Message, Theme, Renderer>>>,
40 placement: Placement,
41) -> DropDownMenu<'a, Message, Theme, Renderer> {
42 DropDownMenu::<'a, Message, Theme, Renderer>::new(trigger, menu, placement)
43}
44
45#[must_use]
46pub fn menu<'a, Message>(
47 sections: Vec<vertical_menu::Group<'a, Message>>,
48 theme: &'a dyn ColorScheme,
49) -> vertical_menu::Menu<'a, Message> {
50 vertical_menu::Menu::new(sections, theme)
51}
52
53#[must_use]
54pub fn text_input<'a, Message: Clone, Renderer>(
55 placeholder: &str,
56 value: &'a str,
57 theme: &'a impl ColorScheme,
58) -> TextInput<'a, Message> {
59 TextInput::new(placeholder, value, theme)
60}
61
62#[must_use]
63pub fn navbar<'a, Message, Theme, Renderer>(
64 items: Vec<navbar::Item<'a, Message>>,
65 theme: &'a impl ColorScheme,
66) -> Navbar<'a, Message> {
67 Navbar::new(items, theme)
68}