linter-bundle 6.3.0 → 7.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/.linter-bundle.js +27 -17
  2. package/.linter-bundle.schema.json +45 -0
  3. package/CHANGELOG.md +146 -3
  4. package/README.md +56 -63
  5. package/TODO.md +0 -58
  6. package/eslint/gatsby.mjs +95 -0
  7. package/eslint/index.mjs +1146 -0
  8. package/eslint/javascript-lazy.mjs +24 -0
  9. package/eslint/javascript.mjs +126 -0
  10. package/eslint/jest.mjs +175 -0
  11. package/eslint/jsdoc.mjs +103 -0
  12. package/eslint/react.mjs +244 -0
  13. package/eslint/rules/enforce-logical-expression-parens.md +31 -0
  14. package/eslint/rules/enforce-logical-expression-parens.mjs +39 -0
  15. package/eslint/rules/enforce-ternary-parens.md +29 -0
  16. package/eslint/rules/enforce-ternary-parens.mjs +39 -0
  17. package/eslint/rules/ensure-lucide-import-consistency.md +38 -0
  18. package/eslint/rules/ensure-lucide-import-consistency.mjs +112 -0
  19. package/eslint/rules/helper/is-parenthesized.mjs +40 -0
  20. package/eslint/rules/no-extra-spaces-in-generics.md +25 -0
  21. package/eslint/rules/no-extra-spaces-in-generics.mjs +55 -0
  22. package/eslint/rules/no-ternary-return.md +29 -0
  23. package/eslint/rules/no-ternary-return.mjs +50 -0
  24. package/eslint/rules/no-unnecessary-typeof.md +1 -1
  25. package/eslint/rules/{no-unnecessary-typeof.js → no-unnecessary-typeof.mjs} +14 -21
  26. package/eslint/rules/restricted-filenames.md +4 -4
  27. package/eslint/rules/{restricted-filenames.js → restricted-filenames.mjs} +7 -7
  28. package/eslint/storybook.mjs +42 -0
  29. package/eslint/type-declarations.mjs +49 -0
  30. package/eslint/{overrides-worker.cjs → worker.mjs} +12 -14
  31. package/eslint.mjs +5 -0
  32. package/files/index.js +3 -3
  33. package/helper/{ensure-type.cjs → ensure-type.mjs} +7 -6
  34. package/helper/get-git-files.js +1 -1
  35. package/helper/get-outdated-dependencies.js +4 -4
  36. package/helper/get-outdated-overrides.js +2 -2
  37. package/helper/get-stylelint-path.js +4 -3
  38. package/helper/is-npm-or-yarn.js +2 -2
  39. package/helper/linter-bundle-config.js +9 -14
  40. package/helper/run-process.js +6 -4
  41. package/lint.js +33 -24
  42. package/package.json +32 -29
  43. package/stylelint/index.mjs +1111 -0
  44. package/stylelint/plugins/stylelint-15.11.0-stylistic/html-tags/{index.cjs → index.mjs} +1 -1
  45. package/stylelint/plugins/stylelint-15.11.0-stylistic/reference/{selectors.cjs → selectors.mjs} +15 -31
  46. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/at-rule-name-case/{index.cjs → index.mjs} +6 -12
  47. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/at-rule-name-space-after/{index.cjs → index.mjs} +11 -13
  48. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/at-rule-semicolon-newline-after/{index.cjs → index.mjs} +18 -22
  49. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/at-rule-semicolon-space-before/{index.cjs → index.mjs} +10 -9
  50. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/{atRuleNameSpaceChecker.cjs → atRuleNameSpaceChecker.mjs} +4 -3
  51. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/block-closing-brace-empty-line-before/{index.cjs → index.mjs} +16 -30
  52. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/block-closing-brace-newline-after/{index.cjs → index.mjs} +13 -35
  53. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/block-closing-brace-newline-before/{index.cjs → index.mjs} +11 -40
  54. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/block-closing-brace-space-before/{index.cjs → index.mjs} +10 -27
  55. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/block-opening-brace-newline-after/{index.cjs → index.mjs} +14 -65
  56. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/block-opening-brace-space-after/{index.cjs → index.mjs} +13 -30
  57. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/block-opening-brace-space-before/{index.cjs → index.mjs} +14 -27
  58. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/color-hex-case/{index.cjs → index.mjs} +10 -16
  59. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-bang-space-after/index.mjs +93 -0
  60. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-bang-space-before/{index.cjs → index.mjs} +11 -12
  61. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-block-semicolon-newline-after/{index.cjs → index.mjs} +11 -29
  62. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-block-semicolon-newline-before/{index.cjs → index.mjs} +9 -8
  63. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-block-semicolon-space-after/{index.cjs → index.mjs} +10 -23
  64. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-block-semicolon-space-before/{index.cjs → index.mjs} +11 -36
  65. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-block-trailing-semicolon/{index.cjs → index.mjs} +9 -27
  66. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-colon-newline-after/{index.cjs → index.mjs} +9 -25
  67. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-colon-space-after/{index.cjs → index.mjs} +8 -9
  68. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-colon-space-before/{index.cjs → index.mjs} +8 -9
  69. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/{declarationBangSpaceChecker.cjs → declarationBangSpaceChecker.mjs} +5 -4
  70. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/{declarationColonSpaceChecker.cjs → declarationColonSpaceChecker.mjs} +5 -4
  71. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/{findMediaOperator.cjs → findMediaOperator.mjs} +2 -2
  72. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/function-comma-newline-after/{index.cjs → index.mjs} +8 -9
  73. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/function-comma-newline-before/{index.cjs → index.mjs} +8 -9
  74. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/function-comma-space-after/{index.cjs → index.mjs} +8 -9
  75. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/function-comma-space-before/{index.cjs → index.mjs} +8 -9
  76. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/function-max-empty-lines/{index.cjs → index.mjs} +19 -39
  77. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/function-parentheses-newline-inside/{index.cjs → index.mjs} +19 -54
  78. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/function-parentheses-space-inside/{index.cjs → index.mjs} +21 -68
  79. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/function-whitespace-after/{index.cjs → index.mjs} +16 -31
  80. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/{functionCommaSpaceChecker.cjs → functionCommaSpaceChecker.mjs} +8 -7
  81. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/{functionCommaSpaceFix.cjs → functionCommaSpaceFix.mjs} +1 -1
  82. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/indentation/{index.cjs → index.mjs} +39 -64
  83. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/linebreaks/{index.cjs → index.mjs} +15 -44
  84. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/max-empty-lines/{index.cjs → index.mjs} +10 -49
  85. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/max-line-length/{index.cjs → index.mjs} +10 -9
  86. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-feature-colon-space-after/{index.cjs → index.mjs} +8 -9
  87. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-feature-colon-space-before/{index.cjs → index.mjs} +8 -9
  88. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-feature-name-case/{index.cjs → index.mjs} +9 -16
  89. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-feature-parentheses-space-inside/{index.cjs → index.mjs} +8 -21
  90. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-feature-range-operator-space-after/{index.cjs → index.mjs} +10 -11
  91. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-feature-range-operator-space-before/{index.cjs → index.mjs} +10 -11
  92. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-query-list-comma-newline-after/{index.cjs → index.mjs} +8 -9
  93. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-query-list-comma-newline-before/{index.cjs → index.mjs} +6 -6
  94. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-query-list-comma-space-after/{index.cjs → index.mjs} +8 -9
  95. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/media-query-list-comma-space-before/{index.cjs → index.mjs} +8 -9
  96. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/{mediaFeatureColonSpaceChecker.cjs → mediaFeatureColonSpaceChecker.mjs} +5 -4
  97. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/{mediaQueryListCommaWhitespaceChecker.cjs → mediaQueryListCommaWhitespaceChecker.mjs} +6 -5
  98. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/no-empty-first-line/{index.cjs → index.mjs} +6 -20
  99. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/no-eol-whitespace/{index.cjs → index.mjs} +13 -16
  100. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/no-extra-semicolons/{index.cjs → index.mjs} +10 -33
  101. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/no-missing-end-of-source-newline/{index.cjs → index.mjs} +7 -13
  102. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/number-leading-zero/{index.cjs → index.mjs} +13 -31
  103. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/number-no-trailing-zeros/{index.cjs → index.mjs} +9 -18
  104. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/property-case/{index.cjs → index.mjs} +10 -16
  105. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-attribute-brackets-space-inside/{index.cjs → index.mjs} +9 -36
  106. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-attribute-operator-space-after/{index.cjs → index.mjs} +7 -8
  107. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-attribute-operator-space-before/{index.cjs → index.mjs} +7 -8
  108. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-combinator-space-after/{index.cjs → index.mjs} +7 -8
  109. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-combinator-space-before/{index.cjs → index.mjs} +7 -8
  110. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-descendant-combinator-no-non-space/{index.cjs → index.mjs} +9 -20
  111. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-list-comma-newline-after/{index.cjs → index.mjs} +9 -14
  112. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-list-comma-newline-before/{index.cjs → index.mjs} +7 -8
  113. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-list-comma-space-after/{index.cjs → index.mjs} +7 -8
  114. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-list-comma-space-before/{index.cjs → index.mjs} +7 -8
  115. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-max-empty-lines/{index.cjs → index.mjs} +10 -21
  116. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-pseudo-class-case/{index.cjs → index.mjs} +10 -24
  117. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-pseudo-class-parentheses-space-inside/{index.cjs → index.mjs} +12 -35
  118. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/selector-pseudo-element-case/{index.cjs → index.mjs} +10 -15
  119. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/{selectorAttributeOperatorSpaceChecker.cjs → selectorAttributeOperatorSpaceChecker.mjs} +6 -5
  120. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/{selectorCombinatorSpaceChecker.cjs → selectorCombinatorSpaceChecker.mjs} +12 -11
  121. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/{selectorListCommaWhitespaceChecker.cjs → selectorListCommaWhitespaceChecker.mjs} +5 -4
  122. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/string-quotes/{index.cjs → index.mjs} +43 -65
  123. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/unicode-bom/{index.cjs → index.mjs} +5 -5
  124. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/unit-case/{index.cjs → index.mjs} +17 -34
  125. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/value-list-comma-newline-after/{index.cjs → index.mjs} +11 -12
  126. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/value-list-comma-newline-before/{index.cjs → index.mjs} +6 -6
  127. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/value-list-comma-space-after/{index.cjs → index.mjs} +10 -11
  128. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/value-list-comma-space-before/{index.cjs → index.mjs} +10 -11
  129. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/value-list-max-empty-lines/{index.cjs → index.mjs} +12 -18
  130. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/{valueListCommaWhitespaceChecker.cjs → valueListCommaWhitespaceChecker.mjs} +6 -5
  131. package/stylelint/plugins/stylelint-15.11.0-stylistic/style-search/{index.cjs → index.mjs} +1 -1
  132. package/stylelint/plugins/stylelint-15.11.0-stylistic/utils/{addEmptyLineAfter.cjs → addEmptyLineAfter.mjs} +1 -1
  133. package/stylelint/plugins/stylelint-15.11.0-stylistic/utils/{hasEmptyBlock.cjs → hasEmptyBlock.mjs} +2 -2
  134. package/stylelint/plugins/stylelint-15.11.0-stylistic/utils/{nextNonCommentNode.cjs → nextNonCommentNode.mjs} +1 -1
  135. package/stylelint/plugins/stylelint-15.11.0-stylistic/utils/{removeEmptyLinesAfter.cjs → removeEmptyLinesAfter.mjs} +1 -1
  136. package/stylelint/plugins/stylelint-15.11.0-stylistic/utils/transformSelector.mjs +19 -0
  137. package/stylelint/plugins/stylelint-15.11.0-stylistic/utils/{whitespaceChecker.cjs → whitespaceChecker.mjs} +5 -5
  138. package/stylelint/plugins/stylelint-selector-no-empty.js +2 -0
  139. package/stylelint/plugins/stylelint-selector-tag-no-without-class.js +2 -2
  140. package/stylelint.mjs +6 -0
  141. package/eslint/index.cjs +0 -1071
  142. package/eslint/overrides-gatsby.cjs +0 -108
  143. package/eslint/overrides-javascript-lazy.cjs +0 -27
  144. package/eslint/overrides-javascript.cjs +0 -121
  145. package/eslint/overrides-jest.cjs +0 -144
  146. package/eslint/overrides-jsdoc.cjs +0 -94
  147. package/eslint/overrides-react.cjs +0 -220
  148. package/eslint/overrides-storybook.cjs +0 -44
  149. package/eslint/overrides-type-declarations.cjs +0 -51
  150. package/eslint/rules/no-global-undefined-check.js +0 -85
  151. package/eslint/rules/no-global-undefined-check.md +0 -34
  152. package/eslint/rules/package.json +0 -8
  153. package/eslint.cjs +0 -5
  154. package/stylelint/index.cjs +0 -1104
  155. package/stylelint/plugins/stylelint-15.11.0-stylistic/rules/declaration-bang-space-after/index.cjs +0 -95
  156. package/stylelint.cjs +0 -5
