import type { CSSProperties, VNodeChild } from "vue"; import type { XySemanticClassNames, XySemanticStyles } from "../core"; import type { XyIconName } from "../icon"; export type XyStepStatus = "error" | "finish" | "process" | "wait"; export type XyStepsOrientation = "horizontal" | "vertical"; export type XyStepsSize = "md" | "sm"; export type XyStepsTitlePlacement = "horizontal" | "vertical"; export type XyStepsType = "default" | "dot" | "navigation"; export type XyStepContent = VNodeChild | (() => VNodeChild); export interface XyStepItem { className?: string; description?: XyStepContent; disabled?: boolean; icon?: XyIconName | Exclude; key: string; status?: XyStepStatus; style?: CSSProperties; subTitle?: XyStepContent; title: XyStepContent; } export type XyStepsSemanticDom = "content" | "description" | "indicator" | "item" | "list" | "root" | "subTitle" | "tail" | "title"; export interface XyStepsSemanticProps { clickable: boolean; current: number; disabled: boolean; itemCount: number; orientation: XyStepsOrientation; size: XyStepsSize; titlePlacement: XyStepsTitlePlacement; type: XyStepsType; } export type XyStepsClassNames = XySemanticClassNames; export type XyStepsStyles = XySemanticStyles; export interface XyStepsProps { ariaLabel?: string; classNames?: XyStepsClassNames; clickable?: boolean; current?: number; defaultCurrent?: number; disabled?: boolean; items?: readonly XyStepItem[]; orientation?: XyStepsOrientation; percent?: number; responsive?: boolean; size?: XyStepsSize; status?: XyStepStatus; styles?: XyStepsStyles; titlePlacement?: XyStepsTitlePlacement; type?: XyStepsType; } export interface XyStepSlotProps { current: boolean; index: number; item: XyStepItem; status: XyStepStatus; } export interface XyStepsSlots { description?: (props: XyStepSlotProps) => VNodeChild; icon?: (props: XyStepSlotProps) => VNodeChild; title?: (props: XyStepSlotProps) => VNodeChild; } export interface XyStepsExpose { focus: (index?: number) => boolean; }