// SPDX-License-Identifier: MIT OR Apache-2.0
// Copyright (c) 2025 Pierre Fitness Intelligence
// ABOUTME: ESLint configuration for Pierre web frontend
// ABOUTME: Uses shared @pierre/eslint-config for consistent standards
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 { baseTypeScriptRules, baseReactRules, reactHooksRules } from '@pierre/eslint-config';
export default tseslint.config(
{ ignores: ['dist', 'coverage'] },
{
extends: [js.configs.recommended, ...tseslint.configs.recommended],
files: ['**/*.{ts,tsx}'],
languageOptions: {
ecmaVersion: 2020,
globals: globals.browser,
},
plugins: {
'react-hooks': reactHooks,
'react-refresh': reactRefresh,
},
rules: {
// Shared rules from @pierre/eslint-config
...baseTypeScriptRules,
...baseReactRules,
...reactHooksRules,
// Web-specific rules
'react-refresh/only-export-components': [
'warn',
{ allowConstantExport: true },
],
},
},
);