// Flat config (ESLint 9+). Root config; per-app configs extend this implicitly via parser/plugins. import js from '@eslint/js'; import tseslint from 'typescript-eslint'; import reactPlugin from 'eslint-plugin-react'; import reactHooks from 'eslint-plugin-react-hooks'; import jsxA11y from 'eslint-plugin-jsx-a11y'; export default [ { ignores: [ '**/node_modules/**', '**/dist/**', '**/build/**', '**/coverage/**', '_bmad/**', '_bmad-output/**', 'ToolCTRL Brand Identity/**', ], }, js.configs.recommended, ...tseslint.configs.recommended, { files: ['apps/web/**/*.{ts,tsx}'], plugins: { react: reactPlugin, 'react-hooks': reactHooks, 'jsx-a11y': jsxA11y, }, languageOptions: { parserOptions: { ecmaFeatures: { jsx: true }, }, }, settings: { react: { version: 'detect' }, }, rules: { ...reactPlugin.configs.recommended.rules, ...reactHooks.configs.recommended.rules, ...jsxA11y.configs.recommended.rules, 'react/react-in-jsx-scope': 'off', 'react/prop-types': 'off', }, }, { rules: { '@typescript-eslint/no-unused-vars': ['warn', { argsIgnorePattern: '^_' }], '@typescript-eslint/consistent-type-imports': 'warn', // Modal-Backdrops sind Click-Catcher; sie sind a11y-tauglich (Esc + sichtbarer // Close-Button), die jsx-a11y-Regeln rufen aber Falsch-Positive. 'jsx-a11y/click-events-have-key-events': 'off', 'jsx-a11y/no-static-element-interactions': 'off', }, }, ];