// @ts-check import withNuxt from './.nuxt/eslint.config.mjs' import tseslint from 'typescript-eslint' import * as pluginVue from 'eslint-plugin-vue' // NOTE: eslint-plugin-tailwindcss does not support Tailwind CSS 4 yet. // When v4 support lands, we can enable it back. // Base Nuxt config const baseConfig = withNuxt() // Add ban on Cyrillic in code (use only i18n keys) /** @type {import('eslint').Linter.FlatConfig[]} */ const hardcodedI18nGuard = [ { name: 'no-cyrillic-hardcode', files: ['app/**/*.{ts,tsx,vue}', 'modules/**/*.{ts,tsx,vue}', 'server/**/*.{ts,tsx}'], plugins: { vue: pluginVue, }, languageOptions: { parser: tseslint.parser, parserOptions: { ecmaVersion: 'latest', sourceType: 'module', }, }, rules: { 'no-restricted-syntax': [ 'error', { selector: "Literal[value][typeof value === 'string'][/\\p{Script=Cyrillic}/u.test(value)]", message: 'Use i18n keys instead of hardcoded Russian text', }, { selector: "TemplateElement[value.raw][/\\p{Script=Cyrillic}/u.test(value.raw)]", message: 'Use i18n keys instead of hardcoded Russian text', }, ], }, }, ] export default [...baseConfig, ...hardcodedI18nGuard]