Replace mock events with live fetchEvents() calls. Update EventFilters
to match backend QueryEventsDto (startFrom/startTo), pass workspaceId
via header, add MosaicSpinner loading state, design-token error/empty
states, and cancelled-flag cleanup pattern matching the dashboard.
Refs #467
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>