export declare const eslintConfigTemplate = "import globals from \"globals\";\nimport nextPlugin from \"@next/eslint-plugin-next\";\nimport reactPlugin from \"eslint-plugin-react\";\nimport reactHooksPlugin from \"eslint-plugin-react-hooks\";\nimport jsxA11yPlugin from \"eslint-plugin-jsx-a11y\";\nimport importPlugin from \"eslint-plugin-import\";\nimport tsParser from \"@typescript-eslint/parser\";\nimport tsPlugin from \"@typescript-eslint/eslint-plugin\";\n\n// Hand-rolled replacement for `eslint-config-next`'s default config.\n//\n// We don't use eslint-config-next under ESLint 10: its React version detection\n// (`settings.react.version: \"detect\"`) calls `context.getFilename()`, which\n// ESLint 10 removed, so it crashes on load. Composing the same plugins\n// ourselves lets us pin `react.version` (below) and stay in control.\n//\n// The recommended rule sets below mirror what eslint-config-next enables:\n// React, React Hooks, Next.js and jsx-a11y. On top of that we keep a few\n// project-specific rules (no-console and two @typescript-eslint rules).\n\nconst config = [\n {\n // node_modules/ and .git/ are ignored by default.\n ignores: [\".next/**\", \"out/**\", \"build/**\", \"next-env.d.ts\"],\n },\n {\n name: \"doccupine/base\",\n files: [\"**/*.{js,jsx,mjs,cjs,ts,tsx,mts,cts}\"],\n plugins: {\n react: reactPlugin,\n \"react-hooks\": reactHooksPlugin,\n import: importPlugin,\n \"jsx-a11y\": jsxA11yPlugin,\n \"@next/next\": nextPlugin,\n \"@typescript-eslint\": tsPlugin,\n },\n languageOptions: {\n parser: tsParser,\n parserOptions: {\n sourceType: \"module\",\n ecmaFeatures: { jsx: true },\n },\n globals: { ...globals.browser, ...globals.node },\n },\n settings: {\n // Pinned (not \"detect\") on purpose: eslint-plugin-react 7.37.x's version\n // detection calls the ESLint-10-removed `context.getFilename()`. Pinning\n // skips that code path. Keep roughly in sync with the installed React.\n react: { version: \"19.2\" },\n },\n rules: {\n ...reactPlugin.configs.recommended.rules,\n ...reactHooksPlugin.configs.recommended.rules,\n ...nextPlugin.configs.recommended.rules,\n ...jsxA11yPlugin.configs.recommended.rules,\n \"import/no-anonymous-default-export\": \"warn\",\n \"react/no-unknown-property\": \"off\",\n \"react/react-in-jsx-scope\": \"off\",\n \"react/prop-types\": \"off\",\n \"jsx-a11y/alt-text\": [\"warn\", { elements: [\"img\"], img: [\"Image\"] }],\n \"jsx-a11y/aria-props\": \"warn\",\n \"jsx-a11y/aria-proptypes\": \"warn\",\n \"jsx-a11y/aria-unsupported-elements\": \"warn\",\n \"jsx-a11y/role-has-required-aria-props\": \"warn\",\n \"jsx-a11y/role-supports-aria-props\": \"warn\",\n \"react/jsx-no-target-blank\": \"off\",\n \"no-console\": [\"warn\", { allow: [\"warn\", \"error\"] }],\n \"@typescript-eslint/no-explicit-any\": \"warn\",\n \"@typescript-eslint/no-unused-vars\": [\n \"warn\",\n { argsIgnorePattern: \"^_\", varsIgnorePattern: \"^_\" },\n ],\n },\n },\n {\n // These generated previews intentionally render user-selected media without\n // author-provided caption tracks. Keep the complete recommended ruleset on\n // everywhere else while this isolated preview remains user-controlled.\n name: \"doccupine/media-preview\",\n files: [\"components/layout/ApiPlayground.tsx\"],\n rules: {\n \"jsx-a11y/media-has-caption\": \"off\",\n },\n },\n {\n // Cherry's Input owns the actual DOM input and focus behavior. Ignore only\n // non-DOM controls; raw JSX inputs remain covered by the recommended rule.\n name: \"doccupine/cherry-controls\",\n files: [\"components/layout/SiteGate.tsx\"],\n rules: {\n \"jsx-a11y/no-autofocus\": [\"error\", { ignoreNonDOM: true }],\n },\n },\n];\n\nexport default config;\n";