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