css_ast/values/text_decor/
mod.rs

1#![allow(warnings)]
2//! https://drafts.csswg.org/css-text-decor-4/
3
4mod impls;
5use super::prelude::*;
6use impls::*;
7// /// Represents the style value for `text-decoration` as defined in [css-text-decor-4](https://drafts.csswg.org/css-text-decor-4/#text-decoration).
8// ///
9// /// The text-decoration CSS property sets the style and color of decorative lines including underline, overline, line-through, or a combination of lines.
10// ///
11// /// The grammar is defined as:
12// ///
13// /// ```text,ignore
14// /// <'text-decoration-line'> || <'text-decoration-thickness'> || <'text-decoration-style'> || <'text-decoration-color'>
15// /// ```
16// ///
17// /// https://drafts.csswg.org/css-text-decor-4/#text-decoration
18// #[syntax(
19//     " <'text-decoration-line'> || <'text-decoration-thickness'> || <'text-decoration-style'> || <'text-decoration-color'> "
20// )]
21// #[derive(
22//     Parse,
23//     Peek,
24//     ToSpan,
25//     ToCursors,
26//     DeclarationMetadata,
27//     SemanticEq,
28//     Debug,
29//     Clone,
30//     PartialEq,
31//     Eq,
32//     PartialOrd,
33//     Ord,
34//     Hash,
35// )]
36// #[declaration_metadata(
37//     initial = "see individual properties",
38//     inherits = Unknown,
39//     applies_to = Unknown,
40//     percentages = Unknown,
41//     animation_type = Unknown,
42//     property_group = TextDecor,
43//     computed_value_type = Unknown,
44//     canonical_order = "per grammar",
45// )]
46// #[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
47// #[cfg_attr(
48//     feature = "css_feature_data",
49//     derive(ToCSSFeature),
50//     css_feature("css.properties.text-decoration")
51// )]
52// #[cfg_attr(feature = "visitable", derive(Visitable), visit)]
53// pub struct TextDecorationStyleValue;
54
55/// Represents the style value for `text-decoration-color` as defined in [css-text-decor-4](https://drafts.csswg.org/css-text-decor-4/#text-decoration-color).
56///
57/// The text-decoration CSS property sets the style and color of decorative lines including underline, overline, line-through, or a combination of lines.
58///
59/// The grammar is defined as:
60///
61/// ```text,ignore
62/// <color>
63/// ```
64///
65/// https://drafts.csswg.org/css-text-decor-4/#text-decoration-color
66#[syntax(" <color> ")]
67#[derive(
68	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
69)]
70#[declaration_metadata(
71    initial = "currentcolor",
72    applies_to = Elements,
73    animation_type = ByComputedValue,
74    property_group = TextDecor,
75    computed_value_type = Unknown,
76    canonical_order = "per grammar",
77)]
78#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
79#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.text-decoration-color"))]
80#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
81pub struct TextDecorationColorStyleValue;
82
83// /// Represents the style value for `text-decoration-line` as defined in [css-text-decor-4](https://drafts.csswg.org/css-text-decor-4/#text-decoration-line).
84// ///
85// /// The text-decoration CSS property sets the style and color of decorative lines including underline, overline, line-through, or a combination of lines.
86// ///
87// /// The grammar is defined as:
88// ///
89// /// ```text,ignore
90// /// none | [ underline || overline || line-through || blink ] | spelling-error | grammar-error
91// /// ```
92// ///
93// /// https://drafts.csswg.org/css-text-decor-4/#text-decoration-line
94// #[syntax(
95//     " none | [ underline || overline || line-through || blink ] | spelling-error | grammar-error "
96// )]
97// #[derive(
98//     Parse,
99//     Peek,
100//     ToSpan,
101//     ToCursors,
102//     DeclarationMetadata,
103//     SemanticEq,
104//     Debug,
105//     Clone,
106//     PartialEq,
107//     Eq,
108//     PartialOrd,
109//     Ord,
110//     Hash,
111// )]
112// #[declaration_metadata(
113//     initial = "none",
114//     applies_to = Elements,
115//     animation_type = Discrete,
116//     property_group = TextDecor,
117//     computed_value_type = Unknown,
118//     canonical_order = "per grammar",
119// )]
120// #[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
121// #[cfg_attr(
122//     feature = "css_feature_data",
123//     derive(ToCSSFeature),
124//     css_feature("css.properties.text-decoration-line")
125// )]
126// #[cfg_attr(feature = "visitable", derive(Visitable), visit)]
127// pub enum TextDecorationLineStyleValue {}
128
129/// Represents the style value for `text-decoration-skip` as defined in [css-text-decor-4](https://drafts.csswg.org/css-text-decor-4/#text-decoration-skip).
130///
131/// The text-decoration CSS property sets the style and color of decorative lines including underline, overline, line-through, or a combination of lines.
132///
133/// The grammar is defined as:
134///
135/// ```text,ignore
136/// none | auto
137/// ```
138///
139/// https://drafts.csswg.org/css-text-decor-4/#text-decoration-skip
140#[syntax(" none | auto ")]
141#[derive(
142	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
143)]
144#[declaration_metadata(
145    initial = "See individual properties",
146    inherits,
147    applies_to = Elements,
148    animation_type = Discrete,
149    property_group = TextDecor,
150    computed_value_type = Unknown,
151    canonical_order = "per grammar",
152)]
153#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
154#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.text-decoration-skip"))]
155#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
156pub enum TextDecorationSkipStyleValue {}
157
158/// Represents the style value for `text-decoration-skip-box` as defined in [css-text-decor-4](https://drafts.csswg.org/css-text-decor-4/#text-decoration-skip-box).
159///
160/// The grammar is defined as:
161///
162/// ```text,ignore
163/// none | all
164/// ```
165///
166/// https://drafts.csswg.org/css-text-decor-4/#text-decoration-skip-box
167#[syntax(" none | all ")]
168#[derive(
169	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
170)]
171#[declaration_metadata(
172    initial = "none",
173    inherits,
174    applies_to = Elements,
175    animation_type = Discrete,
176    property_group = TextDecor,
177    computed_value_type = Unknown,
178    canonical_order = "per grammar",
179)]
180#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
181#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.text-decoration-skip-box"))]
182#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
183pub enum TextDecorationSkipBoxStyleValue {}
184
185/// Represents the style value for `text-decoration-skip-ink` as defined in [css-text-decor-4](https://drafts.csswg.org/css-text-decor-4/#text-decoration-skip-ink).
186///
187/// The text-decoration CSS property sets the style and color of decorative lines including underline, overline, line-through, or a combination of lines.
188///
189/// The grammar is defined as:
190///
191/// ```text,ignore
192/// auto | none | all
193/// ```
194///
195/// https://drafts.csswg.org/css-text-decor-4/#text-decoration-skip-ink
196#[syntax(" auto | none | all ")]
197#[derive(
198	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
199)]
200#[declaration_metadata(
201    initial = "auto",
202    inherits,
203    applies_to = Elements,
204    animation_type = Discrete,
205    property_group = TextDecor,
206    computed_value_type = Unknown,
207    canonical_order = "per grammar",
208)]
209#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
210#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.text-decoration-skip-ink"))]
211#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
212pub enum TextDecorationSkipInkStyleValue {}
213
214// /// Represents the style value for `text-decoration-skip-self` as defined in [css-text-decor-4](https://drafts.csswg.org/css-text-decor-4/#text-decoration-skip-self).
215// ///
216// /// The grammar is defined as:
217// ///
218// /// ```text,ignore
219// /// auto | skip-all | [ skip-underline || skip-overline || skip-line-through ] | no-skip
220// /// ```
221// ///
222// /// https://drafts.csswg.org/css-text-decor-4/#text-decoration-skip-self
223// #[syntax(
224//     " auto | skip-all | [ skip-underline || skip-overline || skip-line-through ] | no-skip "
225// )]
226// #[derive(
227//     Parse,
228//     Peek,
229//     ToSpan,
230//     ToCursors,
231//     DeclarationMetadata,
232//     SemanticEq,
233//     Debug,
234//     Clone,
235//     PartialEq,
236//     Eq,
237//     PartialOrd,
238//     Ord,
239//     Hash,
240// )]
241// #[declaration_metadata(
242//     initial = "auto",
243//     applies_to = Elements,
244//     animation_type = Discrete,
245//     property_group = TextDecor,
246//     computed_value_type = Unknown,
247//     canonical_order = "per grammar",
248// )]
249// #[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
250// #[cfg_attr(
251//     feature = "css_feature_data",
252//     derive(ToCSSFeature),
253//     css_feature("css.properties.text-decoration-skip-self")
254// )]
255// #[cfg_attr(feature = "visitable", derive(Visitable), visit)]
256// pub enum TextDecorationSkipSelfStyleValue {}
257
258// /// Represents the style value for `text-decoration-skip-spaces` as defined in [css-text-decor-4](https://drafts.csswg.org/css-text-decor-4/#text-decoration-skip-spaces).
259// ///
260// /// The grammar is defined as:
261// ///
262// /// ```text,ignore
263// /// none | all | [ start || end ]
264// /// ```
265// ///
266// /// https://drafts.csswg.org/css-text-decor-4/#text-decoration-skip-spaces
267// #[syntax(" none | all | [ start || end ] ")]
268// #[derive(
269//     Parse,
270//     Peek,
271//     ToSpan,
272//     ToCursors,
273//     DeclarationMetadata,
274//     SemanticEq,
275//     Debug,
276//     Clone,
277//     PartialEq,
278//     Eq,
279//     PartialOrd,
280//     Ord,
281//     Hash,
282// )]
283// #[declaration_metadata(
284//     initial = "start end",
285//     inherits,
286//     applies_to = Elements,
287//     animation_type = Discrete,
288//     property_group = TextDecor,
289//     computed_value_type = Unknown,
290//     canonical_order = "per grammar",
291// )]
292// #[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
293// #[cfg_attr(
294//     feature = "css_feature_data",
295//     derive(ToCSSFeature),
296//     css_feature("css.properties.text-decoration-skip-spaces")
297// )]
298// #[cfg_attr(feature = "visitable", derive(Visitable), visit)]
299// pub enum TextDecorationSkipSpacesStyleValue {}
300
301/// Represents the style value for `text-decoration-style` as defined in [css-text-decor-4](https://drafts.csswg.org/css-text-decor-4/#text-decoration-style).
302///
303/// The text-decoration CSS property sets the style and color of decorative lines including underline, overline, line-through, or a combination of lines.
304///
305/// The grammar is defined as:
306///
307/// ```text,ignore
308/// solid | double | dotted | dashed | wavy
309/// ```
310///
311/// https://drafts.csswg.org/css-text-decor-4/#text-decoration-style
312#[syntax(" solid | double | dotted | dashed | wavy ")]
313#[derive(
314	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
315)]
316#[declaration_metadata(
317    initial = "solid",
318    applies_to = Elements,
319    animation_type = Discrete,
320    property_group = TextDecor,
321    computed_value_type = Unknown,
322    canonical_order = "per grammar",
323)]
324#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
325#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.text-decoration-style"))]
326#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
327pub enum TextDecorationStyleStyleValue {}
328
329/// Represents the style value for `text-decoration-thickness` as defined in [css-text-decor-4](https://drafts.csswg.org/css-text-decor-4/#text-decoration-thickness).
330///
331/// The text-decoration CSS property sets the style and color of decorative lines including underline, overline, line-through, or a combination of lines.
332///
333/// The grammar is defined as:
334///
335/// ```text,ignore
336/// auto | from-font | <length-percentage>
337/// ```
338///
339/// https://drafts.csswg.org/css-text-decor-4/#text-decoration-thickness
340#[syntax(" auto | from-font | <length-percentage> ")]
341#[derive(
342	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
343)]
344#[declaration_metadata(
345    initial = "auto",
346    applies_to = Elements,
347    animation_type = ByComputedValue,
348    property_group = TextDecor,
349    computed_value_type = AsSpecified,
350    canonical_order = "per grammar",
351)]
352#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
353#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.text-decoration-thickness"))]
354#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
355pub enum TextDecorationThicknessStyleValue {}
356
357/// Represents the style value for `text-decoration-trim` as defined in [css-text-decor-4](https://drafts.csswg.org/css-text-decor-4/#text-decoration-trim).
358///
359/// The grammar is defined as:
360///
361/// ```text,ignore
362/// <length>{1,2} | auto
363/// ```
364///
365/// https://drafts.csswg.org/css-text-decor-4/#text-decoration-trim
366#[syntax(" <length>{1,2} | auto ")]
367#[derive(
368	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
369)]
370#[declaration_metadata(
371    initial = "0",
372    applies_to = Elements,
373    animation_type = ByComputedValue,
374    property_group = TextDecor,
375    computed_value_type = SpecifiedKeywordPlusAbsoluteLength,
376    canonical_order = "per grammar",
377)]
378#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
379#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.text-decoration-trim"))]
380#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
381pub struct TextDecorationTrimStyleValue;
382
383// /// Represents the style value for `text-emphasis` as defined in [css-text-decor-4](https://drafts.csswg.org/css-text-decor-4/#text-emphasis).
384// ///
385// /// The text-emphasis CSS property sets position and style for text emphasis marks, especially for East Asian languages.
386// ///
387// /// The grammar is defined as:
388// ///
389// /// ```text,ignore
390// /// <'text-emphasis-style'> || <'text-emphasis-color'>
391// /// ```
392// ///
393// /// https://drafts.csswg.org/css-text-decor-4/#text-emphasis
394// #[syntax(" <'text-emphasis-style'> || <'text-emphasis-color'> ")]
395// #[derive(
396//     Parse,
397//     Peek,
398//     ToSpan,
399//     ToCursors,
400//     DeclarationMetadata,
401//     SemanticEq,
402//     Debug,
403//     Clone,
404//     PartialEq,
405//     Eq,
406//     PartialOrd,
407//     Ord,
408//     Hash,
409// )]
410// #[declaration_metadata(
411//     initial = "see individual properties",
412//     inherits = Unknown,
413//     applies_to = Unknown,
414//     percentages = Unknown,
415//     animation_type = Unknown,
416//     property_group = TextDecor,
417//     computed_value_type = Unknown,
418//     canonical_order = "per grammar",
419// )]
420// #[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
421// #[cfg_attr(
422//     feature = "css_feature_data",
423//     derive(ToCSSFeature),
424//     css_feature("css.properties.text-emphasis")
425// )]
426// #[cfg_attr(feature = "visitable", derive(Visitable), visit)]
427// pub struct TextEmphasisStyleValue;
428
429/// Represents the style value for `text-emphasis-color` as defined in [css-text-decor-4](https://drafts.csswg.org/css-text-decor-4/#text-emphasis-color).
430///
431/// The text-emphasis CSS property sets position and style for text emphasis marks, especially for East Asian languages.
432///
433/// The grammar is defined as:
434///
435/// ```text,ignore
436/// <color>
437/// ```
438///
439/// https://drafts.csswg.org/css-text-decor-4/#text-emphasis-color
440#[syntax(" <color> ")]
441#[derive(
442	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
443)]
444#[declaration_metadata(
445    initial = "currentcolor",
446    inherits,
447    applies_to = Text,
448    animation_type = ByComputedValue,
449    property_group = TextDecor,
450    computed_value_type = Unknown,
451    canonical_order = "per grammar",
452)]
453#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
454#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.text-emphasis-color"))]
455#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
456pub struct TextEmphasisColorStyleValue;
457
458// /// Represents the style value for `text-emphasis-position` as defined in [css-text-decor-4](https://drafts.csswg.org/css-text-decor-4/#text-emphasis-position).
459// ///
460// /// The text-emphasis CSS property sets position and style for text emphasis marks, especially for East Asian languages.
461// ///
462// /// The grammar is defined as:
463// ///
464// /// ```text,ignore
465// /// [ over | under ] && [ right | left ]?
466// /// ```
467// ///
468// /// https://drafts.csswg.org/css-text-decor-4/#text-emphasis-position
469// #[syntax(" [ over | under ] && [ right | left ]? ")]
470// #[derive(
471//     Parse,
472//     Peek,
473//     ToSpan,
474//     ToCursors,
475//     DeclarationMetadata,
476//     SemanticEq,
477//     Debug,
478//     Clone,
479//     PartialEq,
480//     Eq,
481//     PartialOrd,
482//     Ord,
483//     Hash,
484// )]
485// #[declaration_metadata(
486//     initial = "over right",
487//     inherits,
488//     applies_to = Text,
489//     animation_type = Discrete,
490//     property_group = TextDecor,
491//     computed_value_type = Unknown,
492//     canonical_order = "per grammar",
493// )]
494// #[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
495// #[cfg_attr(
496//     feature = "css_feature_data",
497//     derive(ToCSSFeature),
498//     css_feature("css.properties.text-emphasis-position")
499// )]
500// #[cfg_attr(feature = "visitable", derive(Visitable), visit)]
501// pub struct TextEmphasisPositionStyleValue;
502
503/// Represents the style value for `text-emphasis-skip` as defined in [css-text-decor-4](https://drafts.csswg.org/css-text-decor-4/#text-emphasis-skip).
504///
505/// The grammar is defined as:
506///
507/// ```text,ignore
508/// spaces || punctuation || symbols || narrow
509/// ```
510///
511/// https://drafts.csswg.org/css-text-decor-4/#text-emphasis-skip
512#[syntax(" spaces || punctuation || symbols || narrow ")]
513#[derive(
514	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
515)]
516#[declaration_metadata(
517    initial = "spaces punctuation",
518    inherits,
519    applies_to = Text,
520    animation_type = Discrete,
521    property_group = TextDecor,
522    computed_value_type = Unknown,
523    canonical_order = "per grammar",
524)]
525#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
526#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.text-emphasis-skip"))]
527#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
528pub struct TextEmphasisSkipStyleValue;
529
530// /// Represents the style value for `text-emphasis-style` as defined in [css-text-decor-4](https://drafts.csswg.org/css-text-decor-4/#text-emphasis-style).
531// ///
532// /// The text-emphasis CSS property sets position and style for text emphasis marks, especially for East Asian languages.
533// ///
534// /// The grammar is defined as:
535// ///
536// /// ```text,ignore
537// /// none | [ [ filled | open ] || [ dot | circle | double-circle | triangle | sesame ] ] | <string>
538// /// ```
539// ///
540// /// https://drafts.csswg.org/css-text-decor-4/#text-emphasis-style
541// #[syntax(
542//     " none | [ [ filled | open ] || [ dot | circle | double-circle | triangle | sesame ] ] | <string> "
543// )]
544// #[derive(
545//     Parse,
546//     Peek,
547//     ToSpan,
548//     ToCursors,
549//     DeclarationMetadata,
550//     SemanticEq,
551//     Debug,
552//     Clone,
553//     PartialEq,
554//     Eq,
555//     PartialOrd,
556//     Ord,
557//     Hash,
558// )]
559// #[declaration_metadata(
560//     initial = "none",
561//     inherits,
562//     applies_to = Text,
563//     animation_type = Discrete,
564//     property_group = TextDecor,
565//     computed_value_type = Unknown,
566//     canonical_order = "per grammar",
567// )]
568// #[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
569// #[cfg_attr(
570//     feature = "css_feature_data",
571//     derive(ToCSSFeature),
572//     css_feature("css.properties.text-emphasis-style")
573// )]
574// #[cfg_attr(feature = "visitable", derive(Visitable), visit)]
575// pub enum TextEmphasisStyleStyleValue {}
576
577/// Represents the style value for `text-shadow` as defined in [css-text-decor-4](https://drafts.csswg.org/css-text-decor-4/#text-shadow).
578///
579/// The text-shadow CSS property sets the position and styles of shadow on text.
580///
581/// The grammar is defined as:
582///
583/// ```text,ignore
584/// none | <shadow>#
585/// ```
586///
587/// https://drafts.csswg.org/css-text-decor-4/#text-shadow
588#[syntax(" none | <shadow># ")]
589#[derive(
590	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
591)]
592#[declaration_metadata(
593    initial = "none",
594    inherits,
595    applies_to = Text,
596    animation_type = ShadowList,
597    property_group = TextDecor,
598    computed_value_type = AbsoluteLengthOrNone,
599    canonical_order = "per grammar",
600)]
601#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
602#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.text-shadow"))]
603#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
604pub struct TextShadowStyleValue<'a>;
605
606/// Represents the style value for `text-underline-offset` as defined in [css-text-decor-4](https://drafts.csswg.org/css-text-decor-4/#text-underline-offset).
607///
608/// The text-underline-offset CSS property shifts underlines on text from the initial position by a given distance. The initial position is affected by the text-underline-position property.
609///
610/// The grammar is defined as:
611///
612/// ```text,ignore
613/// auto | <length-percentage>
614/// ```
615///
616/// https://drafts.csswg.org/css-text-decor-4/#text-underline-offset
617#[syntax(" auto | <length-percentage> ")]
618#[derive(
619	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
620)]
621#[declaration_metadata(
622    initial = "auto",
623    inherits,
624    applies_to = Elements,
625    animation_type = ByComputedValue,
626    property_group = TextDecor,
627    computed_value_type = AsSpecified,
628    canonical_order = "per grammar",
629)]
630#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
631#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.text-underline-offset"))]
632#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
633pub struct TextUnderlineOffsetStyleValue;
634
635// /// Represents the style value for `text-underline-position` as defined in [css-text-decor-4](https://drafts.csswg.org/css-text-decor-4/#text-underline-position).
636// ///
637// /// The text-underline-position CSS property sets the position of underlines on text. For example, text-underline-position: under places the underline below the text, avoiding crossing descenders. The underline may be further adjusted by the text-underline-offset property.
638// ///
639// /// The grammar is defined as:
640// ///
641// /// ```text,ignore
642// /// auto | [ from-font | under ] || [ left | right ]
643// /// ```
644// ///
645// /// https://drafts.csswg.org/css-text-decor-4/#text-underline-position
646// #[syntax(" auto | [ from-font | under ] || [ left | right ] ")]
647// #[derive(
648//     Parse,
649//     Peek,
650//     ToSpan,
651//     ToCursors,
652//     DeclarationMetadata,
653//     SemanticEq,
654//     Debug,
655//     Clone,
656//     PartialEq,
657//     Eq,
658//     PartialOrd,
659//     Ord,
660//     Hash,
661// )]
662// #[declaration_metadata(
663//     initial = "auto",
664//     inherits,
665//     applies_to = Elements,
666//     animation_type = Discrete,
667//     property_group = TextDecor,
668//     computed_value_type = Unknown,
669//     canonical_order = "per grammar",
670// )]
671// #[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
672// #[cfg_attr(
673//     feature = "css_feature_data",
674//     derive(ToCSSFeature),
675//     css_feature("css.properties.text-underline-position")
676// )]
677// #[cfg_attr(feature = "visitable", derive(Visitable), visit)]
678// pub struct TextUnderlinePositionStyleValue;