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 }