cabin_tailwind/utilities/
transition.rs

1//! Control which CSS properties transition (`transition-property`).
2//!
3//! <https://developer.mozilla.org/en-US/docs/Web/CSS/transition-property>
4
5use std::fmt;
6
7use crate::{Property, Utility};
8
9pub struct Transition(pub &'static str);
10
11pub const NONE: Property = Property("transition-property", "none");
12
13pub const ALL: Transition = Transition("all");
14
15pub const DEFAULT: Transition = Transition("color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter");
16
17pub const COLORS: Transition =
18    Transition("color, background-color, border-color, text-decoration-color, fill, stroke");
19
20pub const OPACITY: Transition = Transition("opacity");
21
22pub const SHADOW: Transition = Transition("box-shadow");
23
24pub const TRANSFORM: Transition = Transition("transform");
25
26impl Utility for Transition {
27    fn declarations(&self, f: &mut dyn fmt::Write) -> fmt::Result {
28        write!(f, "transition-property: {};", self.0)?;
29        write!(
30            f,
31            "transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);"
32        )?;
33        write!(f, "transition-duration: 150ms;")?;
34        Ok(())
35    }
36}