about: add Header/Footer to /about/contact + /about/advertise; banners on all three
/about/contact and /about/advertise were rendering bare <main> tags with no site chrome at all — no header, no footer, no banners. Both are now wrapped with the standard <div className="min-h-screen bg-background"><Header />…<Footer /></div> shell that the rest of the site uses, which auto-brings the site-wide 728x90 leaderboard with it. /about/team already had Header+Footer but no in-content banner. In addition to the header leaderboard, each of the three pages now also renders one in-content 728x90 banner (gated on ADS_728X90.length > 0, hidden on mobile to match the header banner's display rules). This brings the about/* pages in line with the ad inventory of /show-coverage and the other category landing pages. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,45 +1,61 @@
|
|||||||
|
import Header from "@/components/Header";
|
||||||
|
import Footer from "@/components/Footer";
|
||||||
|
import AdImage from "@/components/AdImage";
|
||||||
|
import { ADS_728X90, shuffle } from "@/lib/ads";
|
||||||
|
|
||||||
export const metadata = { title: "Advertise — Broadcast Beat" };
|
export const metadata = { title: "Advertise — Broadcast Beat" };
|
||||||
|
|
||||||
export default function AdvertisePage() {
|
export default function AdvertisePage() {
|
||||||
return (
|
return (
|
||||||
<main className="mx-auto max-w-3xl px-6 py-12 text-[#e5e7eb]">
|
<div className="min-h-screen bg-background">
|
||||||
<h1 className="font-serif text-4xl font-bold tracking-tight mb-2">Advertise on Broadcast Beat</h1>
|
<Header />
|
||||||
<p className="text-sm text-[#9ca3af] mb-10">
|
<main className="mx-auto max-w-3xl px-6 py-12 text-[#e5e7eb]">
|
||||||
Broadcast Beat reaches broadcast engineers, post supervisors, streaming
|
<h1 className="font-serif text-4xl font-bold tracking-tight mb-2">Advertise on Broadcast Beat</h1>
|
||||||
architects, and live-event professionals across the industry.
|
<p className="text-sm text-[#9ca3af] mb-10">
|
||||||
</p>
|
Broadcast Beat reaches broadcast engineers, post supervisors, streaming
|
||||||
|
architects, and live-event professionals across the industry.
|
||||||
<section className="mb-10">
|
|
||||||
<h2 className="font-mono text-xs uppercase tracking-wider text-[#6b7280] mb-3">Available units</h2>
|
|
||||||
<ul className="space-y-3 text-[15px]">
|
|
||||||
<li>
|
|
||||||
<strong>728×90 leaderboard</strong> — between main nav and headline ticker, sitewide.
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<strong>300×600 sidebar premium</strong> — pinned top of every sidebar, sitewide.
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<strong>300×250 sidebar rotation</strong> — rotates across every page, multiple slots.
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section className="mb-10">
|
|
||||||
<h2 className="font-mono text-xs uppercase tracking-wider text-[#6b7280] mb-3">Reporting</h2>
|
|
||||||
<p className="text-[15px] text-[#d1d5db]">
|
|
||||||
Every banner is tracked for gross impressions and clicks. Advertisers
|
|
||||||
receive a monthly report with totals and CTR. Click links route through
|
|
||||||
/r/{"{campaign}"} for accurate counting independent of analytics
|
|
||||||
blockers.
|
|
||||||
</p>
|
</p>
|
||||||
</section>
|
|
||||||
|
|
||||||
<section>
|
<section className="mb-10">
|
||||||
<h2 className="font-mono text-xs uppercase tracking-wider text-[#6b7280] mb-3">Get in touch</h2>
|
<h2 className="font-mono text-xs uppercase tracking-wider text-[#6b7280] mb-3">Available units</h2>
|
||||||
<p className="text-[15px]">
|
<ul className="space-y-3 text-[15px]">
|
||||||
<a className="text-[var(--color-text-info,#60a5fa)] hover:underline" href="mailto:advertising@broadcastbeat.com">advertising@broadcastbeat.com</a>
|
<li>
|
||||||
</p>
|
<strong>728×90 leaderboard</strong> — between main nav and headline ticker, sitewide.
|
||||||
</section>
|
</li>
|
||||||
</main>
|
<li>
|
||||||
|
<strong>300×600 sidebar premium</strong> — pinned top of every sidebar, sitewide.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<strong>300×250 sidebar rotation</strong> — rotates across every page, multiple slots.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{/* In-content 728x90 banner (live example of the leaderboard unit) */}
|
||||||
|
{ADS_728X90.length > 0 && (
|
||||||
|
<div className="my-10 hidden md:flex justify-center" aria-label="Advertisement">
|
||||||
|
<AdImage ad={shuffle(ADS_728X90)[0]} page="advertise" />
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
|
||||||
|
<section className="mb-10">
|
||||||
|
<h2 className="font-mono text-xs uppercase tracking-wider text-[#6b7280] mb-3">Reporting</h2>
|
||||||
|
<p className="text-[15px] text-[#d1d5db]">
|
||||||
|
Every banner is tracked for gross impressions and clicks. Advertisers
|
||||||
|
receive a monthly report with totals and CTR. Click links route through
|
||||||
|
/r/{"{campaign}"} for accurate counting independent of analytics
|
||||||
|
blockers.
|
||||||
|
</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h2 className="font-mono text-xs uppercase tracking-wider text-[#6b7280] mb-3">Get in touch</h2>
|
||||||
|
<p className="text-[15px]">
|
||||||
|
<a className="text-[var(--color-text-info,#60a5fa)] hover:underline" href="mailto:advertising@broadcastbeat.com">advertising@broadcastbeat.com</a>
|
||||||
|
</p>
|
||||||
|
</section>
|
||||||
|
</main>
|
||||||
|
<Footer />
|
||||||
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,30 +1,46 @@
|
|||||||
|
import Header from "@/components/Header";
|
||||||
|
import Footer from "@/components/Footer";
|
||||||
|
import AdImage from "@/components/AdImage";
|
||||||
|
import { ADS_728X90, shuffle } from "@/lib/ads";
|
||||||
|
|
||||||
export const metadata = { title: "Contact — Broadcast Beat" };
|
export const metadata = { title: "Contact — Broadcast Beat" };
|
||||||
|
|
||||||
export default function ContactPage() {
|
export default function ContactPage() {
|
||||||
return (
|
return (
|
||||||
<main className="mx-auto max-w-2xl px-6 py-12 text-[#e5e7eb]">
|
<div className="min-h-screen bg-background">
|
||||||
<h1 className="font-serif text-4xl font-bold tracking-tight mb-6">Contact</h1>
|
<Header />
|
||||||
<dl className="space-y-5 text-[15px]">
|
<main className="mx-auto max-w-2xl px-6 py-12 text-[#e5e7eb]">
|
||||||
<div>
|
<h1 className="font-serif text-4xl font-bold tracking-tight mb-6">Contact</h1>
|
||||||
<dt className="text-xs font-mono uppercase tracking-wider text-[#6b7280] mb-1">Editorial</dt>
|
<dl className="space-y-5 text-[15px]">
|
||||||
<dd><a className="text-[var(--color-text-info,#60a5fa)] hover:underline" href="mailto:editor@broadcastbeat.com">editor@broadcastbeat.com</a></dd>
|
<div>
|
||||||
</div>
|
<dt className="text-xs font-mono uppercase tracking-wider text-[#6b7280] mb-1">Editorial</dt>
|
||||||
<div>
|
<dd><a className="text-[var(--color-text-info,#60a5fa)] hover:underline" href="mailto:editor@broadcastbeat.com">editor@broadcastbeat.com</a></dd>
|
||||||
<dt className="text-xs font-mono uppercase tracking-wider text-[#6b7280] mb-1">Press releases (PR firms)</dt>
|
</div>
|
||||||
<dd>
|
<div>
|
||||||
Route submissions through{" "}
|
<dt className="text-xs font-mono uppercase tracking-wider text-[#6b7280] mb-1">Press releases (PR firms)</dt>
|
||||||
<a className="text-[var(--color-text-info,#60a5fa)] hover:underline" href="https://distribution.relevantmediaproperties.com">distribution.relevantmediaproperties.com</a>.
|
<dd>
|
||||||
</dd>
|
Route submissions through{" "}
|
||||||
</div>
|
<a className="text-[var(--color-text-info,#60a5fa)] hover:underline" href="https://distribution.relevantmediaproperties.com">distribution.relevantmediaproperties.com</a>.
|
||||||
<div>
|
</dd>
|
||||||
<dt className="text-xs font-mono uppercase tracking-wider text-[#6b7280] mb-1">Advertising</dt>
|
</div>
|
||||||
<dd><a className="text-[var(--color-text-info,#60a5fa)] hover:underline" href="mailto:advertising@broadcastbeat.com">advertising@broadcastbeat.com</a> — see <a className="text-[var(--color-text-info,#60a5fa)] hover:underline" href="/about/advertise">media kit</a>.</dd>
|
<div>
|
||||||
</div>
|
<dt className="text-xs font-mono uppercase tracking-wider text-[#6b7280] mb-1">Advertising</dt>
|
||||||
<div>
|
<dd><a className="text-[var(--color-text-info,#60a5fa)] hover:underline" href="mailto:advertising@broadcastbeat.com">advertising@broadcastbeat.com</a> — see <a className="text-[var(--color-text-info,#60a5fa)] hover:underline" href="/about/advertise">media kit</a>.</dd>
|
||||||
<dt className="text-xs font-mono uppercase tracking-wider text-[#6b7280] mb-1">Publisher</dt>
|
</div>
|
||||||
<dd>Ryan Salazar · <a className="text-[var(--color-text-info,#60a5fa)] hover:underline" href="mailto:ryan.salazar@relevantmediaproperties.com">ryan.salazar@relevantmediaproperties.com</a></dd>
|
<div>
|
||||||
</div>
|
<dt className="text-xs font-mono uppercase tracking-wider text-[#6b7280] mb-1">Publisher</dt>
|
||||||
</dl>
|
<dd>Ryan Salazar · <a className="text-[var(--color-text-info,#60a5fa)] hover:underline" href="mailto:ryan.salazar@relevantmediaproperties.com">ryan.salazar@relevantmediaproperties.com</a></dd>
|
||||||
</main>
|
</div>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
{/* In-content 728x90 banner */}
|
||||||
|
{ADS_728X90.length > 0 && (
|
||||||
|
<div className="mt-12 hidden md:flex justify-center" aria-label="Advertisement">
|
||||||
|
<AdImage ad={shuffle(ADS_728X90)[0]} page="contact" />
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</main>
|
||||||
|
<Footer />
|
||||||
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
import { createClient } from "@supabase/supabase-js";
|
import { createClient } from "@supabase/supabase-js";
|
||||||
import Header from "@/components/Header";
|
import Header from "@/components/Header";
|
||||||
import Footer from "@/components/Footer";
|
import Footer from "@/components/Footer";
|
||||||
|
import AdImage from "@/components/AdImage";
|
||||||
|
import { ADS_728X90, shuffle } from "@/lib/ads";
|
||||||
|
|
||||||
export const dynamic = "force-dynamic";
|
export const dynamic = "force-dynamic";
|
||||||
export const revalidate = 600;
|
export const revalidate = 600;
|
||||||
@@ -66,6 +68,13 @@ export default async function TeamPage() {
|
|||||||
</li>
|
</li>
|
||||||
))}
|
))}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
{/* In-content 728x90 banner */}
|
||||||
|
{ADS_728X90.length > 0 && (
|
||||||
|
<div className="mt-12 hidden md:flex justify-center" aria-label="Advertisement">
|
||||||
|
<AdImage ad={shuffle(ADS_728X90)[0]} page="team" />
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
</main>
|
</main>
|
||||||
<Footer />
|
<Footer />
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user