| import { defineConfig, globalIgnores } from 'eslint/config'; | |
| import nextVitals from 'eslint-config-next/core-web-vitals'; | |
| import nextTs from 'eslint-config-next/typescript'; | |
| const eslintConfig = defineConfig([ | |
| ...nextVitals, | |
| ...nextTs, | |
| // Override default ignores of eslint-config-next. | |
| globalIgnores([ | |
| // Default ignores of eslint-config-next: | |
| '.next/**', | |
| 'out/**', | |
| 'build/**', | |
| 'next-env.d.ts', | |
| // Vendored/generated code: | |
| 'packages/**', | |
| // Claude Code local files: | |
| '.claude/**', | |
| '.superpowers/**', | |
| '.worktrees/**', | |
| // Playwright e2e tests (not React code): | |
| 'e2e/**', | |
| ]), | |
| { | |
| rules: { | |
| // Dynamic AI-generated image URLs from various providers are incompatible | |
| // with next/image (requires known dimensions and whitelisted domains). | |
| '@next/next/no-img-element': 'off', | |
| // Allow unused vars/args prefixed with _ (common convention for intentionally | |
| // unused destructured values, callback params, etc.) | |
| '@typescript-eslint/no-unused-vars': [ | |
| 'warn', | |
| { | |
| argsIgnorePattern: '^_', | |
| varsIgnorePattern: '^_', | |
| caughtErrorsIgnorePattern: '^_', | |
| destructuredArrayIgnorePattern: '^_', | |
| }, | |
| ], | |
| }, | |
| }, | |
| ]); | |
| export default eslintConfig; | |