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/e8f0279ce0beff5d70e59fa4165a668e1527fff6
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,
350//     Peek,
351//     ToSpan,
352//     ToCursors,
353//     DeclarationMetadata,
354//     SemanticEq,
355//     Debug,
356//     Clone,
357//     PartialEq,
358//     Eq,
359//     PartialOrd,
360//     Ord,
361//     Hash,
362// )]
363// #[declaration_metadata(
364//     initial = "see individual properties",
365//     inherits = Unknown,
366//     applies_to = Unknown,
367//     animation_type = Unknown,
368//     percentages = Unknown,
369//     longhands = TextEmphasisColor|TextEmphasisStyle,
370//     property_group = TextDecor,
371//     computed_value_type = Unknown,
372//     canonical_order = "per grammar",
373// )]
374// #[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
375// #[cfg_attr(
376//     feature = "css_feature_data",
377//     derive(ToCSSFeature),
378//     css_feature("css.properties.text-emphasis")
379// )]
380// #[cfg_attr(feature = "visitable", derive(Visitable), visit)]
381// #[derive(csskit_derives::NodeWithMetadata)]
382// pub struct TextEmphasisStyleValue;
383
384/// 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).
385///
386/// The text-emphasis CSS property sets position and style for text emphasis marks, especially for East Asian languages.
387///
388/// The grammar is defined as:
389///
390/// ```text,ignore
391/// <color>
392/// ```
393///
394/// https://drafts.csswg.org/css-text-decor-4/#text-emphasis-color
395#[syntax(" <color> ")]
396#[derive(
397	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
398)]
399#[declaration_metadata(
400    initial = "currentcolor",
401    inherits,
402    applies_to = Text,
403    animation_type = ByComputedValue,
404    shorthand_group = TextEmphasis,
405    property_group = TextDecor,
406    computed_value_type = Unknown,
407    canonical_order = "per grammar",
408)]
409#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
410#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.text-emphasis-color"))]
411#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
412#[derive(csskit_derives::NodeWithMetadata)]
413pub struct TextEmphasisColorStyleValue<'a>;
414
415/// 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).
416///
417/// The text-emphasis CSS property sets position and style for text emphasis marks, especially for East Asian languages.
418///
419/// The grammar is defined as:
420///
421/// ```text,ignore
422/// [ over | under ] && [ right | left ]?
423/// ```
424///
425/// https://drafts.csswg.org/css-text-decor-4/#text-emphasis-position
426#[syntax(" [ over | under ] && [ right | left ]? ")]
427#[derive(
428	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
429)]
430#[declaration_metadata(
431    initial = "over right",
432    inherits,
433    applies_to = Text,
434    animation_type = Discrete,
435    property_group = TextDecor,
436    computed_value_type = Unknown,
437    canonical_order = "per grammar",
438)]
439#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
440#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.text-emphasis-position"))]
441#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
442#[derive(csskit_derives::NodeWithMetadata)]
443pub enum TextEmphasisPositionStyleValue {}
444
445/// 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).
446///
447/// The grammar is defined as:
448///
449/// ```text,ignore
450/// spaces || punctuation || symbols || narrow
451/// ```
452///
453/// https://drafts.csswg.org/css-text-decor-4/#text-emphasis-skip
454#[syntax(" spaces || punctuation || symbols || narrow ")]
455#[derive(
456	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
457)]
458#[declaration_metadata(
459    initial = "spaces punctuation",
460    inherits,
461    applies_to = Text,
462    animation_type = Discrete,
463    property_group = TextDecor,
464    computed_value_type = Unknown,
465    canonical_order = "per grammar",
466)]
467#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
468#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.text-emphasis-skip"))]
469#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
470#[derive(csskit_derives::NodeWithMetadata)]
471pub struct TextEmphasisSkipStyleValue;
472
473// /// 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).
474// ///
475// /// The text-emphasis CSS property sets position and style for text emphasis marks, especially for East Asian languages.
476// ///
477// /// The grammar is defined as:
478// ///
479// /// ```text,ignore
480// /// none | [ [ filled | open ] || [ dot | circle | double-circle | triangle | sesame ] ] | <string>
481// /// ```
482// ///
483// /// https://drafts.csswg.org/css-text-decor-4/#text-emphasis-style
484// #[syntax(
485//     " none | [ [ filled | open ] || [ dot | circle | double-circle | triangle | sesame ] ] | <string> "
486// )]
487// #[derive(
488//     Parse,
489//     Peek,
490//     ToSpan,
491//     ToCursors,
492//     DeclarationMetadata,
493//     SemanticEq,
494//     Debug,
495//     Clone,
496//     PartialEq,
497//     Eq,
498//     PartialOrd,
499//     Ord,
500//     Hash,
501// )]
502// #[declaration_metadata(
503//     initial = "none",
504//     inherits,
505//     applies_to = Text,
506//     animation_type = Discrete,
507//     shorthand_group = TextEmphasis,
508//     property_group = TextDecor,
509//     computed_value_type = Unknown,
510//     canonical_order = "per grammar",
511// )]
512// #[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
513// #[cfg_attr(
514//     feature = "css_feature_data",
515//     derive(ToCSSFeature),
516//     css_feature("css.properties.text-emphasis-style")
517// )]
518// #[cfg_attr(feature = "visitable", derive(Visitable), visit)]
519// #[derive(csskit_derives::NodeWithMetadata)]
520// pub enum TextEmphasisStyleStyleValue {}
521
522/// Represents the style value for `text-shadow` as defined in [css-text-decor-4](https://drafts.csswg.org/css-text-decor-4/#text-shadow).
523///
524/// The text-shadow CSS property sets the position and styles of shadow on text.
525///
526/// The grammar is defined as:
527///
528/// ```text,ignore
529/// none | <shadow>#
530/// ```
531///
532/// https://drafts.csswg.org/css-text-decor-4/#text-shadow
533#[syntax(" none | <shadow># ")]
534#[derive(
535	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
536)]
537#[declaration_metadata(
538    initial = "none",
539    inherits,
540    applies_to = Text,
541    animation_type = ShadowList,
542    property_group = TextDecor,
543    computed_value_type = AbsoluteLengthOrNone,
544    canonical_order = "per grammar",
545)]
546#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
547#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.text-shadow"))]
548#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
549#[derive(csskit_derives::NodeWithMetadata)]
550pub struct TextShadowStyleValue<'a>;
551
552/// 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).
553///
554/// 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.
555///
556/// The grammar is defined as:
557///
558/// ```text,ignore
559/// auto | <length-percentage>
560/// ```
561///
562/// https://drafts.csswg.org/css-text-decor-4/#text-underline-offset
563#[syntax(" auto | <length-percentage> ")]
564#[derive(
565	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
566)]
567#[declaration_metadata(
568    initial = "auto",
569    inherits,
570    applies_to = Elements,
571    animation_type = ByComputedValue,
572    property_group = TextDecor,
573    computed_value_type = AsSpecified,
574    canonical_order = "per grammar",
575)]
576#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
577#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.text-underline-offset"))]
578#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
579#[derive(csskit_derives::NodeWithMetadata)]
580pub struct TextUnderlineOffsetStyleValue;
581
582/// 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).
583///
584/// 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.
585///
586/// The grammar is defined as:
587///
588/// ```text,ignore
589/// auto | [ from-font | under ] || [ left | right ]
590/// ```
591///
592/// https://drafts.csswg.org/css-text-decor-4/#text-underline-position
593#[syntax(" auto | [ from-font | under ] || [ left | right ] ")]
594#[derive(
595	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
596)]
597#[declaration_metadata(
598    initial = "auto",
599    inherits,
600    applies_to = Elements,
601    animation_type = Discrete,
602    property_group = TextDecor,
603    computed_value_type = Unknown,
604    canonical_order = "per grammar",
605)]
606#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
607#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.text-underline-position"))]
608#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
609#[derive(csskit_derives::NodeWithMetadata)]
610pub enum TextUnderlinePositionStyleValue {}