{
	"root": true,
	"extends": ["marine/prettier/react", "plugin:import/typescript"],
	"parserOptions": {
		"ecmaVersion": 2020,
		"sourceType": "module",
		"ecmaFeatures": {
			"jsx": true
		},
		"jsx": true,
		"project": "./tsconfig.eslint.json"
	},
	"plugins": ["import", "jsx-a11y", "react", "react-hooks"],
	"settings": {
		"react": {
			"version": "detect"
		}
	},
	"overrides": [
		{
			"files": ["docusaurus.config.js", "babel.config.js", "sidebars.js"],
			"rules": {
				"@typescript-eslint/no-var-requires": "off",
				"@typescript-eslint/ban-ts-comment": "off",
				"@typescript-eslint/no-require-imports": "off"
			}
		}
	],
	"rules": {
		"no-extra-label": "warn",
		"no-iterator": "warn",
		"no-label-var": "warn",
		"no-labels": [
			"warn",
			{
				"allowLoop": true,
				"allowSwitch": true
			}
		],
		"no-lone-blocks": "warn",
		"no-loop-func": "warn",
		"no-mixed-operators": [
			"warn",
			{
				"groups": [
					["&", "|", "^", "~", "<<", ">>", ">>>"],
					["==", "!=", "===", "!==", ">", ">=", "<", "<="],
					["&&", "||"],
					["in", "instanceof"]
				],
				"allowSamePrecedence": false
			}
		],
		"no-multi-str": "warn",
		"rest-spread-spacing": ["warn", "never"],
		"no-restricted-properties": [
			"error",
			{
				"object": "require",
				"property": "ensure",
				"message": "Please use import() instead. More info: https://facebook.github.io/create-react-app/docs/code-splitting"
			},
			{
				"object": "System",
				"property": "import",
				"message": "Please use import() instead. More info: https://facebook.github.io/create-react-app/docs/code-splitting"
			}
		],
		"getter-return": "warn",
		"import/first": "error",
		"import/no-amd": "error",
		"import/no-webpack-loader-syntax": "error",
		"react/forbid-foreign-prop-types": [
			"warn",
			{
				"allowInPropTypes": true
			}
		],
		"react/jsx-no-comment-textnodes": "warn",
		"react/jsx-no-duplicate-props": "warn",
		"react/jsx-no-target-blank": "warn",
		"react/jsx-no-undef": "error",
		"react/jsx-pascal-case": [
			"warn",
			{
				"allowAllCaps": true,
				"ignore": []
			}
		],
		"react/jsx-uses-react": "warn",
		"react/jsx-uses-vars": "warn",
		"react/no-children-prop": "warn",
		"react/no-access-state-in-setstate": "warn",
		"react/no-danger": "error",
		"react/no-danger-with-children": "warn",
		"react/no-direct-mutation-state": "warn",
		"react/no-is-mounted": "warn",
		"react/no-this-in-sfc": "warn",
		"react/no-typos": "error",
		"react/react-in-jsx-scope": "error",
		"react/require-render-return": "error",
		"react/style-prop-object": "warn",
		"react/void-dom-elements-no-children": "warn",
		"react/jsx-filename-extension": [
			"error",
			{
				"extensions": [".jsx", ".tsx"]
			}
		],
		"jsx-a11y/accessible-emoji": "warn",
		"jsx-a11y/alt-text": "warn",
		"jsx-a11y/anchor-has-content": "warn",
		"jsx-a11y/anchor-is-valid": [
			"warn",
			{
				"aspects": ["noHref", "invalidHref"]
			}
		],
		"jsx-a11y/aria-activedescendant-has-tabindex": "warn",
		"jsx-a11y/aria-props": "warn",
		"jsx-a11y/aria-proptypes": "warn",
		"jsx-a11y/aria-role": [
			"warn",
			{
				"ignoreNonDOM": true
			}
		],
		"jsx-a11y/aria-unsupported-elements": "warn",
		"jsx-a11y/heading-has-content": "warn",
		"jsx-a11y/iframe-has-title": "warn",
		"jsx-a11y/img-redundant-alt": "warn",
		"jsx-a11y/no-access-key": "warn",
		"jsx-a11y/no-distracting-elements": "warn",
		"jsx-a11y/no-redundant-roles": "warn",
		"jsx-a11y/role-has-required-aria-props": "warn",
		"jsx-a11y/role-supports-aria-props": "warn",
		"jsx-a11y/scope": "warn",
		"react-hooks/exhaustive-deps": "warn",
		"react-hooks/rules-of-hooks": "error"
	}
}
