import js from '@eslint/js'; import tseslint from 'typescript-eslint'; import react from 'eslint-plugin-react'; import reactHooks from 'eslint-plugin-react-hooks'; import reactRefresh from 'eslint-plugin-react-refresh'; export default tseslint.config( // Ignore generated files and build outputs { ignores: ['dist', 'node_modules', 'src/routeTree.gen.ts', '*.config.js'], }, // Base configs js.configs.recommended, ...tseslint.configs.recommendedTypeChecked, // React plugin configuration { files: ['**/*.{ts,tsx}'], plugins: { react, 'react-hooks': reactHooks, 'react-refresh': reactRefresh, }, languageOptions: { parserOptions: { project: true, tsconfigRootDir: import.meta.dirname, ecmaFeatures: { jsx: true, }, }, }, settings: { react: { version: '19.0', }, }, rules: { // React rules ...react.configs.recommended.rules, ...react.configs['jsx-runtime'].rules, ...reactHooks.configs.recommended.rules, // React Refresh 'react-refresh/only-export-components': [ 'warn', { allowConstantExport: true }, ], // TypeScript overrides '@typescript-eslint/no-unused-vars': [ 'error', { argsIgnorePattern: '^_', varsIgnorePattern: '^_', }, ], '@typescript-eslint/no-explicit-any': 'warn', // Disable prop-types since we're using TypeScript 'react/prop-types': 'off', }, } );