From 3b73273629ea718d5b60d08eb8d41a76bdb61fad Mon Sep 17 00:00:00 2001 From: Dries Augustyns Date: Thu, 4 Dec 2025 09:45:03 +0100 Subject: [PATCH] Remove gray colours --- apps/web/src/pages/campaigns/index.tsx | 466 +++++++++++++------------ apps/web/src/pages/settings/index.tsx | 12 +- apps/web/src/pages/workflows/[id].tsx | 6 +- apps/web/src/pages/workflows/index.tsx | 2 +- apps/web/src/styles/globals.css | 2 +- 5 files changed, 245 insertions(+), 243 deletions(-) diff --git a/apps/web/src/pages/campaigns/index.tsx b/apps/web/src/pages/campaigns/index.tsx index aac0cae..4713274 100644 --- a/apps/web/src/pages/campaigns/index.tsx +++ b/apps/web/src/pages/campaigns/index.tsx @@ -108,252 +108,254 @@ export default function CampaignsPage() {
- {/* Header */} -
-
-

Campaigns

-

- Send one-time email broadcasts to your contacts. {data?.total ? `${data.total} total campaigns` : ''} -

-
- - - -
- - {/* Filters */} - - -
-
- -
+ {/* Header */} +
+
+

Campaigns

+

+ Send one-time email broadcasts to your contacts. {data?.total ? `${data.total} total campaigns` : ''} +

- - + + + +
- {/* Campaigns List */} -
- {isLoading && ( - - Loading campaigns... - - )} - - {!isLoading && data?.campaigns.length === 0 && ( - - -
-
- -
-

- {statusFilter !== 'ALL' ? `No ${statusFilter.toLowerCase()} campaigns` : 'No campaigns yet'} -

-

- {statusFilter !== 'ALL' - ? 'Try adjusting your filters or create a new campaign.' - : 'Create your first campaign to send emails to your contacts.'} -

- - - + {/* Filters */} + + +
+
+
- - - )} +
+
+
- {data?.campaigns.map(campaign => { - const openRate = campaign.sentCount > 0 ? (campaign.openedCount / campaign.sentCount) * 100 : 0; - const clickRate = campaign.sentCount > 0 ? (campaign.clickedCount / campaign.sentCount) * 100 : 0; - const deliveryProgress = - campaign.totalRecipients > 0 ? (campaign.sentCount / campaign.totalRecipients) * 100 : 0; + {/* Campaigns List */} +
+ {isLoading && ( + + Loading campaigns... + + )} - return ( - - -
-
-
- - {campaign.name} - - {getStatusBadge(campaign.status)} -
- {campaign.description && ( - {campaign.description} - )} + {!isLoading && data?.campaigns.length === 0 && ( + + +
+
+
-
- - - {/* Stats Grid */} -
- {/* Recipients */} -
-
- - Recipients -
-

{campaign.totalRecipients.toLocaleString()}

- {campaign.totalRecipients > 0 && ( -

{deliveryProgress.toFixed(0)}% sent

- )} -
- - {/* Open Rate */} - {campaign.sentCount > 0 && ( -
-
- - Opens -
-

{openRate.toFixed(1)}%

-

{campaign.openedCount.toLocaleString()} opened

-
- )} - - {/* Click Rate */} - {campaign.clickedCount > 0 && ( -
-
- - Clicks -
-

{clickRate.toFixed(1)}%

-

{campaign.clickedCount.toLocaleString()} clicked

-
- )} - - {/* Scheduled For */} - {campaign.scheduledFor && ( -
-
- - Scheduled -
-

- {new Date(campaign.scheduledFor).toLocaleDateString(undefined, { - month: 'short', - day: 'numeric', - year: 'numeric', - })} -

-

- {new Date(campaign.scheduledFor).toLocaleTimeString(undefined, { - hour: 'numeric', - minute: '2-digit', - })} -

-
- )} -
- - {/* Actions */} -
- - - - - - {campaign.status === 'DRAFT' && ( - - )} - - {(campaign.status === 'SCHEDULED' || campaign.status === 'SENDING') && ( - - )}
- ); - })} + )} + + {data?.campaigns.map(campaign => { + const openRate = campaign.sentCount > 0 ? (campaign.openedCount / campaign.sentCount) * 100 : 0; + const clickRate = campaign.sentCount > 0 ? (campaign.clickedCount / campaign.sentCount) * 100 : 0; + const deliveryProgress = + campaign.totalRecipients > 0 ? (campaign.sentCount / campaign.totalRecipients) * 100 : 0; + + return ( + + +
+
+
+ + {campaign.name} + + {getStatusBadge(campaign.status)} +
+ {campaign.description && ( + {campaign.description} + )} +
+
+
+ + {/* Stats Grid */} +
+ {/* Recipients */} +
+
+ + Recipients +
+

{campaign.totalRecipients.toLocaleString()}

+ {campaign.totalRecipients > 0 && ( +

{deliveryProgress.toFixed(0)}% sent

+ )} +
+ + {/* Open Rate */} + {campaign.sentCount > 0 && ( +
+
+ + Opens +
+

{openRate.toFixed(1)}%

+

{campaign.openedCount.toLocaleString()} opened

+
+ )} + + {/* Click Rate */} + {campaign.clickedCount > 0 && ( +
+
+ + Clicks +
+

{clickRate.toFixed(1)}%

+

+ {campaign.clickedCount.toLocaleString()} clicked +

+
+ )} + + {/* Scheduled For */} + {campaign.scheduledFor && ( +
+
+ + Scheduled +
+

+ {new Date(campaign.scheduledFor).toLocaleDateString(undefined, { + month: 'short', + day: 'numeric', + year: 'numeric', + })} +

+

+ {new Date(campaign.scheduledFor).toLocaleTimeString(undefined, { + hour: 'numeric', + minute: '2-digit', + })} +

+
+ )} +
+ + {/* Actions */} +
+ + + + + + + {campaign.status === 'DRAFT' && ( + + )} + + {(campaign.status === 'SCHEDULED' || campaign.status === 'SENDING') && ( + + )} +
+
+
+ ); + })} +
+ + {/* Pagination */} + {data && data.totalPages > 1 && ( +
+ + + Page {page} of {data.totalPages} + + +
+ )}
- {/* Pagination */} - {data && data.totalPages > 1 && ( -
- - - Page {page} of {data.totalPages} - - -
- )} -
+ - - - - + + ); } diff --git a/apps/web/src/pages/settings/index.tsx b/apps/web/src/pages/settings/index.tsx index 996c95d..4d998c4 100644 --- a/apps/web/src/pages/settings/index.tsx +++ b/apps/web/src/pages/settings/index.tsx @@ -483,17 +483,17 @@ export default function Settings() { {/* Reset Project */}
-
+
-

Reset Project Data

+

Reset Project Data

-

+

Clear all campaigns, contacts, workflows, templates, and events. This gives you a blank project to start fresh.

-
+
Preserved: API keys, domains, billing information
@@ -701,7 +701,7 @@ export default function Settings() {
-