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

@@ -9,7 +9,7 @@ interface BannedTerm {
id: string;
term: string;
ban_level: 'soft' | 'hard';
site_scope: 'broadcastbeat' | 'avbeat' | 'both';
site_scope: 'avbeat' | 'avbeat' | 'both';
is_active: boolean;
notes: string | null;
created_at: string;
@@ -19,7 +19,7 @@ interface BannedTerm {
interface FormState {
term: string;
ban_level: 'soft' | 'hard';
site_scope: 'broadcastbeat' | 'avbeat' | 'both';
site_scope: 'avbeat' | 'avbeat' | 'both';
notes: string;
}
@@ -255,7 +255,7 @@ export default function BannedTermsPage() {
<select value={form.site_scope} onChange={e => setForm(f => ({ ...f, site_scope: e.target.value as any }))}
className="w-full bg-[#0a0a0a] border border-[#333] rounded-lg px-3 py-2.5 text-white text-sm font-body focus:outline-none focus:border-[#3b82f6]">
<option value="both">Both Sites</option>
<option value="broadcastbeat">Broadcast Beat only</option>
<option value="avbeat">AV Beat only</option>
<option value="avbeat">AV Beat only</option>
</select>
</div>
@@ -291,7 +291,7 @@ export default function BannedTermsPage() {
<select value={filterSiteScope} onChange={e => setFilterSiteScope(e.target.value)}
className="bg-[#111] border border-[#252525] rounded-lg px-3 py-2 text-[#888] text-sm font-body focus:outline-none focus:border-[#3b82f6]">
<option value="">All Sites</option>
<option value="broadcastbeat">Broadcast Beat</option>
<option value="avbeat">AV Beat</option>
<option value="avbeat">AV Beat</option>
<option value="both">Both</option>
</select>
@@ -336,7 +336,7 @@ export default function BannedTermsPage() {
</span>
</td>
<td className="px-4 py-3">
<span className="text-xs text-[#888] font-body capitalize">{term.site_scope === 'both' ? 'Both Sites' : term.site_scope === 'broadcastbeat' ? 'Broadcast Beat' : 'AV Beat'}</span>
<span className="text-xs text-[#888] font-body capitalize">{term.site_scope === 'both' ? 'Both Sites' : term.site_scope === 'avbeat' ? 'AV Beat' : 'AV Beat'}</span>
</td>
<td className="px-4 py-3">
<span className={`text-xs px-2 py-0.5 rounded-full font-body ${term.is_active ? 'bg-green-500/10 text-green-400' : 'bg-[#1a1a1a] text-[#555]'}`}>
@@ -379,7 +379,7 @@ export default function BannedTermsPage() {
<div className="flex items-center gap-2 mb-1">
<span className="text-xs px-2 py-0.5 rounded-full bg-red-500/10 text-red-400 font-bold">Hard Ban</span>
</div>
<p className="text-xs text-[#555] font-body">Submission is blocked. Post saved as draft automatically. Contributor sees only: "This post could not be submitted. Please contact the editorial team at editor@broadcastbeat.com for assistance." Admin receives email notification.</p>
<p className="text-xs text-[#555] font-body">Submission is blocked. Post saved as draft automatically. Contributor sees only: "This post could not be submitted. Please contact the editorial team at editor@avbeat.com for assistance." Admin receives email notification.</p>
</div>
</div>
</div>