import type { TtscLintRuleOptionsSetting, TtscLintRuleSetting, } from "../TtscLintRuleSetting"; import type { ITtscLintReactOnlyExportComponentsRuleOptions } from "./ITtscLintReactRuleOptions"; /** * React TSX rules. * * Bundles rules from `eslint-plugin-react`, `eslint-plugin-react-hooks`, and * `eslint-plugin-react-refresh` under one namespace, matching Oxlint's * `react/*` plugin layout. Performance-only rules live in a separate * {@link ITtscLintReactPerfRules} family because they are opt-in toggles rather * than correctness checks. * * @reference https://github.com/jsx-eslint/eslint-plugin-react * * @evidence contracts/common.md#principled-implementation Explicit react keys use severity-only settings except only-export-components, which retains its typed Fast Refresh options slot; optional properties allow independent policy selection. * @evidence contracts/common.md#clear-and-simple-design JSX, Hooks and refresh policies share the public react namespace, while the separate react-perf family owns allocation-policy configuration. * @evidence contracts/common.md#prohibited-implementation-shortcuts Public React identifiers and the one declared options schema form the extension boundary without mutating React internals or accepting arbitrary built-in options. * @evidence contracts/common.md#meaningful-documentation Native family prose explains the namespace composition and member comments describe JSX, Hook and refresh responsibilities; paragraphs and property spacing follow documentation guidance. */ export interface ITtscLintReactRules { /** * Require explicit, valid `type` values on JSX `