diff --git a/eslint.config.mjs b/eslint.config.mjs
index f1d8bf0..2ca9a5b 100644
--- a/eslint.config.mjs
+++ b/eslint.config.mjs
@@ -1,39 +1,37 @@
// @ts-check
-import { FlatCompat } from '@eslint/eslintrc';
+import { defineConfig, globalIgnores } from 'eslint/config';
+import nextVitals from 'eslint-config-next/core-web-vitals';
+import nextTs from 'eslint-config-next/typescript';
import tseslint from 'typescript-eslint';
-const compat = new FlatCompat({
- baseDirectory: import.meta.dirname,
-});
-
-export default [
- // Global ignores
- {
- ignores: [
- 'node_modules/**',
- '.next/**',
- 'out/**',
- 'build/**',
- 'next-env.d.ts',
- '*.mjs',
- 'tailwind.config.ts',
- ],
- },
-
- // 1. Next.js core rules (includes react, react-hooks, and next)
- ...compat.extends('next/core-web-vitals', 'prettier'),
-
- // 2. Your strict, type-aware TypeScript rules
+const eslintConfig = defineConfig([
+ // Next.js core-web-vitals and TypeScript configs
+ ...nextVitals,
+ ...nextTs,
+ // Add strict TypeScript rules on top
...tseslint.configs.strictTypeChecked,
...tseslint.configs.stylisticTypeChecked,
-
- // 3. Configuration for type-aware rules
+ // Configure TypeScript parser options
{
+ files: ['**/*.{ts,tsx}'],
languageOptions: {
parserOptions: {
- project: true,
+ projectService: true,
tsconfigRootDir: import.meta.dirname,
},
},
},
-];
+ // Override default ignores of eslint-config-next
+ globalIgnores([
+ // Default ignores of eslint-config-next:
+ '.next/**',
+ 'out/**',
+ 'build/**',
+ 'next-env.d.ts',
+ // Additional ignores:
+ '*.mjs',
+ 'tailwind.config.ts',
+ ]),
+]);
+
+export default eslintConfig;
diff --git a/next-env.d.ts b/next-env.d.ts
index 830fb59..9edff1c 100644
--- a/next-env.d.ts
+++ b/next-env.d.ts
@@ -1,6 +1,6 @@
///
///
-///
+import "./.next/types/routes.d.ts";
// NOTE: This file should not be edited
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
diff --git a/package.json b/package.json
index 15c8a4f..fc781a5 100644
--- a/package.json
+++ b/package.json
@@ -18,7 +18,6 @@
"tailwind-merge": "^3.3.1"
},
"devDependencies": {
- "@eslint/eslintrc": "3.3.1",
"@tailwindcss/postcss": "4.1.17",
"@types/node": "24.10.1",
"@types/react": "19.2.5",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index d6d474e..a252314 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -34,9 +34,6 @@ importers:
specifier: ^3.3.1
version: 3.4.0
devDependencies:
- '@eslint/eslintrc':
- specifier: 3.3.1
- version: 3.3.1
'@tailwindcss/postcss':
specifier: 4.1.17
version: 4.1.17
diff --git a/tsconfig.json b/tsconfig.json
index 40de6ee..311f3d5 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,7 +1,7 @@
{
"compilerOptions": {
"lib": ["dom", "dom.iterable", "esnext"],
- "allowJs": true,
+ "allowJs": false,
"skipLibCheck": true,
"strict": true,
"noEmit": true,
@@ -10,18 +10,20 @@
"moduleResolution": "bundler",
"resolveJsonModule": true,
"isolatedModules": true,
- "jsx": "preserve",
+ "jsx": "react-jsx",
"incremental": true,
- "plugins": [
- {
- "name": "next"
- }
- ],
+ "baseUrl": ".",
"paths": {
"@/*": ["./*"]
},
- "target": "ES2022"
+ "target": "ES2022",
+ "forceConsistentCasingInFileNames": true,
+ "verbatimModuleSyntax": true,
+ "noUncheckedIndexedAccess": false,
+ "exactOptionalPropertyTypes": false,
+ "noImplicitReturns": false,
+ "plugins": [{ "name": "next" }]
},
- "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
- "exclude": ["node_modules", ".next"]
+ "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", ".next/dev/types/**/*.ts"],
+ "exclude": ["node_modules"]
}