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