feat(20-03): add transcript UI — modal, list, expand/collapse, delete

TranscriptModal.tsx: new component — call_date input, optional title,
content textarea (min-h-48). Calls addTranscript server action.

LeadDetail.tsx: adds transcripts prop (ClientTranscript[]), TranscriptModal
button in header, "Transcript Call" Card after Storico Attività with
call_date formatted in Italian, 3-line preview with expand/collapse toggle,
Elimina button via deleteTranscript. border-l-4 border-purple-300.

page.tsx: getTranscripts(id) added to Promise.all, transcripts prop
passed to LeadDetail. Build: clean, TypeScript: no errors.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-20 08:58:06 +02:00
parent b96b6a2083
commit 9f5a6dcbe5
3 changed files with 252 additions and 5 deletions
+7 -3
View File
@@ -1,5 +1,5 @@
import { notFound } from "next/navigation";
import { getActivityLog, getUpcomingReminders } from "@/lib/lead-service";
import { getActivityLog, getUpcomingReminders, getTranscripts } from "@/lib/lead-service";
import { getLeadsWithTags, getLeadFieldOptions } from "@/lib/admin-queries";
import { LeadDetail } from "@/components/admin/leads/LeadDetail";
@@ -17,8 +17,11 @@ export default async function LeadDetailPage({ params }: { params: Promise<{ id:
notFound();
}
const activities = await getActivityLog(id);
const reminders = await getUpcomingReminders(id);
const [activities, reminders, transcripts] = await Promise.all([
getActivityLog(id),
getUpcomingReminders(id),
getTranscripts(id),
]);
return (
<LeadDetail
@@ -27,6 +30,7 @@ export default async function LeadDetailPage({ params }: { params: Promise<{ id:
reminders={reminders}
tags={lead.tags}
tagOptions={options.tags}
transcripts={transcripts}
/>
);
}