# sass-lint config to match the AirBNB style guide
# See silverstripe-admin
files:
  include: '**/client/src/**/*.scss'
  ignore:
    - 'client/src/styles/legacy/*'
    - 'src/**/*'
options:
  formatter: stylish
  merge-default-rules: false
rules:
  # Warnings
  # Things that require actual refactoring are marked as warnings
  class-name-format:
    - 1
    - convention: hyphenatedbem
  placeholder-name-format:
    - 1
    - convention: hyphenatedlowercase
  nesting-depth:
    - 1
    - max-depth: 3
  no-ids: 1
  no-important: 1
  no-misspelled-properties:
    - 1
    - extra-properties:
       - "-moz-border-radius-topleft"
       - "-moz-border-radius-topright"
       - "-moz-border-radius-bottomleft"
       - "-moz-border-radius-bottomright"
  variable-name-format:
    - 1
    - allow-leading-underscore: true
      convention: hyphenatedlowercase
  no-extends: 1

  # Warnings: these things are preferential rather than mandatory
  no-css-comments: 1

  # Errors
  # Things that can be easily fixed are marked as errors
  indentation:
    - 2
    - size: 2
  final-newline:
    - 2
    - include: true
  no-trailing-whitespace: 2
  border-zero:
    - 2
    - convention: '0'
  brace-style:
    - 2
    - allow-single-line: true
  clean-import-paths:
    - 2
    - filename-extension: false
      leading-underscore: false
  no-debug: 2
  no-empty-rulesets: 2
  no-invalid-hex: 2
  no-mergeable-selectors: 2
  # no-qualifying-elements:
  #   - 1
  #   - allow-element-with-attribute: false
  #     allow-element-with-class: false
  #     allow-element-with-id: false
  no-trailing-zero: 2
  no-url-protocols: 2
  quotes:
    - 2
    - style: double
  space-after-bang:
    - 2
    - include: false
  space-after-colon:
    - 2
    - include: true
  space-after-comma:
    - 2
    - include: true
  space-before-bang:
    - 2
    - include: true
  space-before-brace:
    - 2
    - include: true
  space-before-colon: 2
  space-between-parens:
    - 2
    - include: false
  trailing-semicolon: 2
  url-quotes: 2
  zero-unit: 2
  single-line-per-selector: 2
  one-declaration-per-line: 2
  empty-line-between-blocks:
    - 2
    - ignore-single-line-rulesets: true


  # Missing rules
  # There are no sass-lint rules for the following AirBNB style items, but thess
  # - Put comments on their own line
  # - Put property delcarations before mixins

  # Disabled rules

  # These are other rules that we may wish to consider using in the future
  # They are not part of the AirBNB CSS standard but they would introduce some strictness
  # bem-depth: 0
  # variable-for-property: 0
  # no-transition-all: 0
  # hex-length:
  #   - 1
  #   - style: short
  # hex-notation:
  #   - 1
  #   - style: lowercase
  # property-units:
  #   - 1
  #   - global:
  #       - ch
  #       - em
  #       - ex
  #       - rem
  #       - cm
  #       - in
  #       - mm
  #       - pc
  #       - pt
  #       - px
  #       - q
  #       - vh
  #       - vw
  #       - vmin
  #       - vmax
  #       - deg
  #       - grad
  #       - rad
  #       - turn
  #       - ms
  #       - s
  #       - Hz
  #       - kHz
  #       - dpi
  #       - dpcm
  #       - dppx
  #       - '%'
  #     per-property: {}
  # force-attribute-nesting: 1
  # force-element-nesting: 1
  # force-pseudo-nesting: 1
  # function-name-format:
  #   - 1
  #   - allow-leading-underscore: true
  #     convention: hyphenatedlowercase
  # no-color-literals: 1
  # no-duplicate-properties: 1
  # mixin-name-format:
  #   - 1
  #   - allow-leading-underscore: true
  #     convention: hyphenatedlowercase
  # shorthand-values:
  #   - 1
  #   - allowed-shorthands:
  #       - 1
  #       - 2
  #       - 3
  # leading-zero:
  #   - 1
  #   - include: false
  # no-vendor-prefixes:
  #   - 1
  #   - additional-identifiers: []
  #     excluded-identifiers: []
  #     placeholder-in-extend: 1
  # no-color-keywords: 2