{
  "root": true,
  "parser": "@typescript-eslint/parser",
  "plugins": ["jsx-a11y", "@typescript-eslint", "testing-library", "jest", "prettier"],
  "extends": [
    "plugin:jsx-a11y/recommended",
    "plugin:import/recommended",
    "plugin:import/typescript",
    "plugin:react/recommended",
    "plugin:react-hooks/recommended",
    "airbnb-typescript",
    "eslint:recommended",
    "plugin:@typescript-eslint/recommended",
    "plugin:jest/recommended",
    "prettier"
  ],
  "settings": {
    "react": {
      "version": "detect"
    }
  },
  "env": {
    "es6": true,
    "browser": true,
    "node": true,
    "jest/globals": true
  },
  "rules": {
    "react/prop-types": "off",
    // "@typescript-eslint/ban-ts-comment": "off",
    // "@typescript-eslint/no-use-before-define": "off",
    // "no-param-reassign": "off",
    "no-console": "off",
    "import/order": [
      "error",
      {
        "groups": ["builtin", "external", "internal", "parent", "sibling", "index", "object"],
        "newlines-between": "always",
        "alphabetize": { "order": "asc", "caseInsensitive": true }
      }
    ],
    "linebreak-style": ["error", "unix"],
    // "jsx-a11y/no-autofocus": "off",
    // "react/forbid-prop-types": "off",
    // "import/prefer-default-export": "off",
    // "import/export": "off",
    // "no-underscore-dangle": "off",
    // "no-shadow": "off",
    // "no-plusplus": "off",
    // "spaced-comment": "off",
    // "guard-for-in": "off",
    // "react/no-danger": "off",
    // "react/button-has-type": "off",
    // "react/no-unescaped-entities": "off",
    // "operator-assignment": "off",
    // "prefer-destructuring": "off",
    // "react/no-children-prop": "off",
    // "consistent-return": "off",
    // "react/state-in-constructor": "off",
    // "no-restricted-syntax": "off",
    // "no-continue": "off",
    // "eqeqeq": "off",
    // "react/destructuring-assignment": "off",
    // "@typescript-eslint/dot-notation": "off",
    // "no-bitwise": "off",
    // "no-redeclare": "off",
    // "@typescript-eslint/naming-convention": "off",
    // "import/no-extraneous-dependencies": "off",
    // "@typescript-eslint/lines-between-class-members": "off",
    // "no-alert": "off",
    // "react/jsx-filename-extension": ["error", { "extensions": [".js", ".tsx"] }],
    // "react/jsx-props-no-spreading": "off",
    // "react/no-array-index-key": "off",
    // "react/require-default-props": "off",
    // "react/sort-prop-types": "error",

    // "@typescript-eslint/no-shadow": "off",
    // "react-hooks/exhaustive-deps": "error",
    // "import/no-named-as-default": "off",
    // "prefer-object-spread": "off",
    // "arrow-body-style": "off",
    // "react/sort-comp": "off"
    // "import/default": "off",
    // "import/no-named-as-default-member": "off",
    // "import/no-named-as-default": "off",
    // "react/jsx-no-useless-fragment": "off",
    // "jsx-a11y/anchor-has-content": "warn",
    // "no-fallthrough": "warn",
    // "array-callback-return": "warn",
    // "import/prefer-default-export": "warn",
    // "@typescript-eslint/ban-types": "warn",
    // "eqeqeq": "warn",
    // "no-lonely-if": "warn",
    "react/display-name": "off",
    // "consistent-return": "warn",
    // "react/no-unused-prop-types": "warn",
    // "react/react-in-jsx-scope": "warn",
    // "jsx-a11y/anchor-is-valid": "warn",
    // "jsx-a11y/mouse-events-have-key-events": "warn",
    // "@typescript-eslint/no-unused-vars": ["warn"],
    // "@typescript-eslint/explicit-function-return-type": ["warn"],
    // "@typescript-eslint/explicit-module-boundary-types": ["warn"],
    // "@typescript-eslint/no-empty-function": ["warn"],
    // "@typescript-eslint/no-explicit-any": ["warn"],
    // "@typescript-eslint/no-use-before-define": "warn",
    // "no-return-await": "warn",
    // "@typescript-eslint/return-await": "warn",
    // "no-param-reassign": "warn",
    // "react/require-default-props": "warn",
    "react/function-component-definition": "off"
  },
  "overrides": [
    {
      "files": ["src/**/*.ts", "src/**/*.tsx", "tests/**/*.ts", "tests/**/*.tsx"],
      "parserOptions": {
        "project": ["tsconfig.json"]
      }
    }
  ],
  "ignorePatterns": ["src/stories/**/*", "jest.config.js"]
}
