import type { AnnotationCategoricalConfig, AnnotationContinuousConfig, AnnotationFreeformConfig } from "./types.js"; /** * AnnotationInput — a controlled, config-driven human annotation input (M12). * Dispatches on `config.type` (Phoenix's three-type model): categorical → * RadioGroup over named options; continuous → number input bounded by the * config; freeform → textarea. Fully controlled (`value` + `onValueChange`); * the consumer owns the config (fixture or backend store) and the submission. * Composes the DS form primitives — zero new dependency (M12 ADR D2). * * */ interface AnnotationInputCommon { /** The score name — rendered as the field label / radiogroup accessible name. */ name: string; /** Overrides the generated control id (for external label association). */ id?: string; /** Optional helper text, wired via aria-describedby. */ description?: string; required?: boolean; disabled?: boolean; className?: string; } export type AnnotationInputProps = (AnnotationInputCommon & { config: AnnotationCategoricalConfig; value: string | null; onValueChange: (value: string | null) => void; }) | (AnnotationInputCommon & { config: AnnotationContinuousConfig; value: number | null; onValueChange: (value: number | null) => void; }) | (AnnotationInputCommon & { config: AnnotationFreeformConfig; value: string | null; onValueChange: (value: string | null) => void; }); declare function AnnotationInput(props: AnnotationInputProps): import("react").JSX.Element; export { AnnotationInput };