{
  "extends": "../base/.eslintrc.json",
  "plugins": [
    "react"
  ],
  "parserOptions": {
    "ecmaFeatures": {
      "jsx": true
    }
  },
  "rules": {
    "jsx-quotes": [2, "prefer-double"],

    "react/jsx-no-duplicate-props": 2,
    "react/react-in-jsx-scope": 2,
    "react/jsx-boolean-value": 2,
    "react/jsx-no-undef": 2,
    "react/jsx-uses-react": 2,
    "react/jsx-uses-vars": 2,
    "react/jsx-handler-names": [
      2,
      {
        "eventHandlerPrefix": "on",
        "eventHandlerPropPrefix": "on"
      }
    ]
  }
}

{
  "extends": "../base/.eslintrc.json",
  "plugins": [
    "react"
  ],
  "parserOptions": {
    "ecmaFeatures": {
      "jsx": true
    }
  },
  "rules": {
    "jsx-quotes": [2, "prefer-double"],

    "react/jsx-indent-props": [2, 2],
    "react/jsx-handler-names": [2, { "eventHandlerPrefix": "on", "eventHandlerPropPrefix": "on" }],
    "react/jsx-boolean-value": [2, "never"],
    "react/jsx-closing-bracket-location": [2, { "nonEmpty": "line-aligned", "selfClosing": "tag-aligned" }],
    "react/jsx-curly-spacing": [2, "never"],
    "react/jsx-equals-spacing": [2, "never"],
    "react/jsx-first-prop-new-line": [2, "multiline"],
    "react/jsx-max-props-per-line": [2, { "maximum": 3 }],
    "react/jsx-pascal-case": [2, { "allowAllCaps": true }],
    "react/jsx-space-before-closing": [2, "always"],

    "react/jsx-tag-spacing": 2,
    "react/jsx-no-duplicate-props": 2,
    "react/jsx-boolean-value": 2,
    "react/jsx-no-undef": 2,
    "react/jsx-uses-react": 2,
    "react/jsx-uses-vars": 2,
    "react/jsx-key": 2,

    "react/react-in-jsx-scope": 2,
    "react/no-children-prop": 2,
    "react/no-direct-mutation-state": 2,
    "react/no-string-refs": 2,
    "react/no-unknown-property": 2,
    "react/no-unescaped-entities": 2,
    "react/prop-types": 2,
    "react/require-render-return": 2,
    "react/self-closing-comp": 2,
    "react/sort-comp": 2
  }
}

Add new React / JSX rules
Add new React / JSX rules
