From 9c9261a8bf5c685c471750fb70cda06e7f606338 Mon Sep 17 00:00:00 2001 From: Konstantin Wohlwend Date: Thu, 9 Jul 2026 19:03:20 -0700 Subject: [PATCH] Comms app --- .../[projectId]/comms/comms-components.tsx | 2 +- .../[projectId]/comms/drafts/page-client.tsx | 6 +- .../[projectId]/comms/page-client.tsx | 4 +- .../[projectId]/comms/topics/page-client.tsx | 10 +-- .../[projectId]/comms/topics/page.tsx | 6 +- .../contacts/[contactId]/page-client.tsx | 10 +-- .../[projectId]/contacts/page-client.tsx | 83 ++++++++++++++----- 7 files changed, 82 insertions(+), 39 deletions(-) diff --git a/apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/comms/comms-components.tsx b/apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/comms/comms-components.tsx index 33c62e04f..938d5850b 100644 --- a/apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/comms/comms-components.tsx +++ b/apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/comms/comms-components.tsx @@ -531,7 +531,7 @@ function getDefaultChannelLabel(platform: CommsPlatform, contact: CommsContact): function getComposerHelp(platform: CommsPlatform): string { if (platform === "email") { - return "Email supports recipients, a subject, attachments, and a richer body. This mock keeps the editor lightweight for the presentation."; + return "Email supports recipients, a subject, attachments, and a richer body."; } if (platform === "discord") { return "Discord replies require a server/channel/thread or an incoming Discord message to anchor the response."; diff --git a/apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/comms/drafts/page-client.tsx b/apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/comms/drafts/page-client.tsx index b39f1f6df..418adb45e 100644 --- a/apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/comms/drafts/page-client.tsx +++ b/apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/comms/drafts/page-client.tsx @@ -29,7 +29,7 @@ export default function PageClient() { submitLabel="Save draft" onSubmit={(value) => { const nextDraft: CommsDraft = { - id: `draft-mock-${drafts.length + 1}`, + id: `draft-${drafts.length + 1}`, platform: value.platform, title: value.subject.trim() || `${COMMS_PLATFORM_LABELS[value.platform]} message`, contactId: value.contactId, @@ -41,7 +41,7 @@ export default function PageClient() { status: "draft", }; setDrafts((current) => [nextDraft, ...current]); - setNotice(`Saved ${COMMS_PLATFORM_LABELS[value.platform]} draft for the presentation mock.`); + setNotice(`Saved ${COMMS_PLATFORM_LABELS[value.platform]} draft.`); }} /> @@ -54,7 +54,7 @@ export default function PageClient() {
Draft queue - Drafts are local mock records. This lets the presentation show creation without requiring a Comms backend. + Drafts stay organized by channel so teams can review and send from the right platform context.
diff --git a/apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/comms/page-client.tsx b/apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/comms/page-client.tsx index 076355998..4863bd6aa 100644 --- a/apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/comms/page-client.tsx +++ b/apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/comms/page-client.tsx @@ -57,7 +57,7 @@ export default function PageClient() { fillWidth actions={
- + Refresh view @@ -73,7 +73,7 @@ export default function PageClient() { - New inbound mock messages appear every few seconds. + New inbound messages appear every few seconds.
diff --git a/apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/comms/topics/page-client.tsx b/apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/comms/topics/page-client.tsx index 15ee1c95e..1bc097eb9 100644 --- a/apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/comms/topics/page-client.tsx +++ b/apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/comms/topics/page-client.tsx @@ -88,14 +88,14 @@ export default function PageClient() { onMerge={() => { const otherTopic = topics.find((topic) => topic.id !== selectedTopic.id); if (otherTopic == null) { - setNotice("No other mock topic is available to merge."); + setNotice("No other topic is available to merge."); return; } setTopics((current) => current.filter((topic) => topic.id !== otherTopic.id)); - setNotice(`Mock merged "${otherTopic.title}" into "${selectedTopic.title}".`); + setNotice(`Merged "${otherTopic.title}" into "${selectedTopic.title}".`); }} onSplit={() => { - setNotice(`Mock split prepared for "${selectedTopic.title}". In the real app, selected messages would move into a new topic.`); + setNotice(`Split prepared for "${selectedTopic.title}". Selected messages will move into a new topic.`); }} /> @@ -116,10 +116,10 @@ export default function PageClient() { Respond in this topic { - setNotice(`Mock ${value.platform} reply composed for "${selectedTopic.title}".`); + setNotice(`${value.platform} reply composed for "${selectedTopic.title}".`); }} />
diff --git a/apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/comms/topics/page.tsx b/apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/comms/topics/page.tsx index ffc17fae3..9b08db495 100644 --- a/apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/comms/topics/page.tsx +++ b/apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/comms/topics/page.tsx @@ -45,7 +45,7 @@ export default function Page() {

- Presentation mock + Active categorization
@@ -110,8 +110,8 @@ export default function Page() { -