import type { Component, CSSProperties, VNodeChild } from "vue"; import type { XySemanticClassNames, XySemanticStyles } from "../core"; export type XyFlexSemanticDom = "root"; export type XyFlexAlign = "baseline" | "center" | "end" | "flex-end" | "flex-start" | "normal" | "start" | "stretch"; export type XyFlexJustify = "center" | "end" | "flex-end" | "flex-start" | "normal" | "space-around" | "space-between" | "space-evenly" | "start" | "stretch"; export type XyFlexWrap = boolean | "nowrap" | "wrap" | "wrap-reverse"; export type XyFlexGapPreset = "lg" | "large" | "md" | "middle" | "sm" | "small"; export type XyFlexGap = XyFlexGapPreset | number | string; export type XyFlexComponent = Component | string; export type XyFlexFlex = CSSProperties["flex"]; export interface XyFlexSemanticProps { align: XyFlexAlign | undefined; flex: XyFlexFlex | undefined; gap: string | undefined; justify: XyFlexJustify | undefined; vertical: boolean; wrap: "nowrap" | "wrap" | "wrap-reverse"; } export type XyFlexClassNames = XySemanticClassNames; export type XyFlexStyles = XySemanticStyles; export interface XyFlexProps { align?: XyFlexAlign; classNames?: XyFlexClassNames; component?: XyFlexComponent; flex?: XyFlexFlex; gap?: XyFlexGap; justify?: XyFlexJustify; styles?: XyFlexStyles; vertical?: boolean; wrap?: XyFlexWrap; } export interface XyFlexSlots { default?: () => VNodeChild; }