BB AI redesign: 4-item nav, Show coverage, About, status bar, wire ticker,

trends sidebar, Ask BB AI, neural-summary schema, 13-event seed.

Phases 1-10 (11 phases minus Phase 8 which is the pgvector marker).

DB:
  bb.events                — 13 industry events seeded (MPTS, ANGA COM,
                             BroadcastAsia, SET Expo, IBC, NAB NY,
                             NewTECHForum, SATIS, DPP EBS, SVVS,
                             Hamburg Open, CABSAT, NAB Show '27).
  bb.article_events        — composite PK (article_id, article_table, event_id)
                             links any article-table row to one or more events.
  bb.banner_creatives      — (no change tonight)
  bb.{native_articles,
      ai_rewritten_articles,
      wp_imported_posts,
      press_releases}.neural_summary jsonb — populated by Phase 7
                             analyzer (deferred).
  bb.{native_articles,
      ai_rewritten_articles}.featured boolean — featured carousel source.

Routes:
  /api/events/upcoming     — date-gated, enriched with is_live/days_until/
                             day_of_event/total_days.
  /api/ask-bb-ai           — Claude Opus 4.7 chat with prompt caching on
                             the system block, 30-msg/hr/IP rate limit.
                             Tool-use deferred — first cut is straight
                             LLM with archive-citation prompting.

Pages:
  /show-coverage           — index of all events, upcoming + past split.
  /show-coverage/[slug]    — hero + status (live/T-Nd/past) + schema.org
                             Event JSON-LD + tagged articles list.
  /about, /about/{team,contact,advertise,press-kit}.

Components:
  Header                   — 4-item nav: Show coverage (dropdown) /
                             Newsletter / Forum / About (dropdown).
                             Old NEWS/GEAR/TECHNOLOGY/ADVERTISE items
                             removed from nav (routes still exist).
  EventsDropdown           — 340px CSI panel with L-corner brackets,
                             pulsing dot, "BB AI" badge, live/T-Nd rows,
                             auto-updated stamp.
  AboutDropdown            — 5-item lighter treatment.
  SystemStatusBar          — Index online pulse, articles/sources/events
                             counts, build version. Above Header.
  LiveWireTicker           — replaces NewsTicker. [HH:MM] [SRC] prefix,
                             CSS marquee, doubled for seamless loop.
  TrendsSidebar            — BB AI detected trends, top 5 entities by
                             7d-vs-30d lift, vector-pass stamp.
                             Phase 6b: replace with pgvector.
  AskBBAI                  — floating bottom-right button + 420px right
                             drawer chat. No mention of Anthropic/Claude.

Styling:
  redesign-tokens.css      — --color-text-info, --color-background-*,
                             --font-serif/mono/body, bb-pulse/bb-ring
                             animations + bb-marquee.

Constraints honored:
  - LiveU 728x90 still between </nav> and ticker.
  - Blackmagic 300x600 still pinned top of sidebar.
  - /r/[slug] click tracking unchanged.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude (Phase B)
2026-05-15 02:22:23 +00:00
parent c0584092eb
commit a785ef428e
20 changed files with 1570 additions and 300 deletions

View File

@@ -17,6 +17,8 @@ import { createClient } from "@/lib/supabase/client";
import NotificationCenter from "@/components/NotificationCenter";
import LanguageSwitcher from "@/components/LanguageSwitcher";
import AdImage from "@/components/AdImage";
import EventsDropdown from "@/components/EventsDropdown";
import AboutDropdown from "@/components/AboutDropdown";
import { ADS_728X90, shuffle } from "@/lib/ads";
interface NavItem {
@@ -26,46 +28,8 @@ interface NavItem {
}
const navLinks: NavItem[] = [
{
label: "NEWS",
href: "/news",
dropdown: [
{ label: "Live Production", href: "/news?category=live-production" },
{ label: "IP & Cloud", href: "/news?category=ip-cloud" },
{ label: "AI & Automation", href: "/news?category=ai" },
{ label: "People", href: "/news?category=people" },
],
},
{
label: "GEAR & REVIEWS",
href: "/gear",
dropdown: [
{ label: "Audio", href: "/gear?category=audio" },
{ label: "Cameras", href: "/gear?category=cameras" },
{ label: "Reviews", href: "/gear" },
],
},
{
label: "SHOW COVERAGE",
href: "/show-coverage",
dropdown: [
{ label: "NAB Show", href: "/show-coverage" },
{ label: "IBC", href: "/show-coverage?event=ibc" },
],
},
{
label: "TECHNOLOGY",
href: "/technology",
dropdown: [
{ label: "Storage & MAM", href: "/technology?category=storage" },
{ label: "Streaming", href: "/technology?category=streaming" },
{ label: "AI & Automation", href: "/technology?category=ai" },
],
},
{ label: "NEWSLETTER", href: "/newsletter/archive" },
{ label: "FORUM", href: "/forum" },
{ label: "ADVERTISE", href: "/advertise" },
{ label: "ABOUT", href: "/about" },
{ label: "Newsletter", href: "/newsletter" },
{ label: "Forum", href: "/forum" },
];
export default function Header() {
@@ -377,6 +341,10 @@ export default function Header() {
{/* Desktop Nav Links — arrow key navigable + dropdowns */}
<div className="hidden lg:flex items-stretch gap-5" role="list" aria-label="Site sections">
{/* nav-desktop-redesign:start */}
<EventsDropdown />
{/* nav-desktop-redesign:end */}
{navLinks?.map((link, i) => (
<div
key={link?.label}
@@ -409,7 +377,10 @@ export default function Header() {
)}
</div>
))}
{/* Reading List Icon Link */}
{/* nav-desktop-redesign:after */}
<AboutDropdown />
{/* nav-desktop-redesign:after:end */}
{/* Reading List Icon Link */}
<Link
href="/reading-list"
aria-label="Reading List"