WorkDesk
Available Widget Types
WorkDesk ships with five built-in widget types covering the most common employee dashboard needs. Each widget is a self-contained React component that manages its own data fetching and rendering.
Widget Catalog
Announcement Banner
AnnouncementBannerWidget
Displays the latest admin announcement. Dismissible per user — once dismissed, the announcement does not reappear (unless a new one is posted). Good for placing at the top of the dashboard for role-level communications.
Widget Type Reference
| Widget Type | Data Source | Real-time? | Config Required? |
|---|---|---|---|
PendingTasksCount | GET /api/workdesk/inbox/count | Yes (EdgeStream) | No |
RecentWorkflows | GET /api/workdesk/executions?limit=5 | Partial (60s poll) | Optional (limit) |
MetricsTile | Grafana panel iframe | Grafana-managed | Yes (Grafana URL) |
QuickLaunch | Static config | No | Yes (shortcuts array) |
AnnouncementBanner | GET /api/workdesk/announcements/latest | No (on load) | No |
Widget Type Discriminated Union (TypeScript)
// Widget config type system
type DashboardWidget =
| { id: string; type: 'PendingTasksCount'; col: number; row: number; w: number; h: number; config: {} }
| { id: string; type: 'RecentWorkflows'; col: number; row: number; w: number; h: number; config: { limit?: number } }
| { id: string; type: 'MetricsTile'; col: number; row: number; w: number; h: number;
config: { grafanaUrl: string; title?: string; height?: number } }
| { id: string; type: 'QuickLaunch'; col: number; row: number; w: number; h: number;
config: { shortcuts: Array<{ label: string; icon?: string; action: ShortcutAction }> } }
| { id: string; type: 'AnnouncementBanner'; col: number; row: number; w: number; h: number; config: {} };
type ShortcutAction =
| { type: 'startWorkflow'; workflowId: string }
| { type: 'openApp'; appId: string }
| { type: 'navigate'; path: string }
| { type: 'url'; url: string };