import js from '@eslint/js'; import globals from 'globals'; import reactHooks from 'eslint-plugin-react-hooks'; import reactRefresh from 'eslint-plugin-react-refresh'; import tseslint from 'typescript-eslint'; import prettierRecommended from 'eslint-plugin-prettier/recommended'; import { defineConfig, globalIgnores } from 'eslint/config'; export default defineConfig([ globalIgnores(['dist', 'src/routeTree.gen.ts']), { files: ['**/*.{ts,tsx}'], extends: [ js.configs.recommended, tseslint.configs.recommended, reactHooks.configs.flat.recommended, reactRefresh.configs.vite, prettierRecommended, ], languageOptions: { globals: globals.browser, }, }, { // shadcn/ui primitives intentionally co-export helpers (variants, hooks) // alongside components — disable the fast-refresh rule for these files only. files: ['src/ui/primitives/**/*.{ts,tsx}'], rules: { 'react-refresh/only-export-components': 'off', }, }, { // TanStack Router file-based routes export `Route` (the route definition) // alongside the route's component. That's the canonical pattern; the // fast-refresh rule doesn't apply usefully here. files: ['src/routes/**/*.{ts,tsx}'], rules: { 'react-refresh/only-export-components': 'off', }, }, ]);