Skip to main content

encre_css/plugins/border/ring_width/
mod.rs

1#![doc = include_str!("README.md")]
2#![doc(alias = "border")]
3use crate::prelude::build_plugin::*;
4
5const BOX_SHADOW: &str = "box-shadow: var(--en-inset-shadow, 0 0 #0000), var(--en-inset-ring-shadow, 0 0 #0000), var(--en-ring-offset-shadow, 0 0 #0000), var(--en-ring-shadow), var(--en-shadow, 0 0 #0000);";
6const INSET_BOX_SHADOW: &str = "box-shadow: var(--en-inset-shadow, 0 0 #0000), var(--en-inset-ring-shadow), var(--en-ring-offset-shadow, 0 0 #0000), var(--en-ring-shadow, 0 0 #0000), var(--en-shadow, 0 0 #0000);";
7
8pub(crate) const PLUGIN: StaticPlugin = Plugin::Number(Number {
9    namespace: "ring",
10    prop: SingleProp("--en-ring-shadow"),
11    has_empty: Some(true),
12    extra_rule_css: Some(&[BOX_SHADOW]),
13    template: Some(SingleProp(
14        "0 0 0 calc({}px + var(--en-ring-offset-width)) var(--en-ring-color)",
15    )),
16    ..Number::default()
17});
18
19pub(crate) const PLUGIN_ARBITRARY: StaticPlugin = Plugin::Arbitrary(Arbitrary {
20    namespace: "ring",
21    prop: SingleProp("--en-ring-shadow"),
22    extra_rule_css: Some(&[BOX_SHADOW]),
23    disambiguate: Some(ArbitraryDisambiguate {
24        matched: &[CssType::Length],
25        separation: ArbitraryDisambiguateSeparation::None,
26    }),
27    template: Some(SingleProp(
28        "var(--en-ring-inset) 0 0 0 calc({} + var(--en-ring-offset-width)) var(--en-ring-color)",
29    )),
30    ..Arbitrary::default()
31});
32
33pub(crate) const PLUGIN_INSET_1: StaticPlugin = Plugin::Number(Number {
34    namespace: "inset-ring",
35    prop: SingleProp("--en-inset-ring-shadow"),
36    has_empty: Some(true),
37    extra_rule_css: Some(&[INSET_BOX_SHADOW]),
38    template: Some(SingleProp(
39        "inset 0 0 0 calc({}px + var(--en-ring-offset-width)) var(--en-ring-color)",
40    )),
41    ..Number::default()
42});
43
44pub(crate) const PLUGIN_INSET_2: StaticPlugin = Plugin::Arbitrary(Arbitrary {
45    namespace: "inset-ring",
46    prop: SingleProp("--en-inset-ring-shadow"),
47    extra_rule_css: Some(&[INSET_BOX_SHADOW]),
48    disambiguate: Some(ArbitraryDisambiguate {
49        matched: &[CssType::Length],
50        separation: ArbitraryDisambiguateSeparation::None,
51    }),
52    template: Some(SingleProp(
53        "inset 0 0 0 calc({value} + var(--en-ring-offset-width)) var(--en-ring-color)",
54    )),
55    ..Arbitrary::default()
56});