1use crate::{pos::Span, tokenizer::TokenWithSpan};
4use oxc_allocator::{Box, Vec};
5#[cfg(feature = "serialize")]
6use serde::Serialize;
7
8#[derive(Debug)]
9#[cfg_attr(feature = "serialize", derive(Serialize))]
10#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
11pub struct AnPlusB {
12 pub a: i32,
13 pub b: i32,
14 pub span: Span,
15}
16
17#[derive(Debug)]
18#[cfg_attr(feature = "serialize", derive(Serialize))]
19#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
20pub struct AtRule<'a> {
21 pub name: Ident<'a>,
22 pub prelude: Option<AtRulePrelude<'a>>,
23 pub block: Option<SimpleBlock<'a>>,
24 pub span: Span,
25}
26
27#[derive(Debug)]
28#[cfg_attr(feature = "serialize", derive(Serialize))]
29#[cfg_attr(feature = "serialize", serde(untagged))]
30pub enum AtRulePrelude<'a> {
31 Charset(Str<'a>),
32 ColorProfile(ColorProfilePrelude<'a>),
33 Container(ContainerPrelude<'a>),
34 CounterStyle(InterpolableIdent<'a>),
35 CustomMedia(Box<'a, CustomMedia<'a>>),
36 CustomSelector(Box<'a, CustomSelectorPrelude<'a>>),
37 Document(DocumentPrelude<'a>),
38 FontFeatureValues(FontFamilyName<'a>),
39 FontPaletteValues(InterpolableIdent<'a>),
40 Import(Box<'a, ImportPrelude<'a>>),
41 Keyframes(KeyframesName<'a>),
42 Layer(LayerNames<'a>),
43 LessImport(Box<'a, LessImportPrelude<'a>>),
44 LessPlugin(Box<'a, LessPlugin<'a>>),
45 Media(MediaQueryList<'a>),
46 Namespace(Box<'a, NamespacePrelude<'a>>),
47 Nest(SelectorList<'a>),
48 Page(PageSelectorList<'a>),
49 PositionTry(InterpolableIdent<'a>),
50 Property(InterpolableIdent<'a>),
51 SassAtRoot(SassAtRoot<'a>),
52 SassContent(SassContent<'a>),
53 SassEach(Box<'a, SassEach<'a>>),
54 SassExpr(Box<'a, ComponentValue<'a>>),
55 SassExtend(Box<'a, SassExtend<'a>>),
56 SassFor(Box<'a, SassFor<'a>>),
57 SassForward(Box<'a, SassForward<'a>>),
58 SassFunction(Box<'a, SassFunction<'a>>),
59 SassImport(SassImportPrelude<'a>),
60 SassInclude(Box<'a, SassInclude<'a>>),
61 SassMixin(Box<'a, SassMixin<'a>>),
62 SassUse(Box<'a, SassUse<'a>>),
63 Scope(Box<'a, ScopePrelude<'a>>),
64 ScrollTimeline(InterpolableIdent<'a>),
65 Supports(SupportsCondition<'a>),
66 Unknown(Box<'a, UnknownAtRulePrelude<'a>>),
67}
68
69#[derive(Debug)]
70#[cfg_attr(feature = "serialize", derive(Serialize))]
71#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
72pub struct AttributeSelector<'a> {
73 pub name: WqName<'a>,
74 pub matcher: Option<AttributeSelectorMatcher>,
75 pub value: Option<AttributeSelectorValue<'a>>,
76 pub modifier: Option<AttributeSelectorModifier<'a>>,
77 pub span: Span,
78}
79
80#[derive(Debug)]
81#[cfg_attr(feature = "serialize", derive(Serialize))]
82#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
83pub struct AttributeSelectorMatcher {
84 pub kind: AttributeSelectorMatcherKind,
85 pub span: Span,
86}
87
88#[derive(Debug)]
89#[cfg_attr(feature = "serialize", derive(Serialize))]
90pub enum AttributeSelectorMatcherKind {
91 Exact,
93 MatchWord,
95 ExactOrPrefixThenHyphen,
97 Prefix,
99 Suffix,
101 Substring,
103}
104
105#[derive(Debug)]
106#[cfg_attr(feature = "serialize", derive(Serialize))]
107#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
108pub struct AttributeSelectorModifier<'a> {
109 pub ident: InterpolableIdent<'a>,
110 pub span: Span,
111}
112
113#[derive(Debug)]
114#[cfg_attr(feature = "serialize", derive(Serialize))]
115#[cfg_attr(feature = "serialize", serde(untagged))]
116pub enum AttributeSelectorValue<'a> {
117 Ident(InterpolableIdent<'a>),
118 Str(InterpolableStr<'a>),
119 Percentage(Percentage<'a>),
120 LessEscapedStr(LessEscapedStr<'a>),
121}
122
123#[derive(Debug)]
124#[cfg_attr(feature = "serialize", derive(Serialize))]
125#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
126pub struct BracketBlock<'a> {
127 pub value: Vec<'a, ComponentValue<'a>>,
128 pub span: Span,
129}
130
131#[derive(Debug)]
132#[cfg_attr(feature = "serialize", derive(Serialize))]
133#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
134pub struct Calc<'a> {
135 pub left: Box<'a, ComponentValue<'a>>,
136 pub op: CalcOperator,
137 pub right: Box<'a, ComponentValue<'a>>,
138 pub span: Span,
139}
140
141#[derive(Debug)]
142#[cfg_attr(feature = "serialize", derive(Serialize))]
143#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
144pub struct CalcOperator {
145 pub kind: CalcOperatorKind,
146 pub span: Span,
147}
148
149#[derive(Debug)]
150#[cfg_attr(feature = "serialize", derive(Serialize))]
151pub enum CalcOperatorKind {
152 Plus,
153 Minus,
154 Multiply,
155 Division,
156}
157
158#[derive(Debug)]
159#[cfg_attr(feature = "serialize", derive(Serialize))]
160#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
161pub struct ClassSelector<'a> {
162 pub name: InterpolableIdent<'a>,
163 pub span: Span,
164}
165
166#[derive(Debug)]
167#[cfg_attr(feature = "serialize", derive(Serialize))]
168#[cfg_attr(feature = "serialize", serde(untagged))]
169pub enum ColorProfilePrelude<'a> {
170 DashedIdent(InterpolableIdent<'a>),
171 DeviceCmyk(Ident<'a>),
172}
173
174#[derive(Debug)]
175#[cfg_attr(feature = "serialize", derive(Serialize))]
176#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
177pub struct Combinator {
178 pub kind: CombinatorKind,
179 pub span: Span,
180}
181
182#[derive(Debug, PartialEq, Eq)]
183#[cfg_attr(feature = "serialize", derive(Serialize))]
184pub enum CombinatorKind {
185 Descendant,
187 NextSibling,
189 Child,
191 LaterSibling,
193 Column,
195}
196
197#[derive(Debug)]
198#[cfg_attr(feature = "serialize", derive(Serialize))]
199#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
200pub struct ComplexSelector<'a> {
201 pub children: Vec<'a, ComplexSelectorChild<'a>>,
202 pub span: Span,
203}
204
205#[derive(Debug)]
206#[cfg_attr(feature = "serialize", derive(Serialize))]
207#[cfg_attr(feature = "serialize", serde(untagged))]
208pub enum ComplexSelectorChild<'a> {
209 CompoundSelector(CompoundSelector<'a>),
210 Combinator(Combinator),
211}
212
213#[derive(Debug)]
214#[cfg_attr(feature = "serialize", derive(Serialize))]
215#[cfg_attr(feature = "serialize", serde(untagged))]
216pub enum ComponentValue<'a> {
217 BracketBlock(BracketBlock<'a>),
218 Calc(Calc<'a>),
219 Delimiter(Delimiter),
220 Dimension(Dimension<'a>),
221 Function(Function<'a>),
222 HexColor(HexColor<'a>),
223 IdSelector(IdSelector<'a>),
224 ImportantAnnotation(ImportantAnnotation<'a>),
225 InterpolableIdent(InterpolableIdent<'a>),
226 InterpolableStr(InterpolableStr<'a>),
227 LayerName(LayerName<'a>),
228 LessBinaryOperation(LessBinaryOperation<'a>),
229 LessCondition(Box<'a, LessCondition<'a>>),
230 LessDetachedRuleset(LessDetachedRuleset<'a>),
231 LessEscapedStr(LessEscapedStr<'a>),
232 LessJavaScriptSnippet(LessJavaScriptSnippet<'a>),
233 LessList(LessList<'a>),
234 LessMixinCall(Box<'a, LessMixinCall<'a>>),
235 LessNamespaceValue(Box<'a, LessNamespaceValue<'a>>),
236 LessNegativeValue(LessNegativeValue<'a>),
237 LessParenthesizedOperation(LessParenthesizedOperation<'a>),
238 LessPercentKeyword(LessPercentKeyword),
239 LessPropertyVariable(LessPropertyVariable<'a>),
240 LessVariable(LessVariable<'a>),
241 LessVariableVariable(LessVariableVariable<'a>),
242 Number(Number<'a>),
243 Percentage(Percentage<'a>),
244 Placeholder(Placeholder<'a>),
245 PostcssSimpleVar(PostcssSimpleVar<'a>),
246 Ratio(Ratio<'a>),
247 SassArbitraryArgument(SassArbitraryArgument<'a>),
248 SassBinaryExpression(SassBinaryExpression<'a>),
249 SassKeywordArgument(SassKeywordArgument<'a>),
250 SassList(SassList<'a>),
251 SassMap(SassMap<'a>),
252 SassQualifiedName(Box<'a, SassQualifiedName<'a>>),
253 SassNestingDeclaration(SassNestingDeclaration<'a>),
254 SassParenthesizedExpression(SassParenthesizedExpression<'a>),
255 SassParentSelector(NestingSelector<'a>),
256 SassUnaryExpression(SassUnaryExpression<'a>),
257 SassVariable(SassVariable<'a>),
258 TokenWithSpan(TokenWithSpan<'a>),
259 UnicodeRange(UnicodeRange<'a>),
260 Url(Box<'a, Url<'a>>),
261}
262
263#[derive(Debug)]
264#[cfg_attr(feature = "serialize", derive(Serialize))]
265#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
266pub struct ComponentValues<'a> {
267 pub values: Vec<'a, ComponentValue<'a>>,
268 pub span: Span,
269}
270
271#[derive(Debug)]
272#[cfg_attr(feature = "serialize", derive(Serialize))]
273#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
274pub struct CompoundSelector<'a> {
275 pub children: Vec<'a, SimpleSelector<'a>>,
276 pub span: Span,
277}
278
279#[derive(Debug)]
280#[cfg_attr(feature = "serialize", derive(Serialize))]
281#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
282pub struct CompoundSelectorList<'a> {
283 pub selectors: Vec<'a, CompoundSelector<'a>>,
284 pub comma_spans: Vec<'a, Span>,
285 pub span: Span,
286}
287
288#[derive(Debug)]
289#[cfg_attr(feature = "serialize", derive(Serialize))]
290#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
291pub struct ContainerCondition<'a> {
292 pub conditions: Vec<'a, ContainerConditionKind<'a>>,
293 pub span: Span,
294}
295
296#[derive(Debug)]
297#[cfg_attr(feature = "serialize", derive(Serialize))]
298#[cfg_attr(feature = "serialize", serde(untagged))]
299pub enum ContainerConditionKind<'a> {
300 QueryInParens(QueryInParens<'a>),
301 And(ContainerConditionAnd<'a>),
302 Or(ContainerConditionOr<'a>),
303 Not(ContainerConditionNot<'a>),
304}
305
306#[derive(Debug)]
307#[cfg_attr(feature = "serialize", derive(Serialize))]
308#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
309pub struct ContainerConditionAnd<'a> {
310 pub keyword: Ident<'a>,
311 pub query_in_parens: QueryInParens<'a>,
312 pub span: Span,
313}
314
315#[derive(Debug)]
316#[cfg_attr(feature = "serialize", derive(Serialize))]
317#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
318pub struct ContainerConditionNot<'a> {
319 pub keyword: Ident<'a>,
320 pub query_in_parens: QueryInParens<'a>,
321 pub span: Span,
322}
323
324#[derive(Debug)]
325#[cfg_attr(feature = "serialize", derive(Serialize))]
326#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
327pub struct ContainerConditionOr<'a> {
328 pub keyword: Ident<'a>,
329 pub query_in_parens: QueryInParens<'a>,
330 pub span: Span,
331}
332
333#[derive(Debug)]
334#[cfg_attr(feature = "serialize", derive(Serialize))]
335#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
336pub struct ContainerPrelude<'a> {
337 pub name: Option<InterpolableIdent<'a>>,
338 pub condition: ContainerCondition<'a>,
339 pub span: Span,
340}
341
342#[derive(Debug)]
343#[cfg_attr(feature = "serialize", derive(Serialize))]
344#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
345pub struct CustomMedia<'a> {
346 pub name: InterpolableIdent<'a>,
347 pub value: CustomMediaValue<'a>,
348 pub span: Span,
349}
350
351#[derive(Debug)]
352#[cfg_attr(feature = "serialize", derive(Serialize))]
353#[cfg_attr(feature = "serialize", serde(untagged))]
354pub enum CustomMediaValue<'a> {
355 MediaQueryList(MediaQueryList<'a>),
356 True(Ident<'a>),
357 False(Ident<'a>),
358}
359
360#[derive(Debug)]
361#[cfg_attr(feature = "serialize", derive(Serialize))]
362#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
363pub struct CustomSelector<'a> {
364 pub prefix_arg: Option<CustomSelectorArg<'a>>,
365 pub name: Ident<'a>,
366 pub args: Option<CustomSelectorArgs<'a>>,
367 pub span: Span,
368}
369
370#[derive(Debug)]
371#[cfg_attr(feature = "serialize", derive(Serialize))]
372#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
373pub struct CustomSelectorArg<'a> {
374 pub name: Ident<'a>,
375 pub span: Span,
376}
377
378#[derive(Debug)]
379#[cfg_attr(feature = "serialize", derive(Serialize))]
380#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
381pub struct CustomSelectorArgs<'a> {
382 pub args: Vec<'a, CustomSelectorArg<'a>>,
383 pub comma_spans: Vec<'a, Span>,
384 pub span: Span,
385}
386
387#[derive(Debug)]
388#[cfg_attr(feature = "serialize", derive(Serialize))]
389#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
390pub struct CustomSelectorPrelude<'a> {
391 pub custom_selector: CustomSelector<'a>,
392 pub selector: SelectorList<'a>,
393 pub span: Span,
394}
395
396#[derive(Debug)]
397#[cfg_attr(feature = "serialize", derive(Serialize))]
398#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
399pub struct Declaration<'a> {
400 pub name: InterpolableIdent<'a>,
401 pub name_suffix: Option<char>,
402 pub colon_span: Span,
403 pub value: Vec<'a, ComponentValue<'a>>,
404 pub important: Option<ImportantAnnotation<'a>>,
405 pub less_property_merge: Option<LessPropertyMerge>,
406 pub span: Span,
407}
408
409#[derive(Debug)]
410#[cfg_attr(feature = "serialize", derive(Serialize))]
411#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
412pub struct Delimiter {
413 pub kind: DelimiterKind,
414 pub span: Span,
415}
416
417#[derive(Debug)]
418#[cfg_attr(feature = "serialize", derive(Serialize))]
419pub enum DelimiterKind {
420 Comma,
421 Solidus,
422 Semicolon,
423}
424
425#[derive(Debug)]
426#[cfg_attr(feature = "serialize", derive(Serialize))]
427#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
428pub struct Dimension<'a> {
429 pub value: Number<'a>,
430 pub unit: Ident<'a>,
431 pub kind: DimensionKind,
432 pub span: Span,
433}
434
435#[derive(Debug)]
436#[cfg_attr(feature = "serialize", derive(Serialize))]
437pub enum DimensionKind {
438 Length,
439 Angle,
440 Duration,
441 Frequency,
442 Resolution,
443 Flex,
444 Unknown,
445}
446
447#[derive(Debug)]
448#[cfg_attr(feature = "serialize", derive(Serialize))]
449#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
450pub struct DocumentPrelude<'a> {
451 pub matchers: Vec<'a, DocumentPreludeMatcher<'a>>,
452 pub comma_spans: Vec<'a, Span>,
453 pub span: Span,
454}
455
456#[derive(Debug)]
457#[cfg_attr(feature = "serialize", derive(Serialize))]
458#[cfg_attr(feature = "serialize", serde(untagged))]
459pub enum DocumentPreludeMatcher<'a> {
460 Url(Url<'a>),
461 Function(Function<'a>),
462}
463
464#[derive(Debug)]
465#[cfg_attr(feature = "serialize", derive(Serialize))]
466#[cfg_attr(feature = "serialize", serde(untagged))]
467pub enum FontFamilyName<'a> {
468 Str(InterpolableStr<'a>),
469 Unquoted(UnquotedFontFamilyName<'a>),
470}
471
472#[derive(Debug)]
473#[cfg_attr(feature = "serialize", derive(Serialize))]
474#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
475pub struct Function<'a> {
476 pub name: FunctionName<'a>,
477 pub args: Vec<'a, ComponentValue<'a>>,
478 pub span: Span,
479}
480
481#[derive(Debug)]
482#[cfg_attr(feature = "serialize", derive(Serialize))]
483#[cfg_attr(feature = "serialize", serde(untagged))]
484pub enum FunctionName<'a> {
485 Ident(InterpolableIdent<'a>),
486 SassQualifiedName(Box<'a, SassQualifiedName<'a>>),
487 LessListFunction(LessListFunction),
488 LessFormatFunction(LessFormatFunction),
489}
490
491#[derive(Debug)]
492#[cfg_attr(feature = "serialize", derive(Serialize))]
493#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
494pub struct HexColor<'a> {
495 pub value: &'a str,
496 pub raw: &'a str,
497 pub span: Span,
498}
499
500#[derive(Debug)]
501#[cfg_attr(feature = "serialize", derive(Serialize))]
502#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
503pub struct Ident<'a> {
504 pub name: &'a str,
505 pub raw: &'a str,
506 pub span: Span,
507}
508
509#[derive(Debug)]
510#[cfg_attr(feature = "serialize", derive(Serialize))]
511#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
512pub struct ImportPrelude<'a> {
513 pub href: ImportPreludeHref<'a>,
514 pub layer: Option<ImportPreludeLayer<'a>>,
515 pub supports: Option<ImportPreludeSupports<'a>>,
516 pub media: Option<MediaQueryList<'a>>,
517 pub span: Span,
518}
519
520#[derive(Debug)]
521#[cfg_attr(feature = "serialize", derive(Serialize))]
522#[cfg_attr(feature = "serialize", serde(untagged))]
523pub enum ImportPreludeHref<'a> {
524 Str(InterpolableStr<'a>),
525 Url(Url<'a>),
526 Function(Function<'a>),
529}
530
531#[derive(Debug)]
532#[cfg_attr(feature = "serialize", derive(Serialize))]
533#[cfg_attr(feature = "serialize", serde(untagged))]
534pub enum ImportPreludeLayer<'a> {
535 Empty(Ident<'a>),
536 WithName(Function<'a>),
537}
538
539#[derive(Debug)]
540#[cfg_attr(feature = "serialize", derive(Serialize))]
541#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
542pub struct ImportPreludeSupports<'a> {
543 pub kind: ImportPreludeSupportsKind<'a>,
544 pub span: Span,
545}
546
547#[derive(Debug)]
548#[cfg_attr(feature = "serialize", derive(Serialize))]
549#[cfg_attr(feature = "serialize", serde(untagged))]
550pub enum ImportPreludeSupportsKind<'a> {
551 SupportsCondition(SupportsCondition<'a>),
552 Declaration(Declaration<'a>),
553}
554
555#[derive(Debug)]
556#[cfg_attr(feature = "serialize", derive(Serialize))]
557#[cfg_attr(feature = "serialize", serde(untagged))]
558pub enum InterpolableIdent<'a> {
559 Literal(Ident<'a>),
560 SassInterpolated(SassInterpolatedIdent<'a>),
561 LessInterpolated(LessInterpolatedIdent<'a>),
562 Placeholder(Placeholder<'a>),
563}
564
565#[derive(Debug)]
570#[cfg_attr(feature = "serialize", derive(Serialize))]
571#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
572pub struct Placeholder<'a> {
573 pub index: u32,
574 pub suffix: &'a str,
578 pub span: Span,
579}
580
581#[derive(Debug)]
582#[cfg_attr(feature = "serialize", derive(Serialize))]
583#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
584pub struct InterpolableIdentStaticPart<'a> {
585 pub value: &'a str,
586 pub raw: &'a str,
587 pub span: Span,
588}
589
590#[derive(Debug)]
591#[cfg_attr(feature = "serialize", derive(Serialize))]
592#[cfg_attr(feature = "serialize", serde(untagged))]
593pub enum InterpolableStr<'a> {
594 Literal(Str<'a>),
595 SassInterpolated(SassInterpolatedStr<'a>),
596 LessInterpolated(LessInterpolatedStr<'a>),
597}
598
599#[derive(Debug)]
600#[cfg_attr(feature = "serialize", derive(Serialize))]
601#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
602pub struct InterpolableStrStaticPart<'a> {
603 pub value: &'a str,
604 pub raw: &'a str,
605 pub span: Span,
606}
607
608#[derive(Debug)]
609#[cfg_attr(feature = "serialize", derive(Serialize))]
610#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
611pub struct InterpolableUrlStaticPart<'a> {
612 pub value: &'a str,
613 pub raw: &'a str,
614 pub span: Span,
615}
616
617#[derive(Debug)]
618#[cfg_attr(feature = "serialize", derive(Serialize))]
619#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
620pub struct IdSelector<'a> {
621 pub name: InterpolableIdent<'a>,
622 pub span: Span,
623}
624
625#[derive(Debug)]
626#[cfg_attr(feature = "serialize", derive(Serialize))]
627#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
628pub struct ImportantAnnotation<'a> {
629 pub ident: Ident<'a>,
630 pub span: Span,
631}
632
633#[derive(Debug)]
634#[cfg_attr(feature = "serialize", derive(Serialize))]
635#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
636pub struct KeyframeBlock<'a> {
637 pub selectors: Vec<'a, KeyframeSelector<'a>>,
638 pub comma_spans: Vec<'a, Span>,
639 pub block: SimpleBlock<'a>,
640 pub span: Span,
641}
642
643#[derive(Debug)]
644#[cfg_attr(feature = "serialize", derive(Serialize))]
645#[cfg_attr(feature = "serialize", serde(untagged))]
646pub enum KeyframeSelector<'a> {
647 Ident(InterpolableIdent<'a>),
648 Percentage(Percentage<'a>),
649}
650
651#[derive(Debug)]
652#[cfg_attr(feature = "serialize", derive(Serialize))]
653#[cfg_attr(feature = "serialize", serde(untagged))]
654pub enum KeyframesName<'a> {
655 Ident(InterpolableIdent<'a>),
656 Str(InterpolableStr<'a>),
657 LessVariable(LessVariable<'a>),
658 LessEscapedStr(LessEscapedStr<'a>),
659}
660
661#[derive(Debug)]
662#[cfg_attr(feature = "serialize", derive(Serialize))]
663#[cfg_attr(feature = "serialize", serde(untagged))]
664pub enum LanguageRange<'a> {
665 Str(InterpolableStr<'a>),
666 Ident(InterpolableIdent<'a>),
667}
668
669#[derive(Debug)]
670#[cfg_attr(feature = "serialize", derive(Serialize))]
671#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
672pub struct LanguageRangeList<'a> {
673 pub ranges: Vec<'a, LanguageRange<'a>>,
674 pub comma_spans: Vec<'a, Span>,
675 pub span: Span,
676}
677
678#[derive(Debug)]
679#[cfg_attr(feature = "serialize", derive(Serialize))]
680#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
681pub struct LayerName<'a> {
682 pub idents: Vec<'a, InterpolableIdent<'a>>,
683 pub span: Span,
684}
685
686#[derive(Debug)]
687#[cfg_attr(feature = "serialize", derive(Serialize))]
688#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
689pub struct LayerNames<'a> {
690 pub names: Vec<'a, LayerName<'a>>,
691 pub comma_spans: Vec<'a, Span>,
692 pub span: Span,
693}
694
695#[derive(Debug)]
696#[cfg_attr(feature = "serialize", derive(Serialize))]
697#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
698pub struct LessBinaryCondition<'a> {
699 pub left: Box<'a, LessCondition<'a>>,
700 pub op: LessBinaryConditionOperator,
701 pub right: Box<'a, LessCondition<'a>>,
702 pub span: Span,
703}
704
705#[derive(Debug)]
706#[cfg_attr(feature = "serialize", derive(Serialize))]
707#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
708pub struct LessBinaryConditionOperator {
709 pub kind: LessBinaryConditionOperatorKind,
710 pub span: Span,
711}
712
713#[derive(Debug)]
714#[cfg_attr(feature = "serialize", derive(Serialize))]
715pub enum LessBinaryConditionOperatorKind {
716 GreaterThan,
717 GreaterThanOrEqual,
718 LessThan,
719 LessThanOrEqual,
720 Equal,
721 EqualOrGreaterThan,
722 EqualOrLessThan,
723 And,
724 Or,
725}
726
727#[derive(Debug)]
728#[cfg_attr(feature = "serialize", derive(Serialize))]
729#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
730pub struct LessBinaryOperation<'a> {
731 pub left: Box<'a, ComponentValue<'a>>,
732 pub op: LessOperationOperator,
733 pub right: Box<'a, ComponentValue<'a>>,
734 pub span: Span,
735}
736
737#[derive(Debug)]
738#[cfg_attr(feature = "serialize", derive(Serialize))]
739#[cfg_attr(feature = "serialize", serde(untagged))]
740pub enum LessCondition<'a> {
741 Binary(LessBinaryCondition<'a>),
742 Negated(LessNegatedCondition<'a>),
743 Parenthesized(LessParenthesizedCondition<'a>),
744 Value(ComponentValue<'a>),
745}
746
747#[derive(Debug)]
748#[cfg_attr(feature = "serialize", derive(Serialize))]
749#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
750pub struct LessConditionalQualifiedRule<'a> {
751 pub selector: SelectorList<'a>,
752 pub guard: LessConditions<'a>,
753 pub block: SimpleBlock<'a>,
754 pub span: Span,
755}
756
757#[derive(Debug)]
758#[cfg_attr(feature = "serialize", derive(Serialize))]
759#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
760pub struct LessConditions<'a> {
761 pub conditions: Vec<'a, LessCondition<'a>>,
762 pub when_span: Span,
763 pub comma_spans: Vec<'a, Span>,
764 pub span: Span,
765}
766
767#[derive(Debug)]
768#[cfg_attr(feature = "serialize", derive(Serialize))]
769#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
770pub struct LessDetachedRuleset<'a> {
771 pub block: SimpleBlock<'a>,
772 pub span: Span,
773}
774
775#[derive(Debug)]
776#[cfg_attr(feature = "serialize", derive(Serialize))]
777#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
778pub struct LessEscapedStr<'a> {
779 pub str: Str<'a>,
780 pub span: Span,
781}
782
783#[derive(Debug)]
784#[cfg_attr(feature = "serialize", derive(Serialize))]
785#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
786pub struct LessExtend<'a> {
787 pub selector: ComplexSelector<'a>,
788 pub all: Option<Ident<'a>>,
789 pub span: Span,
790}
791
792#[derive(Debug)]
793#[cfg_attr(feature = "serialize", derive(Serialize))]
794#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
795pub struct LessExtendList<'a> {
796 pub elements: Vec<'a, LessExtend<'a>>,
797 pub comma_spans: Vec<'a, Span>,
798 pub span: Span,
799}
800
801#[derive(Debug)]
802#[cfg_attr(feature = "serialize", derive(Serialize))]
803#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
804pub struct LessExtendRule<'a> {
805 pub nesting_selector: NestingSelector<'a>,
806 pub name_of_extend: Ident<'a>,
807 pub extend: LessExtendList<'a>,
808 pub span: Span,
809}
810
811#[derive(Debug)]
812#[cfg_attr(feature = "serialize", derive(Serialize))]
813#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
814pub struct LessFormatFunction {
815 pub span: Span,
816}
817
818#[derive(Debug)]
819#[cfg_attr(feature = "serialize", derive(Serialize))]
820#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
821pub struct LessImportOptions<'a> {
822 pub names: Vec<'a, Ident<'a>>,
823 pub comma_spans: Vec<'a, Span>,
824 pub span: Span,
825}
826
827#[derive(Debug)]
828#[cfg_attr(feature = "serialize", derive(Serialize))]
829#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
830pub struct LessImportPrelude<'a> {
831 pub href: ImportPreludeHref<'a>,
832 pub options: LessImportOptions<'a>,
833 pub media: Option<MediaQueryList<'a>>,
834 pub span: Span,
835}
836
837#[derive(Debug)]
838#[cfg_attr(feature = "serialize", derive(Serialize))]
839#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
840pub struct LessInterpolatedIdent<'a> {
841 pub elements: Vec<'a, LessInterpolatedIdentElement<'a>>,
842 pub span: Span,
843}
844
845#[derive(Debug)]
846#[cfg_attr(feature = "serialize", derive(Serialize))]
847#[cfg_attr(feature = "serialize", serde(untagged))]
848pub enum LessInterpolatedIdentElement<'a> {
849 Variable(LessVariableInterpolation<'a>),
850 Property(LessPropertyInterpolation<'a>),
851 Static(InterpolableIdentStaticPart<'a>),
852}
853
854#[derive(Debug)]
855#[cfg_attr(feature = "serialize", derive(Serialize))]
856#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
857pub struct LessInterpolatedStr<'a> {
858 pub elements: Vec<'a, LessInterpolatedStrElement<'a>>,
859 pub span: Span,
860}
861
862#[derive(Debug)]
863#[cfg_attr(feature = "serialize", derive(Serialize))]
864#[cfg_attr(feature = "serialize", serde(untagged))]
865pub enum LessInterpolatedStrElement<'a> {
866 Variable(LessVariableInterpolation<'a>),
867 Property(LessPropertyInterpolation<'a>),
868 Static(InterpolableStrStaticPart<'a>),
869}
870
871#[derive(Debug)]
872#[cfg_attr(feature = "serialize", derive(Serialize))]
873#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
874pub struct LessJavaScriptSnippet<'a> {
875 pub code: &'a str,
876 pub raw: &'a str,
877 pub escaped: bool,
878 pub span: Span,
879}
880
881#[derive(Debug)]
882#[cfg_attr(feature = "serialize", derive(Serialize))]
883#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
884pub struct LessList<'a> {
885 pub elements: Vec<'a, ComponentValue<'a>>,
886 pub comma_spans: Option<Vec<'a, Span>>,
887 pub span: Span,
888}
889
890#[derive(Debug)]
891#[cfg_attr(feature = "serialize", derive(Serialize))]
892#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
893pub struct LessListFunction {
894 pub span: Span,
895}
896
897#[derive(Debug)]
898#[cfg_attr(feature = "serialize", derive(Serialize))]
899#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
900pub struct LessLookup<'a> {
901 pub name: Option<LessLookupName<'a>>,
902 pub span: Span,
903}
904
905#[derive(Debug)]
906#[cfg_attr(feature = "serialize", derive(Serialize))]
907#[cfg_attr(feature = "serialize", serde(untagged))]
908pub enum LessLookupName<'a> {
909 LessVariable(LessVariable<'a>),
910 LessVariableVariable(LessVariableVariable<'a>),
911 LessPropertyVariable(LessPropertyVariable<'a>),
912 Ident(Ident<'a>),
913}
914
915#[derive(Debug)]
916#[cfg_attr(feature = "serialize", derive(Serialize))]
917#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
918pub struct LessLookups<'a> {
919 pub lookups: Vec<'a, LessLookup<'a>>,
920 pub span: Span,
921}
922
923#[derive(Debug)]
924#[cfg_attr(feature = "serialize", derive(Serialize))]
925#[cfg_attr(feature = "serialize", serde(untagged))]
926pub enum LessMixinArgument<'a> {
927 Named(LessMixinNamedArgument<'a>),
928 Value(ComponentValue<'a>),
929 Variadic(LessMixinVariadicArgument<'a>),
930}
931
932#[derive(Debug)]
933#[cfg_attr(feature = "serialize", derive(Serialize))]
934#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
935pub struct LessMixinArguments<'a> {
936 pub args: Vec<'a, LessMixinArgument<'a>>,
937 pub is_comma_separated: bool,
938 pub separator_spans: Vec<'a, Span>,
939 pub span: Span,
940}
941
942#[derive(Debug)]
943#[cfg_attr(feature = "serialize", derive(Serialize))]
944#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
945pub struct LessMixinCall<'a> {
946 pub callee: LessMixinCallee<'a>,
947 pub args: Option<LessMixinArguments<'a>>,
948 pub important: Option<ImportantAnnotation<'a>>,
949 pub span: Span,
950}
951
952#[derive(Debug)]
953#[cfg_attr(feature = "serialize", derive(Serialize))]
954#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
955pub struct LessMixinCallee<'a> {
956 pub children: Vec<'a, LessMixinCalleeChild<'a>>,
957 pub span: Span,
958}
959
960#[derive(Debug)]
961#[cfg_attr(feature = "serialize", derive(Serialize))]
962#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
963pub struct LessMixinCalleeChild<'a> {
964 pub name: LessMixinName<'a>,
965 pub combinator: Option<Combinator>,
966 pub span: Span,
967}
968
969#[derive(Debug)]
970#[cfg_attr(feature = "serialize", derive(Serialize))]
971#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
972pub struct LessMixinDefinition<'a> {
973 pub name: LessMixinName<'a>,
974 pub params: LessMixinParameters<'a>,
975 pub guard: Option<LessConditions<'a>>,
976 pub block: SimpleBlock<'a>,
977 pub span: Span,
978}
979
980#[derive(Debug)]
981#[cfg_attr(feature = "serialize", derive(Serialize))]
982#[cfg_attr(feature = "serialize", serde(untagged))]
983pub enum LessMixinName<'a> {
984 ClassSelector(ClassSelector<'a>),
985 IdSelector(IdSelector<'a>),
986}
987
988#[derive(Debug)]
989#[cfg_attr(feature = "serialize", derive(Serialize))]
990#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
991pub struct LessMixinNamedArgument<'a> {
992 pub name: LessMixinParameterName<'a>,
993 pub colon_span: Span,
994 pub value: ComponentValue<'a>,
995 pub span: Span,
996}
997
998#[derive(Debug)]
999#[cfg_attr(feature = "serialize", derive(Serialize))]
1000#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1001pub struct LessMixinNamedParameter<'a> {
1002 pub name: LessMixinParameterName<'a>,
1003 pub value: Option<LessMixinNamedParameterDefaultValue<'a>>,
1004 pub span: Span,
1005}
1006
1007#[derive(Debug)]
1008#[cfg_attr(feature = "serialize", derive(Serialize))]
1009#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1010pub struct LessMixinNamedParameterDefaultValue<'a> {
1011 pub colon_span: Span,
1012 pub value: ComponentValue<'a>,
1013 pub span: Span,
1014}
1015
1016#[derive(Debug)]
1017#[cfg_attr(feature = "serialize", derive(Serialize))]
1018#[cfg_attr(feature = "serialize", serde(untagged))]
1019pub enum LessMixinParameter<'a> {
1020 Named(LessMixinNamedParameter<'a>),
1021 Unnamed(LessMixinUnnamedParameter<'a>),
1022 Variadic(LessMixinVariadicParameter<'a>),
1023}
1024
1025#[derive(Debug)]
1026#[cfg_attr(feature = "serialize", derive(Serialize))]
1027#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1028pub struct LessMixinParameters<'a> {
1029 pub params: Vec<'a, LessMixinParameter<'a>>,
1030 pub is_comma_separated: bool,
1031 pub separator_spans: Vec<'a, Span>,
1032 pub span: Span,
1033}
1034
1035#[derive(Debug)]
1036#[cfg_attr(feature = "serialize", derive(Serialize))]
1037#[cfg_attr(feature = "serialize", serde(untagged))]
1038pub enum LessMixinParameterName<'a> {
1039 Variable(LessVariable<'a>),
1040 PropertyVariable(LessPropertyVariable<'a>),
1041}
1042
1043#[derive(Debug)]
1044#[cfg_attr(feature = "serialize", derive(Serialize))]
1045#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1046pub struct LessMixinUnnamedParameter<'a> {
1047 pub value: ComponentValue<'a>,
1048 pub span: Span,
1049}
1050
1051#[derive(Debug)]
1052#[cfg_attr(feature = "serialize", derive(Serialize))]
1053#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1054pub struct LessMixinVariadicArgument<'a> {
1055 pub name: LessMixinParameterName<'a>,
1056 pub span: Span,
1057}
1058
1059#[derive(Debug)]
1060#[cfg_attr(feature = "serialize", derive(Serialize))]
1061#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1062pub struct LessMixinVariadicParameter<'a> {
1063 pub name: Option<LessMixinParameterName<'a>>,
1064 pub span: Span,
1065}
1066
1067#[derive(Debug)]
1068#[cfg_attr(feature = "serialize", derive(Serialize))]
1069#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1070pub struct LessNamespaceValue<'a> {
1071 pub callee: LessNamespaceValueCallee<'a>,
1072 pub lookups: LessLookups<'a>,
1073 pub span: Span,
1074}
1075
1076#[derive(Debug)]
1077#[cfg_attr(feature = "serialize", derive(Serialize))]
1078#[cfg_attr(feature = "serialize", serde(untagged))]
1079pub enum LessNamespaceValueCallee<'a> {
1080 LessMixinCall(LessMixinCall<'a>),
1081 LessVariable(LessVariable<'a>),
1082}
1083
1084#[derive(Debug)]
1085#[cfg_attr(feature = "serialize", derive(Serialize))]
1086#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1087pub struct LessNegatedCondition<'a> {
1088 pub condition: Box<'a, LessCondition<'a>>,
1089 pub span: Span,
1090}
1091
1092#[derive(Debug)]
1093#[cfg_attr(feature = "serialize", derive(Serialize))]
1094#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1095pub struct LessNegativeValue<'a> {
1096 pub value: Box<'a, ComponentValue<'a>>,
1097 pub span: Span,
1098}
1099
1100#[derive(Debug)]
1101#[cfg_attr(feature = "serialize", derive(Serialize))]
1102#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1103pub struct LessOperationOperator {
1104 pub kind: LessOperationOperatorKind,
1105 pub span: Span,
1106}
1107
1108#[derive(Debug)]
1109#[cfg_attr(feature = "serialize", derive(Serialize))]
1110pub enum LessOperationOperatorKind {
1111 Multiply,
1112 Division,
1113 Plus,
1114 Minus,
1115}
1116
1117#[derive(Debug)]
1118#[cfg_attr(feature = "serialize", derive(Serialize))]
1119#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1120pub struct LessParenthesizedCondition<'a> {
1121 pub condition: Box<'a, LessCondition<'a>>,
1122 pub span: Span,
1123}
1124
1125#[derive(Debug)]
1126#[cfg_attr(feature = "serialize", derive(Serialize))]
1127#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1128pub struct LessParenthesizedOperation<'a> {
1129 pub operation: Box<'a, ComponentValue<'a>>,
1130 pub span: Span,
1131}
1132
1133#[derive(Debug)]
1134#[cfg_attr(feature = "serialize", derive(Serialize))]
1135#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1136pub struct LessPercentKeyword {
1137 pub span: Span,
1138}
1139
1140#[derive(Debug)]
1141#[cfg_attr(feature = "serialize", derive(Serialize))]
1142#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1143pub struct LessPlugin<'a> {
1144 pub path: LessPluginPath<'a>,
1145 pub args: Option<TokenSeq<'a>>,
1146 pub span: Span,
1147}
1148
1149#[derive(Debug)]
1150#[cfg_attr(feature = "serialize", derive(Serialize))]
1151#[cfg_attr(feature = "serialize", serde(untagged))]
1152pub enum LessPluginPath<'a> {
1153 Str(Str<'a>),
1154 Url(Url<'a>),
1155}
1156
1157#[derive(Debug)]
1158#[cfg_attr(feature = "serialize", derive(Serialize))]
1159#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1160pub struct LessPropertyInterpolation<'a> {
1161 pub name: Ident<'a>,
1162 pub span: Span,
1163}
1164
1165#[derive(Debug)]
1166#[cfg_attr(feature = "serialize", derive(Serialize))]
1167#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1168pub struct LessPropertyMerge {
1169 pub kind: LessPropertyMergeKind,
1170 pub span: Span,
1171}
1172
1173#[derive(Debug)]
1174#[cfg_attr(feature = "serialize", derive(Serialize))]
1175pub enum LessPropertyMergeKind {
1176 Comma,
1177 Space,
1178}
1179
1180#[derive(Debug)]
1181#[cfg_attr(feature = "serialize", derive(Serialize))]
1182#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1183pub struct LessPropertyVariable<'a> {
1184 pub name: Ident<'a>,
1185 pub span: Span,
1186}
1187
1188#[derive(Debug)]
1189#[cfg_attr(feature = "serialize", derive(Serialize))]
1190#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1191pub struct LessVariable<'a> {
1192 pub name: Ident<'a>,
1193 pub span: Span,
1194}
1195
1196#[derive(Debug)]
1197#[cfg_attr(feature = "serialize", derive(Serialize))]
1198#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1199pub struct LessVariableCall<'a> {
1200 pub variable: LessVariable<'a>,
1201 pub span: Span,
1202}
1203
1204#[derive(Debug)]
1205#[cfg_attr(feature = "serialize", derive(Serialize))]
1206#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1207pub struct LessVariableDeclaration<'a> {
1208 pub name: LessVariable<'a>,
1209 pub colon_span: Span,
1210 pub value: ComponentValue<'a>,
1211 pub span: Span,
1212}
1213
1214#[derive(Debug)]
1215#[cfg_attr(feature = "serialize", derive(Serialize))]
1216#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1217pub struct LessVariableInterpolation<'a> {
1218 pub name: Ident<'a>,
1219 pub span: Span,
1220}
1221
1222#[derive(Debug)]
1223#[cfg_attr(feature = "serialize", derive(Serialize))]
1224#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1225pub struct LessVariableVariable<'a> {
1226 pub variable: LessVariable<'a>,
1227 pub span: Span,
1228}
1229
1230#[derive(Debug)]
1231#[cfg_attr(feature = "serialize", derive(Serialize))]
1232#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1233pub struct MediaAnd<'a> {
1234 pub keyword: Ident<'a>,
1235 pub media_in_parens: MediaInParens<'a>,
1236 pub span: Span,
1237}
1238
1239#[derive(Debug)]
1240#[cfg_attr(feature = "serialize", derive(Serialize))]
1241#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1242pub struct MediaCondition<'a> {
1243 pub conditions: Vec<'a, MediaConditionKind<'a>>,
1244 pub span: Span,
1245}
1246
1247#[derive(Debug)]
1248#[cfg_attr(feature = "serialize", derive(Serialize))]
1249#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1250pub struct MediaConditionAfterMediaType<'a> {
1251 pub and: Ident<'a>,
1252 pub condition: MediaCondition<'a>,
1253 pub span: Span,
1254}
1255
1256#[derive(Debug)]
1257#[cfg_attr(feature = "serialize", derive(Serialize))]
1258#[cfg_attr(feature = "serialize", serde(untagged))]
1259pub enum MediaConditionKind<'a> {
1260 MediaInParens(MediaInParens<'a>),
1261 And(MediaAnd<'a>),
1262 Or(MediaOr<'a>),
1263 Not(MediaNot<'a>),
1264}
1265
1266#[derive(Debug)]
1267#[cfg_attr(feature = "serialize", derive(Serialize))]
1268#[cfg_attr(feature = "serialize", serde(untagged))]
1269pub enum MediaFeature<'a> {
1270 Plain(MediaFeaturePlain<'a>),
1271 Boolean(MediaFeatureBoolean<'a>),
1272 Range(MediaFeatureRange<'a>),
1273 RangeInterval(MediaFeatureRangeInterval<'a>),
1274}
1275
1276#[derive(Debug)]
1277#[cfg_attr(feature = "serialize", derive(Serialize))]
1278#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1279pub struct MediaFeatureComparison {
1280 pub kind: MediaFeatureComparisonKind,
1281 pub span: Span,
1282}
1283
1284#[derive(Debug)]
1285#[cfg_attr(feature = "serialize", derive(Serialize))]
1286pub enum MediaFeatureComparisonKind {
1287 LessThan,
1288 LessThanOrEqual,
1289 GreaterThan,
1290 GreaterThanOrEqual,
1291 Equal,
1292}
1293
1294#[derive(Debug)]
1295#[cfg_attr(feature = "serialize", derive(Serialize))]
1296#[cfg_attr(feature = "serialize", serde(untagged))]
1297pub enum MediaFeatureName<'a> {
1298 Ident(InterpolableIdent<'a>),
1299 PostcssSimpleVar(PostcssSimpleVar<'a>),
1300 SassVariable(SassVariable<'a>),
1301}
1302
1303#[derive(Debug)]
1304#[cfg_attr(feature = "serialize", derive(Serialize))]
1305#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1306pub struct MediaFeatureBoolean<'a> {
1307 pub name: MediaFeatureName<'a>,
1308 pub span: Span,
1309}
1310
1311#[derive(Debug)]
1312#[cfg_attr(feature = "serialize", derive(Serialize))]
1313#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1314pub struct MediaFeaturePlain<'a> {
1315 pub name: MediaFeatureName<'a>,
1316 pub colon_span: Span,
1317 pub value: ComponentValue<'a>,
1318 pub span: Span,
1319}
1320
1321#[derive(Debug)]
1322#[cfg_attr(feature = "serialize", derive(Serialize))]
1323#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1324pub struct MediaFeatureRange<'a> {
1325 pub left: ComponentValue<'a>,
1326 pub comparison: MediaFeatureComparison,
1327 pub right: ComponentValue<'a>,
1328 pub span: Span,
1329}
1330
1331#[derive(Debug)]
1332#[cfg_attr(feature = "serialize", derive(Serialize))]
1333#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1334pub struct MediaFeatureRangeInterval<'a> {
1335 pub left: ComponentValue<'a>,
1336 pub left_comparison: MediaFeatureComparison,
1337 pub name: MediaFeatureName<'a>,
1338 pub right_comparison: MediaFeatureComparison,
1339 pub right: ComponentValue<'a>,
1340 pub span: Span,
1341}
1342
1343#[derive(Debug)]
1344#[cfg_attr(feature = "serialize", derive(Serialize))]
1345#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1346pub struct MediaInParens<'a> {
1347 pub kind: MediaInParensKind<'a>,
1348 pub span: Span,
1349}
1350
1351#[derive(Debug)]
1352#[cfg_attr(feature = "serialize", derive(Serialize))]
1353#[cfg_attr(feature = "serialize", serde(untagged))]
1354pub enum MediaInParensKind<'a> {
1355 MediaCondition(MediaCondition<'a>),
1356 MediaFeature(Box<'a, MediaFeature<'a>>),
1357 GeneralEnclosed(TokenSeq<'a>),
1358 SassInterpolation(SassInterpolatedIdent<'a>),
1359}
1360
1361#[derive(Debug)]
1362#[cfg_attr(feature = "serialize", derive(Serialize))]
1363#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1364pub struct MediaNot<'a> {
1365 pub keyword: Ident<'a>,
1366 pub media_in_parens: MediaInParens<'a>,
1367 pub span: Span,
1368}
1369
1370#[derive(Debug)]
1371#[cfg_attr(feature = "serialize", derive(Serialize))]
1372#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1373pub struct MediaOr<'a> {
1374 pub keyword: Ident<'a>,
1375 pub media_in_parens: MediaInParens<'a>,
1376 pub span: Span,
1377}
1378
1379#[derive(Debug)]
1380#[cfg_attr(feature = "serialize", derive(Serialize))]
1381#[cfg_attr(feature = "serialize", serde(untagged))]
1382pub enum MediaQuery<'a> {
1383 ConditionOnly(MediaCondition<'a>),
1384 WithType(MediaQueryWithType<'a>),
1385 Function(Function<'a>),
1386 LessVariable(LessVariable<'a>),
1387 LessNamespaceValue(Box<'a, LessNamespaceValue<'a>>),
1388}
1389
1390#[derive(Debug)]
1391#[cfg_attr(feature = "serialize", derive(Serialize))]
1392#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1393pub struct MediaQueryList<'a> {
1394 pub queries: Vec<'a, MediaQuery<'a>>,
1395 pub comma_spans: Vec<'a, Span>,
1396 pub span: Span,
1397}
1398
1399#[derive(Debug)]
1400#[cfg_attr(feature = "serialize", derive(Serialize))]
1401#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1402pub struct MediaQueryWithType<'a> {
1403 pub modifier: Option<Ident<'a>>,
1404 pub media_type: InterpolableIdent<'a>,
1405 pub condition: Option<MediaConditionAfterMediaType<'a>>,
1406 pub span: Span,
1407}
1408
1409#[derive(Debug)]
1410#[cfg_attr(feature = "serialize", derive(Serialize))]
1411#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1412pub struct NamespacePrelude<'a> {
1413 pub prefix: Option<InterpolableIdent<'a>>,
1414 pub uri: NamespacePreludeUri<'a>,
1415 pub span: Span,
1416}
1417
1418#[derive(Debug)]
1419#[cfg_attr(feature = "serialize", derive(Serialize))]
1420#[cfg_attr(feature = "serialize", serde(untagged))]
1421pub enum NamespacePreludeUri<'a> {
1422 Str(InterpolableStr<'a>),
1423 Url(Url<'a>),
1424}
1425
1426#[derive(Debug)]
1427#[cfg_attr(feature = "serialize", derive(Serialize))]
1428#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1429pub struct NestingSelector<'a> {
1430 pub suffix: Option<InterpolableIdent<'a>>,
1431 pub span: Span,
1432}
1433
1434#[derive(Debug)]
1435#[cfg_attr(feature = "serialize", derive(Serialize))]
1436#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1437pub struct NsPrefix<'a> {
1438 pub kind: Option<NsPrefixKind<'a>>,
1439 pub span: Span,
1440}
1441
1442#[derive(Debug)]
1443#[cfg_attr(feature = "serialize", derive(Serialize))]
1444#[cfg_attr(feature = "serialize", serde(untagged))]
1445pub enum NsPrefixKind<'a> {
1446 Ident(InterpolableIdent<'a>),
1447 Universal(NsPrefixUniversal),
1448}
1449
1450#[derive(Debug)]
1451#[cfg_attr(feature = "serialize", derive(Serialize))]
1452#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1453pub struct NsPrefixUniversal {
1454 pub span: Span,
1455}
1456
1457#[derive(Debug)]
1458#[cfg_attr(feature = "serialize", derive(Serialize))]
1459#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1460pub struct Nth<'a> {
1461 pub index: NthIndex<'a>,
1462 pub matcher: Option<NthMatcher<'a>>,
1463 pub span: Span,
1464}
1465
1466#[derive(Debug)]
1467#[cfg_attr(feature = "serialize", derive(Serialize))]
1468#[cfg_attr(feature = "serialize", serde(untagged))]
1469pub enum NthIndex<'a> {
1470 Odd(Ident<'a>),
1471 Even(Ident<'a>),
1472 Integer(Number<'a>),
1473 AnPlusB(AnPlusB),
1474}
1475
1476#[derive(Debug)]
1477#[cfg_attr(feature = "serialize", derive(Serialize))]
1478#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1479pub struct NthMatcher<'a> {
1480 pub selector: Option<SelectorList<'a>>,
1481 pub span: Span,
1482}
1483
1484#[derive(Debug)]
1485#[cfg_attr(feature = "serialize", derive(Serialize))]
1486#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1487pub struct Number<'a> {
1488 pub value: f32,
1489 pub raw: &'a str,
1490 pub span: Span,
1491}
1492
1493#[derive(Debug)]
1494#[cfg_attr(feature = "serialize", derive(Serialize))]
1495#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1496pub struct PageSelector<'a> {
1497 pub name: Option<InterpolableIdent<'a>>,
1498 pub pseudo: Vec<'a, PseudoPage<'a>>,
1499 pub span: Span,
1500}
1501
1502#[derive(Debug)]
1503#[cfg_attr(feature = "serialize", derive(Serialize))]
1504#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1505pub struct PageSelectorList<'a> {
1506 pub selectors: Vec<'a, PageSelector<'a>>,
1507 pub comma_spans: Vec<'a, Span>,
1508 pub span: Span,
1509}
1510
1511#[derive(Debug)]
1512#[cfg_attr(feature = "serialize", derive(Serialize))]
1513#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1514pub struct Percentage<'a> {
1515 pub value: Number<'a>,
1516 pub span: Span,
1517}
1518
1519#[derive(Debug)]
1520#[cfg_attr(feature = "serialize", derive(Serialize))]
1521#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1522pub struct PostcssSimpleVar<'a> {
1523 pub name: Ident<'a>,
1524 pub span: Span,
1525}
1526
1527#[derive(Debug)]
1528#[cfg_attr(feature = "serialize", derive(Serialize))]
1529#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1530pub struct PostcssSimpleVarDeclaration<'a> {
1531 pub name: PostcssSimpleVar<'a>,
1532 pub colon_span: Span,
1533 pub value: Vec<'a, ComponentValue<'a>>,
1534 pub span: Span,
1535}
1536
1537#[derive(Debug)]
1538#[cfg_attr(feature = "serialize", derive(Serialize))]
1539#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1540pub struct PseudoClassSelector<'a> {
1541 pub name: InterpolableIdent<'a>,
1542 pub arg: Option<PseudoClassSelectorArg<'a>>,
1543 pub span: Span,
1544}
1545
1546#[derive(Debug)]
1547#[cfg_attr(feature = "serialize", derive(Serialize))]
1548#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1549pub struct PseudoClassSelectorArg<'a> {
1550 pub kind: PseudoClassSelectorArgKind<'a>,
1551 pub l_paren: Span,
1552 pub r_paren: Span,
1553 pub span: Span,
1554}
1555
1556#[derive(Debug)]
1557#[cfg_attr(feature = "serialize", derive(Serialize))]
1558#[cfg_attr(feature = "serialize", serde(untagged))]
1559pub enum PseudoClassSelectorArgKind<'a> {
1560 CompoundSelector(CompoundSelector<'a>),
1561 CompoundSelectorList(CompoundSelectorList<'a>),
1562 Ident(InterpolableIdent<'a>),
1563 LanguageRangeList(LanguageRangeList<'a>),
1564 Nth(Nth<'a>),
1565 Number(Number<'a>),
1566 RelativeSelectorList(RelativeSelectorList<'a>),
1567 SelectorList(SelectorList<'a>),
1568 LessExtendList(LessExtendList<'a>),
1569 TokenSeq(TokenSeq<'a>),
1570}
1571
1572#[derive(Debug)]
1573#[cfg_attr(feature = "serialize", derive(Serialize))]
1574#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1575pub struct PseudoElementSelector<'a> {
1576 pub name: InterpolableIdent<'a>,
1577 pub arg: Option<PseudoElementSelectorArg<'a>>,
1578 pub span: Span,
1579}
1580
1581#[derive(Debug)]
1582#[cfg_attr(feature = "serialize", derive(Serialize))]
1583#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1584pub struct PseudoElementSelectorArg<'a> {
1585 pub kind: PseudoElementSelectorArgKind<'a>,
1586 pub l_paren: Span,
1587 pub r_paren: Span,
1588 pub span: Span,
1589}
1590
1591#[derive(Debug)]
1592#[cfg_attr(feature = "serialize", derive(Serialize))]
1593#[cfg_attr(feature = "serialize", serde(untagged))]
1594pub enum PseudoElementSelectorArgKind<'a> {
1595 CompoundSelector(CompoundSelector<'a>),
1596 Ident(InterpolableIdent<'a>),
1597 TokenSeq(TokenSeq<'a>),
1598}
1599
1600#[derive(Debug)]
1601#[cfg_attr(feature = "serialize", derive(Serialize))]
1602#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1603pub struct PseudoPage<'a> {
1604 pub name: InterpolableIdent<'a>,
1605 pub span: Span,
1606}
1607
1608#[derive(Debug)]
1609#[cfg_attr(feature = "serialize", derive(Serialize))]
1610#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1611pub struct QualifiedRule<'a> {
1612 pub selector: SelectorList<'a>,
1613 pub block: SimpleBlock<'a>,
1614 pub span: Span,
1615}
1616
1617#[derive(Debug)]
1618#[cfg_attr(feature = "serialize", derive(Serialize))]
1619#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1620pub struct QueryInParens<'a> {
1621 pub kind: QueryInParensKind<'a>,
1622 pub span: Span,
1623}
1624
1625#[derive(Debug)]
1626#[cfg_attr(feature = "serialize", derive(Serialize))]
1627#[cfg_attr(feature = "serialize", serde(untagged))]
1628pub enum QueryInParensKind<'a> {
1629 ContainerCondition(ContainerCondition<'a>),
1630 SizeFeature(Box<'a, MediaFeature<'a>>),
1631 StyleQuery(StyleQuery<'a>),
1632 ScrollState(Box<'a, MediaFeature<'a>>),
1633}
1634
1635#[derive(Debug)]
1636#[cfg_attr(feature = "serialize", derive(Serialize))]
1637#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1638pub struct Ratio<'a> {
1639 pub numerator: Number<'a>,
1640 pub solidus_span: Span,
1641 pub denominator: Number<'a>,
1642 pub span: Span,
1643}
1644
1645#[derive(Debug)]
1646#[cfg_attr(feature = "serialize", derive(Serialize))]
1647#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1648pub struct RelativeSelector<'a> {
1649 pub combinator: Option<Combinator>,
1650 pub complex_selector: ComplexSelector<'a>,
1651 pub span: Span,
1652}
1653
1654#[derive(Debug)]
1655#[cfg_attr(feature = "serialize", derive(Serialize))]
1656#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1657pub struct RelativeSelectorList<'a> {
1658 pub selectors: Vec<'a, RelativeSelector<'a>>,
1659 pub comma_spans: Vec<'a, Span>,
1660 pub span: Span,
1661}
1662
1663#[derive(Debug)]
1664#[cfg_attr(feature = "serialize", derive(Serialize))]
1665#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1666pub struct SassArbitraryArgument<'a> {
1667 pub value: Box<'a, ComponentValue<'a>>,
1668 pub span: Span,
1669}
1670
1671#[derive(Debug)]
1672#[cfg_attr(feature = "serialize", derive(Serialize))]
1673#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1674pub struct SassArbitraryParameter<'a> {
1675 pub name: SassVariable<'a>,
1676 pub span: Span,
1677}
1678
1679#[derive(Debug)]
1680#[cfg_attr(feature = "serialize", derive(Serialize))]
1681#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1682pub struct SassAtRoot<'a> {
1683 pub kind: SassAtRootKind<'a>,
1684 pub span: Span,
1685}
1686
1687#[derive(Debug)]
1688#[cfg_attr(feature = "serialize", derive(Serialize))]
1689#[cfg_attr(feature = "serialize", serde(untagged))]
1690pub enum SassAtRootKind<'a> {
1691 Selector(SelectorList<'a>),
1692 Query(SassAtRootQuery<'a>),
1693}
1694
1695#[derive(Debug)]
1696#[cfg_attr(feature = "serialize", derive(Serialize))]
1697#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1698pub struct SassAtRootQuery<'a> {
1699 pub modifier: SassAtRootQueryModifier,
1700 pub colon_span: Span,
1701 pub rules: Vec<'a, SassAtRootQueryRule<'a>>,
1703 pub span: Span,
1704}
1705
1706#[derive(Debug)]
1707#[cfg_attr(feature = "serialize", derive(Serialize))]
1708#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1709pub struct SassAtRootQueryModifier {
1710 pub kind: SassAtRootQueryModifierKind,
1711 pub span: Span,
1712}
1713
1714#[derive(Debug)]
1715#[cfg_attr(feature = "serialize", derive(Serialize))]
1716pub enum SassAtRootQueryModifierKind {
1717 With,
1718 Without,
1719}
1720
1721#[derive(Debug)]
1722#[cfg_attr(feature = "serialize", derive(Serialize))]
1723#[cfg_attr(feature = "serialize", serde(untagged))]
1724pub enum SassAtRootQueryRule<'a> {
1725 Ident(InterpolableIdent<'a>),
1726 Str(InterpolableStr<'a>),
1727}
1728
1729#[derive(Debug)]
1730#[cfg_attr(feature = "serialize", derive(Serialize))]
1731#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1732pub struct SassBinaryExpression<'a> {
1733 pub left: Box<'a, ComponentValue<'a>>,
1734 pub op: SassBinaryOperator,
1735 pub right: Box<'a, ComponentValue<'a>>,
1736 pub span: Span,
1737}
1738
1739#[derive(Debug)]
1740#[cfg_attr(feature = "serialize", derive(Serialize))]
1741#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1742pub struct SassBinaryOperator {
1743 pub kind: SassBinaryOperatorKind,
1744 pub span: Span,
1745}
1746
1747#[derive(Debug)]
1748#[cfg_attr(feature = "serialize", derive(Serialize))]
1749pub enum SassBinaryOperatorKind {
1750 Multiply,
1751 Division,
1752 Modulo,
1753 Plus,
1754 Minus,
1755 GreaterThan,
1756 GreaterThanOrEqual,
1757 LessThan,
1758 LessThanOrEqual,
1759 EqualsEquals,
1760 ExclamationEquals,
1761 And,
1762 Or,
1763}
1764
1765#[derive(Debug)]
1766#[cfg_attr(feature = "serialize", derive(Serialize))]
1767#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1768pub struct SassConditionalClause<'a> {
1769 pub condition: ComponentValue<'a>,
1770 pub block: SimpleBlock<'a>,
1771 pub span: Span,
1772}
1773
1774#[derive(Debug)]
1775#[cfg_attr(feature = "serialize", derive(Serialize))]
1776#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1777pub struct SassContent<'a> {
1778 pub args: Vec<'a, ComponentValue<'a>>,
1779 pub comma_spans: Vec<'a, Span>,
1780 pub span: Span,
1781}
1782
1783#[derive(Debug)]
1784#[cfg_attr(feature = "serialize", derive(Serialize))]
1785#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1786pub struct SassEach<'a> {
1787 pub bindings: Vec<'a, SassVariable<'a>>,
1788 pub comma_spans: Vec<'a, Span>,
1789 pub in_span: Span,
1790 pub expr: ComponentValue<'a>,
1791 pub span: Span,
1792}
1793
1794#[derive(Debug)]
1795#[cfg_attr(feature = "serialize", derive(Serialize))]
1796#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1797pub struct SassExtend<'a> {
1798 pub selectors: CompoundSelectorList<'a>,
1799 pub optional: Option<SassFlag<'a>>,
1800 pub span: Span,
1801}
1802
1803#[derive(Debug)]
1804#[cfg_attr(feature = "serialize", derive(Serialize))]
1805#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1806pub struct SassFlag<'a> {
1807 pub keyword: Ident<'a>,
1808 pub span: Span,
1809}
1810
1811#[derive(Debug)]
1812#[cfg_attr(feature = "serialize", derive(Serialize))]
1813#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1814pub struct SassFor<'a> {
1815 pub binding: SassVariable<'a>,
1816 pub from_span: Span,
1817 pub start: ComponentValue<'a>,
1818 pub end: ComponentValue<'a>,
1819 pub boundary: SassForBoundary,
1820 pub span: Span,
1821}
1822
1823#[derive(Debug)]
1824#[cfg_attr(feature = "serialize", derive(Serialize))]
1825#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1826pub struct SassForBoundary {
1827 pub kind: SassForBoundaryKind,
1828 pub span: Span,
1829}
1830
1831#[derive(Debug)]
1832#[cfg_attr(feature = "serialize", derive(Serialize))]
1833pub enum SassForBoundaryKind {
1834 Inclusive,
1835 Exclusive,
1836}
1837
1838#[derive(Debug)]
1839#[cfg_attr(feature = "serialize", derive(Serialize))]
1840#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1841pub struct SassForward<'a> {
1842 pub path: InterpolableStr<'a>,
1843 pub prefix: Option<SassForwardPrefix<'a>>,
1844 pub visibility: Option<SassForwardVisibility<'a>>,
1845 pub config: Option<SassModuleConfig<'a>>,
1846 pub span: Span,
1847}
1848
1849#[derive(Debug)]
1850#[cfg_attr(feature = "serialize", derive(Serialize))]
1851#[cfg_attr(feature = "serialize", serde(untagged))]
1852pub enum SassForwardMember<'a> {
1853 Ident(Ident<'a>),
1854 Variable(SassVariable<'a>),
1855}
1856
1857#[derive(Debug)]
1858#[cfg_attr(feature = "serialize", derive(Serialize))]
1859#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1860pub struct SassForwardPrefix<'a> {
1861 pub as_span: Span,
1862 pub name: Ident<'a>,
1863 pub span: Span,
1864}
1865
1866#[derive(Debug)]
1867#[cfg_attr(feature = "serialize", derive(Serialize))]
1868#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1869pub struct SassForwardVisibility<'a> {
1870 pub modifier: SassForwardVisibilityModifier,
1871 pub members: Vec<'a, SassForwardMember<'a>>,
1872 pub comma_spans: Vec<'a, Span>,
1873 pub span: Span,
1874}
1875
1876#[derive(Debug)]
1877#[cfg_attr(feature = "serialize", derive(Serialize))]
1878#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1879pub struct SassForwardVisibilityModifier {
1880 pub kind: SassForwardVisibilityModifierKind,
1881 pub span: Span,
1882}
1883
1884#[derive(Debug)]
1885#[cfg_attr(feature = "serialize", derive(Serialize))]
1886pub enum SassForwardVisibilityModifierKind {
1887 Hide,
1888 Show,
1889}
1890
1891#[derive(Debug)]
1892#[cfg_attr(feature = "serialize", derive(Serialize))]
1893#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1894pub struct SassFunction<'a> {
1895 pub name: Ident<'a>,
1896 pub parameters: SassParameters<'a>,
1897 pub span: Span,
1898}
1899
1900#[derive(Debug)]
1901#[cfg_attr(feature = "serialize", derive(Serialize))]
1902#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1903pub struct SassIfAtRule<'a> {
1904 pub if_clause: SassConditionalClause<'a>,
1905 pub else_if_clauses: Vec<'a, SassConditionalClause<'a>>,
1906 pub else_clause: Option<SimpleBlock<'a>>,
1907 pub else_spans: Vec<'a, Span>,
1908 pub span: Span,
1909}
1910
1911#[derive(Debug)]
1912#[cfg_attr(feature = "serialize", derive(Serialize))]
1913#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1914pub struct SassImportPrelude<'a> {
1915 pub paths: Vec<'a, Str<'a>>,
1916 pub comma_spans: Vec<'a, Span>,
1917 pub span: Span,
1918}
1919
1920#[derive(Debug)]
1921#[cfg_attr(feature = "serialize", derive(Serialize))]
1922#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1923pub struct SassInclude<'a> {
1924 pub name: FunctionName<'a>,
1925 pub arguments: Option<SassIncludeArgs<'a>>,
1926 pub content_block_params: Option<SassIncludeContentBlockParams<'a>>,
1927 pub span: Span,
1928}
1929
1930#[derive(Debug)]
1931#[cfg_attr(feature = "serialize", derive(Serialize))]
1932#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1933pub struct SassIncludeArgs<'a> {
1934 pub args: Vec<'a, ComponentValue<'a>>,
1935 pub comma_spans: Vec<'a, Span>,
1936 pub span: Span,
1937}
1938
1939#[derive(Debug)]
1940#[cfg_attr(feature = "serialize", derive(Serialize))]
1941#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1942pub struct SassIncludeContentBlockParams<'a> {
1943 pub using_span: Span,
1944 pub params: SassParameters<'a>,
1945 pub span: Span,
1946}
1947
1948#[derive(Debug)]
1949#[cfg_attr(feature = "serialize", derive(Serialize))]
1950#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1951pub struct SassInterpolatedIdent<'a> {
1952 pub elements: Vec<'a, SassInterpolatedIdentElement<'a>>,
1953 pub span: Span,
1954}
1955
1956#[derive(Debug)]
1957#[cfg_attr(feature = "serialize", derive(Serialize))]
1958#[cfg_attr(feature = "serialize", serde(untagged))]
1959pub enum SassInterpolatedIdentElement<'a> {
1960 Expression(ComponentValue<'a>),
1961 Static(InterpolableIdentStaticPart<'a>),
1962}
1963
1964#[derive(Debug)]
1965#[cfg_attr(feature = "serialize", derive(Serialize))]
1966#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1967pub struct SassInterpolatedStr<'a> {
1968 pub elements: Vec<'a, SassInterpolatedStrElement<'a>>,
1969 pub span: Span,
1970}
1971
1972#[derive(Debug)]
1973#[cfg_attr(feature = "serialize", derive(Serialize))]
1974#[cfg_attr(feature = "serialize", serde(untagged))]
1975pub enum SassInterpolatedStrElement<'a> {
1976 Expression(ComponentValue<'a>),
1977 Static(InterpolableStrStaticPart<'a>),
1978}
1979
1980#[derive(Debug)]
1981#[cfg_attr(feature = "serialize", derive(Serialize))]
1982#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1983pub struct SassInterpolatedUrl<'a> {
1984 pub elements: Vec<'a, SassInterpolatedUrlElement<'a>>,
1985 pub span: Span,
1986}
1987
1988#[derive(Debug)]
1989#[cfg_attr(feature = "serialize", derive(Serialize))]
1990#[cfg_attr(feature = "serialize", serde(untagged))]
1991pub enum SassInterpolatedUrlElement<'a> {
1992 Expression(ComponentValue<'a>),
1993 Static(InterpolableUrlStaticPart<'a>),
1994}
1995
1996#[derive(Debug)]
1997#[cfg_attr(feature = "serialize", derive(Serialize))]
1998#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1999pub struct SassKeywordArgument<'a> {
2000 pub name: SassVariable<'a>,
2001 pub colon_span: Span,
2002 pub value: Box<'a, ComponentValue<'a>>,
2003 pub span: Span,
2004}
2005
2006#[derive(Debug)]
2007#[cfg_attr(feature = "serialize", derive(Serialize))]
2008#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2009pub struct SassList<'a> {
2010 pub elements: Vec<'a, ComponentValue<'a>>,
2011 pub comma_spans: Option<Vec<'a, Span>>,
2012 pub span: Span,
2013}
2014
2015#[derive(Debug)]
2016#[cfg_attr(feature = "serialize", derive(Serialize))]
2017#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2018pub struct SassMap<'a> {
2019 pub items: Vec<'a, SassMapItem<'a>>,
2020 pub comma_spans: Vec<'a, Span>,
2021 pub span: Span,
2022}
2023
2024#[derive(Debug)]
2025#[cfg_attr(feature = "serialize", derive(Serialize))]
2026#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2027pub struct SassMapItem<'a> {
2028 pub key: ComponentValue<'a>,
2029 pub colon_span: Span,
2030 pub value: ComponentValue<'a>,
2031 pub span: Span,
2032}
2033
2034#[derive(Debug)]
2035#[cfg_attr(feature = "serialize", derive(Serialize))]
2036#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2037pub struct SassMixin<'a> {
2038 pub name: Ident<'a>,
2039 pub parameters: Option<SassParameters<'a>>,
2040 pub span: Span,
2041}
2042
2043#[derive(Debug)]
2044#[cfg_attr(feature = "serialize", derive(Serialize))]
2045#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2046pub struct SassModuleConfig<'a> {
2047 pub with_span: Span,
2048 pub lparen_span: Span,
2049 pub items: Vec<'a, SassModuleConfigItem<'a>>,
2050 pub comma_spans: Vec<'a, Span>,
2051 pub span: Span,
2052}
2053
2054#[derive(Debug)]
2055#[cfg_attr(feature = "serialize", derive(Serialize))]
2056#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2057pub struct SassModuleConfigItem<'a> {
2058 pub variable: SassVariable<'a>,
2059 pub colon_span: Span,
2060 pub value: ComponentValue<'a>,
2061 pub flags: Vec<'a, SassFlag<'a>>,
2062 pub span: Span,
2063}
2064
2065#[derive(Debug)]
2066#[cfg_attr(feature = "serialize", derive(Serialize))]
2067#[cfg_attr(feature = "serialize", serde(untagged))]
2068pub enum SassModuleMemberName<'a> {
2069 Ident(Ident<'a>),
2070 Variable(SassVariable<'a>),
2071}
2072
2073#[derive(Debug)]
2074#[cfg_attr(feature = "serialize", derive(Serialize))]
2075#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2076pub struct SassNestingDeclaration<'a> {
2077 pub block: SimpleBlock<'a>,
2078 pub span: Span,
2079}
2080
2081#[derive(Debug)]
2082#[cfg_attr(feature = "serialize", derive(Serialize))]
2083#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2084pub struct SassParameter<'a> {
2085 pub name: SassVariable<'a>,
2086 pub default_value: Option<SassParameterDefaultValue<'a>>,
2087 pub span: Span,
2088}
2089
2090#[derive(Debug)]
2091#[cfg_attr(feature = "serialize", derive(Serialize))]
2092#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2093pub struct SassParameterDefaultValue<'a> {
2094 pub colon_span: Span,
2095 pub value: ComponentValue<'a>,
2096 pub span: Span,
2097}
2098
2099#[derive(Debug)]
2100#[cfg_attr(feature = "serialize", derive(Serialize))]
2101#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2102pub struct SassParameters<'a> {
2103 pub params: Vec<'a, SassParameter<'a>>,
2104 pub arbitrary_param: Option<SassArbitraryParameter<'a>>,
2105 pub comma_spans: Vec<'a, Span>,
2106 pub span: Span,
2107}
2108
2109#[derive(Debug)]
2110#[cfg_attr(feature = "serialize", derive(Serialize))]
2111#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2112pub struct SassParenthesizedExpression<'a> {
2113 pub expr: Box<'a, ComponentValue<'a>>,
2114 pub span: Span,
2115}
2116
2117#[derive(Debug)]
2118#[cfg_attr(feature = "serialize", derive(Serialize))]
2119#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2120pub struct SassPlaceholderSelector<'a> {
2121 pub name: InterpolableIdent<'a>,
2122 pub span: Span,
2123}
2124
2125#[derive(Debug)]
2126#[cfg_attr(feature = "serialize", derive(Serialize))]
2127#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2128pub struct SassQualifiedName<'a> {
2129 pub module: Ident<'a>,
2130 pub member: SassModuleMemberName<'a>,
2131 pub span: Span,
2132}
2133
2134#[derive(Debug)]
2135#[cfg_attr(feature = "serialize", derive(Serialize))]
2136#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2137pub struct SassUnaryExpression<'a> {
2138 pub op: SassUnaryOperator,
2139 pub expr: Box<'a, ComponentValue<'a>>,
2140 pub span: Span,
2141}
2142
2143#[derive(Debug)]
2144#[cfg_attr(feature = "serialize", derive(Serialize))]
2145#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2146pub struct SassUnaryOperator {
2147 pub kind: SassUnaryOperatorKind,
2148 pub span: Span,
2149}
2150
2151#[derive(Debug)]
2152#[cfg_attr(feature = "serialize", derive(Serialize))]
2153pub enum SassUnaryOperatorKind {
2154 Plus,
2155 Minus,
2156 Not,
2157}
2158
2159#[derive(Debug)]
2160#[cfg_attr(feature = "serialize", derive(Serialize))]
2161#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2162pub struct SassUnnamedNamespace {
2163 pub span: Span,
2164}
2165
2166#[derive(Debug)]
2167#[cfg_attr(feature = "serialize", derive(Serialize))]
2168#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2169pub struct SassUse<'a> {
2170 pub path: InterpolableStr<'a>,
2171 pub namespace: Option<SassUseNamespace<'a>>,
2172 pub config: Option<SassModuleConfig<'a>>,
2173 pub span: Span,
2174}
2175
2176#[derive(Debug)]
2177#[cfg_attr(feature = "serialize", derive(Serialize))]
2178#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2179pub struct SassUseNamespace<'a> {
2180 pub as_span: Span,
2181 pub kind: SassUseNamespaceKind<'a>,
2182 pub span: Span,
2183}
2184
2185#[derive(Debug)]
2186#[cfg_attr(feature = "serialize", derive(Serialize))]
2187#[cfg_attr(feature = "serialize", serde(untagged))]
2188pub enum SassUseNamespaceKind<'a> {
2189 Named(Ident<'a>),
2190 Unnamed(SassUnnamedNamespace),
2191}
2192
2193#[derive(Debug)]
2194#[cfg_attr(feature = "serialize", derive(Serialize))]
2195#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2196pub struct SassVariable<'a> {
2197 pub name: Ident<'a>,
2198 pub span: Span,
2199}
2200
2201#[derive(Debug)]
2202#[cfg_attr(feature = "serialize", derive(Serialize))]
2203#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2204pub struct SassVariableDeclaration<'a> {
2205 pub namespace: Option<Ident<'a>>,
2206 pub name: SassVariable<'a>,
2207 pub colon_span: Span,
2208 pub value: ComponentValue<'a>,
2209 pub flags: Vec<'a, SassFlag<'a>>,
2210 pub span: Span,
2211}
2212
2213#[derive(Debug)]
2214#[cfg_attr(feature = "serialize", derive(Serialize))]
2215#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2216pub struct ScopeEnd<'a> {
2217 pub to_span: Span,
2218 pub lparen_span: Span,
2219 pub selector: SelectorList<'a>,
2220 pub span: Span,
2221}
2222
2223#[derive(Debug)]
2224#[cfg_attr(feature = "serialize", derive(Serialize))]
2225#[cfg_attr(feature = "serialize", serde(untagged))]
2226pub enum ScopePrelude<'a> {
2227 StartOnly(ScopeStart<'a>),
2228 EndOnly(ScopeEnd<'a>),
2229 Both(ScopeStartWithEnd<'a>),
2230}
2231
2232#[derive(Debug)]
2233#[cfg_attr(feature = "serialize", derive(Serialize))]
2234#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2235pub struct ScopeStart<'a> {
2236 pub selector: SelectorList<'a>,
2237 pub span: Span,
2238}
2239
2240#[derive(Debug)]
2241#[cfg_attr(feature = "serialize", derive(Serialize))]
2242#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2243pub struct ScopeStartWithEnd<'a> {
2244 pub start: ScopeStart<'a>,
2245 pub end: ScopeEnd<'a>,
2246 pub span: Span,
2247}
2248
2249#[derive(Debug)]
2250#[cfg_attr(feature = "serialize", derive(Serialize))]
2251#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2252pub struct SelectorList<'a> {
2253 pub selectors: Vec<'a, ComplexSelector<'a>>,
2254 pub comma_spans: Vec<'a, Span>,
2255 pub span: Span,
2256}
2257
2258#[derive(Debug)]
2259#[cfg_attr(feature = "serialize", derive(Serialize))]
2260#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2261pub struct SimpleBlock<'a> {
2262 pub statements: Vec<'a, Statement<'a>>,
2263 pub span: Span,
2264}
2265
2266#[derive(Debug)]
2267#[cfg_attr(feature = "serialize", derive(Serialize))]
2268#[cfg_attr(feature = "serialize", serde(untagged))]
2269pub enum SimpleSelector<'a> {
2270 Class(ClassSelector<'a>),
2271 Id(IdSelector<'a>),
2272 Type(TypeSelector<'a>),
2273 Attribute(AttributeSelector<'a>),
2274 PseudoClass(PseudoClassSelector<'a>),
2275 PseudoElement(PseudoElementSelector<'a>),
2276 Nesting(NestingSelector<'a>),
2277 SassPlaceholder(SassPlaceholderSelector<'a>),
2278}
2279
2280#[derive(Debug)]
2281#[cfg_attr(feature = "serialize", derive(Serialize))]
2282#[cfg_attr(feature = "serialize", serde(untagged))]
2283pub enum Statement<'a> {
2284 AtRule(AtRule<'a>),
2285 Declaration(Declaration<'a>),
2286 KeyframeBlock(KeyframeBlock<'a>),
2287 LessConditionalQualifiedRule(LessConditionalQualifiedRule<'a>),
2288 LessExtendRule(LessExtendRule<'a>),
2289 LessFunctionCall(Function<'a>),
2290 LessMixinCall(LessMixinCall<'a>),
2291 LessMixinDefinition(Box<'a, LessMixinDefinition<'a>>),
2292 LessVariableCall(LessVariableCall<'a>),
2293 LessVariableDeclaration(Box<'a, LessVariableDeclaration<'a>>),
2294 Placeholder(Placeholder<'a>),
2295 PostcssSimpleVarDeclaration(Box<'a, PostcssSimpleVarDeclaration<'a>>),
2296 QualifiedRule(QualifiedRule<'a>),
2297 SassIfAtRule(Box<'a, SassIfAtRule<'a>>),
2298 SassVariableDeclaration(Box<'a, SassVariableDeclaration<'a>>),
2299 UnknownSassAtRule(Box<'a, UnknownSassAtRule<'a>>),
2300}
2301
2302#[derive(Debug)]
2303#[cfg_attr(feature = "serialize", derive(Serialize))]
2304#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2305pub struct Str<'a> {
2306 pub value: &'a str,
2307 pub raw: &'a str,
2308 pub span: Span,
2309}
2310
2311#[derive(Debug)]
2312#[cfg_attr(feature = "serialize", derive(Serialize))]
2313#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2314pub struct StyleCondition<'a> {
2315 pub conditions: Vec<'a, StyleConditionKind<'a>>,
2316 pub span: Span,
2317}
2318
2319#[derive(Debug)]
2320#[cfg_attr(feature = "serialize", derive(Serialize))]
2321#[cfg_attr(feature = "serialize", serde(untagged))]
2322pub enum StyleConditionKind<'a> {
2323 StyleInParens(StyleInParens<'a>),
2324 And(StyleConditionAnd<'a>),
2325 Or(StyleConditionOr<'a>),
2326 Not(StyleConditionNot<'a>),
2327}
2328
2329#[derive(Debug)]
2330#[cfg_attr(feature = "serialize", derive(Serialize))]
2331#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2332pub struct StyleConditionAnd<'a> {
2333 pub keyword: Ident<'a>,
2334 pub style_in_parens: StyleInParens<'a>,
2335 pub span: Span,
2336}
2337
2338#[derive(Debug)]
2339#[cfg_attr(feature = "serialize", derive(Serialize))]
2340#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2341pub struct StyleConditionNot<'a> {
2342 pub keyword: Ident<'a>,
2343 pub style_in_parens: StyleInParens<'a>,
2344 pub span: Span,
2345}
2346
2347#[derive(Debug)]
2348#[cfg_attr(feature = "serialize", derive(Serialize))]
2349#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2350pub struct StyleConditionOr<'a> {
2351 pub keyword: Ident<'a>,
2352 pub style_in_parens: StyleInParens<'a>,
2353 pub span: Span,
2354}
2355
2356#[derive(Debug)]
2357#[cfg_attr(feature = "serialize", derive(Serialize))]
2358#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2359pub struct StyleInParens<'a> {
2360 pub kind: StyleInParensKind<'a>,
2361 pub span: Span,
2362}
2363
2364#[derive(Debug)]
2365#[cfg_attr(feature = "serialize", derive(Serialize))]
2366#[cfg_attr(feature = "serialize", serde(untagged))]
2367pub enum StyleInParensKind<'a> {
2368 Condition(StyleCondition<'a>),
2369 Feature(Declaration<'a>),
2370}
2371
2372#[derive(Debug)]
2373#[cfg_attr(feature = "serialize", derive(Serialize))]
2374#[cfg_attr(feature = "serialize", serde(untagged))]
2375pub enum StyleQuery<'a> {
2376 Condition(StyleCondition<'a>),
2377 Feature(Declaration<'a>),
2378}
2379
2380#[derive(Debug)]
2381#[cfg_attr(feature = "serialize", derive(Serialize))]
2382#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2383pub struct Stylesheet<'a> {
2384 pub statements: Vec<'a, Statement<'a>>,
2385 pub span: Span,
2386}
2387
2388#[derive(Debug)]
2389#[cfg_attr(feature = "serialize", derive(Serialize))]
2390#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2391pub struct SupportsAnd<'a> {
2392 pub keyword: Ident<'a>,
2393 pub condition: SupportsInParens<'a>,
2394 pub span: Span,
2395}
2396
2397#[derive(Debug)]
2398#[cfg_attr(feature = "serialize", derive(Serialize))]
2399#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2400pub struct SupportsCondition<'a> {
2401 pub conditions: Vec<'a, SupportsConditionKind<'a>>,
2402 pub span: Span,
2403}
2404
2405#[derive(Debug)]
2406#[cfg_attr(feature = "serialize", derive(Serialize))]
2407#[cfg_attr(feature = "serialize", serde(untagged))]
2408pub enum SupportsConditionKind<'a> {
2409 Not(SupportsNot<'a>),
2410 And(SupportsAnd<'a>),
2411 Or(SupportsOr<'a>),
2412 SupportsInParens(SupportsInParens<'a>),
2413}
2414
2415#[derive(Debug)]
2416#[cfg_attr(feature = "serialize", derive(Serialize))]
2417#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2418pub struct SupportsDecl<'a> {
2419 pub decl: Declaration<'a>,
2420 pub span: Span,
2421}
2422
2423#[derive(Debug)]
2424#[cfg_attr(feature = "serialize", derive(Serialize))]
2425#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2426pub struct SupportsInParens<'a> {
2427 pub kind: SupportsInParensKind<'a>,
2428 pub span: Span,
2429}
2430
2431#[derive(Debug)]
2432#[cfg_attr(feature = "serialize", derive(Serialize))]
2433#[cfg_attr(feature = "serialize", serde(untagged))]
2434pub enum SupportsInParensKind<'a> {
2435 SupportsCondition(SupportsCondition<'a>),
2436 Feature(Box<'a, SupportsDecl<'a>>),
2437 Selector(SelectorList<'a>),
2438 Function(Function<'a>),
2439 GeneralEnclosed(TokenSeq<'a>),
2440}
2441
2442#[derive(Debug)]
2443#[cfg_attr(feature = "serialize", derive(Serialize))]
2444#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2445pub struct SupportsNot<'a> {
2446 pub keyword: Ident<'a>,
2447 pub condition: SupportsInParens<'a>,
2448 pub span: Span,
2449}
2450
2451#[derive(Debug)]
2452#[cfg_attr(feature = "serialize", derive(Serialize))]
2453#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2454pub struct SupportsOr<'a> {
2455 pub keyword: Ident<'a>,
2456 pub condition: SupportsInParens<'a>,
2457 pub span: Span,
2458}
2459
2460#[derive(Debug)]
2461#[cfg_attr(feature = "serialize", derive(Serialize))]
2462#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2463pub struct TagNameSelector<'a> {
2464 pub name: WqName<'a>,
2465 pub span: Span,
2466}
2467
2468#[derive(Debug)]
2469#[cfg_attr(feature = "serialize", derive(Serialize))]
2470#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2471pub struct TokenSeq<'a> {
2472 pub tokens: Vec<'a, TokenWithSpan<'a>>,
2473 pub span: Span,
2474}
2475
2476#[derive(Debug)]
2477#[cfg_attr(feature = "serialize", derive(Serialize))]
2478#[cfg_attr(feature = "serialize", serde(untagged))]
2479pub enum TypeSelector<'a> {
2480 TagName(TagNameSelector<'a>),
2481 Universal(UniversalSelector<'a>),
2482}
2483
2484#[derive(Debug)]
2485#[cfg_attr(feature = "serialize", derive(Serialize))]
2486#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2487pub struct UnicodeRange<'a> {
2488 pub prefix: char,
2489 pub start: u32,
2490 pub start_raw: &'a str,
2491 pub end: u32,
2492 pub end_raw: Option<&'a str>,
2493 pub span: Span,
2494}
2495
2496#[derive(Debug)]
2497#[cfg_attr(feature = "serialize", derive(Serialize))]
2498#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2499pub struct UniversalSelector<'a> {
2500 pub prefix: Option<NsPrefix<'a>>,
2501 pub span: Span,
2502}
2503
2504#[derive(Debug)]
2505#[cfg_attr(feature = "serialize", derive(Serialize))]
2506#[cfg_attr(feature = "serialize", serde(untagged))]
2507pub enum UnknownAtRulePrelude<'a> {
2508 ComponentValue(ComponentValue<'a>),
2509 TokenSeq(TokenSeq<'a>),
2510}
2511
2512#[derive(Debug)]
2513#[cfg_attr(feature = "serialize", derive(Serialize))]
2514#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2515pub struct UnknownSassAtRule<'a> {
2516 pub name: InterpolableIdent<'a>,
2517 pub prelude: Option<UnknownAtRulePrelude<'a>>,
2518 pub block: Option<SimpleBlock<'a>>,
2519 pub span: Span,
2520}
2521
2522#[derive(Debug)]
2523#[cfg_attr(feature = "serialize", derive(Serialize))]
2524#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2525pub struct UnquotedFontFamilyName<'a> {
2526 pub idents: Vec<'a, InterpolableIdent<'a>>,
2527 pub span: Span,
2528}
2529
2530#[derive(Debug)]
2531#[cfg_attr(feature = "serialize", derive(Serialize))]
2532#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2533pub struct Url<'a> {
2534 pub name: Ident<'a>,
2535 pub value: Option<UrlValue<'a>>,
2536 pub modifiers: Vec<'a, UrlModifier<'a>>,
2537 pub span: Span,
2538}
2539
2540#[derive(Debug)]
2541#[cfg_attr(feature = "serialize", derive(Serialize))]
2542#[cfg_attr(feature = "serialize", serde(untagged))]
2543pub enum UrlModifier<'a> {
2544 Ident(InterpolableIdent<'a>),
2545 Function(Function<'a>),
2546}
2547
2548#[derive(Debug)]
2550#[cfg_attr(feature = "serialize", derive(Serialize))]
2551#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2552pub struct UrlRaw<'a> {
2553 pub value: &'a str,
2554 pub raw: &'a str,
2555 pub span: Span,
2556}
2557
2558#[derive(Debug)]
2559#[cfg_attr(feature = "serialize", derive(Serialize))]
2560#[cfg_attr(feature = "serialize", serde(untagged))]
2561pub enum UrlValue<'a> {
2562 Raw(UrlRaw<'a>),
2563 SassInterpolated(SassInterpolatedUrl<'a>),
2564 Str(InterpolableStr<'a>),
2565 LessEscapedStr(LessEscapedStr<'a>),
2566}
2567
2568#[derive(Debug)]
2569#[cfg_attr(feature = "serialize", derive(Serialize))]
2570#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2571pub struct WqName<'a> {
2572 pub name: InterpolableIdent<'a>,
2573 pub prefix: Option<NsPrefix<'a>>,
2574 pub span: Span,
2575}
2576
2577include!("ast_generated.rs");