tailwind_css/modules/typography/font/
mod.rs1use 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 [s @ ("xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl" | "8xl" | "9xl")] =>
14 TailwindFontSize::new(s).boxed(),
15 ["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}