Skip to main content

css_ast/values/text_decor/
mod.rs

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