export interface BaseToolbarItem { type: string; } export interface ToolbarToggleGroup extends BaseToolbarItem { name: string; type: 'toggle-group'; value: string; children: { class?: string; onClick: () => void; icon: string; value: string; label: string; }[]; } export interface ToolbarButton extends BaseToolbarItem { type: 'button'; name?: string; icon?: string; /** * hover text */ title?: string; onClick: () => void; } export interface ToolbarDropdown extends BaseToolbarItem { type: 'dropdown'; name?: string; icon?: string; /** * hover text */ title?: string; children: { type: 'item' | 'separator'; class?: string; onClick: () => void; icon?: string; label?: string; }[]; } export interface ToolbarSeparator extends BaseToolbarItem { type: 'separator'; } export interface ToolbarSpace extends BaseToolbarItem { type: 'space'; } export type ToolbarItem = ToolbarToggleGroup | ToolbarButton | ToolbarSeparator | ToolbarSpace | ToolbarDropdown;