From b7b3cd19a5fa2861fbfa252aa222a5afa18022a9 Mon Sep 17 00:00:00 2001 From: Ravi Gulhane <> Date: Wed, 19 Aug 2026 09:37:24 +0530 Subject: [PATCH] Add WhatsApp drip/blast CTAs, presenter photo shapes, and notification panels. Wire reception and Event Home UI for session buttons, photo wall shape settings, blast history, and chatbot delete. Co-authored-by: Cursor --- dist/index.html | 2 +- package.json | 2 +- .../components/attendance/AttendancePage.tsx | 12 + .../components/dashboard/EventHomeModules.tsx | 102 +++++++- .../dashboard/PhotoWallManagePanel.tsx | 150 ++++++++++- .../SendWhatsAppNotificationPanel.tsx | 241 ++++++++++++++++++ .../dashboard/WhatsAppBlastHistoryPanel.tsx | 179 +++++++++++++ .../whatsapp-chatbot/WhatsAppChatbotsPage.tsx | 45 ++++ .../whatsapp-chatbot/WhatsAppReceptionTab.tsx | 164 +++++++++--- .../components/whatsapp/WhatsAppCtaEditor.tsx | 206 +++++++++++++++ src/services/api/conciergeBots.ts | 4 + src/services/api/index.ts | 2 + src/services/api/photoWall.ts | 11 + src/services/api/types.ts | 1 + src/services/api/whatsappBlasts.ts | 56 ++++ 15 files changed, 1128 insertions(+), 49 deletions(-) create mode 100644 src/app/components/dashboard/SendWhatsAppNotificationPanel.tsx create mode 100644 src/app/components/dashboard/WhatsAppBlastHistoryPanel.tsx create mode 100644 src/app/components/whatsapp/WhatsAppCtaEditor.tsx create mode 100644 src/services/api/whatsappBlasts.ts diff --git a/dist/index.html b/dist/index.html index 5721f498..eba30edb 100644 --- a/dist/index.html +++ b/dist/index.html @@ -12,7 +12,7 @@ rel="stylesheet" /> - + diff --git a/package.json b/package.json index f5f36bcf..85a37dfc 100644 --- a/package.json +++ b/package.json @@ -54,12 +54,12 @@ "next-themes": "0.4.6", "qrcode": "^1.5.4", "quill": "1.3.7", - "react-quill": "2.0.0", "react-day-picker": "8.10.1", "react-dnd": "16.0.1", "react-dnd-html5-backend": "16.0.1", "react-hook-form": "7.55.0", "react-popper": "2.3.0", + "react-quill": "2.0.0", "react-resizable-panels": "2.1.7", "react-responsive-masonry": "2.7.1", "react-router": "7.13.0", diff --git a/src/app/components/attendance/AttendancePage.tsx b/src/app/components/attendance/AttendancePage.tsx index 8ce2ff4d..6565e71c 100644 --- a/src/app/components/attendance/AttendancePage.tsx +++ b/src/app/components/attendance/AttendancePage.tsx @@ -86,6 +86,7 @@ interface FormState { name: string; description: string; allowDuplicateCheckIn: boolean; + allowAssignBlank: boolean; publicLinkEnabled: boolean; audienceMode: AttendanceAudienceMode; includeStatuses: AttendanceMembershipStatus[]; @@ -97,6 +98,7 @@ const emptyForm: FormState = { name: "", description: "", allowDuplicateCheckIn: false, + allowAssignBlank: false, publicLinkEnabled: true, audienceMode: "all", includeStatuses: ["confirmed", "checked_in"], @@ -210,6 +212,7 @@ export function AttendancePage() { name: s.name, description: s.description || "", allowDuplicateCheckIn: Boolean(s.settings?.allowDuplicateCheckIn), + allowAssignBlank: Boolean(s.settings?.allowAssignBlank), publicLinkEnabled: s.settings?.publicLinkEnabled !== false, audienceMode: audience?.mode || "all", includeStatuses: @@ -276,6 +279,7 @@ export function AttendancePage() { description: form.description.trim(), settings: { allowDuplicateCheckIn: form.allowDuplicateCheckIn, + allowAssignBlank: form.allowAssignBlank, publicLinkEnabled: form.publicLinkEnabled, audience: { mode: form.audienceMode, @@ -926,6 +930,14 @@ export function AttendancePage() { /> Allow duplicate check-ins +