/** * @type {import("eslint").Linter.Config} */ module.exports = { root: true, env: { browser: true, node: true, es2020: true, }, extends: [ "eslint:recommended", "plugin:@typescript-eslint/recommended", "plugin:import/recommended", "plugin:import/typescript", "plugin:prettier/recommended", "plugin:react-hooks/recommended", "plugin:tailwindcss/recommended", ], ignorePatterns: ["dist", ".eslintrc.cjs"], parser: "@typescript-eslint/parser", plugins: ["react-refresh"], rules: { "@typescript-eslint/consistent-type-imports": "error", "@typescript-eslint/no-empty-object-type": [ "error", { allowInterfaces: "with-single-extends", }, ], "@typescript-eslint/no-explicit-any": [ "warn", { ignoreRestArgs: true, }, ], "@typescript-eslint/no-unused-vars": [ "error", { argsIgnorePattern: "^_", caughtErrorsIgnorePattern: "^_", destructuredArrayIgnorePattern: "^_", varsIgnorePattern: "^_", }, ], "import/no-named-as-default-member": "off", "import/no-unresolved": "off", "import/order": [ "error", { groups: ["builtin", "external", "internal", ["parent", "sibling"], "index"], pathGroups: [ { pattern: "react*", group: "external", position: "before", }, { pattern: "react/**", group: "external", position: "before", }, { pattern: "react-*", group: "external", position: "before", }, { pattern: "react-*/**", group: "external", position: "before", }, { pattern: "~/**", group: "external", position: "after", }, { pattern: "@/**", group: "internal", position: "before", }, ], pathGroupsExcludedImportTypes: ["builtin"], alphabetize: { order: "asc", caseInsensitive: true, }, }, ], "react-refresh/only-export-components": [ "warn", { allowConstantExport: true, }, ], "sort-imports": [ "error", { ignoreDeclarationSort: true, }, ], "tailwindcss/no-custom-classname": "off", }, settings: { "import/resolver": { node: { extensions: [".js", ".jsx", ".ts", ".tsx"], }, }, }, };