/* eslint-disable filenames/match-regex */
module.exports = {
  extends: [
    // Use the Standard config as the base
    // https://github.com/stylelint/stylelint-config-standard
    'stylelint-config-standard',
    // Enforce a standard order for CSS properties
    // https://github.com/stormwarning/stylelint-config-recess-order
    'stylelint-config-recess-order',
    // Override rules that would interfere with Prettier
    // https://github.com/shannonmoeller/stylelint-config-prettier
    'stylelint-config-prettier',
    // Override rules to allow linting of CSS modules
    // https://github.com/pascalduez/stylelint-config-css-modules
    'stylelint-config-css-modules',
  ],
  plugins: [
    // Bring in some extra rules for SCSS
    'stylelint-scss',
    'stylelint-no-unsupported-browser-features',
    'stylelint-declaration-use-variable',
  ],
  // Rule lists:
  // - https://stylelint.io/user-guide/rules/
  // - https://github.com/kristerkari/stylelint-scss#list-of-rules
  rules: {
    'no-empty-source': null,
    // Allow newlines inside class attribute values
    'string-no-newline': null,
    // Enforce camelCase for classes and ids, to work better
    // with CSS modules
    'selector-class-pattern': [
      /^(vuecal__)?[a-z-]+$/,
      {
        message: 'class名只能使用小写字母和“-”\n',
      },
    ],
    'selector-id-pattern': [
      /^[a-z-]+$/,
      {
        message: 'id名只能使用小写字母和“-”\n',
      },
    ],
    // Limit the number of universal selectors in a selector,
    // to avoid very slow selectors
    'selector-max-universal': 1,
    // Disallow allow global element/type selectors in scoped modules
    'selector-max-type': [0, { ignore: ['child', 'descendant', 'compounded'] }],
    // ===
    // SCSS
    // ===
    'scss/dollar-variable-colon-space-after': 'always',
    'scss/dollar-variable-colon-space-before': 'never',
    'scss/dollar-variable-no-missing-interpolation': true,
    'scss/dollar-variable-pattern': /^[a-z-]+$/,
    'scss/double-slash-comment-whitespace-inside': 'always',
    'scss/operator-no-newline-before': true,
    'scss/operator-no-unspaced': true,
    'scss/selector-no-redundant-nesting-selector': true,
    // Allow SCSS and CSS module keywords beginning with `@`
    'at-rule-no-unknown': null,
    'scss/at-rule-no-unknown': true,
    // scss 嵌套的优先级计算有问题
    'no-descending-specificity': null,
    // 检测浏览器不支持的特性
    'plugin/no-unsupported-browser-features': [
      true,
      {
        severity: 'warning',
        ignore: [
          'user-select-none',
          'css3-cursors',
          'flexbox',
          'calc',
          'css-resize',
          'viewport-units',
        ],
      },
    ],
    // 禁止使用important
    'declaration-no-important': [
      true,
      {
        message: '禁止使用important，导致项目覆盖样式困难\n',
      },
    ],
    // 禁止使用厂商前缀(postCSS会自动处理)，如-webkit-
    'at-rule-no-vendor-prefix': [
      true,
      {
        message: '禁止使用厂商前缀，postCSS会自动处理\n',
      },
    ],
    'media-feature-name-no-vendor-prefix': [
      true,
      {
        message: '禁止使用厂商前缀，postCSS会自动处理\n',
      },
    ],
    'value-no-vendor-prefix': [
      true,
      {
        message: '禁止使用厂商前缀，postCSS会自动处理\n',
      },
    ],
    'property-no-vendor-prefix': [
      true,
      {
        message: '禁止使用厂商前缀，postCSS会自动处理\n',
      },
    ],
    'selector-no-vendor-prefix': [
      true,
      {
        message: '禁止使用厂商前缀，postCSS会自动处理\n',
      },
    ],
    // 禁止直接使用绝对大小的字号
    'declaration-property-unit-disallowed-list': [
      {
        'font-size': ['pt', 'px'],
        'line-height': ['pt', 'px'],
      },
      {
        message: `主题中会更改字号，所以font-size需要引用相关变量，如$font-size-base、$font-size-lg\nline-height请使用相对值，如1.5\n`,
      },
    ],
    // 禁止直接使用色值。应该使用主题中的变量
    'sh-waqar/declaration-use-variable': [
      [
        '/color/',
        'font-family',
        {
          ignoreValues: ['currentColor', 'inherit', 'transparent', 'initial'],
        },
      ],
      {
        message: `主题中会更改颜色和字体，所以需要引用相关变量，如$primary-color、$component-background\n`,
      },
    ],
  },
  ignoreFiles: ['**/*.js', 'public/*.*', 'src/common/design/index.scss', 'src_custom/www/**/*.*'],
}
