AV deep sweep: account / news / marketplace placeholders + newsletter default tag + admin overview text + content-status & dashboard adops slug mappings (broadcast-beat → avbeat)
This commit is contained in:
@@ -774,7 +774,7 @@ export default function AccountPage() {
|
||||
<div className="flex items-center justify-between py-3 border-b border-[#222]">
|
||||
<div>
|
||||
<p className="font-body text-sm font-bold text-[#e0e0e0]">Email Newsletter</p>
|
||||
<p className="font-body text-xs text-[#666] mt-0.5">Receive weekly broadcast industry news</p>
|
||||
<p className="font-body text-xs text-[#666] mt-0.5">Receive weekly pro AV industry news</p>
|
||||
</div>
|
||||
<Link
|
||||
href="/home-page"
|
||||
|
||||
@@ -98,7 +98,7 @@ export default function AdOpsIOsPage() {
|
||||
</select>
|
||||
<select value={filterSite} onChange={e => setFilterSite(e.target.value)} className="px-2 py-1 bg-[#111] border border-[#3a322b] rounded text-xs text-[#888] focus:outline-none">
|
||||
<option value="">All Sites</option>
|
||||
{['avbeat','avbeat','backlotbeat','broadcastengineering'].map(s => <option key={s} value={s}>{s}</option>)}
|
||||
{['avbeat','broadcastbeat','backlotbeat','broadcastengineering'].map(s => <option key={s} value={s}>{s}</option>)}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -75,7 +75,7 @@ export default function AdOpsDashboardPage() {
|
||||
<div className="flex gap-2 flex-wrap">
|
||||
<select value={filterSite} onChange={e => setFilterSite(e.target.value)} className="px-2 py-1 bg-[#111] border border-[#3a322b] rounded text-xs text-[#888] focus:outline-none">
|
||||
<option value="">All Sites</option>
|
||||
{['avbeat','avbeat','backlotbeat','broadcastengineering'].map(s => <option key={s} value={s}>{s}</option>)}
|
||||
{['avbeat','broadcastbeat','backlotbeat','broadcastengineering'].map(s => <option key={s} value={s}>{s}</option>)}
|
||||
</select>
|
||||
<select value={filterStatus} onChange={e => setFilterStatus(e.target.value)} className="px-2 py-1 bg-[#111] border border-[#3a322b] rounded text-xs text-[#888] focus:outline-none">
|
||||
<option value="">All Statuses</option>
|
||||
|
||||
@@ -47,7 +47,7 @@ interface LaunchChecklist {
|
||||
// ─── Site labels ──────────────────────────────────────────────────────────────
|
||||
|
||||
const SITE_LABELS: Record<string, { label: string; color: string; target: string }> = {
|
||||
'broadcast-beat': { label: 'AV Beat', color: 'text-blue-400', target: '15–25/day' },
|
||||
'avbeat': { label: 'AV Beat', color: 'text-blue-400', target: '15–25/day' },
|
||||
'av-beat': { label: 'AV Beat', color: 'text-purple-400', target: '10–15/day' },
|
||||
'backlot-beat': { label: 'Backlot Beat', color: 'text-amber-400', target: '10–15/day' },
|
||||
'broadcast-engineering': { label: 'BroadcastEngineering.com', color: 'text-green-400', target: '10–15/day' },
|
||||
@@ -124,7 +124,7 @@ function ChecklistItem({ label, done }: { label: string; done: boolean }) {
|
||||
type RMPSite = 'broadcast-beat' | 'av-beat' | 'backlot-beat' | 'broadcast-engineering';
|
||||
|
||||
function GeneratePanel({ onGenerated }: { onGenerated: () => void }) {
|
||||
const [site, setSite] = useState<RMPSite>('broadcast-beat');
|
||||
const [site, setSite] = useState<RMPSite>('avbeat');
|
||||
const [topic, setTopic] = useState('');
|
||||
const [loading, setLoading] = useState(false);
|
||||
const [result, setResult] = useState<string | null>(null);
|
||||
|
||||
@@ -256,7 +256,7 @@ export default function AdminDashboardPage() {
|
||||
<div className="mb-8 flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4">
|
||||
<div>
|
||||
<h1 className="text-2xl font-display font-bold text-white">Admin Dashboard</h1>
|
||||
<p className="text-[#555] text-sm font-body mt-1">Overview of your broadcast platform</p>
|
||||
<p className="text-[#555] text-sm font-body mt-1">Overview of your pro AV platform</p>
|
||||
</div>
|
||||
<div className="flex items-center gap-2 text-xs text-[#555] font-body">
|
||||
<svg className="w-3.5 h-3.5" fill="none" stroke="currentColor" strokeWidth="2" viewBox="0 0 24 24">
|
||||
|
||||
@@ -47,7 +47,7 @@ interface Stats {
|
||||
}
|
||||
|
||||
const PUBLICATIONS = [
|
||||
{ id: 'broadcast-beat', name: 'AV Beat', short: 'BB' },
|
||||
{ id: 'avbeat', name: 'AV Beat', short: 'AVB' },
|
||||
{ id: 'av-beat', name: 'AV Beat', short: 'AV' },
|
||||
];
|
||||
|
||||
|
||||
@@ -316,7 +316,7 @@ export default function AccountPage() {
|
||||
onChange={(e) => setJobTitle(e.target.value)}
|
||||
required
|
||||
className="w-full bg-[#1c1815] border border-white/20 rounded-lg px-3 py-2.5 text-white text-sm focus:outline-none focus:border-[#CC0000]"
|
||||
placeholder="e.g. Senior Broadcast Engineer"
|
||||
placeholder="e.g. Senior AV Integrator"
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
|
||||
@@ -347,7 +347,7 @@ export default function NewsPage({
|
||||
</div>
|
||||
<div className="bg-[#0d1520] border border-[#412402] p-4">
|
||||
<h3 className="font-body font-bold text-xs text-[#F0A623] uppercase tracking-widest mb-2">Newsletter</h3>
|
||||
<p className="text-[#777] text-xs font-body mb-3">Get broadcast news delivered to your inbox every week.</p>
|
||||
<p className="text-[#777] text-xs font-body mb-3">Get pro AV news delivered to your inbox every week.</p>
|
||||
<Link href="/home-page#newsletter" className="btn-subscribe text-xs py-2 px-4 inline-block">Subscribe Free</Link>
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
@@ -144,7 +144,7 @@ function NewsletterCard({ newsletter }: { newsletter: Newsletter }) {
|
||||
// ─── Signup CTA ────────────────────────────────────────────────────────────────
|
||||
function SignupCTA() {
|
||||
const [email, setEmail] = useState("");
|
||||
const [selected, setSelected] = useState<string[]>(["Broadcast"]);
|
||||
const [selected, setSelected] = useState<string[]>(["Pro AV"]);
|
||||
const [status, setStatus] = useState<"idle" | "loading" | "success" | "error">("idle");
|
||||
const [message, setMessage] = useState("");
|
||||
const formId = useId();
|
||||
|
||||
@@ -26,7 +26,7 @@ export default function PrivacyPage() {
|
||||
|
||||
<section aria-labelledby="section-intro">
|
||||
<p id="section-intro">
|
||||
This Privacy Policy describes how <strong className="text-[#e0e0e0]">Relevant Media Properties, LLC</strong> ("we," "us," or "our"), publisher of AV Beat, AV Beat, Backlot Beat, and BroadcastEngineering.com, collects, uses, and shares information about you when you use our websites and services. We are committed to protecting your privacy and complying with applicable data protection laws including GDPR and CCPA.
|
||||
This Privacy Policy describes how <strong className="text-[#e0e0e0]">Relevant Media Properties, LLC</strong> ("we," "us," or "our"), publisher of AV Beat, Broadcast Beat, and BroadcastEngineering.com, collects, uses, and shares information about you when you use our websites and services. We are committed to protecting your privacy and complying with applicable data protection laws including GDPR and CCPA.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user