feat: engagement page, engagement badge on client detail, stats API integration

- New Engagement page with score cards, distribution summary, sort/filter controls
- Score breakdown bars (recency, interactions, emails, events, notes)
- Engagement badge widget on ClientDetailPage with click-to-expand details
- Added Engagement to sidebar navigation with Zap icon
- API client methods for engagement scoring and stats overview
This commit is contained in:
2026-01-30 03:41:32 +00:00
parent 7a956aebec
commit 93f127f5e9
6 changed files with 394 additions and 4 deletions

View File

@@ -18,6 +18,7 @@ import EmailComposeModal from '@/components/EmailComposeModal';
import ClientNotes from '@/components/ClientNotes';
import LogInteractionModal from '@/components/LogInteractionModal';
import MeetingPrepModal from '@/components/MeetingPrepModal';
import EngagementBadge from '@/components/EngagementBadge';
import type { Interaction } from '@/types';
export default function ClientDetailPage() {
@@ -91,9 +92,12 @@ export default function ClientDetailPage() {
{getInitials(client.firstName, client.lastName)}
</div>
<div className="flex-1 min-w-0">
<h1 className="text-2xl font-bold text-slate-900 dark:text-slate-100">
{client.firstName} {client.lastName}
</h1>
<div className="flex items-center gap-3">
<h1 className="text-2xl font-bold text-slate-900 dark:text-slate-100">
{client.firstName} {client.lastName}
</h1>
<EngagementBadge clientId={client.id} />
</div>
{client.company && (
<p className="text-slate-500 dark:text-slate-400">
{client.role ? `${client.role} at ` : ''}{client.company}