fix: /manufacturers UI cleanup + /about/team phone formatting + /about media-kit link
Three pointed fixes:
/manufacturers (cloned from BB; still had broadcast vibe)
• Drop the hardcoded "NAB + IBC" filter chip.
• Per-card "2026 NAB Show" / "IBC 2026" badges replaced by dynamic
pills generated from shows_attending intersected with av.events
(so each card now shows the actual AV shows that exhibitor is
attending — InfoComm, CEDIA, ISE, DSE, etc.).
• Page intro counts: drop nabCount / ibcCount hardcoding, compute
"top 3 shows by exhibitor count" from the data and surface those
counts dynamically. With only InfoComm 2026 currently tagged the
line reads "851 at InfoComm 2026" — adds more rows once other
shows are scraped.
• Meta description + OG: pro-AV / display / signage instead of
"broadcast, post-production, and live-production."
/about/team phone formatting
• New formatPhone() helper: E.164 → "(213) 418-2600" pattern.
• Extension format: ", Ext. NNN" (capital E, comma-separated).
• tel: link still uses the raw digits + RFC-3966 ',ext' pause for
PBX auto-dial on supported clients.
/about page media-kit link
• Was href="/about/advertise" — a relative path that 404s (no such
route exists). Replaced with the absolute media-kit URL on
relevantmediaproperties.com that the /advertise + /about/contact
pages already use. Opens in a new tab.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -77,6 +77,15 @@ export default async function TeamPage() {
|
||||
.map((w) => w.charAt(0).toUpperCase())
|
||||
.join("");
|
||||
|
||||
// Format an E.164 US number as (XXX) XXX-XXXX. Falls back to the raw
|
||||
// string for international or non-standard inputs.
|
||||
const formatPhone = (raw: string): string => {
|
||||
const digits = raw.replace(/[^0-9]/g, "");
|
||||
const local = digits.startsWith("1") && digits.length === 11 ? digits.slice(1) : digits;
|
||||
if (local.length !== 10) return raw;
|
||||
return `(${local.slice(0, 3)}) ${local.slice(3, 6)}-${local.slice(6)}`;
|
||||
};
|
||||
|
||||
// Derive @avbeat.com email from the persona slug. Real mailboxes
|
||||
// are set up centrally; this is the authoring address surfaced to readers.
|
||||
const editorialEmail = (p: Persona): { user: string; domain: string } | null => {
|
||||
@@ -242,8 +251,8 @@ export default async function TeamPage() {
|
||||
})()}
|
||||
{p.phone && (
|
||||
<div>
|
||||
<a href={`tel:${p.phone.replace(/[^\d+]/g, '')}`} className="hover:text-[#7DD3FC] font-mono">
|
||||
{p.phone}{p.extension ? ` ext. ${p.extension}` : ''}
|
||||
<a href={`tel:${p.phone.replace(/[^\d+]/g, '')}${p.extension ? ',' + p.extension : ''}`} className="hover:text-[#7DD3FC] font-mono">
|
||||
{formatPhone(p.phone)}{p.extension ? `, Ext. ${p.extension}` : ''}
|
||||
</a>
|
||||
</div>
|
||||
)}
|
||||
|
||||
Reference in New Issue
Block a user