Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. import {fileURLToPath} from 'node:url';
  2. const cssVarFiles = [
  3. fileURLToPath(new URL('web_src/css/base.css', import.meta.url)),
  4. fileURLToPath(new URL('web_src/css/themes/theme-gitea-light.css', import.meta.url)),
  5. fileURLToPath(new URL('web_src/css/themes/theme-gitea-dark.css', import.meta.url)),
  6. ];
  7. /** @type {import('stylelint').Config} */
  8. export default {
  9. plugins: [
  10. 'stylelint-declaration-strict-value',
  11. 'stylelint-declaration-block-no-ignored-properties',
  12. 'stylelint-value-no-unknown-custom-properties',
  13. '@stylistic/stylelint-plugin',
  14. ],
  15. ignoreFiles: [
  16. '**/*.go',
  17. '/web_src/fomantic',
  18. ],
  19. overrides: [
  20. {
  21. files: ['**/chroma/*', '**/codemirror/*', '**/standalone/*', '**/console.css', 'font_i18n.css'],
  22. rules: {
  23. 'scale-unlimited/declaration-strict-value': null,
  24. },
  25. },
  26. {
  27. files: ['**/chroma/*', '**/codemirror/*'],
  28. rules: {
  29. 'block-no-empty': null,
  30. },
  31. },
  32. {
  33. files: ['**/*.vue'],
  34. customSyntax: 'postcss-html',
  35. },
  36. ],
  37. rules: {
  38. '@stylistic/at-rule-name-case': null,
  39. '@stylistic/at-rule-name-newline-after': null,
  40. '@stylistic/at-rule-name-space-after': null,
  41. '@stylistic/at-rule-semicolon-newline-after': null,
  42. '@stylistic/at-rule-semicolon-space-before': null,
  43. '@stylistic/block-closing-brace-empty-line-before': null,
  44. '@stylistic/block-closing-brace-newline-after': null,
  45. '@stylistic/block-closing-brace-newline-before': null,
  46. '@stylistic/block-closing-brace-space-after': null,
  47. '@stylistic/block-closing-brace-space-before': null,
  48. '@stylistic/block-opening-brace-newline-after': null,
  49. '@stylistic/block-opening-brace-newline-before': null,
  50. '@stylistic/block-opening-brace-space-after': null,
  51. '@stylistic/block-opening-brace-space-before': 'always',
  52. '@stylistic/color-hex-case': 'lower',
  53. '@stylistic/declaration-bang-space-after': 'never',
  54. '@stylistic/declaration-bang-space-before': null,
  55. '@stylistic/declaration-block-semicolon-newline-after': null,
  56. '@stylistic/declaration-block-semicolon-newline-before': null,
  57. '@stylistic/declaration-block-semicolon-space-after': null,
  58. '@stylistic/declaration-block-semicolon-space-before': 'never',
  59. '@stylistic/declaration-block-trailing-semicolon': null,
  60. '@stylistic/declaration-colon-newline-after': null,
  61. '@stylistic/declaration-colon-space-after': null,
  62. '@stylistic/declaration-colon-space-before': 'never',
  63. '@stylistic/function-comma-newline-after': null,
  64. '@stylistic/function-comma-newline-before': null,
  65. '@stylistic/function-comma-space-after': null,
  66. '@stylistic/function-comma-space-before': null,
  67. '@stylistic/function-max-empty-lines': 0,
  68. '@stylistic/function-parentheses-newline-inside': 'never-multi-line',
  69. '@stylistic/function-parentheses-space-inside': null,
  70. '@stylistic/function-whitespace-after': null,
  71. '@stylistic/indentation': 2,
  72. '@stylistic/linebreaks': null,
  73. '@stylistic/max-empty-lines': 1,
  74. '@stylistic/max-line-length': null,
  75. '@stylistic/media-feature-colon-space-after': null,
  76. '@stylistic/media-feature-colon-space-before': 'never',
  77. '@stylistic/media-feature-name-case': null,
  78. '@stylistic/media-feature-parentheses-space-inside': null,
  79. '@stylistic/media-feature-range-operator-space-after': 'always',
  80. '@stylistic/media-feature-range-operator-space-before': 'always',
  81. '@stylistic/media-query-list-comma-newline-after': null,
  82. '@stylistic/media-query-list-comma-newline-before': null,
  83. '@stylistic/media-query-list-comma-space-after': null,
  84. '@stylistic/media-query-list-comma-space-before': null,
  85. '@stylistic/named-grid-areas-alignment': null,
  86. '@stylistic/no-empty-first-line': null,
  87. '@stylistic/no-eol-whitespace': true,
  88. '@stylistic/no-extra-semicolons': true,
  89. '@stylistic/no-missing-end-of-source-newline': null,
  90. '@stylistic/number-leading-zero': null,
  91. '@stylistic/number-no-trailing-zeros': null,
  92. '@stylistic/property-case': 'lower',
  93. '@stylistic/selector-attribute-brackets-space-inside': null,
  94. '@stylistic/selector-attribute-operator-space-after': null,
  95. '@stylistic/selector-attribute-operator-space-before': null,
  96. '@stylistic/selector-combinator-space-after': null,
  97. '@stylistic/selector-combinator-space-before': null,
  98. '@stylistic/selector-descendant-combinator-no-non-space': null,
  99. '@stylistic/selector-list-comma-newline-after': null,
  100. '@stylistic/selector-list-comma-newline-before': null,
  101. '@stylistic/selector-list-comma-space-after': 'always-single-line',
  102. '@stylistic/selector-list-comma-space-before': 'never-single-line',
  103. '@stylistic/selector-max-empty-lines': 0,
  104. '@stylistic/selector-pseudo-class-case': 'lower',
  105. '@stylistic/selector-pseudo-class-parentheses-space-inside': 'never',
  106. '@stylistic/selector-pseudo-element-case': 'lower',
  107. '@stylistic/string-quotes': 'double',
  108. '@stylistic/unicode-bom': null,
  109. '@stylistic/unit-case': 'lower',
  110. '@stylistic/value-list-comma-newline-after': null,
  111. '@stylistic/value-list-comma-newline-before': null,
  112. '@stylistic/value-list-comma-space-after': null,
  113. '@stylistic/value-list-comma-space-before': null,
  114. '@stylistic/value-list-max-empty-lines': 0,
  115. 'alpha-value-notation': null,
  116. 'annotation-no-unknown': true,
  117. 'at-rule-allowed-list': null,
  118. 'at-rule-disallowed-list': null,
  119. 'at-rule-empty-line-before': null,
  120. 'at-rule-no-unknown': [true, {ignoreAtRules: ['tailwind']}],
  121. 'at-rule-no-vendor-prefix': true,
  122. 'at-rule-property-required-list': null,
  123. 'block-no-empty': true,
  124. 'color-function-notation': null,
  125. 'color-hex-alpha': null,
  126. 'color-hex-length': null,
  127. 'color-named': null,
  128. 'color-no-hex': null,
  129. 'color-no-invalid-hex': true,
  130. 'comment-empty-line-before': null,
  131. 'comment-no-empty': true,
  132. 'comment-pattern': null,
  133. 'comment-whitespace-inside': null,
  134. 'comment-word-disallowed-list': null,
  135. 'csstools/value-no-unknown-custom-properties': [true, {importFrom: cssVarFiles}],
  136. 'custom-media-pattern': null,
  137. 'custom-property-empty-line-before': null,
  138. 'custom-property-no-missing-var-function': true,
  139. 'custom-property-pattern': null,
  140. 'declaration-block-no-duplicate-custom-properties': true,
  141. 'declaration-block-no-duplicate-properties': [true, {ignore: ['consecutive-duplicates-with-different-values']}],
  142. 'declaration-block-no-redundant-longhand-properties': null,
  143. 'declaration-block-no-shorthand-property-overrides': null,
  144. 'declaration-block-single-line-max-declarations': null,
  145. 'declaration-empty-line-before': null,
  146. 'declaration-no-important': null,
  147. 'declaration-property-max-values': null,
  148. 'declaration-property-unit-allowed-list': null,
  149. 'declaration-property-unit-disallowed-list': {'line-height': ['em']},
  150. 'declaration-property-value-allowed-list': null,
  151. 'declaration-property-value-disallowed-list': null,
  152. 'declaration-property-value-no-unknown': true,
  153. 'font-family-name-quotes': 'always-where-recommended',
  154. 'font-family-no-duplicate-names': true,
  155. 'font-family-no-missing-generic-family-keyword': true,
  156. 'font-weight-notation': null,
  157. 'function-allowed-list': null,
  158. 'function-calc-no-unspaced-operator': true,
  159. 'function-disallowed-list': null,
  160. 'function-linear-gradient-no-nonstandard-direction': true,
  161. 'function-name-case': 'lower',
  162. 'function-no-unknown': true,
  163. 'function-url-no-scheme-relative': null,
  164. 'function-url-quotes': 'always',
  165. 'function-url-scheme-allowed-list': null,
  166. 'function-url-scheme-disallowed-list': null,
  167. 'hue-degree-notation': null,
  168. 'import-notation': 'string',
  169. 'keyframe-block-no-duplicate-selectors': true,
  170. 'keyframe-declaration-no-important': true,
  171. 'keyframe-selector-notation': null,
  172. 'keyframes-name-pattern': null,
  173. 'length-zero-no-unit': [true, {ignore: ['custom-properties']}, {ignoreFunctions: ['var']}],
  174. 'max-nesting-depth': null,
  175. 'media-feature-name-allowed-list': null,
  176. 'media-feature-name-disallowed-list': null,
  177. 'media-feature-name-no-unknown': true,
  178. 'media-feature-name-no-vendor-prefix': true,
  179. 'media-feature-name-unit-allowed-list': null,
  180. 'media-feature-name-value-allowed-list': null,
  181. 'media-feature-name-value-no-unknown': true,
  182. 'media-feature-range-notation': null,
  183. 'media-query-no-invalid': true,
  184. 'named-grid-areas-no-invalid': true,
  185. 'no-descending-specificity': null,
  186. 'no-duplicate-at-import-rules': true,
  187. 'no-duplicate-selectors': true,
  188. 'no-empty-source': true,
  189. 'no-invalid-double-slash-comments': true,
  190. 'no-invalid-position-at-import-rule': [true, {ignoreAtRules: ['tailwind']}],
  191. 'no-irregular-whitespace': true,
  192. 'no-unknown-animations': null, // disabled until stylelint supports multi-file linting
  193. 'no-unknown-custom-media': null, // disabled until stylelint supports multi-file linting
  194. 'no-unknown-custom-properties': null, // disabled until stylelint supports multi-file linting
  195. 'number-max-precision': null,
  196. 'plugin/declaration-block-no-ignored-properties': true,
  197. 'property-allowed-list': null,
  198. 'property-disallowed-list': null,
  199. 'property-no-unknown': true,
  200. 'property-no-vendor-prefix': null,
  201. 'rule-empty-line-before': null,
  202. 'rule-selector-property-disallowed-list': null,
  203. 'scale-unlimited/declaration-strict-value': [['/color$/', 'font-weight'], {ignoreValues: '/^(inherit|transparent|unset|initial|currentcolor|none)$/', ignoreFunctions: false, disableFix: true, expandShorthand: true}],
  204. 'selector-anb-no-unmatchable': true,
  205. 'selector-attribute-name-disallowed-list': null,
  206. 'selector-attribute-operator-allowed-list': null,
  207. 'selector-attribute-operator-disallowed-list': null,
  208. 'selector-attribute-quotes': 'always',
  209. 'selector-class-pattern': null,
  210. 'selector-combinator-allowed-list': null,
  211. 'selector-combinator-disallowed-list': null,
  212. 'selector-disallowed-list': null,
  213. 'selector-id-pattern': null,
  214. 'selector-max-attribute': null,
  215. 'selector-max-class': null,
  216. 'selector-max-combinators': null,
  217. 'selector-max-compound-selectors': null,
  218. 'selector-max-id': null,
  219. 'selector-max-pseudo-class': null,
  220. 'selector-max-specificity': null,
  221. 'selector-max-type': null,
  222. 'selector-max-universal': null,
  223. 'selector-nested-pattern': null,
  224. 'selector-no-qualifying-type': null,
  225. 'selector-no-vendor-prefix': true,
  226. 'selector-not-notation': null,
  227. 'selector-pseudo-class-allowed-list': null,
  228. 'selector-pseudo-class-disallowed-list': null,
  229. 'selector-pseudo-class-no-unknown': true,
  230. 'selector-pseudo-element-allowed-list': null,
  231. 'selector-pseudo-element-colon-notation': 'double',
  232. 'selector-pseudo-element-disallowed-list': null,
  233. 'selector-pseudo-element-no-unknown': true,
  234. 'selector-type-case': 'lower',
  235. 'selector-type-no-unknown': [true, {ignore: ['custom-elements']}],
  236. 'shorthand-property-no-redundant-values': true,
  237. 'string-no-newline': true,
  238. 'time-min-milliseconds': null,
  239. 'unit-allowed-list': null,
  240. 'unit-disallowed-list': null,
  241. 'unit-no-unknown': true,
  242. 'value-keyword-case': null,
  243. 'value-no-vendor-prefix': [true, {ignoreValues: ['box', 'inline-box']}],
  244. },
  245. };