97 lines
3.2 KiB
Rust
97 lines
3.2 KiB
Rust
use crate::Renderer;
|
|
pub use iced::widget::Text;
|
|
use iced_core::text::LineHeight;
|
|
use std::borrow::Cow;
|
|
|
|
/// Creates a new [`Text`] widget with the provided content.
|
|
///
|
|
/// [`Text`]: widget::Text
|
|
pub fn text<'a>(text: impl Into<Cow<'a, str>> + 'a) -> Text<'a, crate::Theme, Renderer> {
|
|
Text::new(text.into()).font(crate::font::default())
|
|
}
|
|
|
|
/// Available presets for text typography
|
|
#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
|
|
pub enum Typography {
|
|
Body,
|
|
Caption,
|
|
CaptionHeading,
|
|
Heading,
|
|
Monotext,
|
|
Title1,
|
|
Title2,
|
|
Title3,
|
|
Title4,
|
|
}
|
|
|
|
/// [`Text`] widget with the Title 1 typography preset.
|
|
pub fn title1<'a>(text: impl Into<Cow<'a, str>> + 'a) -> Text<'a, crate::Theme, Renderer> {
|
|
Text::new(text.into())
|
|
.size(35.0)
|
|
.line_height(LineHeight::Absolute(52.0.into()))
|
|
.font(crate::font::semibold())
|
|
}
|
|
|
|
/// [`Text`] widget with the Title 2 typography preset.
|
|
pub fn title2<'a>(text: impl Into<Cow<'a, str>> + 'a) -> Text<'a, crate::Theme, Renderer> {
|
|
Text::new(text.into())
|
|
.size(29.0)
|
|
.line_height(LineHeight::Absolute(43.0.into()))
|
|
.font(crate::font::semibold())
|
|
}
|
|
|
|
/// [`Text`] widget with the Title 3 typography preset.
|
|
pub fn title3<'a>(text: impl Into<Cow<'a, str>> + 'a) -> Text<'a, crate::Theme, Renderer> {
|
|
Text::new(text.into())
|
|
.size(24.0)
|
|
.line_height(LineHeight::Absolute(36.0.into()))
|
|
.font(crate::font::bold())
|
|
}
|
|
|
|
/// [`Text`] widget with the Title 4 typography preset.
|
|
pub fn title4<'a>(text: impl Into<Cow<'a, str>> + 'a) -> Text<'a, crate::Theme, Renderer> {
|
|
Text::new(text.into())
|
|
.size(20.0)
|
|
.line_height(LineHeight::Absolute(30.0.into()))
|
|
.font(crate::font::bold())
|
|
}
|
|
|
|
/// [`Text`] widget with the Heading typography preset.
|
|
pub fn heading<'a>(text: impl Into<Cow<'a, str>> + 'a) -> Text<'a, crate::Theme, Renderer> {
|
|
Text::new(text.into())
|
|
.size(14.0)
|
|
.line_height(LineHeight::Absolute(iced::Pixels(21.0)))
|
|
.font(crate::font::bold())
|
|
}
|
|
|
|
/// [`Text`] widget with the Caption Heading typography preset.
|
|
pub fn caption_heading<'a>(text: impl Into<Cow<'a, str>> + 'a) -> Text<'a, crate::Theme, Renderer> {
|
|
Text::new(text.into())
|
|
.size(12.0)
|
|
.line_height(LineHeight::Absolute(iced::Pixels(17.0)))
|
|
.font(crate::font::semibold())
|
|
}
|
|
|
|
/// [`Text`] widget with the Body typography preset.
|
|
pub fn body<'a>(text: impl Into<Cow<'a, str>> + 'a) -> Text<'a, crate::Theme, Renderer> {
|
|
Text::new(text.into())
|
|
.size(14.0)
|
|
.line_height(LineHeight::Absolute(21.0.into()))
|
|
.font(crate::font::default())
|
|
}
|
|
|
|
/// [`Text`] widget with the Caption typography preset.
|
|
pub fn caption<'a>(text: impl Into<Cow<'a, str>> + 'a) -> Text<'a, crate::Theme, Renderer> {
|
|
Text::new(text.into())
|
|
.size(12.0)
|
|
.line_height(LineHeight::Absolute(17.0.into()))
|
|
.font(crate::font::default())
|
|
}
|
|
|
|
/// [`Text`] widget with the Monotext typography preset.
|
|
pub fn monotext<'a>(text: impl Into<Cow<'a, str>> + 'a) -> Text<'a, crate::Theme, Renderer> {
|
|
Text::new(text.into())
|
|
.size(14.0)
|
|
.line_height(LineHeight::Absolute(20.0.into()))
|
|
.font(crate::font::mono())
|
|
}
|