cosmic/widget/button/
mod.rs1pub use crate::theme::Button as ButtonClass;
7
8pub mod link;
9use derive_setters::Setters;
10#[doc(inline)]
11pub use link::Button as LinkButton;
12#[doc(inline)]
13pub use link::link;
14
15mod icon;
16#[doc(inline)]
17pub use icon::Button as IconButton;
18#[doc(inline)]
19pub use icon::icon;
20
21mod image;
22#[doc(inline)]
23pub use image::Button as ImageButton;
24#[doc(inline)]
25pub use image::image;
26
27mod style;
28#[doc(inline)]
29pub use style::{Catalog, Style};
30
31mod text;
32#[doc(inline)]
33pub use text::Button as TextButton;
34#[doc(inline)]
35pub use text::{destructive, standard, suggested, text};
36
37mod widget;
38#[doc(inline)]
39pub use widget::{Button, draw, focus, layout, mouse_interaction};
40
41use iced_core::font::Weight;
42use iced_core::widget::Id;
43use iced_core::{Length, Padding};
44use std::borrow::Cow;
45
46pub fn custom<'a, Message: Clone + 'a>(
48 content: impl Into<crate::Element<'a, Message>>,
49) -> Button<'a, Message> {
50 Button::new(content.into())
51}
52
53pub fn custom_image_button<'a, Message: Clone + 'a>(
55 content: impl Into<crate::Element<'a, Message>>,
56 on_remove: Option<Message>,
57) -> Button<'a, Message> {
58 Button::new_image(content.into(), on_remove)
59}
60
61#[must_use]
63#[derive(Setters)]
64pub struct Builder<'a, Message, Variant> {
65 id: Id,
67
68 #[setters(into)]
70 label: Cow<'a, str>,
71
72 #[setters(into)]
74 tooltip: Cow<'a, str>,
75
76 #[setters(strip_option)]
80 on_press: Option<Message>,
81
82 #[setters(into)]
84 width: Length,
85
86 #[setters(into)]
88 height: Length,
89
90 #[setters(into)]
92 padding: Padding,
93
94 spacing: u16,
96
97 icon_size: u16,
99
100 line_height: u16,
102
103 font_size: u16,
105
106 font_weight: Weight,
108
109 class: ButtonClass,
111
112 #[setters(skip)]
113 variant: Variant,
114}
115
116impl<Message, Variant> Builder<'_, Message, Variant> {
117 pub fn on_press_maybe(mut self, on_press: Option<Message>) -> Self {
119 self.on_press = on_press;
120 self
121 }
122}