import coreWebVitals from 'eslint-config-next/core-web-vitals'
import typescript from 'eslint-config-next/typescript'

const eslintConfig = [
  ...coreWebVitals,
  ...typescript,
  {
    rules: {
      '@typescript-eslint/ban-ts-comment': 'warn',
      '@typescript-eslint/no-empty-object-type': 'warn',
      '@typescript-eslint/no-explicit-any': 'warn',
      '@typescript-eslint/no-unsafe-function-type': 'warn', // Some legacy patterns use Function type
      '@typescript-eslint/no-unused-vars': [
        'warn',
        {
          vars: 'all',
          args: 'after-used',
          ignoreRestSiblings: false,
          argsIgnorePattern: '^_',
          varsIgnorePattern: '^_',
          destructuredArrayIgnorePattern: '^_',
          caughtErrorsIgnorePattern: '^(_|ignore)',
        },
      ],
    },
  },
  {
    // Payload Admin components can use <a> and <img> elements (they're not in Next.js page router)
    files: ['src/components/admin/**/*.tsx', 'src/app/(payload)/admin/**/*.tsx'],
    rules: {
      '@next/next/no-html-link-for-pages': 'off',
      '@next/next/no-img-element': 'off',
    },
  },
  {
    ignores: [
      '.next/',
      'coverage/',
      'node_modules/',
      'playwright-report/',
      'test-results/',
      'next-env.d.ts',
      'src/migrations/',       // Payload migrations have required but unused params
      'src/migrations_backup/',
    ],
  },
]

export default eslintConfig
