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.
51 lines
1.9 KiB
TypeScript
51 lines
1.9 KiB
TypeScript
import type { Metadata } from 'next';
|
|
|
|
export const metadata: Metadata = {
|
|
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 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 Integration Room — AV Beat',
|
|
description: 'The Integration Room: connect with pro AV integrators, live production engineers, and display tech specialists worldwide on AV Beat.',
|
|
},
|
|
};
|
|
|
|
export default function ForumLayout({ children }: { children: React.ReactNode }) {
|
|
const schema = {
|
|
'@context': 'https://schema.org',
|
|
'@type': 'WebPage',
|
|
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',
|
|
name: 'AV Beat',
|
|
url: 'https://avbeat.com',
|
|
},
|
|
breadcrumb: {
|
|
'@type': 'BreadcrumbList',
|
|
itemListElement: [
|
|
{ '@type': 'ListItem', position: 1, name: 'Home', item: 'https://avbeat.com' },
|
|
{ '@type': 'ListItem', position: 2, name: 'The Integration Room', item: 'https://avbeat.com/forum' },
|
|
],
|
|
},
|
|
};
|
|
|
|
return (
|
|
<>
|
|
<script
|
|
type="application/ld+json"
|
|
dangerouslySetInnerHTML={{ __html: JSON.stringify(schema) }}
|
|
/>
|
|
{children}
|
|
</>
|
|
);
|
|
}
|