import baseConfig from "./base.js"; import reactHooks from "eslint-plugin-react-hooks"; import jsxA11y from "eslint-plugin-jsx-a11y"; /** @type {import("eslint").Linter.FlatConfig[]} */ export default [ ...baseConfig, { plugins: { "react-hooks": reactHooks, "jsx-a11y": jsxA11y, }, rules: { "react-hooks/rules-of-hooks": "error", "react-hooks/exhaustive-deps": "warn", "@typescript-eslint/no-misused-promises": [ "error", { checksVoidReturn: { attributes: false } }, ], // Accessibility: start as warn, upgrade to error after fixes "jsx-a11y/alt-text": "warn", "jsx-a11y/anchor-has-content": "warn", "jsx-a11y/anchor-is-valid": "warn", "jsx-a11y/aria-props": "warn", "jsx-a11y/aria-proptypes": "warn", "jsx-a11y/aria-role": "warn", "jsx-a11y/aria-unsupported-elements": "warn", "jsx-a11y/click-events-have-key-events": "warn", "jsx-a11y/heading-has-content": "warn", "jsx-a11y/html-has-lang": "warn", "jsx-a11y/img-redundant-alt": "warn", "jsx-a11y/interactive-supports-focus": "warn", "jsx-a11y/label-has-associated-control": ["warn", { assert: "either", depth: 3, }], "jsx-a11y/no-access-key": "warn", "jsx-a11y/no-autofocus": "warn", "jsx-a11y/no-distracting-elements": "warn", "jsx-a11y/no-noninteractive-element-interactions": "warn", "jsx-a11y/no-noninteractive-tabindex": "warn", "jsx-a11y/no-redundant-roles": "warn", "jsx-a11y/no-static-element-interactions": "warn", "jsx-a11y/role-has-required-aria-props": "warn", "jsx-a11y/role-supports-aria-props": "warn", "jsx-a11y/scope": "warn", "jsx-a11y/tabindex-no-positive": "warn", }, }, ];