From 710f0861434f007d866db793921059453604bff8 Mon Sep 17 00:00:00 2001 From: Tobiasz Gleba Date: Fri, 22 Aug 2025 15:10:44 +0200 Subject: [PATCH 1/4] feat: add Gmail notification component and icon to marketing app --- apps/marketing-app/public/gmail-icon.png | Bin 0 -> 18374 bytes apps/marketing-app/src/app/(app)/page.tsx | 2 + .../src/app/components/gmail-notification.tsx | 56 ++++++++++++++++++ 3 files changed, 58 insertions(+) create mode 100644 apps/marketing-app/public/gmail-icon.png create mode 100644 apps/marketing-app/src/app/components/gmail-notification.tsx diff --git a/apps/marketing-app/public/gmail-icon.png b/apps/marketing-app/public/gmail-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1efe446530c647733005615aa1a544d9521bc40c GIT binary patch literal 18374 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 U3~kuySzy2nb&YkNX_IdJA7u(UuK)l5 literal 0 HcmV?d00001 diff --git a/apps/marketing-app/src/app/(app)/page.tsx b/apps/marketing-app/src/app/(app)/page.tsx index 8ed67021..396a9de6 100644 --- a/apps/marketing-app/src/app/(app)/page.tsx +++ b/apps/marketing-app/src/app/(app)/page.tsx @@ -11,6 +11,7 @@ import { MobileMenu } from "../components/mobile-menu"; import { Pricing } from "../components/pricing"; import { ReviewCard } from "../components/review-card"; import SavingsCalculator from "../components/savings-calculator"; +import { GmailNotification } from "../components/gmail-notification"; import { TargetAudience } from "../components/target-audience"; import { TrackCard } from "../components/track-card"; import { UseItYourWay } from "../components/use-it-your-way"; @@ -28,6 +29,7 @@ export default async function Page(props: { return ( <> +

diff --git a/apps/marketing-app/src/app/components/gmail-notification.tsx b/apps/marketing-app/src/app/components/gmail-notification.tsx new file mode 100644 index 00000000..8f1375ab --- /dev/null +++ b/apps/marketing-app/src/app/components/gmail-notification.tsx @@ -0,0 +1,56 @@ +"use client"; + +import { useState, useEffect } from "react"; + +export function GmailNotification() { + const [isVisible, setIsVisible] = useState(false); + + useEffect(() => { + // Show notification after a short delay when component mounts + const timer = setTimeout(() => { + setIsVisible(true); + }, 1500); + + return () => { + clearTimeout(timer); + }; + }, []); + + return ( +
+ {/* macOS notification container - glass effect */} +
+ {/* Main content */} +
+
+ {/* Gmail logo */} +
+ Gmail +
+ + {/* Email content */} +
+
+ What has been done this week? +
+ +

+ Hi, I'm your manager. It's time for portion of annoying questions about your work that has been done, or avoid this shit and use AsyncStatus. +

+
+
+
+
+
+ ); +} From ba9a623071168c7cee1c12bfc6fd1066a39adeaf Mon Sep 17 00:00:00 2001 From: Tobiasz Gleba Date: Fri, 22 Aug 2025 17:15:31 +0200 Subject: [PATCH 2/4] feat: make gmail notification look like in macos --- .../src/app/components/gmail-notification.tsx | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/apps/marketing-app/src/app/components/gmail-notification.tsx b/apps/marketing-app/src/app/components/gmail-notification.tsx index 8f1375ab..1660ff80 100644 --- a/apps/marketing-app/src/app/components/gmail-notification.tsx +++ b/apps/marketing-app/src/app/components/gmail-notification.tsx @@ -11,41 +11,47 @@ export function GmailNotification() { setIsVisible(true); }, 1500); + // Hide notification after 7 seconds + const hideTimer = setTimeout(() => { + setIsVisible(false); + }, 8500); // 1500ms delay + 7000ms visible = 8500ms total + return () => { clearTimeout(timer); + clearTimeout(hideTimer); }; }, []); return (
{/* macOS notification container - glass effect */} -
+
{/* Main content */} -
+
{/* Gmail logo */} -
+
Gmail
{/* Email content */}
-
- What has been done this week? +
+ What have you done this week?
-

- Hi, I'm your manager. It's time for portion of annoying questions about your work that has been done, or avoid this shit and use AsyncStatus. +

+ Manager here. It's time for the annoying progress status questions, or avoid this shit and use AsyncStatus.

From caf2e7d8f8e081c7b06c33f1412351b7779e33f7 Mon Sep 17 00:00:00 2001 From: Tobiasz Gleba Date: Fri, 22 Aug 2025 17:51:33 +0200 Subject: [PATCH 3/4] style: enhance Gmail notification with Apple-inspired design elements --- .../src/app/components/gmail-notification.tsx | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/apps/marketing-app/src/app/components/gmail-notification.tsx b/apps/marketing-app/src/app/components/gmail-notification.tsx index 1660ff80..351c4a7c 100644 --- a/apps/marketing-app/src/app/components/gmail-notification.tsx +++ b/apps/marketing-app/src/app/components/gmail-notification.tsx @@ -30,13 +30,17 @@ export function GmailNotification() { : "translate-x-full max-sm:translate-x-0 max-sm:-translate-y-full opacity-0" }`} > - {/* macOS notification container - glass effect */} -
+ {/* macOS notification container - glass effect with Apple-inspired squircle */} +
{/* Main content */}
- {/* Gmail logo */} -
+ {/* Gmail logo with Apple-inspired squircle */} +
Gmail
- What have you done this week? + What have you done this week?
-

+

Manager here. It's time for the annoying progress status questions, or avoid this shit and use AsyncStatus.

From 62966cd47f5a38f00a2f5a373f0f7261b1e441a3 Mon Sep 17 00:00:00 2001 From: Tobiasz Gleba Date: Fri, 22 Aug 2025 18:27:42 +0200 Subject: [PATCH 4/4] style: refine border radius for Gmail notification component --- apps/marketing-app/src/app/components/gmail-notification.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/marketing-app/src/app/components/gmail-notification.tsx b/apps/marketing-app/src/app/components/gmail-notification.tsx index 351c4a7c..3691e1b5 100644 --- a/apps/marketing-app/src/app/components/gmail-notification.tsx +++ b/apps/marketing-app/src/app/components/gmail-notification.tsx @@ -32,14 +32,14 @@ export function GmailNotification() { > {/* macOS notification container - glass effect with Apple-inspired squircle */}
{/* Main content */}
{/* Gmail logo with Apple-inspired squircle */}