import { FactoryComponent, Attributes } from 'mithril'; /** Likert scale component size options */ export type LikertScaleSize = 'small' | 'medium' | 'large'; /** Likert scale component density options */ export type LikertScaleDensity = 'compact' | 'standard' | 'comfortable'; /** Likert scale layout options */ export type LikertScaleLayout = 'horizontal' | 'vertical' | 'responsive'; /** Likert scale component attributes */ export interface LikertScaleAttrs extends Attributes { /** Minimum scale value (default: 1) */ min?: number; /** Maximum scale value (default: 5) */ max?: number; /** Step size for scale increments (default: 1) */ step?: number; /** Current value for controlled mode */ value?: T; /** Initial value for uncontrolled mode */ defaultValue?: T; /** Callback when value changes */ onchange?: (value: T) => void; /** Question/prompt text */ label?: string; /** Helper text description */ description?: string; /** Anchor label for minimum value (e.g., "Very Unhappy") */ startLabel?: string; /** Anchor label for middle value (optional, e.g., "Neutral") */ middleLabel?: string; /** Anchor label for maximum value (e.g., "Very Happy") */ endLabel?: string; /** Whether to display numeric values (default: false) */ showNumbers?: boolean; /** Whether to show tooltips on hover (default: false) */ showTooltips?: boolean; /** Custom tooltip labels for each value */ tooltipLabels?: string[]; /** Density variant (default: 'standard') */ density?: LikertScaleDensity; /** Size variant (default: 'medium') */ size?: LikertScaleSize; /** Layout mode (default: 'responsive' = horizontal on desktop, vertical on mobile) */ layout?: LikertScaleLayout; /** HTML ID for the component */ id?: string; /** Name for form submission */ name?: string; /** Whether the component is disabled */ disabled?: boolean; /** Whether the component is read-only */ readonly?: boolean; /** If true, add a mandatory '*' after the label */ isMandatory?: boolean; /** ARIA label for the component */ 'aria-label'?: string; /** ARIA label for the component (camelCase alternative) */ ariaLabel?: string; /** ARIA labelledby reference */ 'aria-labelledby'?: string; /** Function to get label text for accessibility */ getLabelText?: (value: number, min: number, max: number) => string; /** Class name for the container */ className?: string; /** Additional CSS styles */ style?: any; /** Use CSS grid for label/scale alignment in multi-question surveys (default: false) */ alignLabels?: boolean; } /** Create a LikertScale component */ export declare const LikertScale: FactoryComponent;