@@ -0,0 +1,1111 @@
1
+ /**
2
+ * @file Global Stylelint settings
3
+ */
4
+
5
+ const { linterBundleConfig } = await import('../helper/linter-bundle-config.js');
6
+
7
+ export default {
8
+ reportNeedlessDisables: true,
9
+ reportInvalidScopeDisables: true,
10
+ reportDescriptionlessDisables: true,
11
+ reportUnscopedDisables: true,
12
+ customSyntax: 'postcss-scss',
13
+ plugins: [
14
+ 'stylelint-declaration-block-no-ignored-properties',
15
+ 'stylelint-order',
16
+ 'stylelint-scss',
17
+ 'stylelint-use-logical-spec',
18
+ 'stylelint-high-performance-animation',
19
+ await import('./plugins/stylelint-selector-no-empty.js'),
20
+ await import('./plugins/stylelint-selector-tag-no-without-class.js'),
21
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/at-rule-name-case/index.mjs'),
22
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/at-rule-name-space-after/index.mjs'),
23
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/at-rule-semicolon-newline-after/index.mjs'),
24
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/at-rule-semicolon-space-before/index.mjs'),
25
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/block-closing-brace-empty-line-before/index.mjs'),
26
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/block-closing-brace-newline-after/index.mjs'),
27
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/block-closing-brace-newline-before/index.mjs'),
28
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/block-closing-brace-space-before/index.mjs'),
29
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/block-opening-brace-newline-after/index.mjs'),
30
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/block-opening-brace-space-after/index.mjs'),
31
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/block-opening-brace-space-before/index.mjs'),
32
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/color-hex-case/index.mjs'),
33
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/declaration-bang-space-after/index.mjs'),
34
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/declaration-bang-space-before/index.mjs'),
35
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/declaration-block-semicolon-newline-after/index.mjs'),
36
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/declaration-block-semicolon-newline-before/index.mjs'),
37
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/declaration-block-semicolon-space-after/index.mjs'),
38
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/declaration-block-semicolon-space-before/index.mjs'),
39
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/declaration-block-trailing-semicolon/index.mjs'),
40
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/declaration-colon-newline-after/index.mjs'),
41
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/declaration-colon-space-after/index.mjs'),
42
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/declaration-colon-space-before/index.mjs'),
43
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/function-comma-newline-after/index.mjs'),
44
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/function-comma-newline-before/index.mjs'),
45
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/function-comma-space-after/index.mjs'),
46
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/function-comma-space-before/index.mjs'),
47
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/function-max-empty-lines/index.mjs'),
48
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/function-parentheses-newline-inside/index.mjs'),
49
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/function-parentheses-space-inside/index.mjs'),
50
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/function-whitespace-after/index.mjs'),
51
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/indentation/index.mjs'),
52
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/linebreaks/index.mjs'),
53
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/max-empty-lines/index.mjs'),
54
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/max-line-length/index.mjs'),
55
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/media-feature-colon-space-after/index.mjs'),
56
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/media-feature-colon-space-before/index.mjs'),
57
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/media-feature-name-case/index.mjs'),
58
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/media-feature-parentheses-space-inside/index.mjs'),
59
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/media-feature-range-operator-space-after/index.mjs'),
60
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/media-feature-range-operator-space-before/index.mjs'),
61
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/media-query-list-comma-newline-after/index.mjs'),
62
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/media-query-list-comma-newline-before/index.mjs'),
63
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/media-query-list-comma-space-after/index.mjs'),
64
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/media-query-list-comma-space-before/index.mjs'),
65
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/no-empty-first-line/index.mjs'),
66
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/no-eol-whitespace/index.mjs'),
67
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/no-extra-semicolons/index.mjs'),
68
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/no-missing-end-of-source-newline/index.mjs'),
69
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/number-leading-zero/index.mjs'),
70
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/number-no-trailing-zeros/index.mjs'),
71
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/property-case/index.mjs'),
72
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/selector-attribute-brackets-space-inside/index.mjs'),
73
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/selector-attribute-operator-space-after/index.mjs'),
74
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/selector-attribute-operator-space-before/index.mjs'),
75
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/selector-combinator-space-after/index.mjs'),
76
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/selector-combinator-space-before/index.mjs'),
77
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/selector-descendant-combinator-no-non-space/index.mjs'),
78
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/selector-list-comma-newline-after/index.mjs'),
79
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/selector-list-comma-newline-before/index.mjs'),
80
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/selector-list-comma-space-after/index.mjs'),
81
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/selector-list-comma-space-before/index.mjs'),
82
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/selector-max-empty-lines/index.mjs'),
83
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/selector-pseudo-class-case/index.mjs'),
84
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/selector-pseudo-class-parentheses-space-inside/index.mjs'),
85
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/selector-pseudo-element-case/index.mjs'),
86
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/string-quotes/index.mjs'),
87
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/unicode-bom/index.mjs'),
88
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/unit-case/index.mjs'),
89
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/value-list-comma-newline-after/index.mjs'),
90
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/value-list-comma-newline-before/index.mjs'),
91
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/value-list-comma-space-after/index.mjs'),
92
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/value-list-comma-space-before/index.mjs'),
93
+ await import('./plugins/stylelint-15.11.0-stylistic/rules/value-list-max-empty-lines/index.mjs')
94
+ ],
95
+ overrides: [
96
+ {
97
+ files: ['**/*.module.*'],
98
+ rules: {
99
+ /**
100
+ * stylelint
101
+ *
102
+ * @see https://github.com/stylelint/stylelint/tree/master/lib/rules
103
+ */
104
+ 'selector-class-pattern': `^(?!(${[
105
+ // Disallowed reserved JavaScript keywords
106
+ 'abstract',
107
+ 'arguments', 'await',
108
+ 'boolean', 'break', 'byte',
109
+ 'case', 'catch', 'char', 'class', 'const', 'continue',
110
+ 'debugger', 'default', 'delete', 'do', 'double',
111
+ 'else', 'enum', 'eval', 'export', 'extends',
112
+ 'false', 'final', 'finally', 'float', 'for', 'function',
113
+ 'goto',
114
+ 'if', 'implements', 'import', 'in', 'Infinity', 'instanceof', 'int', 'interface',
115
+ 'let', 'long',
116
+ 'NaN', 'native', 'new', 'null',
117
+ 'package', 'private', 'protected', 'public',
118
+ 'return',
119
+ 'short', 'static', 'super', 'switch', 'synchronized',
120
+ 'this', 'throw', 'throws', 'transient', 'true', 'try', 'typeof',
121
+ 'undefined',
122
+ 'var', 'void', 'volatile',
123
+ 'while', 'with',
124
+ 'yield'
125
+ ].join('|')})$).+`,
126
+
127
+ /**
128
+ * stylelint-selector-tag-no-without-class
129
+ *
130
+ * @see https://github.com/Moxio/stylelint-selector-tag-no-without-class
131
+ */
132
+ 'plugin/selector-tag-no-without-class': ['/./']
133
+ }
134
+ }
135
+ ],
136
+ rules: {
137
+ /**
138
+ * stylelint
139
+ *
140
+ * @see https://github.com/stylelint/stylelint/tree/master/lib/rules
141
+ */
142
+ 'alpha-value-notation': 'number', // @todo change that to 'percentage'?
143
+ 'annotation-no-unknown': [true, { ignoreAnnotations: 'default' }],
144
+ 'at-rule-allowed-list': null,
145
+ 'at-rule-descriptor-no-unknown': true,
146
+ 'at-rule-descriptor-value-no-unknown': true,
147
+ 'at-rule-disallowed-list': null,
148
+ 'at-rule-empty-line-before': [
149
+ 'always',
150
+ {
151
+ except: [
152
+ 'first-nested'
153
+ ],
154
+ ignore: [
155
+ 'after-comment',
156
+ 'blockless-after-same-name-blockless'
157
+ ]
158
+ }
159
+ ],
160
+ 'at-rule-no-deprecated': true,
161
+ 'at-rule-no-unknown': null, // scss/at-rule-no-unknown
162
+ 'at-rule-no-vendor-prefix': true,
163
+ 'at-rule-prelude-no-invalid': true,
164
+ 'at-rule-property-required-list': [{
165
+ 'font-face': ['font-family', 'font-style', 'font-weight', 'src']
166
+ }],
167
+ 'block-no-empty': true,
168
+ 'color-function-notation': [
169
+ 'modern', {
170
+ ignore: ['with-var-inside']
171
+ }
172
+ ],
173
+ 'color-hex-alpha': null, // @todo Not widely supported yet. Activate in 2024.
174
+ 'color-hex-length': 'short',
175
+ 'color-named': 'never',
176
+ 'color-no-hex': true,
177
+ 'color-no-invalid-hex': true,
178
+ 'comment-empty-line-before': [
179
+ 'always',
180
+ {
181
+ except: ['first-nested'],
182
+ ignore: ['stylelint-commands']
183
+ }
184
+ ],
185
+ 'comment-no-empty': true,
186
+ 'comment-pattern': /^[^\s].+[^\s]$/u,
187
+ 'comment-whitespace-inside': 'always',
188
+ 'comment-word-disallowed-list': null,
189
+ 'custom-media-pattern': (linterBundleConfig.sass?.patternPrefix ? `${linterBundleConfig.sass.patternPrefix}-[a-z][a-zA-Z]+(-[a-z][a-zA-Z]+\\d*)+` : null),
190
+ 'custom-property-empty-line-before': null, // Empty lines between custom properties are optional
191
+ 'custom-property-no-missing-var-function': true,
192
+ 'custom-property-pattern': (linterBundleConfig.sass?.patternPrefix ? `${linterBundleConfig.sass.patternPrefix}-[a-z][a-zA-Z]+(-[a-z][a-zA-Z]+\\d*)*` : null),
193
+ 'declaration-block-no-duplicate-custom-properties': true,
194
+ 'declaration-block-no-duplicate-properties': [
195
+ true,
196
+ {
197
+ ignore: ['consecutive-duplicates-with-different-values']
198
+ }
199
+ ],
200
+ 'declaration-block-no-redundant-longhand-properties': [true, { ignoreShorthands: [/^grid-template/u] }],
201
+ 'declaration-block-no-shorthand-property-overrides': true,
202
+ 'declaration-block-single-line-max-declarations': 1,
203
+ 'declaration-empty-line-before': [
204
+ 'always',
205
+ {
206
+ except: [
207
+ 'first-nested'
208
+ ],
209
+ ignore: [
210
+ 'after-comment',
211
+ 'after-declaration',
212
+ 'inside-single-line-block'
213
+ ]
214
+ }
215
+ ],
216
+ 'declaration-no-important': [true, {
217
+ severity: 'warning'
218
+ }],
219
+ 'declaration-property-max-values': null, // { '/.*/': 4 }, @todo disabled because of false-positive with `padding-inline-start: #{24px + $i * 16px};` and `transition: transform, background-color, color, border-color, box-shadow;`
220
+ 'declaration-property-unit-allowed-list': [{
221
+ 'font-size': ['px', 'em'],
222
+ 'line-height': ['px', 'em'],
223
+ 'transition': ['ms'],
224
+ '/^animation/': ['ms']
225
+ }],
226
+ 'declaration-property-unit-disallowed-list': null,
227
+ 'declaration-property-value-allowed-list': null,
228
+ 'declaration-property-value-disallowed-list': null,
229
+ 'declaration-property-value-keyword-no-deprecated': true,
230
+ 'declaration-property-value-no-unknown': null, // Covered by scss/declaration-property-value-no-unknown
231
+ 'font-family-name-quotes': 'always-where-recommended',
232
+ 'font-family-no-duplicate-names': true,
233
+ 'font-family-no-missing-generic-family-keyword': true,
234
+ 'font-weight-notation': 'numeric',
235
+ 'function-allowed-list': null,
236
+ 'function-calc-no-unspaced-operator': true,
237
+ 'function-disallowed-list': null,
238
+ 'function-linear-gradient-no-nonstandard-direction': true,
239
+ 'function-name-case': 'lower',
240
+ 'function-no-unknown': null, // Implemented by scss/function-no-unknown
241
+ 'function-url-no-scheme-relative': true,
242
+ 'function-url-quotes': 'always',
243
+ 'function-url-scheme-disallowed-list': null,
244
+ 'function-url-scheme-allowed-list': null,
245
+ 'hue-degree-notation': 'number', // @todo change that to 'angle'?
246
+ 'import-notation': null, // This rule, does not make sense. `node_modules` dependencies need to use `url("css_bundle")`, while project files are using only a string.
247
+ 'lightness-notation': 'percentage',
248
+ 'keyframe-block-no-duplicate-selectors': true,
249
+ 'keyframe-declaration-no-important': true,
250
+ 'keyframe-selector-notation': 'percentage',
251
+ 'keyframes-name-pattern': String.raw`^[a-z]+(-[a-z]+)*\d*$`,
252
+ 'length-zero-no-unit': true,
253
+ 'max-nesting-depth': 6,
254
+ 'media-feature-name-allowed-list': null,
255
+ 'media-feature-name-disallowed-list': null,
256
+ 'media-feature-name-no-unknown': true,
257
+ 'media-feature-name-no-vendor-prefix': null, // For Safari, we still need "-webkit-min-device-pixel-ratio": https://caniuse.com/css-media-resolution
258
+ 'media-feature-name-unit-allowed-list': null,
259
+ 'media-feature-name-value-allowed-list': null,
260
+ 'media-feature-name-value-no-unknown': true,
261
+ 'media-feature-range-notation': 'prefix',
262
+ 'media-query-no-invalid': true,
263
+ 'named-grid-areas-no-invalid': true,
264
+ 'no-descending-specificity': null, // doesn't work in many cases (e.g. while using the SCSS :global()-pseudo-class)
265
+ 'no-duplicate-at-import-rules': true,
266
+ 'no-duplicate-selectors': true,
267
+ 'no-empty-source': true,
268
+ 'no-invalid-double-slash-comments': true,
269
+ 'no-invalid-position-at-import-rule': true,
270
+ 'no-irregular-whitespace': true,
271
+ 'no-unknown-animations': true,
272
+ 'no-unknown-custom-media': true,
273
+ 'no-unknown-custom-properties': null, // @todo Activate in 2025 as Firefox currently does not support "@property" and there is no way to specify which custom properties are available
274
+ 'number-max-precision': 5,
275
+ 'property-allowed-list': null,
276
+ 'property-disallowed-list': [
277
+ 'font', // Shorthand property is to complex
278
+ 'grid-gap' // @deprecated Use gap.
279
+ ],
280
+ 'property-no-unknown': null, // Covered by scss/property-no-unknown
281
+ 'property-no-vendor-prefix': true,
282
+ 'rule-selector-property-disallowed-list': null,
283
+ 'rule-empty-line-before': [
284
+ 'always-multi-line',
285
+ {
286
+ except: ['first-nested'],
287
+ ignore: ['after-comment']
288
+ }
289
+ ],
290
+ 'selector-anb-no-unmatchable': true,
291
+ 'selector-attribute-name-disallowed-list': null,
292
+ 'selector-attribute-operator-allowed-list': null,
293
+ 'selector-attribute-operator-disallowed-list': null,
294
+ 'selector-attribute-quotes': 'always',
295
+ 'selector-class-pattern': null,
296
+ 'selector-combinator-allowed-list': null,
297
+ 'selector-combinator-disallowed-list': null,
298
+ 'selector-disallowed-list': null,
299
+ 'selector-id-pattern': '^[a-z]+(-[a-z]+)*$',
300
+ 'selector-max-attribute': 1,
301
+ 'selector-max-class': 5,
302
+ 'selector-max-combinators': 5,
303
+ 'selector-max-compound-selectors': 5,
304
+ 'selector-max-id': 1,
305
+ 'selector-max-pseudo-class': 3,
306
+ 'selector-max-specificity': [
307
+ '1,4,2',
308
+ {
309
+ ignoreSelectors: [':global', '#root', '[dir="rtl"]', '[dir="ltr"]']
310
+ }
311
+ ],
312
+ 'selector-max-type': 6,
313
+ 'selector-max-universal': [1, { ignoreAfterCombinators: ['>', '+'] }],
314
+ 'selector-nested-pattern': null,
315
+ 'selector-no-qualifying-type': [true, { ignore: ['attribute', 'class'] }],
316
+ 'selector-no-vendor-prefix': true,
317
+ 'selector-not-notation': null, // 'complex', @todo Reactivate in 2024. Disabled for now, because it depends on the project if modern Selectors Level 4 CSS can be used.
318
+ 'selector-pseudo-class-allowed-list': null,
319
+ 'selector-pseudo-class-disallowed-list': null,
320
+ 'selector-pseudo-class-no-unknown': [true, { ignorePseudoClasses: ['global'] }],
321
+ 'selector-pseudo-element-allowed-list': null,
322
+ 'selector-pseudo-element-disallowed-list': null,
323
+ 'selector-pseudo-element-colon-notation': 'double',
324
+ 'selector-pseudo-element-no-unknown': true,
325
+ 'selector-type-case': 'lower',
326
+ 'selector-type-no-unknown': true,
327
+ 'shorthand-property-no-redundant-values': true,
328
+ 'string-no-newline': true,
329
+ 'syntax-string-no-invalid': true,
330
+ 'time-min-milliseconds': 40, // @todo For the delay of transitions 40ms should be the minimum, for the duration 150ms should be the minimum (change it, as soon as https://github.com/stylelint/stylelint/issues/4552 got implemented)
331
+ 'unit-allowed-list': null,
332
+ 'unit-disallowed-list': null,
333
+ 'unit-no-unknown': true,
334
+ 'value-keyword-case': [
335
+ 'lower',
336
+ {
337
+ camelCaseSvgKeywords: true
338
+ }
339
+ ],
340
+ 'value-no-vendor-prefix': true,
341
+
342
+ /**
343
+ * stylelint-declaration-block-no-ignored-properties
344
+ *
345
+ * @see https://www.npmjs.com/package/stylelint-declaration-block-no-ignored-properties
346
+ */
347
+ 'plugin/declaration-block-no-ignored-properties': true,
348
+
349
+ /**
350
+ * stylelint-high-performance-animation
351
+ *
352
+ * @see https://github.com/kristerkari/stylelint-high-performance-animation
353
+ */
354
+ 'plugin/no-low-performance-animation-properties': [true, {
355
+ ignore: 'paint-properties',
356
+ severity: 'warning'
357
+ }],
358
+
359
+ /**
360
+ * stylelint-15.11.0-stylistic rules
361
+ */
362
+ /*
363
+ 'plugin/at-rule-name-newline-after': null,
364
+ 'plugin/block-closing-brace-space-after': null,
365
+ 'plugin/block-opening-brace-newline-before': null,
366
+ */
367
+ 'plugin/at-rule-name-case': 'lower',
368
+ 'plugin/at-rule-name-space-after': 'always-single-line',
369
+ 'plugin/at-rule-semicolon-newline-after': 'always',
370
+ 'plugin/at-rule-semicolon-space-before': 'never',
371
+ 'plugin/block-closing-brace-empty-line-before': 'never',
372
+ 'plugin/block-closing-brace-newline-after': 'always',
373
+ 'plugin/block-closing-brace-newline-before': 'always-multi-line',
374
+ 'plugin/block-closing-brace-space-before': 'always-single-line',
375
+ 'plugin/block-opening-brace-newline-after': 'always-multi-line',
376
+ 'plugin/block-opening-brace-space-after': 'always-single-line',
377
+ 'plugin/block-opening-brace-space-before': 'always',
378
+ 'plugin/color-hex-case': 'lower',
379
+ 'plugin/declaration-bang-space-after': 'never',
380
+ 'plugin/declaration-bang-space-before': 'always',
381
+ 'plugin/declaration-block-semicolon-newline-after': 'always-multi-line',
382
+ 'plugin/declaration-block-semicolon-newline-before': 'never-multi-line',
383
+ 'plugin/declaration-block-semicolon-space-after': 'always-single-line',
384
+ 'plugin/declaration-block-semicolon-space-before': 'never',
385
+ 'plugin/declaration-block-trailing-semicolon': 'always',
386
+ 'plugin/declaration-colon-newline-after': 'always-multi-line',
387
+ 'plugin/declaration-colon-space-after': 'always-single-line',
388
+ 'plugin/declaration-colon-space-before': 'never',
389
+ 'plugin/function-comma-newline-after': 'always-multi-line',
390
+ 'plugin/function-comma-newline-before': 'never-multi-line',
391
+ 'plugin/function-comma-space-after': 'always-single-line',
392
+ 'plugin/function-comma-space-before': 'never',
393
+ 'plugin/function-max-empty-lines': 0,
394
+ 'plugin/function-parentheses-newline-inside': 'always-multi-line',
395
+ 'plugin/function-parentheses-space-inside': 'never-single-line',
396
+ 'plugin/function-whitespace-after': 'always',
397
+ 'plugin/indentation': 'tab',
398
+ 'plugin/linebreaks': 'unix',
399
+ 'plugin/max-empty-lines': 1,
400
+ 'plugin/max-line-length': 160,
401
+ 'plugin/media-feature-colon-space-after': 'always',
402
+ 'plugin/media-feature-colon-space-before': 'never',
403
+ 'plugin/media-feature-name-case': 'lower',
404
+ 'plugin/media-feature-parentheses-space-inside': 'never',
405
+ 'plugin/media-feature-range-operator-space-after': 'always',
406
+ 'plugin/media-feature-range-operator-space-before': 'always',
407
+ 'plugin/media-query-list-comma-newline-after': 'always-multi-line',
408
+ 'plugin/media-query-list-comma-newline-before': 'never-multi-line',
409
+ 'plugin/media-query-list-comma-space-after': 'always-single-line',
410
+ 'plugin/media-query-list-comma-space-before': 'never',
411
+ 'plugin/no-empty-first-line': true,
412
+ 'plugin/no-eol-whitespace': true,
413
+ 'plugin/no-extra-semicolons': true,
414
+ 'plugin/no-missing-end-of-source-newline': true,
415
+ 'plugin/number-leading-zero': 'always',
416
+ 'plugin/number-no-trailing-zeros': true,
417
+ 'plugin/property-case': 'lower',
418
+ 'plugin/selector-attribute-brackets-space-inside': 'never',
419
+ 'plugin/selector-attribute-operator-space-after': 'never',
420
+ 'plugin/selector-attribute-operator-space-before': 'never',
421
+ 'plugin/selector-combinator-space-after': 'always',
422
+ 'plugin/selector-combinator-space-before': 'always',
423
+ 'plugin/selector-descendant-combinator-no-non-space': true,
424
+ 'plugin/selector-list-comma-newline-after': 'always',
425
+ 'plugin/selector-list-comma-newline-before': 'never-multi-line',
426
+ 'plugin/selector-list-comma-space-after': 'always-single-line',
427
+ 'plugin/selector-list-comma-space-before': 'never',
428
+ 'plugin/selector-max-empty-lines': 0,
429
+ 'plugin/selector-pseudo-class-case': 'lower',
430
+ 'plugin/selector-pseudo-class-parentheses-space-inside': 'never',
431
+ 'plugin/selector-pseudo-element-case': 'lower',
432
+ 'plugin/string-quotes': 'double',
433
+ 'plugin/unicode-bom': 'never',
434
+ 'plugin/unit-case': 'lower',
435
+ 'plugin/value-list-comma-newline-after': 'always-multi-line',
436
+ 'plugin/value-list-comma-newline-before': 'never-multi-line',
437
+ 'plugin/value-list-comma-space-after': 'always-single-line',
438
+ 'plugin/value-list-comma-space-before': 'never',
439
+ 'plugin/value-list-max-empty-lines': 0,
440
+
441
+ /**
442
+ * stylelint-order
443
+ *
444
+ * @see https://www.npmjs.com/package/stylelint-order
445
+ */
446
+ 'order/order': [
447
+ 'dollar-variables',
448
+ 'at-variables',
449
+ {
450
+ type: 'at-rule',
451
+ name: 'extend'
452
+ },
453
+ {
454
+ type: 'at-rule',
455
+ name: 'include'
456
+ },
457
+ 'custom-properties',
458
+ 'declarations',
459
+ {
460
+ type: 'at-rule',
461
+ name: 'media'
462
+ },
463
+ 'rules',
464
+ {
465
+ type: 'at-rule',
466
+ name: 'keyframes'
467
+ }
468
+ ],
469
+ 'order/properties-alphabetical-order': null,
470
+ 'order/properties-order': [
471
+ [
472
+ {
473
+ groupName: 'Reset',
474
+ emptyLineBefore: 'always',
475
+ noEmptyLineBetween: true,
476
+ properties: [
477
+ 'all'
478
+ ]
479
+ },
480
+
481
+ {
482
+ groupName: 'Performance Optimizations',
483
+ emptyLineBefore: 'always',
484
+ noEmptyLineBetween: true,
485
+ properties: [
486
+ 'contain',
487
+ 'content-visibility',
488
+ 'contain-intrinsic-size',
489
+ 'will-change'
490
+ ]
491
+ },
492
+ {
493
+ groupName: 'Heading',
494
+ emptyLineBefore: 'always',
495
+ noEmptyLineBetween: true,
496
+ properties: [
497
+ 'content',
498
+ 'quotes'
499
+ ]
500
+ },
501
+ {
502
+ groupName: 'Box',
503
+ emptyLineBefore: 'always',
504
+ noEmptyLineBetween: true,
505
+ properties: [
506
+ 'display',
507
+ 'visibility',
508
+
509
+ 'appearance',
510
+
511
+ 'position',
512
+ 'z-index'
513
+ ]
514
+ },
515
+ {
516
+ groupName: 'Position',
517
+ emptyLineBefore: 'always',
518
+ noEmptyLineBetween: true,
519
+ properties: [
520
+ 'inset',
521
+ 'top',
522
+ 'right',
523
+ 'bottom',
524
+ 'left',
525
+
526
+ 'inset-block',
527
+ 'inset-block-start',
528
+ 'inset-block-end',
529
+ 'inset-inline',
530
+ 'inset-inline-start',
531
+ 'inset-inline-end',
532
+
533
+ 'box-sizing'
534
+ ]
535
+ },
536
+ {
537
+ groupName: 'Grid',
538
+ emptyLineBefore: 'always',
539
+ noEmptyLineBetween: true,
540
+ properties: [
541
+ 'grid',
542
+ 'grid-after',
543
+ 'grid-area',
544
+ 'grid-auto-columns',
545
+ 'grid-auto-flow',
546
+ 'grid-auto-rows',
547
+ 'grid-before',
548
+ 'grid-column',
549
+ 'grid-column-end',
550
+ 'grid-column-gap',
551
+ 'grid-column-start',
552
+ 'grid-columns',
553
+ 'grid-end',
554
+ 'grid-row',
555
+ 'grid-row-end',
556
+ 'grid-row-gap',
557
+ 'grid-row-start',
558
+ 'grid-rows',
559
+ 'grid-start',
560
+ 'grid-template',
561
+ 'grid-template-areas',
562
+ 'grid-template-columns',
563
+ 'grid-template-rows'
564
+ ]
565
+ },
566
+ {
567
+ groupName: 'Flex',
568
+ emptyLineBefore: 'always',
569
+ noEmptyLineBetween: true,
570
+ properties: [
571
+ 'flex',
572
+ 'flex-basis',
573
+ 'flex-direction',
574
+ 'flex-flow',
575
+ 'flex-grow',
576
+ 'flex-shrink',
577
+ 'flex-wrap',
578
+ 'order'
579
+ ]
580
+ },
581
+ {
582
+ groupName: 'Gap',
583
+ emptyLineBefore: 'always',
584
+ noEmptyLineBetween: true,
585
+ properties: [
586
+ 'gap',
587
+ 'row-gap',
588
+ 'column-gap'
589
+ ]
590
+ },
591
+ {
592
+ groupName: 'Alignment',
593
+ emptyLineBefore: 'always',
594
+ noEmptyLineBetween: true,
595
+ properties: [
596
+ 'align-content',
597
+ 'align-items',
598
+ 'align-self',
599
+ 'justify-content',
600
+ 'justify-items',
601
+ 'justify-self',
602
+ 'place-content',
603
+ 'place-items',
604
+ 'place-self'
605
+ ]
606
+ },
607
+ {
608
+ groupName: 'Dimension',
609
+ emptyLineBefore: 'always',
610
+ noEmptyLineBetween: true,
611
+ properties: [
612
+ 'width',
613
+ 'min-width',
614
+ 'max-width',
615
+ 'height',
616
+ 'min-height',
617
+ 'max-height'
618
+ ]
619
+ },
620
+ {
621
+ groupName: 'Margin',
622
+ emptyLineBefore: 'always',
623
+ noEmptyLineBetween: true,
624
+ properties: [
625
+ 'margin',
626
+ 'margin-top',
627
+ 'margin-right',
628
+ 'margin-bottom',
629
+ 'margin-left',
630
+
631
+ 'margin-block',
632
+ 'margin-block-start',
633
+ 'margin-block-end',
634
+ 'margin-inline',
635
+ 'margin-inline-start',
636
+ 'margin-inline-end'
637
+ ]
638
+ },
639
+ {
640
+ groupName: 'Padding',
641
+ emptyLineBefore: 'always',
642
+ noEmptyLineBetween: true,
643
+ properties: [
644
+ 'padding',
645
+ 'padding-top',
646
+ 'padding-right',
647
+ 'padding-bottom',
648
+ 'padding-left',
649
+
650
+ 'padding-block',
651
+ 'padding-block-start',
652
+ 'padding-block-end',
653
+ 'padding-inline',
654
+ 'padding-inline-start',
655
+ 'padding-inline-end'
656
+ ]
657
+ },
658
+ {
659
+ groupName: 'Float',
660
+ emptyLineBefore: 'always',
661
+ noEmptyLineBetween: true,
662
+ properties: [
663
+ 'float',
664
+ 'clear'
665
+ ]
666
+ },
667
+ {
668
+ groupName: 'Overflow',
669
+ emptyLineBefore: 'always',
670
+ noEmptyLineBetween: true,
671
+ properties: [
672
+ 'overflow',
673
+ 'overflow-x',
674
+ 'overflow-y',
675
+ 'overscroll-behavior'
676
+ ]
677
+ },
678
+ {
679
+ groupName: 'Clip / Zoom',
680
+ emptyLineBefore: 'always',
681
+ noEmptyLineBetween: true,
682
+ properties: [
683
+ 'clip',
684
+ 'zoom'
685
+ ]
686
+ },
687
+ {
688
+ groupName: 'Columns',
689
+ emptyLineBefore: 'always',
690
+ noEmptyLineBetween: true,
691
+ properties: [
692
+ 'columns',
693
+ 'column-fill',
694
+ 'column-rule',
695
+ 'column-span',
696
+ 'column-count',
697
+ 'column-width',
698
+ 'widows',
699
+ 'orphans'
700
+ ]
701
+ },
702
+ {
703
+ groupName: 'Table / List',
704
+ emptyLineBefore: 'always',
705
+ noEmptyLineBetween: true,
706
+ properties: [
707
+ 'table-layout',
708
+ 'empty-cells',
709
+ 'caption-side',
710
+ 'border-spacing',
711
+ 'border-collapse',
712
+ 'list-style',
713
+ 'list-style-position',
714
+ 'list-style-type',
715
+ 'list-style-image'
716
+ ]
717
+ },
718
+ {
719
+ groupName: 'Transform',
720
+ emptyLineBefore: 'always',
721
+ noEmptyLineBetween: true,
722
+ properties: [
723
+ 'transform',
724
+ 'transform-origin',
725
+ 'transform-style',
726
+ 'backface-visibility',
727
+ 'perspective',
728
+ 'perspective-origin'
729
+ ]
730
+ },
731
+ {
732
+ groupName: 'Transition',
733
+ emptyLineBefore: 'always',
734
+ noEmptyLineBetween: true,
735
+ properties: [
736
+ 'transition',
737
+ 'transition-property',
738
+ 'transition-duration',
739
+ 'transition-timing-function',
740
+ 'transition-delay'
741
+ ]
742
+ },
743
+ {
744
+ groupName: 'Animation',
745
+ emptyLineBefore: 'always',
746
+ noEmptyLineBetween: true,
747
+ properties: [
748
+ 'animation',
749
+ 'animation-name',
750
+ 'animation-duration',
751
+ 'animation-play-state',
752
+ 'animation-timing-function',
753
+ 'animation-delay',
754
+ 'animation-iteration-count',
755
+ 'animation-direction',
756
+ 'animation-fill-mode'
757
+ ]
758
+ },
759
+ {
760
+ groupName: 'Border General',
761
+ emptyLineBefore: 'always',
762
+ noEmptyLineBetween: true,
763
+ properties: [
764
+ 'border',
765
+ 'border-top',
766
+ 'border-right',
767
+ 'border-bottom',
768
+ 'border-left',
769
+ 'border-width',
770
+ 'border-top-width',
771
+ 'border-right-width',
772
+ 'border-bottom-width',
773
+ 'border-left-width',
774
+ 'border-inline-start-width',
775
+ 'border-inline-end-width',
776
+
777
+ 'border-style',
778
+ 'border-top-style',
779
+ 'border-right-style',
780
+ 'border-bottom-style',
781
+ 'border-left-style',
782
+ 'border-inline-start-style',
783
+ 'border-inline-end-style',
784
+
785
+ 'border-radius',
786
+ 'border-top-left-radius',
787
+ 'border-top-right-radius',
788
+ 'border-bottom-left-radius',
789
+ 'border-bottom-right-radius',
790
+
791
+ 'border-color',
792
+ 'border-top-color',
793
+ 'border-right-color',
794
+ 'border-bottom-color',
795
+ 'border-left-color',
796
+ 'border-inline-start-color',
797
+ 'border-inline-end-color'
798
+ ]
799
+ },
800
+ {
801
+ groupName: 'Outline',
802
+ emptyLineBefore: 'always',
803
+ noEmptyLineBetween: true,
804
+ properties: [
805
+ 'outline',
806
+ 'outline-color',
807
+ 'outline-offset',
808
+ 'outline-style',
809
+ 'outline-width'
810
+ ]
811
+ },
812
+ {
813
+ groupName: 'Stroke',
814
+ emptyLineBefore: 'always',
815
+ noEmptyLineBetween: true,
816
+ properties: [
817
+ 'stroke-width',
818
+ 'stroke-linecap',
819
+ 'stroke-dasharray',
820
+ 'stroke-dashoffset',
821
+ 'stroke'
822
+ ]
823
+ },
824
+ {
825
+ groupName: 'Opacity',
826
+ emptyLineBefore: 'always',
827
+ noEmptyLineBetween: true,
828
+ properties: [
829
+ 'opacity'
830
+ ]
831
+ },
832
+ {
833
+ groupName: 'Background',
834
+ emptyLineBefore: 'always',
835
+ noEmptyLineBetween: true,
836
+ properties: [
837
+ 'background',
838
+ 'background-color',
839
+ 'background-image',
840
+ 'background-repeat',
841
+ 'background-position',
842
+ 'background-size',
843
+ 'box-shadow',
844
+ 'fill'
845
+ ]
846
+ },
847
+ {
848
+ groupName: 'Text Color',
849
+ emptyLineBefore: 'always',
850
+ noEmptyLineBetween: true,
851
+ properties: [
852
+ 'color',
853
+ 'caret-color'
854
+ ]
855
+ },
856
+ {
857
+ groupName: 'Font',
858
+ emptyLineBefore: 'always',
859
+ noEmptyLineBetween: true,
860
+ properties: [
861
+ 'font',
862
+ 'font-family',
863
+ 'font-size',
864
+ 'font-size-adjust',
865
+ 'font-stretch',
866
+ 'font-effect',
867
+ 'font-style',
868
+ 'font-variant',
869
+ 'font-weight',
870
+ 'font-smoothing',
871
+ 'font-display',
872
+
873
+ 'font-emphasize',
874
+ 'font-emphasize-position',
875
+ 'font-emphasize-style'
876
+ ]
877
+ },
878
+ {
879
+ groupName: 'Text',
880
+ emptyLineBefore: 'always',
881
+ noEmptyLineBetween: true,
882
+ properties: [
883
+ 'letter-spacing',
884
+ 'line-height',
885
+ 'word-spacing',
886
+
887
+ 'text-align',
888
+ 'text-align-last',
889
+ 'text-decoration',
890
+ 'text-indent',
891
+ 'text-justify',
892
+ 'text-overflow',
893
+ 'text-overflow-ellipsis',
894
+ 'text-overflow-mode',
895
+ 'text-rendering',
896
+ 'text-outline',
897
+ 'text-shadow',
898
+ 'text-transform',
899
+ 'text-wrap',
900
+ 'word-wrap',
901
+ 'overflow-wrap',
902
+ 'word-break',
903
+
904
+ 'text-emphasis',
905
+ 'text-emphasis-color',
906
+ 'text-emphasis-style',
907
+ 'text-emphasis-position',
908
+
909
+ 'vertical-align',
910
+ 'white-space',
911
+ 'word-spacing',
912
+ 'hyphens',
913
+ 'hyphenate-character',
914
+
915
+ 'src'
916
+ ]
917
+ },
918
+ {
919
+ groupName: 'Other',
920
+ emptyLineBefore: 'always',
921
+ noEmptyLineBetween: true,
922
+ properties: [
923
+ 'tab-size',
924
+ 'counter-reset',
925
+ 'counter-increment',
926
+ 'resize',
927
+ 'cursor',
928
+ 'pointer-events',
929
+ 'speak',
930
+ 'user-select',
931
+ 'touch-callout',
932
+ 'nav-index',
933
+ 'nav-up',
934
+ 'nav-right',
935
+ 'nav-down',
936
+ 'nav-left'
937
+ ]
938
+ }
939
+ ],
940
+ {
941
+ unspecified: 'bottom',
942
+ emptyLineBeforeUnspecified: 'always',
943
+ emptyLineMinimumPropertyThreshold: 0
944
+ }
945
+ ],
946
+
947
+ /**
948
+ * stylelint-scss
949
+ *
950
+ * @see https://www.npmjs.com/package/stylelint-scss
951
+ */
952
+ 'scss/at-each-key-value-single-line': true,
953
+ 'scss/at-else-closing-brace-newline-after': 'always-last-in-chain',
954
+ 'scss/at-else-closing-brace-space-after': 'never-intermediate',
955
+ 'scss/at-else-empty-line-before': 'never',
956
+ 'scss/at-else-if-parentheses-space-before': 'always',
957
+ 'scss/at-extend-no-missing-placeholder': true,
958
+ 'scss/function-calculation-no-interpolation': true,
959
+ 'scss/at-function-named-arguments': ['never', { ignoreFunctions: ['scale-color', 'color.scale'] }],
960
+ 'scss/at-function-parentheses-space-before': 'always',
961
+ 'scss/at-function-pattern': '^[a-z]+(-[a-z]+)*$',
962
+ 'scss/at-if-closing-brace-newline-after': 'always-last-in-chain',
963
+ 'scss/at-if-closing-brace-space-after': 'never-intermediate',
964
+ 'scss/at-if-no-null': true,
965
+ 'scss/at-import-partial-extension-allowed-list': null,
966
+ 'scss/at-import-partial-extension-disallowed-list': null,
967
+ 'scss/at-mixin-argumentless-call-parentheses': 'never',
968
+ 'scss/at-mixin-named-arguments': ['always', { ignore: ['single-argument'] }],
969
+ 'scss/at-mixin-no-risky-nesting-selector': true,
970
+ 'scss/at-mixin-parentheses-space-before': 'always',
971
+ 'scss/at-mixin-pattern': '^[a-z]+(-[a-z]+)*$',
972
+ 'scss/at-root-no-redundant': true,
973
+ 'scss/at-rule-conditional-no-parentheses': true,
974
+ 'scss/at-rule-no-unknown': true,
975
+ 'scss/at-use-no-unnamespaced': true,
976
+ 'scss/at-use-no-redundant-alias': null,
977
+ 'scss/block-no-redundant-nesting': null,
978
+ 'scss/comment-no-empty': true,
979
+ 'scss/comment-no-loud': true,
980
+ 'scss/declaration-nested-properties-no-divided-groups': true,
981
+ 'scss/declaration-nested-properties': 'never',
982
+ 'scss/declaration-property-value-no-unknown': [
983
+ true,
984
+ {
985
+ ignoreProperties: {
986
+ 'initial-value': /.+/u,
987
+ 'grid-template-areas': /^\([^\u0000]+\)$/u, // Whole block wrapped in parentheses.
988
+ '/.+/': /((^|\s)\$[a-z])|/ui // SCSS variables
989
+ }
990
+ }
991
+ ],
992
+ 'scss/dimension-no-non-numeric-values': true,
993
+ 'scss/dollar-variable-colon-newline-after': null,
994
+ 'scss/dollar-variable-colon-space-after': 'always',
995
+ 'scss/dollar-variable-colon-space-before': 'never',
996
+ 'scss/dollar-variable-default': null,
997
+ 'scss/dollar-variable-empty-line-before': [
998
+ 'always',
999
+ {
1000
+ except: ['first-nested', 'after-comment', 'after-dollar-variable']
1001
+ }
1002
+ ],
1003
+ 'scss/dollar-variable-empty-line-after': [
1004
+ 'always',
1005
+ {
1006
+ except: ['last-nested', 'before-dollar-variable'],
1007
+ ignore: ['before-comment', 'inside-single-line-block']
1008
+ }
1009
+ ],
1010
+ 'scss/dollar-variable-first-in-block': [true, { ignore: ['comments', 'imports'] }],
1011
+ 'scss/dollar-variable-no-missing-interpolation': true,
1012
+ 'scss/dollar-variable-no-namespaced-assignment': true,
1013
+ 'scss/dollar-variable-pattern': '^[a-z]+(-[a-z]+)*$',
1014
+ 'scss/double-slash-comment-empty-line-before': [
1015
+ 'always',
1016
+ {
1017
+ except: ['first-nested'],
1018
+ ignore: ['between-comments', 'stylelint-commands']
1019
+ }
1020
+ ],
1021
+ 'scss/double-slash-comment-inline': null,
1022
+ 'scss/double-slash-comment-whitespace-inside': 'always',
1023
+ 'scss/function-color-channel': true,
1024
+ 'scss/function-color-relative': true,
1025
+ 'scss/function-disallowed-list': null,
1026
+ 'scss/function-no-unknown': [true, { ignoreFunctions: [/^custom-/u] }],
1027
+ 'scss/function-quote-no-quoted-strings-inside': true,
1028
+ 'scss/function-unquote-no-unquoted-strings-inside': true,
1029
+ 'scss/load-no-partial-leading-underscore': null,
1030
+ 'scss/load-partial-extension': 'always',
1031
+ 'scss/map-keys-quotes': 'always',
1032
+ 'scss/media-feature-value-dollar-variable': 'never',
1033
+ 'scss/no-dollar-variables': null,
1034
+ 'scss/no-duplicate-dollar-variables': true,
1035
+ 'scss/no-duplicate-load-rules': true,
1036
+ 'scss/no-duplicate-mixins': true,
1037
+ 'scss/no-global-function-names': true,
1038
+ 'scss/no-unused-private-members': true,
1039
+ 'scss/operator-no-newline-after': true,
1040
+ 'scss/operator-no-newline-before': true,
1041
+ 'scss/operator-no-unspaced': true,
1042
+ 'scss/partial-no-import': null,
1043
+ 'scss/percent-placeholder-pattern': '^[a-z]+(-[a-z]+)*$',
1044
+ 'scss/property-no-unknown': true,
1045
+ 'scss/selector-nest-combinators': null, // Sometimes nesting does not make sense
1046
+ 'scss/selector-no-redundant-nesting-selector': true,
1047
+ 'scss/selector-no-union-class-name': true,
1048
+
1049
+ /**
1050
+ * stylelint-selector-no-empty
1051
+ *
1052
+ * @see https://github.com/ssivanatarajan/stylelint-selector-no-empty
1053
+ */
1054
+ 'plugin/stylelint-selector-no-empty': true,
1055
+
1056
+ /**
1057
+ * stylelint-selector-tag-no-without-class
1058
+ *
1059
+ * @see https://github.com/Moxio/stylelint-selector-tag-no-without-class
1060
+ */
1061
+ 'plugin/selector-tag-no-without-class': null,
1062
+
1063
+ /**
1064
+ * stylelint-use-logical-spec
1065
+ *
1066
+ * @see https://github.com/Jordan-Hall/stylelint-use-logical-spec
1067
+ */
1068
+ 'liberty/use-logical-spec': ['always', { except: [
1069
+ 'float',
1070
+
1071
+ 'inset',
1072
+ 'top',
1073
+ 'bottom',
1074
+
1075
+ 'border-top', // "border-block-start" is new and should not be used before 2022. @see https://caniuse.com/mdn-css_properties_border-block-start
1076
+ 'border-top-color', // "border-block-start-color" is new and should not be used before 2022. @see https://caniuse.com/mdn-css_properties_border-block-start-color
1077
+ 'border-top-left-radius', // "border-start-start-radius" is new and should not be used before 2022. @see https://caniuse.com/mdn-css_properties_border-start-start-radius
1078
+ 'border-top-right-radius', // "border-start-end-radius" is new and should not be used before 2022. @see https://caniuse.com/mdn-css_properties_border-start-end-radius
1079
+ 'border-top-width', // "border-block-start-width" is new and should not be used before 2022. @see https://caniuse.com/mdn-css_properties_border-block-start-width
1080
+ 'border-bottom', // "border-block-end" is new and should not be used before 2022. @see https://caniuse.com/mdn-css_properties_border-block-end
1081
+ 'border-bottom-color', // "border-block-end-color" is new and should not be used before 2022. @see https://caniuse.com/mdn-css_properties_border-block-end-color
1082
+ 'border-bottom-left-radius', // "border-end-start-radius" is new and should not be used before 2022. @see https://caniuse.com/mdn-css_properties_border-bottom-left-radius
1083
+ 'border-bottom-right-radius', // "border-end-end-radius" is new and should not be used before 2022. @see https://caniuse.com/mdn-css_properties_border-end-end-radius
1084
+ 'border-bottom-width', // "border-block-end-width" is new and should not be used before 2022. @see https://caniuse.com/mdn-css_properties_border-block-end-width
1085
+ 'border-left', // "border-inline-start" is new and should not be used before 2022. @see https://caniuse.com/mdn-css_properties_border-inline-start
1086
+ 'border-left-color', // "border-inline-start-color" is new and should not be used before 2022. @see https://caniuse.com/mdn-css_properties_border-inline-start-color
1087
+ 'border-right', // "border-inline-end" is new and should not be used before 2022. @see https://caniuse.com/mdn-css_properties_border-inline-end
1088
+ 'border-right-color', // "border-inline-end-color" is new and should not be used before 2022. @see https://caniuse.com/mdn-css_properties_border-inline-end-color
1089
+
1090
+ 'margin',
1091
+ 'margin-top',
1092
+ 'margin-bottom',
1093
+
1094
+ 'padding',
1095
+ 'padding-top',
1096
+ 'padding-bottom',
1097
+
1098
+ 'left',
1099
+ 'right',
1100
+
1101
+ 'text-align', // @todo Should only be disabled for "right", since numbers should be always aligned right, for any direction.
1102
+
1103
+ 'width', // "inline-size" is very rarely needed. I'm not aware of any use-case.
1104
+ 'height', // "block-size" is very rarely needed. I'm not aware of any use-case.
1105
+ 'min-width', // "min-inline-size" is very rarely needed. I'm not aware of any use-case.
1106
+ 'min-height', // "min-block-size" is very rarely needed. I'm not aware of any use-case.
1107
+ 'max-width', // "max-inline-size" is very rarely needed. I'm not aware of any use-case.
1108
+ 'max-height' // "max-block-size" is very rarely needed. I'm not aware of any use-case.
1109
+ ] }]
1110
+ }
1111
+ };