tailwind_css/modules/typography/font/
mod.rs

1use super::*;
2
3pub(crate) mod font_family;
4pub(crate) mod font_size;
5pub(crate) mod font_smoothing;
6pub(crate) mod font_style;
7pub(crate) mod font_variant_numeric;
8pub(crate) mod font_weight;
9
10pub fn font_adaptor(pattern: &[&str], arbitrary: &TailwindArbitrary) -> Result<Box<dyn TailwindInstance>> {
11    let out = match pattern {
12        // https://tailwindcss.com/docs/font-size
13        [s @ ("xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl" | "8xl" | "9xl")] =>
14            TailwindFontSize::new(s).boxed(),
15        // https://tailwindcss.com/docs/float
16        ["thin"] => TailwindFontWeight::THIN.boxed(),
17        ["extralight"] => TailwindFontWeight::EXTRA_LIGHT.boxed(),
18        ["light"] => TailwindFontWeight::LIGHT.boxed(),
19        ["normal"] => TailwindFontWeight::NORMAL.boxed(),
20        ["medium"] => TailwindFontWeight::MEDIUM.boxed(),
21        ["semibold"] => TailwindFontWeight::SEMI_BOLD.boxed(),
22        ["bold"] => TailwindFontWeight::BOLD.boxed(),
23        ["extrabold"] => TailwindFontWeight::EXTRA_BOLD.boxed(),
24        ["black"] => TailwindFontWeight::BLACK.boxed(),
25        ["size"] => maybe_size(arbitrary)?,
26        ["size", n] => {
27            let a = TailwindArbitrary::from(*n);
28            maybe_size(&a)?
29        },
30        [n] => {
31            let a = TailwindArbitrary::from(*n);
32            maybe_weight(&a).or_else(|_| maybe_size(&a))?
33        },
34        _ => TailwindFontFamily::from(pattern.join("-")).boxed(),
35    };
36    Ok(out)
37}
38
39fn maybe_weight(arbitrary: &TailwindArbitrary) -> Result<Box<dyn TailwindInstance>> {
40    let w = arbitrary.as_integer()?;
41    Ok(TailwindFontWeight::new(w).boxed())
42}
43
44fn maybe_size(arbitrary: &TailwindArbitrary) -> Result<Box<dyn TailwindInstance>> {
45    let w = arbitrary.as_integer()?;
46    Ok(TailwindFontWeight::new(w).boxed())
47}