export type Extras = Record; export interface MenuItemBase { id: string; class?: string; disabled?: boolean; type: T; submenu?: { position?: 'start' | 'end'; // default: 'end' items: MenuItem[]; }; extras?: E; } // eslint-disable-next-line @typescript-eslint/no-empty-object-type -- some props are set via generic types 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;