// @ts-check import js from '@eslint/js'; import globals from 'globals'; import reactHooks from 'eslint-plugin-react-hooks'; import reactRefresh from 'eslint-plugin-react-refresh'; import tseslint from 'typescript-eslint'; export default tseslint.config( { ignores: ['dist', 'node_modules'] }, { extends: [js.configs.recommended, ...tseslint.configs.recommended], files: ['**/*.{ts,tsx}'], languageOptions: { ecmaVersion: 2020, globals: globals.browser, }, plugins: { 'react-hooks': reactHooks, 'react-refresh': reactRefresh, }, rules: { // React Hooks — enforce rules of hooks and exhaustive deps ...reactHooks.configs.recommended.rules, // React Refresh — warn on non-component exports (Vite HMR) 'react-refresh/only-export-components': ['warn', { allowConstantExport: true }], // TypeScript '@typescript-eslint/no-unused-vars': [ 'error', { argsIgnorePattern: '^_', varsIgnorePattern: '^_' }, ], '@typescript-eslint/no-explicit-any': 'warn', '@typescript-eslint/consistent-type-imports': ['error', { prefer: 'type-imports' }], // General 'no-console': ['error', { allow: ['warn', 'error'] }], 'no-duplicate-imports': 'error', }, } );