export interface Tab { tabId: string; title: string; active: boolean; checked: boolean; validationError: string | null; beforeChange?: () => boolean | Promise; afterChange?: () => void; route?: string | object; color: string; errorColor: string; shape: string; icon?: string; customIcon?: string; } export interface WizardData { [key: string]: any; } export interface FormWizardProps { id?: string; title?: string; subtitle?: string; nextButtonText?: string; backButtonText?: string; finishButtonText?: string; hideButtons?: boolean; validateOnBack?: boolean; color?: string; errorColor?: string; shape?: string; layout?: string; stepsClasses?: string | string[]; stepSize?: 'xs' | 'sm' | 'md' | 'lg'; transition?: string; startIndex?: number; disableBackOnClickStep?: boolean; disableBack?: boolean; schema?: FormWizardSchema; modelValue?: WizardData; schemaComponents?: Record; rtl?: boolean; reverseHorizontal?: boolean; } export interface FormWizardEmits { (e: 'on-change', prevIndex: number, nextIndex: number): void; (e: 'update:startIndex', index: number): void; (e: 'on-complete'): void; (e: 'on-loading', loading: boolean): void; (e: 'on-error', error: any): void; (e: 'on-validate', result: boolean, index: number): void; (e: 'update:modelValue', data: WizardData): void; } export interface WizardStepProps { tab: { active: boolean; checked: boolean; validationError?: string | null; color: string; errorColor: string; shape: string; icon?: string; customIcon?: string; title: string; tabId: string; }; transition?: string; index?: number; disableBackOnClickStep?: boolean; } export interface TabContentProps { title?: string; icon?: string; customIcon?: string; lazy?: boolean; beforeChange?: () => boolean | Promise; afterChange?: () => void; route?: string | object; additionalInfo?: Record; } export interface FormWizardSlotProps { nextTab: () => void; prevTab: () => void; activeTabIndex: number; isLastStep: boolean; fillButtonStyle: Record; tabs: Tab[]; tabCount: number; wizardData?: WizardData; updateWizardData?: (partial: Record) => void; } export interface HelperFunctions { getFocusedElementId(): string; getFocusedTabIndex(tabs: Tab[]): number; findElementAndFocus(elemId: string): void; isPromise(func: any): boolean; } export interface SchemaStepContext { data: WizardData; stepId: string; index: number; } export interface FormWizardSchemaStep { id: string; title?: string; icon?: string; customIcon?: string; condition?: (ctx: SchemaStepContext) => boolean | Promise; validate?: (ctx: SchemaStepContext) => boolean | string | Promise; component?: string; slotName?: string; route?: string | object; } export interface FormWizardSchema { initialData?: WizardData; steps: FormWizardSchemaStep[]; }