Skip to main content

css_ast/values/sizing/
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-sizing-4/
6
7mod impls;
8use super::prelude::*;
9use impls::*;
10/// Represents the style value for `aspect-ratio` as defined in [css-sizing-4](https://drafts.csswg.org/css-sizing-4/#aspect-ratio).
11///
12/// The aspect-ratio CSS property controls the width-to-height ratio of elements. For <img> and <video> elements, the width and height attributes used together with height: auto control the aspect ratio while the image/video is loading.
13///
14/// The grammar is defined as:
15///
16/// ```text,ignore
17/// auto || <ratio>
18/// ```
19///
20/// https://drafts.csswg.org/css-sizing-4/#aspect-ratio
21#[syntax(" auto || <ratio> ")]
22#[derive(
23	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
24)]
25#[declaration_metadata(
26    initial = "auto",
27    applies_to = Unknown,
28    animation_type = ByComputedValue,
29    property_group = Sizing,
30    computed_value_type = Unknown,
31    canonical_order = "per grammar",
32)]
33#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
34#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.aspect-ratio"))]
35#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
36#[derive(csskit_derives::NodeWithMetadata)]
37pub struct AspectRatioStyleValue<'a>;
38
39/// Represents the style value for `block-size` as defined in [css-sizing-4](https://drafts.csswg.org/css-sizing-4/#block-size).
40///
41/// CSS logical properties control borders, size, margin, and padding with directions and dimensions relative to the writing mode. For example, in a left to right, top to bottom writing mode, block-end refers to the bottom. Also known as flow relative.
42///
43/// The grammar is defined as:
44///
45/// ```text,ignore
46/// auto | <box-size>
47/// ```
48///
49/// https://drafts.csswg.org/css-sizing-4/#block-size
50#[syntax(" auto | <box-size> ")]
51#[derive(
52	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
53)]
54#[declaration_metadata(
55    initial = "auto",
56    applies_to = Unknown,
57    animation_type = ByComputedValue,
58    percentages = ContainingBlock,
59    property_group = Sizing,
60    computed_value_type = AsSpecified,
61    canonical_order = "per grammar",
62    logical_property_group = Size,
63    box_portion = Size,
64)]
65#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
66#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.block-size"))]
67#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
68#[derive(csskit_derives::NodeWithMetadata)]
69pub struct BlockSizeStyleValue<'a>;
70
71/// Represents the style value for `box-sizing` as defined in [css-sizing-4](https://drafts.csswg.org/css-sizing-4/#box-sizing).
72///
73/// The box-sizing CSS property sets whether an element's width and height are calculated based on the content-box, which does not count the size of borders or padding, or border-box, which does count them.
74///
75/// The grammar is defined as:
76///
77/// ```text,ignore
78/// content-box | border-box
79/// ```
80///
81/// https://drafts.csswg.org/css-sizing-4/#box-sizing
82#[syntax(" content-box | border-box ")]
83#[derive(
84	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
85)]
86#[declaration_metadata(
87    initial = "content-box",
88    applies_to = Unknown,
89    animation_type = Discrete,
90    property_group = Sizing,
91    computed_value_type = Unknown,
92    canonical_order = "per grammar",
93)]
94#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
95#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.box-sizing"))]
96#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
97#[derive(csskit_derives::NodeWithMetadata)]
98pub enum BoxSizingStyleValue<'a> {}
99
100/// Represents the style value for `contain-intrinsic-block-size` as defined in [css-sizing-4](https://drafts.csswg.org/css-sizing-4/#contain-intrinsic-block-size).
101///
102/// The contain-intrinsic-size CSS property sets the intrinsic size of an element. When using size containment, the browser will lay out the element as if it had a single child of this size.
103///
104/// The grammar is defined as:
105///
106/// ```text,ignore
107/// auto? [ none | <length [0,∞]> ]
108/// ```
109///
110/// https://drafts.csswg.org/css-sizing-4/#contain-intrinsic-block-size
111#[syntax(" auto? [ none | <length [0,∞]> ] ")]
112#[derive(
113	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
114)]
115#[declaration_metadata(
116    initial = "none",
117    applies_to = Unknown,
118    animation_type = ByComputedValue,
119    property_group = Sizing,
120    computed_value_type = AsSpecified,
121    canonical_order = "per grammar",
122    logical_property_group = ContainIntrinsicSize,
123    box_side = BlockStart|BlockEnd,
124)]
125#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
126#[cfg_attr(
127	feature = "css_feature_data",
128	derive(ToCSSFeature),
129	css_feature("css.properties.contain-intrinsic-block-size")
130)]
131#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
132#[derive(csskit_derives::NodeWithMetadata)]
133pub struct ContainIntrinsicBlockSizeStyleValue<'a>;
134
135/// Represents the style value for `contain-intrinsic-height` as defined in [css-sizing-4](https://drafts.csswg.org/css-sizing-4/#contain-intrinsic-height).
136///
137/// The contain-intrinsic-size CSS property sets the intrinsic size of an element. When using size containment, the browser will lay out the element as if it had a single child of this size.
138///
139/// The grammar is defined as:
140///
141/// ```text,ignore
142/// auto? [ none | <length [0,∞]> ]
143/// ```
144///
145/// https://drafts.csswg.org/css-sizing-4/#contain-intrinsic-height
146#[syntax(" auto? [ none | <length [0,∞]> ] ")]
147#[derive(
148	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
149)]
150#[declaration_metadata(
151    initial = "none",
152    applies_to = Unknown,
153    animation_type = ByComputedValue,
154    shorthands = ContainIntrinsicSize,
155    property_group = Sizing,
156    computed_value_type = AsSpecified,
157    canonical_order = "per grammar",
158    logical_property_group = ContainIntrinsicSize,
159)]
160#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
161#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.contain-intrinsic-height"))]
162#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
163#[derive(csskit_derives::NodeWithMetadata)]
164pub struct ContainIntrinsicHeightStyleValue<'a>;
165
166/// Represents the style value for `contain-intrinsic-inline-size` as defined in [css-sizing-4](https://drafts.csswg.org/css-sizing-4/#contain-intrinsic-inline-size).
167///
168/// The contain-intrinsic-size CSS property sets the intrinsic size of an element. When using size containment, the browser will lay out the element as if it had a single child of this size.
169///
170/// The grammar is defined as:
171///
172/// ```text,ignore
173/// auto? [ none | <length [0,∞]> ]
174/// ```
175///
176/// https://drafts.csswg.org/css-sizing-4/#contain-intrinsic-inline-size
177#[syntax(" auto? [ none | <length [0,∞]> ] ")]
178#[derive(
179	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
180)]
181#[declaration_metadata(
182    initial = "none",
183    applies_to = Unknown,
184    animation_type = ByComputedValue,
185    property_group = Sizing,
186    computed_value_type = AsSpecified,
187    canonical_order = "per grammar",
188    logical_property_group = ContainIntrinsicSize,
189    box_side = InlineStart|InlineEnd,
190)]
191#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
192#[cfg_attr(
193	feature = "css_feature_data",
194	derive(ToCSSFeature),
195	css_feature("css.properties.contain-intrinsic-inline-size")
196)]
197#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
198#[derive(csskit_derives::NodeWithMetadata)]
199pub struct ContainIntrinsicInlineSizeStyleValue<'a>;
200
201/// Represents the style value for `contain-intrinsic-size` as defined in [css-sizing-4](https://drafts.csswg.org/css-sizing-4/#contain-intrinsic-size).
202///
203/// The contain-intrinsic-size CSS property sets the intrinsic size of an element. When using size containment, the browser will lay out the element as if it had a single child of this size.
204///
205/// The grammar is defined as:
206///
207/// ```text,ignore
208/// [ auto? [ none | <length [0,∞]> ] ]{1,2}
209/// ```
210///
211/// https://drafts.csswg.org/css-sizing-4/#contain-intrinsic-size
212#[syntax(" [ auto? [ none | <length [0,∞]> ] ]{1,2} ")]
213#[derive(
214	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
215)]
216#[declaration_metadata(
217    initial = "see individual properties",
218    inherits = Unknown,
219    applies_to = Unknown,
220    animation_type = Unknown,
221    percentages = Unknown,
222    longhands = ContainIntrinsicWidth|ContainIntrinsicHeight,
223    property_group = Sizing,
224    computed_value_type = Unknown,
225    canonical_order = "per grammar",
226)]
227#[declaration_writes(repeat)]
228#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
229#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.contain-intrinsic-size"))]
230#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
231#[derive(csskit_derives::NodeWithMetadata)]
232pub struct ContainIntrinsicSizeStyleValue<'a>;
233
234/// Represents the style value for `contain-intrinsic-width` as defined in [css-sizing-4](https://drafts.csswg.org/css-sizing-4/#contain-intrinsic-width).
235///
236/// The contain-intrinsic-size CSS property sets the intrinsic size of an element. When using size containment, the browser will lay out the element as if it had a single child of this size.
237///
238/// The grammar is defined as:
239///
240/// ```text,ignore
241/// auto? [ none | <length [0,∞]> ]
242/// ```
243///
244/// https://drafts.csswg.org/css-sizing-4/#contain-intrinsic-width
245#[syntax(" auto? [ none | <length [0,∞]> ] ")]
246#[derive(
247	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
248)]
249#[declaration_metadata(
250    initial = "none",
251    applies_to = Unknown,
252    animation_type = ByComputedValue,
253    shorthands = ContainIntrinsicSize,
254    property_group = Sizing,
255    computed_value_type = AsSpecified,
256    canonical_order = "per grammar",
257    logical_property_group = ContainIntrinsicSize,
258)]
259#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
260#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.contain-intrinsic-width"))]
261#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
262#[derive(csskit_derives::NodeWithMetadata)]
263pub struct ContainIntrinsicWidthStyleValue<'a>;
264
265/// Represents the style value for `frame-sizing` as defined in [css-sizing-4](https://drafts.csswg.org/css-sizing-4/#frame-sizing).
266///
267/// The frame-sizing CSS property sets the size of an <iframe> element to that of it contents, to avoid scrolling in the iframe. Embedded documents allow this with the <meta name="responsive-embedded-sizing"> element and request resizing in the embedding page by calling window.requestResize().
268///
269/// The grammar is defined as:
270///
271/// ```text,ignore
272/// auto | content-width | content-height | content-block-size | content-inline-size
273/// ```
274///
275/// https://drafts.csswg.org/css-sizing-4/#frame-sizing
276#[syntax(" auto | content-width | content-height | content-block-size | content-inline-size ")]
277#[derive(
278	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
279)]
280#[declaration_metadata(
281    initial = "auto",
282    applies_to = Unknown,
283    animation_type = Discrete,
284    property_group = Sizing,
285    computed_value_type = AsSpecified,
286    canonical_order = "per grammar",
287)]
288#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
289#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.frame-sizing"))]
290#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
291#[derive(csskit_derives::NodeWithMetadata)]
292pub enum FrameSizingStyleValue<'a> {}
293
294/// Represents the style value for `height` as defined in [css-sizing-4](https://drafts.csswg.org/css-sizing-4/#height).
295///
296/// The width and height CSS properties set the preferred physical size of an element.
297///
298/// The grammar is defined as:
299///
300/// ```text,ignore
301/// auto | <box-size>
302/// ```
303///
304/// https://drafts.csswg.org/css-sizing-4/#height
305#[syntax(" auto | <box-size> ")]
306#[derive(
307	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
308)]
309#[declaration_metadata(
310    initial = "auto",
311    applies_to = Unknown,
312    animation_type = ByComputedValue,
313    percentages = ContainingBlock,
314    property_group = Sizing,
315    computed_value_type = AsSpecified,
316    canonical_order = "per grammar",
317    logical_property_group = Size,
318    box_portion = Size,
319)]
320#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
321#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.height"))]
322#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
323#[derive(csskit_derives::NodeWithMetadata)]
324pub struct HeightStyleValue<'a>;
325
326/// Represents the style value for `inline-size` as defined in [css-sizing-4](https://drafts.csswg.org/css-sizing-4/#inline-size).
327///
328/// CSS logical properties control borders, size, margin, and padding with directions and dimensions relative to the writing mode. For example, in a left to right, top to bottom writing mode, block-end refers to the bottom. Also known as flow relative.
329///
330/// The grammar is defined as:
331///
332/// ```text,ignore
333/// auto | <box-size>
334/// ```
335///
336/// https://drafts.csswg.org/css-sizing-4/#inline-size
337#[syntax(" auto | <box-size> ")]
338#[derive(
339	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
340)]
341#[declaration_metadata(
342    initial = "auto",
343    applies_to = Unknown,
344    animation_type = ByComputedValue,
345    percentages = ContainingBlock,
346    property_group = Sizing,
347    computed_value_type = AsSpecified,
348    canonical_order = "per grammar",
349    logical_property_group = Size,
350    box_portion = Size,
351)]
352#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
353#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.inline-size"))]
354#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
355#[derive(csskit_derives::NodeWithMetadata)]
356pub struct InlineSizeStyleValue<'a>;
357
358/// Represents the style value for `max-block-size` as defined in [css-sizing-4](https://drafts.csswg.org/css-sizing-4/#max-block-size).
359///
360/// CSS logical properties control borders, size, margin, and padding with directions and dimensions relative to the writing mode. For example, in a left to right, top to bottom writing mode, block-end refers to the bottom. Also known as flow relative.
361///
362/// The grammar is defined as:
363///
364/// ```text,ignore
365/// none | <box-size>
366/// ```
367///
368/// https://drafts.csswg.org/css-sizing-4/#max-block-size
369#[syntax(" none | <box-size> ")]
370#[derive(
371	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
372)]
373#[declaration_metadata(
374    initial = "none",
375    applies_to = Unknown,
376    animation_type = ByComputedValue,
377    percentages = ContainingBlock,
378    property_group = Sizing,
379    computed_value_type = AsSpecified,
380    canonical_order = "per grammar",
381    logical_property_group = MaxSize,
382    box_side = BlockStart|BlockEnd,
383    box_portion = Size,
384)]
385#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
386#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.max-block-size"))]
387#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
388#[derive(csskit_derives::NodeWithMetadata)]
389pub struct MaxBlockSizeStyleValue<'a>;
390
391/// Represents the style value for `max-height` as defined in [css-sizing-4](https://drafts.csswg.org/css-sizing-4/#max-height).
392///
393/// The min-width, min-height, max-width, and max-height CSS properties set the minimum and maximum size of an element.
394///
395/// The grammar is defined as:
396///
397/// ```text,ignore
398/// none | <box-size>
399/// ```
400///
401/// https://drafts.csswg.org/css-sizing-4/#max-height
402#[syntax(" none | <box-size> ")]
403#[derive(
404	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
405)]
406#[declaration_metadata(
407    initial = "none",
408    applies_to = Unknown,
409    animation_type = ByComputedValue,
410    percentages = ContainingBlock,
411    property_group = Sizing,
412    computed_value_type = AsSpecified,
413    canonical_order = "per grammar",
414    logical_property_group = MaxSize,
415    box_portion = Size,
416)]
417#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
418#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.max-height"))]
419#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
420#[derive(csskit_derives::NodeWithMetadata)]
421pub struct MaxHeightStyleValue<'a>;
422
423/// Represents the style value for `max-inline-size` as defined in [css-sizing-4](https://drafts.csswg.org/css-sizing-4/#max-inline-size).
424///
425/// CSS logical properties control borders, size, margin, and padding with directions and dimensions relative to the writing mode. For example, in a left to right, top to bottom writing mode, block-end refers to the bottom. Also known as flow relative.
426///
427/// The grammar is defined as:
428///
429/// ```text,ignore
430/// none | <box-size>
431/// ```
432///
433/// https://drafts.csswg.org/css-sizing-4/#max-inline-size
434#[syntax(" none | <box-size> ")]
435#[derive(
436	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
437)]
438#[declaration_metadata(
439    initial = "none",
440    applies_to = Unknown,
441    animation_type = ByComputedValue,
442    percentages = ContainingBlock,
443    property_group = Sizing,
444    computed_value_type = AsSpecified,
445    canonical_order = "per grammar",
446    logical_property_group = MaxSize,
447    box_side = InlineStart|InlineEnd,
448    box_portion = Size,
449)]
450#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
451#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.max-inline-size"))]
452#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
453#[derive(csskit_derives::NodeWithMetadata)]
454pub struct MaxInlineSizeStyleValue<'a>;
455
456/// Represents the style value for `max-size` as defined in [css-sizing-4](https://drafts.csswg.org/css-sizing-4/#max-size).
457///
458/// The grammar is defined as:
459///
460/// ```text,ignore
461/// <'max-width'> <'max-height'>?
462/// ```
463///
464/// https://drafts.csswg.org/css-sizing-4/#max-size
465#[syntax(" <'max-width'> <'max-height'>? ")]
466#[derive(
467	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
468)]
469#[declaration_metadata(
470    initial = "none",
471    inherits = Unknown,
472    applies_to = Elements,
473    animation_type = Unknown,
474    percentages = Unknown,
475    property_group = Sizing,
476    computed_value_type = Unknown,
477    canonical_order = "per grammar",
478)]
479#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
480#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.max-size"))]
481#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
482#[derive(csskit_derives::NodeWithMetadata)]
483pub struct MaxSizeStyleValue<'a>;
484
485/// Represents the style value for `max-width` as defined in [css-sizing-4](https://drafts.csswg.org/css-sizing-4/#max-width).
486///
487/// The min-width, min-height, max-width, and max-height CSS properties set the minimum and maximum size of an element.
488///
489/// The grammar is defined as:
490///
491/// ```text,ignore
492/// none | <box-size>
493/// ```
494///
495/// https://drafts.csswg.org/css-sizing-4/#max-width
496#[syntax(" none | <box-size> ")]
497#[derive(
498	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
499)]
500#[declaration_metadata(
501    initial = "none",
502    applies_to = Unknown,
503    animation_type = ByComputedValue,
504    percentages = ContainingBlock,
505    property_group = Sizing,
506    computed_value_type = AsSpecified,
507    canonical_order = "per grammar",
508    logical_property_group = MaxSize,
509    box_portion = Size,
510)]
511#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
512#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.max-width"))]
513#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
514#[derive(csskit_derives::NodeWithMetadata)]
515pub struct MaxWidthStyleValue<'a>;
516
517/// Represents the style value for `min-block-size` as defined in [css-sizing-4](https://drafts.csswg.org/css-sizing-4/#min-block-size).
518///
519/// CSS logical properties control borders, size, margin, and padding with directions and dimensions relative to the writing mode. For example, in a left to right, top to bottom writing mode, block-end refers to the bottom. Also known as flow relative.
520///
521/// The grammar is defined as:
522///
523/// ```text,ignore
524/// auto | <box-size>
525/// ```
526///
527/// https://drafts.csswg.org/css-sizing-4/#min-block-size
528#[syntax(" auto | <box-size> ")]
529#[derive(
530	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
531)]
532#[declaration_metadata(
533    initial = "auto",
534    applies_to = Unknown,
535    animation_type = ByComputedValue,
536    percentages = ContainingBlock,
537    property_group = Sizing,
538    computed_value_type = AsSpecified,
539    canonical_order = "per grammar",
540    logical_property_group = MinSize,
541    box_side = BlockStart|BlockEnd,
542    box_portion = Size,
543)]
544#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
545#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.min-block-size"))]
546#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
547#[derive(csskit_derives::NodeWithMetadata)]
548pub struct MinBlockSizeStyleValue<'a>;
549
550/// Represents the style value for `min-height` as defined in [css-sizing-4](https://drafts.csswg.org/css-sizing-4/#min-height).
551///
552/// The min-width, min-height, max-width, and max-height CSS properties set the minimum and maximum size of an element.
553///
554/// The grammar is defined as:
555///
556/// ```text,ignore
557/// auto | <box-size>
558/// ```
559///
560/// https://drafts.csswg.org/css-sizing-4/#min-height
561#[syntax(" auto | <box-size> ")]
562#[derive(
563	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
564)]
565#[declaration_metadata(
566    initial = "auto",
567    applies_to = Unknown,
568    animation_type = ByComputedValue,
569    percentages = ContainingBlock,
570    property_group = Sizing,
571    computed_value_type = AsSpecified,
572    canonical_order = "per grammar",
573    logical_property_group = MinSize,
574    box_portion = Size,
575)]
576#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
577#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.min-height"))]
578#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
579#[derive(csskit_derives::NodeWithMetadata)]
580pub struct MinHeightStyleValue<'a>;
581
582/// Represents the style value for `min-inline-size` as defined in [css-sizing-4](https://drafts.csswg.org/css-sizing-4/#min-inline-size).
583///
584/// CSS logical properties control borders, size, margin, and padding with directions and dimensions relative to the writing mode. For example, in a left to right, top to bottom writing mode, block-end refers to the bottom. Also known as flow relative.
585///
586/// The grammar is defined as:
587///
588/// ```text,ignore
589/// auto | <box-size>
590/// ```
591///
592/// https://drafts.csswg.org/css-sizing-4/#min-inline-size
593#[syntax(" auto | <box-size> ")]
594#[derive(
595	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
596)]
597#[declaration_metadata(
598    initial = "auto",
599    applies_to = Unknown,
600    animation_type = ByComputedValue,
601    percentages = ContainingBlock,
602    property_group = Sizing,
603    computed_value_type = AsSpecified,
604    canonical_order = "per grammar",
605    logical_property_group = MinSize,
606    box_side = InlineStart|InlineEnd,
607    box_portion = Size,
608)]
609#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
610#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.min-inline-size"))]
611#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
612#[derive(csskit_derives::NodeWithMetadata)]
613pub struct MinInlineSizeStyleValue<'a>;
614
615/// Represents the style value for `min-intrinsic-sizing` as defined in [css-sizing-4](https://drafts.csswg.org/css-sizing-4/#min-intrinsic-sizing).
616///
617/// The grammar is defined as:
618///
619/// ```text,ignore
620/// legacy | zero-if-scroll || zero-if-extrinsic
621/// ```
622///
623/// https://drafts.csswg.org/css-sizing-4/#min-intrinsic-sizing
624#[syntax(" legacy | zero-if-scroll || zero-if-extrinsic ")]
625#[derive(
626	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
627)]
628#[declaration_metadata(
629    initial = "legacy",
630    applies_to = Unknown,
631    animation_type = Discrete,
632    property_group = Sizing,
633    computed_value_type = AsSpecified,
634    canonical_order = "per grammar",
635)]
636#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
637#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.min-intrinsic-sizing"))]
638#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
639#[derive(csskit_derives::NodeWithMetadata)]
640pub enum MinIntrinsicSizingStyleValue<'a> {}
641
642/// Represents the style value for `min-size` as defined in [css-sizing-4](https://drafts.csswg.org/css-sizing-4/#min-size).
643///
644/// The grammar is defined as:
645///
646/// ```text,ignore
647/// <'min-width'> <'min-height'>?
648/// ```
649///
650/// https://drafts.csswg.org/css-sizing-4/#min-size
651#[syntax(" <'min-width'> <'min-height'>? ")]
652#[derive(
653	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
654)]
655#[declaration_metadata(
656    initial = "auto",
657    inherits = Unknown,
658    applies_to = Elements,
659    animation_type = Unknown,
660    percentages = Unknown,
661    property_group = Sizing,
662    computed_value_type = Unknown,
663    canonical_order = "per grammar",
664)]
665#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
666#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.min-size"))]
667#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
668#[derive(csskit_derives::NodeWithMetadata)]
669pub struct MinSizeStyleValue<'a>;
670
671/// Represents the style value for `min-width` as defined in [css-sizing-4](https://drafts.csswg.org/css-sizing-4/#min-width).
672///
673/// The min-width, min-height, max-width, and max-height CSS properties set the minimum and maximum size of an element.
674///
675/// The grammar is defined as:
676///
677/// ```text,ignore
678/// auto | <box-size>
679/// ```
680///
681/// https://drafts.csswg.org/css-sizing-4/#min-width
682#[syntax(" auto | <box-size> ")]
683#[derive(
684	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
685)]
686#[declaration_metadata(
687    initial = "auto",
688    applies_to = Unknown,
689    animation_type = ByComputedValue,
690    percentages = ContainingBlock,
691    property_group = Sizing,
692    computed_value_type = AsSpecified,
693    canonical_order = "per grammar",
694    logical_property_group = MinSize,
695    box_portion = Size,
696)]
697#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
698#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.min-width"))]
699#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
700#[derive(csskit_derives::NodeWithMetadata)]
701pub struct MinWidthStyleValue<'a>;
702
703/// Represents the style value for `size` as defined in [css-sizing-4](https://drafts.csswg.org/css-sizing-4/#size).
704///
705/// The grammar is defined as:
706///
707/// ```text,ignore
708/// <'width'> <'height'>?
709/// ```
710///
711/// https://drafts.csswg.org/css-sizing-4/#size
712#[syntax(" <'width'> <'height'>? ")]
713#[derive(
714	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
715)]
716#[declaration_metadata(
717    initial = "auto",
718    inherits = Unknown,
719    applies_to = Elements,
720    animation_type = Unknown,
721    percentages = Unknown,
722    property_group = Sizing,
723    computed_value_type = Unknown,
724    canonical_order = "per grammar",
725)]
726#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
727#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.size"))]
728#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
729#[derive(csskit_derives::NodeWithMetadata)]
730pub struct SizeStyleValue<'a>;
731
732/// Represents the style value for `width` as defined in [css-sizing-4](https://drafts.csswg.org/css-sizing-4/#width).
733///
734/// The width and height CSS properties set the preferred physical size of an element.
735///
736/// The grammar is defined as:
737///
738/// ```text,ignore
739/// auto | <box-size>
740/// ```
741///
742/// https://drafts.csswg.org/css-sizing-4/#width
743#[syntax(" auto | <box-size> ")]
744#[derive(
745	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
746)]
747#[declaration_metadata(
748    initial = "auto",
749    applies_to = Unknown,
750    animation_type = ByComputedValue,
751    percentages = ContainingBlock,
752    property_group = Sizing,
753    computed_value_type = AsSpecified,
754    canonical_order = "per grammar",
755    logical_property_group = Size,
756    box_portion = Size,
757)]
758#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
759#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.width"))]
760#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
761#[derive(csskit_derives::NodeWithMetadata)]
762pub struct WidthStyleValue<'a>;