import type { HTMLAttributes, PublicProps, EmitFn } from "vue"; import type { MenuElement } from "../index.js"; declare module "vue" { // Helper Types type Booleanish = boolean | "true" | "false"; type VueEmitMap = EmitFn<{ [K in keyof T]: (event: T[K]) => void }>; interface VueGlobalHTMLAttributes extends HTMLAttributes, Omit {} /* -------------------- Register Elements -------------------- */ interface GlobalComponents { "menu-element": new () => MenuElementVueSFCType; } interface IntrinsicElementAttributes { "menu-element": MenuElementHTMLAttributes; } /* -------------------- Menu Element -------------------- */ interface MenuElementHTMLAttributes extends VueGlobalHTMLAttributes { menubutton?: string; menuanchor?: string; openwitharrows?: MenuElement["openWithArrows"]; onMenuselect?: (payload: CustomEvent) => void; } interface MenuElementVueSFCType extends MenuElement { /** @deprecated Only for use by Vue's templating language */ $props: MenuElementHTMLAttributes; /** @deprecated Only for use by Vue's templating language */ $emit: VueEmitMap; } interface MenuElementEvents extends HTMLElementEventMap { menuselect: CustomEvent; } }