av: clone broadcastbeat sources + AV Beat rebrand (Phase 1)

- Replaces the prior Rocket scaffold (saved on pre-bb-clone-rollback branch)
- Domain: broadcastbeat.com -> avbeat.com
- Brand: Broadcast Beat -> AV Beat
- Slug: broadcastbeat -> avbeat (package, identifiers)
- Schema fallback: bb -> av (env var name unchanged)
- Placeholder AV BEAT logo (gold->red gradient) at /assets/logos/av.svg
- All BB/RMP logo references repointed

Outstanding before public DNS swap:
  - Supabase av schema bootstrap (mirror of bb tables)
  - WordPress archive import (avbeat-com -> av.articles)
  - Coolify env vars
  - dev-avbeat.onsethost.com staging deploy + visual review
This commit is contained in:
Claude
2026-06-02 15:32:56 +00:00
parent dd93a74bdf
commit d43f78b161
137 changed files with 4728 additions and 4541 deletions

View File

@@ -206,7 +206,7 @@ export default async function ManufacturerProfile({
</span>
)}
{company.phone && (
<a href={`tel:${company.phone.replace(/[^\d+]/g, '')}`} className="text-[#888] hover:text-[#E67E22]">
<a href={`tel:${company.phone.replace(/[^\d+]/g, '')}`} className="text-[#888] hover:text-[#3b82f6]">
{company.phone}
</a>
)}
@@ -217,7 +217,7 @@ export default async function ManufacturerProfile({
href={company.company_website}
target="_blank"
rel="noopener noreferrer"
className="text-[#E67E22] hover:underline"
className="text-[#3b82f6] hover:underline"
>
Website
</a>
@@ -227,7 +227,7 @@ export default async function ManufacturerProfile({
href={company.press_url}
target="_blank"
rel="noopener noreferrer"
className="text-[#E67E22] hover:underline"
className="text-[#3b82f6] hover:underline"
>
Newsroom
</a>
@@ -237,7 +237,7 @@ export default async function ManufacturerProfile({
href={company.contact_url}
target="_blank"
rel="noopener noreferrer"
className="text-[#E67E22] hover:underline"
className="text-[#3b82f6] hover:underline"
>
Contact
</a>
@@ -247,7 +247,7 @@ export default async function ManufacturerProfile({
href={company.linkedin_url}
target="_blank"
rel="noopener noreferrer"
className="text-[#888] hover:text-[#E67E22]"
className="text-[#888] hover:text-[#3b82f6]"
>
LinkedIn
</a>
@@ -257,7 +257,7 @@ export default async function ManufacturerProfile({
href={`https://twitter.com/${company.twitter_handle}`}
target="_blank"
rel="noopener noreferrer"
className="text-[#888] hover:text-[#E67E22]"
className="text-[#888] hover:text-[#3b82f6]"
>
X / Twitter
</a>
@@ -306,7 +306,7 @@ export default async function ManufacturerProfile({
href={e.linkedin_url}
target="_blank"
rel="noopener noreferrer"
className="text-[11px] text-[#E67E22] hover:underline"
className="text-[11px] text-[#3b82f6] hover:underline"
>
LinkedIn
</a>
@@ -328,14 +328,14 @@ export default async function ManufacturerProfile({
)}
{company.phone && (
<div className="mt-1">
<a href={`tel:${company.phone.replace(/[^\d+]/g, '')}`} className="text-[#E67E22] hover:underline">
<a href={`tel:${company.phone.replace(/[^\d+]/g, '')}`} className="text-[#3b82f6] hover:underline">
{company.phone}
</a>
</div>
)}
{company.contact_email && (
<div>
<a href={`mailto:${company.contact_email}`} className="text-[#E67E22] hover:underline">
<a href={`mailto:${company.contact_email}`} className="text-[#3b82f6] hover:underline">
{company.contact_email}
</a>
</div>
@@ -401,7 +401,7 @@ export default async function ManufacturerProfile({
<section className="mb-10">
<header className="flex items-baseline justify-between mb-3">
<h2 className="text-lg font-display font-bold text-[#e0e0e0]">Recent coverage</h2>
<Link href={`/news?search=${encodeURIComponent(company.company_name)}`} className="text-xs text-[#E67E22] hover:underline">
<Link href={`/news?search=${encodeURIComponent(company.company_name)}`} className="text-xs text-[#3b82f6] hover:underline">
All stories
</Link>
</header>
@@ -410,7 +410,7 @@ export default async function ManufacturerProfile({
<Link
key={r.wp_slug}
href={`/news/${r.wp_slug}`}
className="group bg-[#0d0d0d] border border-[#252525] rounded-md p-3 hover:border-[#E67E22] hover:shadow-sm transition-all flex gap-3"
className="group bg-[#0d0d0d] border border-[#252525] rounded-md p-3 hover:border-[#3b82f6] hover:shadow-sm transition-all flex gap-3"
>
{/* Image fallback cascade — Ryan rule: never show an empty
gray box on a coverage card. Falls through:
@@ -423,7 +423,7 @@ export default async function ManufacturerProfile({
loading="lazy"
/>
<div className="min-w-0">
<h3 className="text-xs font-semibold text-[#e0e0e0] leading-snug group-hover:text-[#E67E22] line-clamp-3">
<h3 className="text-xs font-semibold text-[#e0e0e0] leading-snug group-hover:text-[#3b82f6] line-clamp-3">
{r.title}
</h3>
{r.wp_published_at && (
@@ -447,7 +447,7 @@ export default async function ManufacturerProfile({
{p.slug ? (
<Link
href={`/news/${p.slug}`}
className="text-[#E67E22] hover:underline"
className="text-[#3b82f6] hover:underline"
>
{p.title}
</Link>