// @ts-check import eslint from '@eslint/js'; import tseslint from 'typescript-eslint'; import angular from 'angular-eslint'; import prettier from 'eslint-plugin-prettier'; import storybook from 'eslint-plugin-storybook'; export default tseslint.config( { files: ['*.stories.@(ts|tsx|js|jsx|mjs|cjs)', '*.story.@(ts|tsx|js|jsx|mjs|cjs)'], plugins: { prettier, storybook }, rules: { 'import/no-anonymous-default-export': 'off', 'prettier/prettier': ['error', {}], }, }, { files: ['**/*.ts'], plugins: { prettier, }, extends: [eslint.configs.recommended, ...tseslint.configs.recommended, ...tseslint.configs.stylistic, ...angular.configs.tsRecommended], processor: angular.processInlineTemplates, rules: { '@typescript-eslint/consistent-type-definitions': 'off', '@typescript-eslint/no-inferrable-types': 'off', '@typescript-eslint/no-namespace': 'off', '@typescript-eslint/no-empty-object-type': 'off', '@angular-eslint/directive-selector': [ 'error', { type: 'attribute', prefix: 'kc', style: 'camelCase', }, ], '@angular-eslint/component-selector': [ 'error', { type: 'element', prefix: 'kc', style: 'kebab-case', }, ], 'prettier/prettier': [ 'error', {}, { usePrettierrc: true, }, ], }, }, { files: ['**/*.html'], plugins: { prettier, }, extends: [...angular.configs.templateRecommended, ...angular.configs.templateAccessibility], rules: { '@angular-eslint/template/interactive-supports-focus': 'off', '@angular-eslint/template/click-events-have-key-events': 'off', '@angular-eslint/template/label-has-associated-control': 'off', '@angular-eslint/template/no-autofocus': 'off', 'prettier/prettier': [ 'error', { parser: 'angular' }, { usePrettierrc: true, }, ], }, }, );