diff --git a/apps/web/app/(marketing)/page.tsx b/apps/web/app/(marketing)/page.tsx index 9b91165..a2c75b1 100644 --- a/apps/web/app/(marketing)/page.tsx +++ b/apps/web/app/(marketing)/page.tsx @@ -3,7 +3,6 @@ import { redirect } from 'next/navigation'; import { cookies } from 'next/headers'; import { Footer } from '@profullstack/footer/react'; import Script from 'next/script'; -import { AdUnit } from '../../components/ad-unit'; import { BrandLockup, BrandWordmark } from '../../components/brand'; export const dynamic = 'force-dynamic'; @@ -36,7 +35,6 @@ export default async function LandingPage() {
- diff --git a/apps/web/app/globals.css b/apps/web/app/globals.css index f7d551f..e85ad5f 100644 --- a/apps/web/app/globals.css +++ b/apps/web/app/globals.css @@ -69,13 +69,7 @@ } .cp-ad[data-cp-filled] { height: auto; - margin: 32px auto; -} -.cp-ad[data-cp-filled][data-format='banner_728x90'] { - min-height: 106px; -} -.cp-ad[data-cp-filled][data-format='banner_300x250'] { - min-height: 266px; + margin: 8px auto; } .cp-ad[data-cp-filled][data-format='text_link'] { min-height: 40px; diff --git a/apps/web/components/ad-unit.tsx b/apps/web/components/ad-unit.tsx index ab0aca0..4ade591 100644 --- a/apps/web/components/ad-unit.tsx +++ b/apps/web/components/ad-unit.tsx @@ -4,7 +4,8 @@ import { useEffect, useRef } from 'react'; import { usePathname } from 'next/navigation'; /** - * One CrawlProof ad unit, under the hero of the public landing page. + * One low-profile CrawlProof ad unit (the text_link line). Not used on the + * homepage, which carries no ad. * Manage the slot at https://crawlproof.com/ads/slots */ const AD_SLOT = '121bb0bc-5e2e-4056-beeb-3c5166283991'; @@ -12,9 +13,6 @@ const AD_SLOT = '121bb0bc-5e2e-4056-beeb-3c5166283991'; /** Account, auth and checkout pages carry no ad. */ const EXCLUDED_PREFIXES = ['/login', '/join', '/verify', '/reset', '/forgot']; -/** 728x90 needs the full row; anything narrower gets the 300x250 rectangle. */ -const LEADERBOARD_QUERY = '(min-width: 768px)'; - const SCAN_RETRY_MS = 200; const SCAN_MAX_TRIES = 25; @@ -43,11 +41,8 @@ function AdSlot() { const el = ref.current; if (!el) return; // The server renders the element without data-slot, so ad.js's own - // DOMContentLoaded pass skips it; the format is chosen here from the real - // viewport and the unit fills exactly once. - el.dataset.format = window.matchMedia(LEADERBOARD_QUERY).matches - ? 'banner_728x90' - : 'banner_300x250'; + // DOMContentLoaded pass skips it; the unit fills exactly once. + el.dataset.format = 'text_link'; el.dataset.slot = AD_SLOT; // ad.js scans once at DOMContentLoaded and may not have loaded yet, so