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/**", "release/**", "dist-electron/**", "next-env.d.ts", // apps/site generated artifacts "apps/site/.next/**", "apps/site/.source/**", // External reference materials / vendored packages (not part of the main codebase) "资料/**", ]), // ── Governance rules for business components ── { files: [ "src/components/settings/**/*.{ts,tsx}", "src/components/bridge/**/*.{ts,tsx}", "src/components/chat/**/*.{ts,tsx}", "src/components/gallery/**/*.{ts,tsx}", "src/components/plugins/**/*.{ts,tsx}", "src/components/skills/**/*.{ts,tsx}", "src/components/project/**/*.{ts,tsx}", "src/components/layout/**/*.{ts,tsx}", "src/components/cli-tools/**/*.{ts,tsx}", "src/app/**/*.{ts,tsx}", ], rules: { // Discourage native HTML controls — use ui/ components instead "no-restricted-syntax": [ "warn", { selector: "JSXOpeningElement[name.name='button']", message: "Use