/** * @type {import("eslint").Linter.Config} */ module.exports = { env: { browser: true, es2021: true, }, settings: { react: { version: "detect", }, "import/parsers": { "@typescript-eslint/parser": [".ts", ".tsx"], }, "import/resolver": { typescript: {}, }, }, extends: [ "eslint:recommended", "plugin:react/recommended", "plugin:@typescript-eslint/recommended-type-checked", "plugin:@typescript-eslint/stylistic-type-checked", "plugin:import/recommended", "plugin:import/typescript", "prettier", "plugin:storybook/recommended", ], overrides: [], parser: "@typescript-eslint/parser", parserOptions: { ecmaVersion: "latest", sourceType: "module", project: true, tsconfigRootDir: __dirname, }, plugins: ["react", "@typescript-eslint", "react-hooks", "import"], rules: { "@typescript-eslint/consistent-type-definitions": "off", "@typescript-eslint/no-unsafe-return": "off", "@typescript-eslint/array-type": "off", "@typescript-eslint/prefer-nullish-coalescing": "off", "no-console": "error", "react/react-in-jsx-scope": "off", "react-hooks/rules-of-hooks": "error", "react-hooks/exhaustive-deps": "warn", "import/no-unresolved": "error", "import/order": [ "error", { pathGroups: [ { pattern: "~/**", group: "internal", }, { pattern: "./*.css", group: "index", }, ], groups: [ "external", "builtin", "internal", "parent", "sibling", "index", ], }, ], }, ignorePatterns: [".eslintrc.cjs", "vite.config.ts"], overrides: [ { files: ["*.stories.tsx"], rules: { "@typescript-eslint/no-unsafe-assignment": "off", "@typescript-eslint/no-unsafe-return": "off", "@typescript-eslint/no-unsafe-member-access": "off", "@typescript-eslint/no-unsafe-call": "off", "@typescript-eslint/no-unsafe-argument": "off", "@typescript-eslint/no-unsafe-argument": "off", "@typescript-eslint/no-floating-promises": "off", }, }, ], };