import React, { Suspense } from "react"; import type { Metadata } from "next"; import Header from "@/components/Header"; import Footer from "@/components/Footer"; import FeaturedBentoFromDb from '@/components/FeaturedBentoFromDb'; import FeaturedCarouselServer from '@/components/FeaturedCarouselServer'; import FeaturedBento from "./components/FeaturedBento"; import SpotlightCarousel from "./components/SpotlightCarousel"; import ArticleFeed from "./components/ArticleFeed"; import ScrollRevealSection from "@/components/ScrollRevealSection"; import NewsletterSignup from "./components/NewsletterSignup"; import SponsorLogoStrip from "@/components/SponsorLogoStrip"; import CompanyMentionsHover from "@/components/CompanyMentionsHover"; // force-dynamic so the homepage re-renders on every request — the hero // component (FeaturedBentoFromDb) reads from supabase live and breaks // when the parent page is statically prerendered. export const dynamic = 'force-dynamic'; export const revalidate = 0; export const metadata: Metadata = { title: 'AV Beat — Pro AV, Display and Live Production Tech', description: 'The digital platform for pro AV, live production, and display tech professionals. Breaking news, deep-dive features, and industry spotlights from InfoComm to ISE and beyond.', alternates: { canonical: '/', }, openGraph: { title: 'AV Beat — Pro AV, Live Production & Display Tech', description: 'Breaking news and insights for pro AV, live production, and display tech professionals.', url: '/', type: 'website', images: [ { url: '/assets/images/og-image.png', width: 1200, height: 630, alt: 'AV Beat — Pro AV, Live Production & Display Tech News', }, ], }, twitter: { card: 'summary_large_image', title: 'AV Beat — Pro AV, Live Production & Display Tech', description: 'Breaking news and insights for pro AV, live production, and display tech professionals.', images: ['/assets/images/og-image.png'], }, }; /* ── Skeleton placeholders ─────────────────────────────── */ function LeaderboardSkeleton() { return (
); } function BentoSkeleton() { return (
{[...Array(4)]?.map((_, i) => (
))}
); } function CarouselSkeleton() { return (
{[...Array(4)]?.map((_, i) => (
))}
); } function FeedSkeleton() { return (
{[...Array(5)]?.map((_, i) => (
))}
); } export default function HomePage() { return (
{/* Sticky top bar + nav */}
{/* H1 Hero Heading */}

AV Beat — Pro AV, Live Production & Display Tech News

{/* Featured: cinematic hero + 4-up rail below (FeaturedBentoFromDb) */} }> {/* Spotlight carousel — temporarily hidden (old stories) }> */} {/* Article feed + sidebar */} }> {/* Newsletter signup */} {/* Content Partners logo strip — current banner advertisers */} {/* Footer */}
); }