/ web / src / plugins / types.ts
types.ts
 1  /** Types for the dashboard plugin system. */
 2  
 3  import type { ComponentType } from "react";
 4  
 5  export interface PluginManifest {
 6    name: string;
 7    label: string;
 8    description: string;
 9    icon: string;
10    version: string;
11    tab: {
12      path: string;
13      /** "end", "after:<pathSegment>", "before:<pathSegment>" (e.g. "after:skills" → after `/skills`) */
14      position?: string;
15      /** When set to a built-in route path, this plugin replaces that page instead of adding a new tab. */
16      override?: string;
17      /** When true, the plugin may register without a sidebar tab (slot-only, etc.). */
18      hidden?: boolean;
19    };
20    /** Declared for discovery; actual slots use registerSlot in the plugin bundle. */
21    slots?: string[];
22    entry: string;
23    css?: string | null;
24    has_api: boolean;
25    source: string;
26  }
27  
28  export interface RegisteredPlugin {
29    manifest: PluginManifest;
30    component: ComponentType;
31  }