fix(contrast,brand): secondary-page H1/subtitle white-on-white + rename 'The Crew Lounge' → 'The Integration Room'

CONTRAST (white-on-white on light surfaces, mirrors the prior article-body pass):
  - show-coverage/page.tsx:72  <main> wrapper text-[#e5e7eb] → text-[#0F172A]
  - show-coverage/page.tsx:76  '0 upcoming / 0 past / 0 total' subtitle text-[#9ca3af] → text-[#475569]
  - manufacturers/page.tsx:79  H1 'AV Integration Manufacturers' text-[#e0e0e0] → text-[#0F172A]
  - manufacturers/page.tsx:82  '… manufacturers' subtitle text-[#e0e0e0]/70 → text-[#475569]
  - forum/page.tsx:294 hero H1 text-white → text-[#0F172A]
  - forum/page.tsx:296 hero intro 'Connect with pro AV integrators…' text-[#aab4c4] → text-[#475569]
  - forum/page.tsx:116 'Top Performing Threads' H2 text-white → text-[#0F172A]
  - forum/page.tsx:581 'Browse Categories' H2 text-white → text-[#0F172A]

  Skipped per direct exclusion: forum/page.tsx:591 (per-category card titles).

  Homepage featured grid checked, no edit needed: FeaturedBento 2x2 h3 is already text-[#0F172A] on bg-#FFFFFF; FeaturedBentoFromDb hero is white on a dark image gradient (correct overlay pattern).

BRAND RENAME: forum is renamed everywhere user-visible.
  - forum/page.tsx hero img alt + H1 text 'The Crew Lounge' → 'The Integration Room'
  - forum/layout.tsx — all 7 occurrences (title, description, openGraph, twitter, JSON-LD WebPage name, breadcrumb item)
  - components/crew-lounge/CrewLoungeLogo.tsx — img alt
  - forum/user/[username]/page.tsx — '← Back to The Crew Lounge' link

  Logo SVG filename (/logos/crew-lounge-logo.svg) and React component name (CrewLoungeLogo) intentionally NOT renamed — they're internal asset paths and would cascade through unrelated imports; only user-visible brand strings touched.
This commit is contained in:
2026-06-03 20:14:23 +00:00
parent 93db296380
commit a5d4c50186
6 changed files with 20 additions and 20 deletions

View File

@@ -1,19 +1,19 @@
import type { Metadata } from 'next';
export const metadata: Metadata = {
title: 'The Crew Lounge — AV Beat',
description: 'The Crew Lounge: connect with pro AV integrators, live production engineers, and display tech specialists worldwide. Discuss AV-over-IP, control systems, projection & display, audio engineering, conferencing, AI automation, and more.',
title: 'The Integration Room — AV Beat',
description: 'The Integration Room: connect with pro AV integrators, live production engineers, and display tech specialists worldwide. Discuss AV-over-IP, control systems, projection & display, audio engineering, conferencing, AI automation, and more.',
alternates: { canonical: '/forum' },
openGraph: {
title: 'The Crew Lounge — AV Beat',
description: 'The Crew Lounge: connect with pro AV integrators, live production engineers, and display tech specialists worldwide. Ask questions, share expertise, and discuss AV technology.',
title: 'The Integration Room — AV Beat',
description: 'The Integration Room: connect with pro AV integrators, live production engineers, and display tech specialists worldwide. Ask questions, share expertise, and discuss AV technology.',
url: '/forum',
type: 'website',
},
twitter: {
card: 'summary',
title: 'The Crew Lounge — AV Beat',
description: 'The Crew Lounge: connect with pro AV integrators, live production engineers, and display tech specialists worldwide on AV Beat.',
title: 'The Integration Room — AV Beat',
description: 'The Integration Room: connect with pro AV integrators, live production engineers, and display tech specialists worldwide on AV Beat.',
},
};
@@ -21,8 +21,8 @@ export default function ForumLayout({ children }: { children: React.ReactNode })
const schema = {
'@context': 'https://schema.org',
'@type': 'WebPage',
name: 'AV Beat — The Crew Lounge',
description: 'The Crew Lounge: an industry community for pro AV integrators, live production engineers, and display tech professionals worldwide.',
name: 'AV Beat — The Integration Room',
description: 'The Integration Room: an industry community for pro AV integrators, live production engineers, and display tech professionals worldwide.',
url: 'https://avbeat.com/forum',
isPartOf: {
'@type': 'WebSite',
@@ -33,7 +33,7 @@ export default function ForumLayout({ children }: { children: React.ReactNode })
'@type': 'BreadcrumbList',
itemListElement: [
{ '@type': 'ListItem', position: 1, name: 'Home', item: 'https://avbeat.com' },
{ '@type': 'ListItem', position: 2, name: 'The Crew Lounge', item: 'https://avbeat.com/forum' },
{ '@type': 'ListItem', position: 2, name: 'The Integration Room', item: 'https://avbeat.com/forum' },
],
},
};

View File

@@ -113,7 +113,7 @@ function TopThreadsWidget({ categoryId }: { categoryId?: string }) {
<div className="flex items-center justify-between px-5 py-4 border-b border-[#DCE6F2]">
<div className="flex items-center gap-2">
<span className="text-lg">🏆</span>
<h2 className="text-white font-heading font-bold text-base">Top Performing Threads</h2>
<h2 className="text-[#0F172A] font-heading font-bold text-base">Top Performing Threads</h2>
</div>
{/* Metric Tabs */}
<div className="flex gap-1 bg-[#111] border border-[#DCE6F2] rounded-lg p-1">
@@ -290,10 +290,10 @@ export default function ForumIndexPage() {
<div className="flex items-start justify-between gap-4 flex-wrap">
<div className="flex-1 min-w-0">
<div className="flex items-center gap-3 mb-1">
<img src="/logos/crew-lounge-logo.svg" alt="The Crew Lounge" className="w-8 h-8" />
<h1 className="text-3xl font-heading font-bold text-white">The Crew Lounge</h1>
<img src="/logos/crew-lounge-logo.svg" alt="The Integration Room" className="w-8 h-8" />
<h1 className="text-3xl font-heading font-bold text-[#0F172A]">The Integration Room</h1>
</div>
<p className="text-[#aab4c4] font-body text-sm max-w-2xl">
<p className="text-[#475569] font-body text-sm max-w-2xl">
Connect with pro AV integrators, live production engineers, and display tech specialists worldwide.
</p>
</div>
@@ -578,7 +578,7 @@ export default function ForumIndexPage() {
{!loading && !error && (
<>
<h2 className="text-white font-heading font-bold text-base mb-3">Browse Categories</h2>
<h2 className="text-[#0F172A] font-heading font-bold text-base mb-3">Browse Categories</h2>
<div className="space-y-2">
{categories.map(cat => (
<Link

View File

@@ -124,7 +124,7 @@ export default function ForumUserPage() {
<div className="max-w-container mx-auto px-4 py-12">
<h1 className="font-heading text-2xl font-bold text-[#0F172A] mb-2">User not found</h1>
<p className="font-body text-sm text-[#888]">No forum member with username "{username}".</p>
<Link href="/forum" className="font-body text-sm text-[#1D4ED8] hover:underline mt-4 inline-block"> Back to The Crew Lounge</Link>
<Link href="/forum" className="font-body text-sm text-[#1D4ED8] hover:underline mt-4 inline-block"> Back to The Integration Room</Link>
</div>
</main>
<Footer />

View File

@@ -76,10 +76,10 @@ export default async function ManufacturersIndex() {
<Header />
<div className="max-w-6xl mx-auto px-4 py-10">
<header className="mb-8">
<h1 className="text-3xl md:text-4xl font-display font-bold text-[#e0e0e0] mb-2">
<h1 className="text-3xl md:text-4xl font-display font-bold text-[#0F172A] mb-2">
AV Integration Manufacturers
</h1>
<p className="text-[#e0e0e0]/70 text-base max-w-3xl">
<p className="text-[#475569] text-base max-w-3xl">
{list.length.toLocaleString()} broadcast, post-production, and live-production
manufacturers
{nabCount > 0 && <> · {nabCount.toLocaleString()} exhibiting at NAB Show 2026</>}

View File

@@ -69,11 +69,11 @@ export default async function ShowCoverageIndex() {
return (
<div className="min-h-screen bg-background">
<Header />
<main className="mx-auto max-w-6xl px-6 py-10 text-[#e5e7eb]">
<main className="mx-auto max-w-6xl px-6 py-10 text-[#0F172A]">
<aside className="float-right ml-6 mb-6 hidden lg:block max-w-[300px]"><SidebarAdStack /></aside>
<header className="mb-8">
<h1 className="font-serif text-4xl font-bold tracking-tight">Industry Show Coverage</h1>
<p className="text-sm text-[#9ca3af] mt-2 font-mono">
<p className="text-sm text-[#475569] mt-2 font-mono">
{upcoming.length} upcoming · {past.length} past · {events.length} total
</p>
</header>

View File

@@ -2,7 +2,7 @@ export default function CrewLoungeLogo({ size = 40 }: { size?: number }) {
return (
<img
src="/logos/crew-lounge-logo.svg"
alt="The Crew Lounge"
alt="The Integration Room"
style={{ width: size, height: size }}
className="inline-block"
/>