import type { Component } from "vue"; import type { XySemanticClassNames, XySemanticStyles } from "../core"; import type { XyIconName } from "../icon"; import type { XyTooltipPlacement } from "../tooltip"; export type XyMenuLinkTarget = string | Record; export type XyMenuMode = "horizontal" | "inline" | "vertical"; export type XyMenuTheme = "dark" | "light"; export type XyMenuTriggerSubMenuAction = "click" | "hover"; export type XyMenuVariant = "default" | "tree"; export type XyMenuSemanticDom = "content" | "overflowMeasure" | "overflowMeasureItem" | "root" | "title"; export interface XyMenuSemanticProps { hasItems: boolean; hasTitle: boolean; inlineCollapsed: boolean; mode: XyMenuMode; renderedMode: XyMenuMode; theme: XyMenuTheme; variant: XyMenuVariant; } export type XyMenuClassNames = XySemanticClassNames; export type XyMenuStyles = XySemanticStyles; export interface XyMenuTooltipConfig { maxWidth?: number | string; placement?: XyTooltipPlacement; } export interface XyMenuBaseEntry { className?: string; danger?: boolean; disabled?: boolean; icon?: XyIconName; key?: string; label?: string; style?: Record; title?: string; } export interface XyMenuItem extends XyMenuBaseEntry { badge?: string; extra?: string; href?: string; key: string; label: string; target?: string; to?: XyMenuLinkTarget; type?: "item"; } export interface XySubMenu extends XyMenuBaseEntry { children: readonly XyMenuEntry[]; key: string; label: string; popupClassName?: string; theme?: XyMenuTheme; type?: "submenu"; } export interface XyMenuItemGroup extends XyMenuBaseEntry { children: readonly XyMenuEntry[]; type: "group"; } export interface XyMenuDivider { className?: string; dashed?: boolean; key?: string; style?: Record; type: "divider"; } export interface XyMenuSection extends XyMenuBaseEntry { items: readonly XyMenuEntry[]; title?: string; } export type XyMenuEntry = XyMenuDivider | XyMenuItem | XyMenuItemGroup | XyMenuSection | XySubMenu; export type XyMenuLinkComponent = string | Component; export interface XyMenuSelectEvent extends XyMenuItem { domEvent: MouseEvent; itemData: XyMenuItem; keyPath: string[]; selectedKeys: string[]; } export interface XyMenuClickEvent extends XyMenuSelectEvent { }