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