{
  "$schema": "./node_modules/oxlint/configuration_schema.json",
  "plugins": ["eslint", "typescript", "unicorn", "oxc", "react", "nextjs", "import", "jsx-a11y"],
  "env": {
    "es6": true,
    "browser": true,
    "node": true
  },
  "ignorePatterns": [".next/**", "out/**", "build/**", "next-env.d.ts", "scripts/**"],
  "settings": {
    "jsx-a11y": {
      "components": {
        "Image": "img",
        "Link": "a"
      }
    }
  },
  "categories": {
    "correctness": "error",
    "suspicious": "warn"
  },
  "rules": {
    "no-console": ["warn", { "allow": ["warn", "error"] }],
    "no-unused-vars": ["warn", { "argsIgnorePattern": "^_", "varsIgnorePattern": "^_" }],
    "no-unused-expressions": "warn",
    "@typescript-eslint/no-explicit-any": "warn",

    "react/react-in-jsx-scope": "off",
    "react/no-unknown-property": "off",
    "react/jsx-no-target-blank": "off",
    "react/no-children-prop": "off",
    "react-hooks/rules-of-hooks": "error",
    "react-hooks/exhaustive-deps": "warn",

    "no-shadow": "off",
    "import/no-anonymous-default-export": "warn",
    "import/no-unassigned-import": "off",

    "jsx-a11y/alt-text": ["warn", { "elements": ["img"], "img": ["Image"] }],
    "jsx-a11y/aria-props": "warn",
    "jsx-a11y/aria-proptypes": "warn",
    "jsx-a11y/aria-unsupported-elements": "warn",
    "jsx-a11y/role-has-required-aria-props": "warn",
    "jsx-a11y/role-supports-aria-props": "warn",
    "jsx-a11y/prefer-tag-over-role": "off"
  },
  "overrides": [
    {
      "files": ["**/*.ts", "**/*.tsx", "**/*.mts", "**/*.cts"],
      "rules": {
        "constructor-super": "off",
        "no-const-assign": "off",
        "no-dupe-class-members": "off",
        "no-dupe-keys": "off",
        "no-func-assign": "off",
        "no-import-assign": "off",
        "no-new-native-nonconstructor": "off",
        "no-obj-calls": "off",
        "no-redeclare": "off",
        "no-setter-return": "off",
        "no-this-before-super": "off",
        "no-unsafe-negation": "off",
        "no-var": "error",
        "prefer-rest-params": "error",
        "prefer-spread": "error"
      }
    }
  ]
}
