{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import globals from 'globals';\nimport reactPlugin from 'eslint-plugin-react';\nimport reactHooksPlugin from 'eslint-plugin-react-hooks';\nimport jsxA11yPlugin from 'eslint-plugin-jsx-a11y';\nimport { sylph as sylphBaseConfig } from '@sylphlab/eslint-config-sylph'; // Import the base config array\nimport type { Linter } from 'eslint';\n\n// Define type alias for FlatConfig for better readability\ntype Config = Linter.Config; // Use Linter.Config instead of deprecated Linter.FlatConfig\n\n/**\n * Sylph ESLint Configuration for React Projects (Flat Config)\n *\n * Extends the base @sylphlab/eslint-config-sylph configuration with\n * rules specific to React, React Hooks, and JSX A11y.\n */\nexport const react: Config[] = [\n  // Explicitly type the constant\n  // 1. Inherit Base Configuration\n  // Includes core JS, TS, Unicorn, Import, Functional, Security, Sonar, Promise, RegExp, Prettier rules\n  ...sylphBaseConfig,\n\n  // 2. React Specific Configuration\n  {\n    files: ['**/*.{jsx,tsx}'], // Apply React rules only to JSX/TSX files\n    plugins: {\n      react: reactPlugin as any,\n      'react-hooks': reactHooksPlugin as any,\n      'jsx-a11y': jsxA11yPlugin as any,\n    },\n    languageOptions: {\n      parserOptions: {\n        ecmaFeatures: { jsx: true }, // Enable JSX parsing\n      },\n      globals: {\n        ...globals.browser, // Add browser globals common in React apps\n      },\n    },\n    settings: {\n      react: {\n        version: 'detect', // Automatically detect React version\n      },\n    },\n    rules: {\n      // --- React Plugin Recommended Rules ---\n      // We manually include rules from recommended sets as flat config doesn't spread them automatically\n      ...reactPlugin.configs.recommended.rules,\n      ...reactPlugin.configs['jsx-runtime'].rules, // For the new JSX transform\n      ...reactHooksPlugin.configs.recommended.rules,\n      ...jsxA11yPlugin.configs.recommended.rules,\n\n      // --- Rule Overrides & Additions for React ---\n      'react/prop-types': 'off', // Disable prop-types rule, rely on TypeScript\n      'react/react-in-jsx-scope': 'off', // Disable rule requiring React import (new JSX transform)\n      'react/jsx-filename-extension': ['error', { extensions: ['.jsx', '.tsx'] }], // Allow JSX only in .jsx/.tsx\n      'react/jsx-props-no-spreading': 'off', // Allow prop spreading (common pattern)\n      'react/require-default-props': 'off', // Default props are less common with TS\n      'react/jsx-uses-react': 'off', // Covered by jsx-runtime config\n      'react/jsx-uses-vars': 'error', // Ensure vars used in JSX are marked as used\n\n      // --- JSX A11y Overrides ---\n      'jsx-a11y/anchor-is-valid': 'off', // Often handled by routers like React Router\n      'jsx-a11y/label-has-associated-control': [\n        'error',\n        {\n          // Stricter label association\n          assert: 'either', // Allow either nesting or htmlFor\n        },\n      ],\n\n      // --- Unicorn Overrides for React ---\n      // Allow PascalCase for component filenames\n      'unicorn/filename-case': [\n        'error',\n        {\n          cases: { pascalCase: true, kebabCase: true },\n          ignore: [\n            /^\\.?.*rc\\.[cm]?js$/,\n            /^[a-zA-Z]+(?:[-.][a-zA-Z]+)*\\.config\\.[cm]?[jt]s$/,\n            /^[a-zA-Z]+(?:[-.][a-zA-Z]+)*\\.setup\\.[cm]?[jt]s$/,\n            /\\.d\\.ts$/,\n            'vite-env.d.ts',\n            /^\\.env(?:\\.\\w+)?$/,\n            // Keep common non-component names kebab-case\n            'index\\.[jt]sx?$',\n            'main\\.[jt]sx?$',\n            'app\\.[jt]sx?$', // Allow app.jsx/tsx\n            'router\\.[jt]sx?$', // Allow router.jsx/tsx\n            'store\\.[jt]sx?$', // Allow store.jsx/tsx\n            'service-worker\\.[jt]sx?$',\n            'registerServiceWorker\\.[jt]sx?$',\n          ],\n        },\n      ],\n      // Allow 'Props' and 'Ref' abbreviations common in React\n      'unicorn/prevent-abbreviations': [\n        'error',\n        {\n          allowList: { Props: true, Ref: true },\n        },\n      ],\n    },\n  },\n]; // Remove satisfies\n\n// Export the config directly\nexport default react;\n"],"mappings":"0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,UAAAC,IAAA,eAAAC,EAAAJ,GAAA,IAAAK,EAAoB,wBACpBC,EAAwB,oCACxBC,EAA6B,0CAC7BC,EAA0B,uCAC1BC,EAAyC,yCAY5BN,EAAkB,CAI7B,GAAG,EAAAO,MAGH,CACE,MAAO,CAAC,gBAAgB,EACxB,QAAS,CACP,MAAO,EAAAC,QACP,cAAe,EAAAC,QACf,WAAY,EAAAC,OACd,EACA,gBAAiB,CACf,cAAe,CACb,aAAc,CAAE,IAAK,EAAK,CAC5B,EACA,QAAS,CACP,GAAG,EAAAC,QAAQ,OACb,CACF,EACA,SAAU,CACR,MAAO,CACL,QAAS,QACX,CACF,EACA,MAAO,CAGL,GAAG,EAAAH,QAAY,QAAQ,YAAY,MACnC,GAAG,EAAAA,QAAY,QAAQ,aAAa,EAAE,MACtC,GAAG,EAAAC,QAAiB,QAAQ,YAAY,MACxC,GAAG,EAAAC,QAAc,QAAQ,YAAY,MAGrC,mBAAoB,MACpB,2BAA4B,MAC5B,+BAAgC,CAAC,QAAS,CAAE,WAAY,CAAC,OAAQ,MAAM,CAAE,CAAC,EAC1E,+BAAgC,MAChC,8BAA+B,MAC/B,uBAAwB,MACxB,sBAAuB,QAGvB,2BAA4B,MAC5B,wCAAyC,CACvC,QACA,CAEE,OAAQ,QACV,CACF,EAIA,wBAAyB,CACvB,QACA,CACE,MAAO,CAAE,WAAY,GAAM,UAAW,EAAK,EAC3C,OAAQ,CACN,qBACA,oDACA,mDACA,WACA,gBACA,oBAEA,iBACA,gBACA,eACA,kBACA,iBACA,0BACA,gCACF,CACF,CACF,EAEA,gCAAiC,CAC/B,QACA,CACE,UAAW,CAAE,MAAO,GAAM,IAAK,EAAK,CACtC,CACF,CACF,CACF,CACF,EAGOX,EAAQC","names":["index_exports","__export","index_default","react","__toCommonJS","import_globals","import_eslint_plugin_react","import_eslint_plugin_react_hooks","import_eslint_plugin_jsx_a11y","import_eslint_config_sylph","sylphBaseConfig","reactPlugin","reactHooksPlugin","jsxA11yPlugin","globals"]}