use iced::Pixels;
use snora_design::Tokens;
#[must_use]
pub fn body_size(tokens: &Tokens) -> Pixels {
tokens.typography.body.size.into()
}
#[must_use]
pub fn body_small_size(tokens: &Tokens) -> Pixels {
tokens.typography.body_small.size.into()
}
#[must_use]
pub fn label_size(tokens: &Tokens) -> Pixels {
tokens.typography.label.size.into()
}
#[must_use]
pub fn title_size(tokens: &Tokens) -> Pixels {
tokens.typography.title.size.into()
}
#[must_use]
pub fn heading_size(tokens: &Tokens) -> Pixels {
tokens.typography.heading.size.into()
}
#[must_use]
pub fn display_size(tokens: &Tokens) -> Pixels {
tokens.typography.display.size.into()
}
#[cfg(test)]
mod tests {
use super::*;
use snora_design::Tokens;
#[test]
fn sizes_are_positive_and_monotonic() {
let t = Tokens::light();
let sizes: [f32; 6] = [
body_small_size(&t).0,
label_size(&t).0,
body_size(&t).0,
title_size(&t).0,
heading_size(&t).0,
display_size(&t).0,
];
assert!(sizes.iter().all(|s| s.is_finite() && *s > 0.0));
assert!(sizes.windows(2).all(|w| w[0] <= w[1]));
}
}