{ "root": true, "env": { "browser": true, "amd": true, "node": true, "es2022": true }, "parser": "@typescript-eslint/parser", "parserOptions": { "ecmaVersion": "latest", "sourceType": "module", "ecmaFeatures": { "jsx": true } }, "extends": [ "eslint:recommended", "plugin:@typescript-eslint/recommended", "plugin:typescript-sort-keys/recommended", "plugin:import/recommended", "plugin:react/recommended", "plugin:react/jsx-runtime", "plugin:jsx-a11y/recommended", "plugin:react-hooks/recommended", "plugin:astro/recommended", "prettier", "plugin:storybook/recommended" ], "plugins": [ "@typescript-eslint", "typescript-sort-keys", "sort-keys-fix", "sort-destructure-keys", "prettier" ], "rules": { "@typescript-eslint/ban-ts-comment": "off", "prettier/prettier": "error", "sort-keys-fix/sort-keys-fix": ["warn", "asc"], "sort-destructure-keys/sort-destructure-keys": "warn", "jsx-a11y/no-static-element-interactions": "off", "jsx-a11y/media-has-caption": "off", "jsx-a11y/no-noninteractive-tabindex": "off", "jsx-a11y/label-has-associated-control": "off", "react/jsx-sort-props": [ "warn", { "callbacksLast": true, "multiline": "last" } ] }, "settings": { "react": { "version": "detect" }, "import/parsers": { "@typescript-eslint/parser": [".ts", ".tsx", ".js", ".jsx"] }, "import/resolver": { "typescript": true, "node": true, "alias": { "extensions": [".js", ".jsx", ".ts", ".tsx", ".d.ts"], "map": [["@", "./src"]] } } }, "overrides": [ { "files": ["**/*.astro"], "parser": "astro-eslint-parser", "parserOptions": { "parser": "@typescript-eslint/parser", "extraFileExtensions": [".astro"] }, "rules": { "prettier/prettier": "error", "react/no-unknown-property": "off", "react/jsx-key": "off", "react/jsx-no-undef": "off" }, "globals": { "Astro": "readonly" } }, { "files": ["**/*.astro/*.js"], "rules": { "prettier/prettier": "off" } } ] }