cabin_tailwind/utilities/
shadow.rs

1//! Add a shadow effects around an element's frame (`box-shadow`).
2//!
3//! <https://developer.mozilla.org/en-US/docs/Web/CSS/box-shadow>
4
5use std::fmt;
6
7use crate::Utility;
8
9pub struct BoxShadow(pub &'static str, pub &'static str);
10
11pub const SM: BoxShadow = BoxShadow(
12    "0 1px 2px 0 rgb(0 0 0 / .05)",
13    "0 1px 2px 0 var(--tw-shadow-color)",
14);
15
16pub const DEFAULT: BoxShadow = BoxShadow(
17    "0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1)",
18    "0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color)",
19);
20
21pub const MD: BoxShadow = BoxShadow(
22    "0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)",
23    "0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color)",
24);
25
26pub const LG: BoxShadow = BoxShadow(
27    "0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1)",
28    "0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color)",
29);
30
31pub const XL: BoxShadow = BoxShadow(
32    "0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1)",
33    "0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color)",
34);
35
36pub const XL2: BoxShadow = BoxShadow(
37    "0 25px 50px -12px rgb(0 0 0 / .25)",
38    "0 25px 50px -12px var(--tw-shadow-color)",
39);
40
41pub const INNER: BoxShadow = BoxShadow(
42    "inset 0 2px 4px 0 rgb(0 0 0 / .05)",
43    "inset 0 2px 4px 0 var(--tw-shadow-color)",
44);
45
46pub const NONE: BoxShadow = BoxShadow("0 0 #0000", "0 0 #0000");
47
48impl Utility for BoxShadow {
49    fn declarations(&self, f: &mut dyn fmt::Write) -> fmt::Result {
50        write!(f, "--tw-shadow: {};", self.0)?;
51        write!(f, "--tw-ring-shadow: {};", self.1)?;
52        write!(f, "box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);")?;
53        Ok(())
54    }
55}