import { FormControl } from '@angular/forms'; import { Color } from '@ionic/core'; import { ComponentState } from '../../types'; /** * Quick selection preset for number stepper. */ export interface NumberStepperPreset { /** Preset value */ value: number; /** Display label (optional, defaults to value) */ label?: string; /** Whether this is a popular/highlighted option */ popular?: boolean; } /** * Metadata for the number stepper component. */ export interface NumberStepperMetadata { /** Form control for the value */ control: FormControl; /** Minimum value */ min?: number; /** Maximum value */ max?: number; /** Step increment */ step?: number; /** Show manual input field */ showInput?: boolean; /** Allow manual input editing */ editableInput?: boolean; /** Unit price for total calculation */ unitPrice?: number; /** Currency code for price display */ currency?: string; /** Currency symbol */ currencySymbol?: string; /** Show total price */ showTotal?: boolean; /** Unit label (e.g., "boletos", "tickets") */ unitLabel?: string; /** Singular unit label */ unitLabelSingular?: string; /** Preset values for quick selection */ presets?: NumberStepperPreset[]; /** Show preset buttons */ showPresets?: boolean; /** Component color */ color?: Color; /** Size variant */ size?: 'small' | 'medium' | 'large'; /** Button shape */ buttonShape?: 'square' | 'round'; /** Layout direction */ layout?: 'horizontal' | 'vertical'; /** Custom CSS class */ cssClass?: string; /** Component state */ state?: ComponentState; /** Label for the component */ label?: string; /** Hint text */ hint?: string; /** Decrement button aria label */ decrementLabel?: string; /** Increment button aria label */ incrementLabel?: string; /** Content key for label */ labelContentKey?: string; /** Content key for unit label */ unitLabelContentKey?: string; /** Content class for reactive content */ contentClass?: string; } /** * Event emitted when value changes. */ export interface NumberStepperChangeEvent { /** New value */ value: number; /** Previous value */ previousValue: number; /** Total price (if unitPrice is set) */ totalPrice?: number; /** Whether at minimum */ atMin: boolean; /** Whether at maximum */ atMax: boolean; }