export type Extras = Record; export interface MenuItemBase { id: string; class?: string; disabled?: boolean; type: T; submenu?: { position?: 'start' | 'end'; items: MenuItem[]; }; extras?: E; } export interface MenuItemDivider extends MenuItemBase<'divider', E> { } export interface MenuItemHeader extends MenuItemBase<'header', E> { title: string; } export interface MenuItemDefault extends MenuItemBase<'default', E> { title: string; } export type MenuItem = MenuItemDivider | MenuItemHeader | MenuItemDefault;