Skip to main content

iced_m3/widget/
mod.rs

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}