/** * Stepper Component (TachUI) * * SwiftUI-inspired stepper component for numeric input with increment/decrement controls. * Provides bounded value adjustment with customizable step intervals and formatting. */ import type { ModifiableComponent, ModifierBuilder } from '@tachui/core'; import type { Signal } from '@tachui/core'; import type { ComponentInstance, ComponentProps, DOMNode } from '@tachui/core'; /** * Stepper value types - supports integers and floating point numbers */ export type StepperValue = number; /** * Stepper component properties */ export interface StepperProps extends ComponentProps { title?: string; value: Signal | StepperValue; minimumValue?: StepperValue; maximumValue?: StepperValue; step?: StepperValue; onIncrement?: () => void; onDecrement?: () => void; onChange?: (value: StepperValue) => void; onEditingChanged?: (editing: boolean) => void; disabled?: boolean | Signal; allowsEmptyValue?: boolean; valueFormatter?: (value: StepperValue) => string; displayValueInLabel?: boolean; accessibilityLabel?: string; accessibilityHint?: string; incrementAccessibilityLabel?: string; decrementAccessibilityLabel?: string; } /** * Stepper theme configuration */ export interface StepperTheme { colors: { background: string; border: string; buttonBackground: string; buttonHover: string; buttonPress: string; buttonDisabled: string; text: string; buttonText: string; disabledText: string; focusRing: string; }; spacing: { padding: number; gap: number; borderRadius: number; buttonSize: number; }; typography: { labelSize: number; buttonSize: number; labelWeight: string; buttonWeight: string; fontFamily: string; }; transitions: { duration: number; easing: string; }; } /** * Stepper component implementation */ export declare class StepperComponent implements ComponentInstance { readonly type: "component"; readonly id: string; readonly props: StepperProps; private theme; private incrementButton; private decrementButton; private isEditing; private longPressTimer; private longPressInterval; constructor(props: StepperProps); private resolveValue; private getValue; private setValue; private getMinimumValue; private getMaximumValue; private getStep; private isDisabled; private constrainValue; private canIncrement; private canDecrement; private increment; private decrement; private formatValue; private startLongPress; private stopLongPress; private setEditing; private createButton; private createLabel; render(): DOMNode; } /** * Create a Stepper component */ export declare function Stepper(props: StepperProps): ModifiableComponent & { modifier: ModifierBuilder>; }; /** * Stepper utility functions and presets */ export declare const StepperUtils: { /** * Create a quantity stepper (1-99, integer values) */ quantity(value: Signal, onChange?: (value: number) => void): Omit & { value: Signal; }; /** * Create an age stepper (0-120, integer values) */ age(value: Signal, onChange?: (value: number) => void): Omit & { value: Signal; }; /** * Create a percentage stepper (0-100%, integer values) */ percentage(value: Signal, onChange?: (value: number) => void): Omit & { value: Signal; }; /** * Create a rating stepper (1-5 or 1-10, decimal values allowed) */ rating(value: Signal, maxRating?: number, step?: number, onChange?: (value: number) => void): Omit & { value: Signal; }; /** * Create a price stepper (0+, decimal values with currency formatting) */ price(value: Signal, currency?: string, step?: number, maxValue?: number, onChange?: (value: number) => void): Omit & { value: Signal; }; /** * Create a font size stepper (8-72pt, integer values) */ fontSize(value: Signal, onChange?: (value: number) => void): Omit & { value: Signal; }; }; /** * Stepper styles and theming */ export declare const StepperStyles: { theme: StepperTheme; /** * Create a custom theme */ createTheme(overrides: Partial): StepperTheme; }; //# sourceMappingURL=Stepper.d.ts.map