feat(eslint): add eslint flat config

This commit is contained in:
Shintaro Jokagi 2025-05-28 13:38:11 +12:00
parent 1937be58a6
commit 01f4dac75d
No known key found for this signature in database
GPG key ID: 0DDF8FA44C9A0DA8
16 changed files with 4607 additions and 2125 deletions

31
.eslint/jsx-a11y.ts Normal file
View file

@ -0,0 +1,31 @@
import type { Linter } from "eslint";
// @ts-expect-error - no types available
import jsxA11y from "eslint-plugin-jsx-a11y";
import { astroFiles, javascriptFiles, typescriptFiles } from "./shared";
export const jsxA11yConfig: Linter.Config = {
name: "eslint/jsx-a11y",
files: [
...astroFiles,
...typescriptFiles.filter((f) => f.includes("tsx")),
...javascriptFiles.filter((f) => f.includes("jsx")),
],
plugins: {
"jsx-a11y": jsxA11y,
},
rules: {
...jsxA11y.configs.recommended.rules,
// Additional a11y rules
"jsx-a11y/alt-text": "error",
"jsx-a11y/anchor-has-content": "error",
"jsx-a11y/anchor-is-valid": "error",
"jsx-a11y/click-events-have-key-events": "error",
"jsx-a11y/interactive-supports-focus": "error",
"jsx-a11y/no-redundant-roles": "error",
"jsx-a11y/img-redundant-alt": "error",
"jsx-a11y/no-access-key": "error",
"jsx-a11y/label-has-associated-control": "error",
"jsx-a11y/no-autofocus": "warn",
},
};