import { defineComponent } from 'vue'; import { IconFillType } from '../../helpers/resource'; import { Item } from '@opencloud-eu/web-client'; export interface SideBarPanelContext { root?: R; parent?: P; items?: T[]; } export interface SideBarPanel { name: string; icon: string; iconFillType?: IconFillType; title(context: SideBarPanelContext): string; isVisible(context: SideBarPanelContext): boolean; component: ReturnType; componentAttrs?(context: SideBarPanelContext): Record; /** * defines if the panel is a `root` level panel in the right sidebar. * In the long run this should be configured by admins or even users, as it's ideally not to be decided by extension developer. */ isRoot?(context: SideBarPanelContext): boolean; }