feat(web): derive metric-card into canonical KPI card with semantic delta handling [SPRINT-028]
Rework MetricCardComponent from a basic label+value+delta card into the
canonical Stella Ops KPI card primitive with:
- deltaDirection input ('up-is-good' | 'up-is-bad' | 'neutral') to control
green/red semantics per metric context
- severity input ('healthy' | 'warning' | 'critical' | 'unknown') for
left-border health accents
- unit input for display units (ms, %, /hr, GB)
- loading, empty, and error states with skeleton/placeholder rendering
- ARIA accessibility (role="group", composite aria-label, delta labels)
- Responsive dense-grid support
Adopted on 3 representative dashboards (12 bespoke tiles replaced):
- signals-runtime-dashboard (3 cards)
- search-quality-dashboard (4 cards)
- delivery-analytics (5 cards)
40 focused tests covering delta direction semantics, all states, severity
accents, and accessibility.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>