From a729789922d2196c444414ec6b42382bd6b62e29 Mon Sep 17 00:00:00 2001 From: Dries Augustyns Date: Sat, 2 May 2026 14:03:58 +0200 Subject: [PATCH] seo: add spam checker tool with analysis for email content and subject lines --- .../src/components/guides/GuideLayout.tsx | 12 +- .../src/pages/guides/email-bounce-rate.tsx | 30 + .../src/pages/guides/email-open-rate.tsx | 116 +++- .../landing/src/pages/guides/what-is-dkim.tsx | 147 ++++- .../src/pages/guides/what-is-dmarc.tsx | 34 +- apps/landing/src/pages/guides/what-is-spf.tsx | 30 + apps/landing/src/pages/tools/index.tsx | 17 +- apps/landing/src/pages/tools/spam-checker.tsx | 544 ++++++++++++++++++ apps/landing/src/pages/tools/verify-email.tsx | 10 +- 9 files changed, 922 insertions(+), 18 deletions(-) create mode 100644 apps/landing/src/pages/tools/spam-checker.tsx diff --git a/apps/landing/src/components/guides/GuideLayout.tsx b/apps/landing/src/components/guides/GuideLayout.tsx index 9cda728..cf73bed 100644 --- a/apps/landing/src/components/guides/GuideLayout.tsx +++ b/apps/landing/src/components/guides/GuideLayout.tsx @@ -1,4 +1,5 @@ -import {Footer, Navbar} from '../'; +import {FAQSection, Footer, Navbar} from '../'; +import type {FAQ} from '../FAQSection'; import {motion} from 'framer-motion'; import React, {ReactNode, useLayoutEffect, useState} from 'react'; import Link from 'next/link'; @@ -13,6 +14,7 @@ interface GuideLayoutProps { children: ReactNode; canonical?: string; ogImage?: string; + faqs?: FAQ[]; } /** @@ -26,6 +28,7 @@ export function GuideLayout({ children, canonical, ogImage = 'https://www.useplunk.com/assets/card.png', + faqs, }: GuideLayoutProps) { const [headings, setHeadings] = useState<{id: string; text: string; level: number}[]>([]); const [activeId, setActiveId] = useState(''); @@ -241,6 +244,13 @@ export function GuideLayout({ + {faqs && faqs.length > 0 && ( + + )} +