Files
avbeat-com/src/app/about/page.tsx
Local Administrator 3a65e776ac fix(ai-disclosure): remove every visible "AI persona" reference + team-card visibility
Two unrelated production bugs called out in the same review pass:

1) AI persona disclosure — strictly removed everywhere readers see it.
   - /about/team hero subtitle no longer says "trained AI personas working
     under house style"; copy now reads like every other newsroom team page.
   - /about "How we work" block drops the line about AI assistants
     rewriting press releases + the "Our AI personas are clearly labeled"
     sentence. Reworded to just describe the editorial process.
   - ArticleComments no longer renders the small "AI" chip beside
     is_ai_seeded commenters. The flag stays in the DB for internal
     accounting; it just doesn't surface in the UI.
   - Stale code comments in articles/[slug] + news/[slug] that referenced
     "AI personas participate (tagged)" cleaned up.
   The is_ai_seeded / is_ai_response columns are now strictly internal-only.

2) Team page card visibility — the page wrapper got switched from
   text-[#e5e7eb] to text-[#0F172A] in the recent restyle, which fixed
   white-on-white outside the cards but left the dark-card H3 names
   inheriting dark navy on a dark navy bg = invisible. Forced text-white
   on both H3s (editorial + ops). Email rows now use min-w-0 + flex-1 +
   block truncate so long addresses ellipsis inside the card instead of
   pushing the layout past the right edge.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-04 20:27:25 +00:00

104 lines
4.7 KiB
TypeScript

import Header from "@/components/Header";
import Footer from "@/components/Footer";
import SidebarAdStack from "@/components/SidebarAdStack";
export const metadata = {
title: "About AV Beat",
description: "AV Beat is an independent industry publication covering pro AV, live production, and display tech.",
};
export default function AboutPage() {
return (
<div className="min-h-screen bg-background">
<Header />
<div className="max-w-container mx-auto px-4 py-12 text-[#1e293b]">
<div className="lg:grid lg:grid-cols-[1fr,300px] lg:gap-10">
<main>
<header className="mb-8 border-b border-[#DCE6F2] pb-6">
<div className="text-[10px] font-mono uppercase tracking-[0.22em] text-[var(--color-text-info,#60a5fa)] mb-2">
AV Beat
</div>
<h1 className="font-display text-4xl md:text-5xl font-bold tracking-tight">About</h1>
<p className="mt-3 text-[#475569] text-base max-w-2xl">
An independent trade publication covering pro AV, live production, display tech, and signal-flow technology.
</p>
</header>
<div className="grid grid-cols-1 md:grid-cols-3 gap-4 mb-10">
<Stat label="Years covering the industry" value="20+" />
<Stat label="Shows tracked annually" value="14+" />
<Stat label="Stories archived" value="29k+" />
</div>
<section className="space-y-6 text-[#1e293b] text-[15px] leading-relaxed">
<Block title="What we cover">
AV Beat reports on the equipment, services, and people
that move the professional video industry forward. We follow
product launches, executive moves, acquisitions, and the live
production / IP / cloud workflows reshaping how content gets
made and delivered.
</Block>
<Block title="Where we go">
We cover the major industry shows in person and remotely NAB
Show InfoComm, ISE, NAB Show, IBC, and more track
product launches and acquisitions year-round, and publish
interviews with the engineers, post supervisors, and executives
building the next generation of workflows.
</Block>
<Block title="How we work">
Editorial decisions are made independently of advertising. We
do not accept payment for editorial coverage. Vendor-supplied
press releases routed through our distribution platform are
rewritten by our editorial team to our house style guide;
the original submission is preserved on file for provenance.
</Block>
<Block title="Get involved">
For editorial pitches: <a className="text-[var(--color-text-info,#60a5fa)] hover:underline" href="mailto:editor@avbeat.com">editor@avbeat.com</a>.
{" "}For advertising: <a className="text-[var(--color-text-info,#60a5fa)] hover:underline" href="/about/advertise">see the media kit</a>.
{" "}For our team: <a className="text-[var(--color-text-info,#60a5fa)] hover:underline" href="/about/team">meet the editorial team</a>.
</Block>
</section>
</main>
{/* Sidebar: 300x600 + rotating 300x250s */}
<aside className="mt-10 lg:mt-0" aria-label="Advertisements">
<div className="lg:sticky lg:top-24">
<SidebarAdStack />
</div>
</aside>
</div>
</div>
<Footer />
</div>
);
}
function Stat({ label, value }: { label: string; value: string }) {
// Brand-gradient top accent (animated sheen) gives the stat tile its
// on-brand identity without redoing the layout. The tile itself stays
// white-on-light-border for legibility.
return (
<div className="relative overflow-hidden rounded border border-[#DCE6F2] bg-[#FFFFFF] p-4">
<span className="brand-gradient absolute top-0 left-0 right-0 h-1" aria-hidden />
<div className="font-display text-3xl font-bold text-[#0F172A]">{value}</div>
<div className="mt-1 text-[10px] font-mono uppercase tracking-[0.16em] text-[#475569]">
{label}
</div>
</div>
);
}
function Block({ title, children }: { title: string; children: React.ReactNode }) {
return (
<div className="rounded border border-[#DCE6F2] bg-[#FFFFFF] p-5">
<h2 className="font-mono text-xs uppercase tracking-[0.18em] text-[var(--color-text-info,#60a5fa)] mb-2">
{title}
</h2>
<p className="text-[15px] leading-relaxed">{children}</p>
</div>
);
}