1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
//! Utilidades de filtros de Tailwind: `blur_md`, `backdrop_blur_lg`. Los radios son los de Tailwind (px de desviación):
//! sm 4, por defecto 8, md 12, lg 16, xl 24, 2xl 40, 3xl 64. Se expande dentro de `Styled`.
//!
//! `backdrop_blur_*` difumina lo que hay detrás del elemento (cristal esmerilado). `blur_*` difumina el elemento y
//! lo que lleve dentro, pero se aplica sobre toda su caja, así que también suaviza el fondo que tenga debajo.
/// `blur-*` y `backdrop-blur-*`: un método por tamaño y el de la variante sin sufijo.
macro_rules! blurs {
($method:ident, $field:ident; ($default:expr), $(($suffix:ident, $sigma:expr)),*) => {
paste::paste! {
fn $method(mut self) -> Self {
self.style().extra_mut().filter.$field = Some($default);
self
}
$(
fn [<$method $suffix>](mut self) -> Self {
self.style().extra_mut().filter.$field = Some($sigma);
self
}
)*
}
};
}
macro_rules! filter_utilities {
() => {
blurs! { blur, blur; (8.0), (_none, 0.0), (_sm, 4.0), (_md, 12.0), (_lg, 16.0), (_xl, 24.0), (_2xl, 40.0), (_3xl, 64.0) }
blurs! {
backdrop_blur, backdrop_blur; (8.0), (_none, 0.0), (_sm, 4.0), (_md, 12.0), (_lg, 16.0), (_xl, 24.0),
(_2xl, 40.0), (_3xl, 64.0)
}
/// `blur-[3px]`: desviación en px lógicos.
fn blur_px(mut self, sigma: f32) -> Self {
self.style().extra_mut().filter.blur = Some(sigma);
self
}
/// `backdrop-blur-[3px]`.
fn backdrop_blur_px(mut self, sigma: f32) -> Self {
self.style().extra_mut().filter.backdrop_blur = Some(sigma);
self
}
};
}
pub(crate) use {blurs, filter_utilities};