feat: shared widget filter system for all dashboard widgets
Shared infrastructure:
- WidgetFilterBar: declarative filter component (search, select, toggle)
- useWidgetFilterOptions: cached hook for clients, countries, roles, chapters
Widget integration (5 widgets):
- ProjectHealth: search (name) + select (client)
- BudgetForecast: search (name) + select (client)
- Chargeability: select (chapter) + toggle (include proposed)
- SkillGap: search (skill name)
- TopValue: select (chapter)
Backend: added clientId/clientName to ProjectHealth and BudgetForecast
query results for client-based filtering.
Filter state persisted via widget config (survives page reload).
All filters use compact 11px inputs with full dark theme support.
Co-Authored-By: claude-flow <ruv@ruv.net>