cosmic/widget/
text.rs
use crate::Renderer;
pub use iced::widget::Text;
use iced_core::text::LineHeight;
use std::borrow::Cow;
pub fn text<'a>(text: impl Into<Cow<'a, str>> + 'a) -> Text<'a, crate::Theme, Renderer> {
Text::new(text.into()).font(crate::font::default())
}
#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
pub enum Typography {
Body,
Caption,
CaptionHeading,
Heading,
Monotext,
Title1,
Title2,
Title3,
Title4,
}
pub fn title1<'a>(text: impl Into<Cow<'a, str>> + 'a) -> Text<'a, crate::Theme, Renderer> {
#[inline(never)]
fn inner(text: Cow<str>) -> Text<crate::Theme, Renderer> {
Text::new(text)
.size(35.0)
.line_height(LineHeight::Absolute(52.0.into()))
.font(crate::font::semibold())
}
inner(text.into())
}
pub fn title2<'a>(text: impl Into<Cow<'a, str>> + 'a) -> Text<'a, crate::Theme, Renderer> {
#[inline(never)]
fn inner(text: Cow<str>) -> Text<crate::Theme, Renderer> {
Text::new(text)
.size(29.0)
.line_height(LineHeight::Absolute(43.0.into()))
.font(crate::font::semibold())
}
inner(text.into())
}
pub fn title3<'a>(text: impl Into<Cow<'a, str>> + 'a) -> Text<'a, crate::Theme, Renderer> {
#[inline(never)]
fn inner(text: Cow<str>) -> Text<crate::Theme, Renderer> {
Text::new(text)
.size(24.0)
.line_height(LineHeight::Absolute(36.0.into()))
.font(crate::font::bold())
}
inner(text.into())
}
pub fn title4<'a>(text: impl Into<Cow<'a, str>> + 'a) -> Text<'a, crate::Theme, Renderer> {
#[inline(never)]
fn inner(text: Cow<str>) -> Text<crate::Theme, Renderer> {
Text::new(text)
.size(20.0)
.line_height(LineHeight::Absolute(30.0.into()))
.font(crate::font::bold())
}
inner(text.into())
}
pub fn heading<'a>(text: impl Into<Cow<'a, str>> + 'a) -> Text<'a, crate::Theme, Renderer> {
#[inline(never)]
fn inner(text: Cow<str>) -> Text<crate::Theme, Renderer> {
Text::new(text)
.size(14.0)
.line_height(LineHeight::Absolute(iced::Pixels(21.0)))
.font(crate::font::bold())
}
inner(text.into())
}
pub fn caption_heading<'a>(text: impl Into<Cow<'a, str>> + 'a) -> Text<'a, crate::Theme, Renderer> {
#[inline(never)]
fn inner(text: Cow<str>) -> Text<crate::Theme, Renderer> {
Text::new(text)
.size(12.0)
.line_height(LineHeight::Absolute(iced::Pixels(17.0)))
.font(crate::font::semibold())
}
inner(text.into())
}
pub fn body<'a>(text: impl Into<Cow<'a, str>> + 'a) -> Text<'a, crate::Theme, Renderer> {
#[inline(never)]
fn inner(text: Cow<str>) -> Text<crate::Theme, Renderer> {
Text::new(text)
.size(14.0)
.line_height(LineHeight::Absolute(21.0.into()))
.font(crate::font::default())
}
inner(text.into())
}
pub fn caption<'a>(text: impl Into<Cow<'a, str>> + 'a) -> Text<'a, crate::Theme, Renderer> {
#[inline(never)]
fn inner(text: Cow<str>) -> Text<crate::Theme, Renderer> {
Text::new(text)
.size(12.0)
.line_height(LineHeight::Absolute(17.0.into()))
.font(crate::font::default())
}
inner(text.into())
}
pub fn monotext<'a>(text: impl Into<Cow<'a, str>> + 'a) -> Text<'a, crate::Theme, Renderer> {
#[inline(never)]
fn inner(text: Cow<str>) -> Text<crate::Theme, Renderer> {
Text::new(text)
.size(14.0)
.line_height(LineHeight::Absolute(20.0.into()))
.font(crate::font::mono())
}
inner(text.into())
}