import type { VNodeChild } from "vue"; import type { XySemanticClassNames, XySemanticStyles } from "../core"; export type XyTimelineMode = "alternate" | "left" | "right"; export type XyTimelinePosition = "left" | "right"; export type XyTimelinePresetColor = "blue" | "gray" | "green" | "primary" | "red" | "success" | "warning"; export type XyTimelineColor = XyTimelinePresetColor | (string & {}); export interface XyTimelineItemData { color?: XyTimelineColor; content?: VNodeChild | string; dot?: VNodeChild; key?: string | number; label?: VNodeChild | string; position?: XyTimelinePosition; } export type XyTimelineSemanticDom = "items" | "pending" | "root"; export interface XyTimelineSemanticProps { mode: XyTimelineMode; pending: boolean; reverse: boolean; } export type XyTimelineClassNames = XySemanticClassNames; export type XyTimelineStyles = XySemanticStyles; export interface XyTimelineProps { classNames?: XyTimelineClassNames; items?: XyTimelineItemData[]; mode?: XyTimelineMode; pending?: boolean | VNodeChild | string; pendingDot?: VNodeChild; reverse?: boolean; styles?: XyTimelineStyles; } export interface XyTimelineSlots { default?: () => VNodeChild; pending?: () => VNodeChild; } export type XyTimelineItemSemanticDom = "content" | "dot" | "label" | "root" | "tail"; export interface XyTimelineItemSemanticProps { color: XyTimelineColor; hasDot: boolean; hasLabel: boolean; mode: XyTimelineMode; pending: boolean; position?: XyTimelinePosition; } export type XyTimelineItemClassNames = XySemanticClassNames; export type XyTimelineItemStyles = XySemanticStyles; export interface XyTimelineItemProps { classNames?: XyTimelineItemClassNames; color?: XyTimelineColor; dot?: VNodeChild; label?: VNodeChild | string; pending?: boolean; position?: XyTimelinePosition; styles?: XyTimelineItemStyles; } export interface XyTimelineItemSlots { default?: () => VNodeChild; dot?: () => VNodeChild; label?: () => VNodeChild; }