{b.size} · {b.status} ·{" "} {b.click_url && ( - + {b.click_url.slice(0, 80)}{b.click_url.length > 80 ? "…" : ""} )} diff --git a/src/app/admin/banners/page.tsx b/src/app/admin/banners/page.tsx index 7bbc719..473b650 100644 --- a/src/app/admin/banners/page.tsx +++ b/src/app/admin/banners/page.tsx @@ -113,7 +113,7 @@ export default async function AdminBannersPage() { after the next refresh.
- + ← Admin home diff --git a/src/app/admin/company-coverage/page.tsx b/src/app/admin/company-coverage/page.tsx index 8d16552..3f8722c 100644 --- a/src/app/admin/company-coverage/page.tsx +++ b/src/app/admin/company-coverage/page.tsx @@ -171,7 +171,7 @@ export default function CompanyCoveragePage() { return (Loading company coverage…
Auto-Pilot
@@ -422,7 +422,7 @@ export default function CompanyCoveragePage() {New story suggestions are emailed to:
{settings.reminder_email}
+{settings.reminder_email}
Reminders are sent when Auto-Pilot is off and new companies are detected.
{companies.length} companies tracked
-Loading content status…
Loading analytics…
Sending Domains
← Email -{site}
- Manage → + Manage →Suppression Keywords
-Loading forum dashboard…
Top Categories
By thread count
Moderation Stats
Current moderation state across all forum content
Available Category Slugs
{slug}
+ {slug}
))}
Quick Links
Tips
- • Threads are imported as real posts — they appear immediately in the forum diff --git a/src/app/admin/import/page.tsx b/src/app/admin/import/page.tsx index 5cf52dd..366070f 100644 --- a/src/app/admin/import/page.tsx +++ b/src/app/admin/import/page.tsx @@ -134,7 +134,7 @@ export default function WPImportPage() { if (loading || (!user && !loading)) { return (
WordPress Post Importer
Import posts from{' '} - + avbeat.com {' '} via WordPress REST API
-
+
Run Import
@@ -191,7 +191,7 @@ export default function WPImportPage() {
value={maxPages}
onChange={(e) => setMaxPages(Number(e.target.value))}
disabled={isImporting}
- className="bg-[#1a1a1a] border border-[#333] text-[#cccccc] text-sm rounded px-3 py-2 focus:outline-none focus:border-[#3b82f6] disabled:opacity-50">
+ className="bg-[#1a1a1a] border border-[#333] text-[#cccccc] text-sm rounded px-3 py-2 focus:outline-none focus:border-[#ffb800] disabled:opacity-50">
@@ -204,7 +204,7 @@ export default function WPImportPage() {
+ className="flex items-center gap-2 bg-[#ffb800] hover:bg-[#d99700] disabled:bg-[#4a3500] disabled:cursor-not-allowed text-white text-sm font-bold px-5 py-2 rounded transition-colors">
{isImporting ? (
<>
@@ -223,16 +223,16 @@ export default function WPImportPage() {
{/* Import Progress / Result */}
{isImporting && (
-
+
-
+
- Import in progress
+ Import in progress
Fetching posts from avbeat.com and saving to database...
-
-
+
+
)}
@@ -261,7 +261,7 @@ export default function WPImportPage() {
{[
{ label: 'Fetched', value: importResult.totalFetched, color: 'text-[#cccccc]' },
{ label: 'Imported', value: importResult.totalImported, color: 'text-green-400' },
- { label: 'Pages', value: importResult.pagesProcessed, color: 'text-[#3b82f6]' },
+ { label: 'Pages', value: importResult.pagesProcessed, color: 'text-[#ffb800]' },
{ label: 'Errors', value: importResult.totalErrors, color: importResult.totalErrors ? 'text-red-400' : 'text-[#555]' },
].map((stat) => (
@@ -284,7 +284,7 @@ export default function WPImportPage() {
onClick={() => setActiveTab(tab)}
className={`px-5 py-2.5 text-sm font-bold uppercase tracking-wider border-b-2 transition-colors ${
activeTab === tab
- ? 'border-[#3b82f6] text-[#3b82f6]'
+ ? 'border-[#ffb800] text-[#ffb800]'
: 'border-transparent text-[#666] hover:text-[#999]'
}`}>
{tab === 'posts' ? `Imported Posts (${posts.length})` : `Import History (${logs.length})`}
@@ -306,14 +306,14 @@ export default function WPImportPage() {
placeholder="Search posts..."
value={searchQuery}
onChange={(e) => setSearchQuery(e.target.value)}
- className="w-full bg-[#111] border border-[#252525] text-[#cccccc] text-sm rounded pl-9 pr-4 py-2 focus:outline-none focus:border-[#3b82f6] placeholder-[#444]"
+ className="w-full bg-[#111] border border-[#252525] text-[#cccccc] text-sm rounded pl-9 pr-4 py-2 focus:outline-none focus:border-[#ffb800] placeholder-[#444]"
/>
{loadingData ? (
-
+
) : filteredPosts.length === 0 ? (
@@ -354,7 +354,7 @@ export default function WPImportPage() {
{post.title}
{post.category && (
-
+
{post.category}
)}
@@ -368,7 +368,7 @@ export default function WPImportPage() {
href={`https://www.avbeat.com/${post.wp_slug}`}
target="_blank"
rel="noopener noreferrer"
- className="text-[#555] hover:text-[#3b82f6] transition-colors p-1"
+ className="text-[#555] hover:text-[#ffb800] transition-colors p-1"
title="View on avbeat.com">
@@ -402,7 +402,7 @@ export default function WPImportPage() {
{loadingData ? (
-
+
) : logs.length === 0 ? (
diff --git a/src/app/admin/newsletter/analytics/page.tsx b/src/app/admin/newsletter/analytics/page.tsx
index 64d9afa..32ed8bd 100644
--- a/src/app/admin/newsletter/analytics/page.tsx
+++ b/src/app/admin/newsletter/analytics/page.tsx
@@ -67,7 +67,7 @@ function fmtDate(dateStr: string): string {
// ─── Sub-components ───────────────────────────────────────────────────────────
-function StatCard({ label, value, sub, accent = '#3b82f6', icon }: {
+function StatCard({ label, value, sub, accent = '#ffb800', icon }: {
label: string; value: string; sub: string; accent?: string; icon: React.ReactNode;
}) {
return (
@@ -243,7 +243,7 @@ export default function NewsletterAnalyticsPage() {
if (loading || loadingData) {
return (
-
+
);
}
@@ -308,7 +308,7 @@ export default function NewsletterAnalyticsPage() {
label="Avg Open Rate"
value={pct(avgOpenRate)}
sub={`across ${digestData.length} digests`}
- accent="#3b82f6"
+ accent="#ffb800"
icon={
@@ -362,7 +362,7 @@ export default function NewsletterAnalyticsPage() {
`${v}%`} />
} />
-
+
@@ -380,7 +380,7 @@ export default function NewsletterAnalyticsPage() {
} />
-
+
diff --git a/src/app/admin/newsletter/campaign-editor/page.tsx b/src/app/admin/newsletter/campaign-editor/page.tsx
index 77035bb..90824a6 100644
--- a/src/app/admin/newsletter/campaign-editor/page.tsx
+++ b/src/app/admin/newsletter/campaign-editor/page.tsx
@@ -252,7 +252,7 @@ export default function CampaignEditorPage() {
article_blocks: payload.article_blocks,
layout: 'featured',
style: 'dark',
- accent_color: '#3b82f6',
+ accent_color: '#ffb800',
is_preset: false,
}),
});
diff --git a/src/app/admin/newsletter/page.tsx b/src/app/admin/newsletter/page.tsx
index cf2aee1..542a548 100644
--- a/src/app/admin/newsletter/page.tsx
+++ b/src/app/admin/newsletter/page.tsx
@@ -356,7 +356,7 @@ export default function AdminNewsletterPage() {
if (loading) {
return (
-
+
);
}
@@ -397,7 +397,7 @@ export default function AdminNewsletterPage() {
+ className="flex items-center gap-1.5 px-3 py-1.5 text-xs font-body font-semibold text-white bg-[#ffb800] hover:bg-[#d99700] rounded-lg transition-colors">
@@ -430,12 +430,12 @@ export default function AdminNewsletterPage() {
setActiveTab('subscribers')}
- className={`px-4 py-2 rounded-md text-sm font-body font-semibold transition-colors ${activeTab === 'subscribers' ? 'bg-[#3b82f6] text-white' : 'text-[#888] hover:text-white'}`}>
+ className={`px-4 py-2 rounded-md text-sm font-body font-semibold transition-colors ${activeTab === 'subscribers' ? 'bg-[#ffb800] text-white' : 'text-[#888] hover:text-white'}`}>
Subscribers
setActiveTab('send-digest')}
- className={`px-4 py-2 rounded-md text-sm font-body font-semibold transition-colors ${activeTab === 'send-digest' ? 'bg-[#3b82f6] text-white' : 'text-[#888] hover:text-white'}`}>
+ className={`px-4 py-2 rounded-md text-sm font-body font-semibold transition-colors ${activeTab === 'send-digest' ? 'bg-[#ffb800] text-white' : 'text-[#888] hover:text-white'}`}>
Send Digest
@@ -457,7 +457,7 @@ export default function AdminNewsletterPage() {
setStatusFilter(s)}
- className={`px-3 py-1.5 rounded-md text-xs font-body font-semibold capitalize transition-colors ${statusFilter === s ? 'bg-[#3b82f6] text-white' : 'text-[#888] hover:text-white'}`}
+ className={`px-3 py-1.5 rounded-md text-xs font-body font-semibold capitalize transition-colors ${statusFilter === s ? 'bg-[#ffb800] text-white' : 'text-[#888] hover:text-white'}`}
>
{s}
@@ -478,9 +478,9 @@ export default function AdminNewsletterPage() {
{/* Bulk Actions Bar */}
{someSelected && (
-
+
-
+
{selectedIds.size} selected
{bulkLoading && (
-
+
)}
@@ -522,7 +522,7 @@ export default function AdminNewsletterPage() {
{loadingData ? (
-
+
) : subscribers.length === 0 ? (
@@ -540,7 +540,7 @@ export default function AdminNewsletterPage() {
type="checkbox"
checked={allSelected}
onChange={toggleSelectAll}
- className="w-4 h-4 rounded border-[#444] bg-[#1a1a1a] accent-[#3b82f6] cursor-pointer"
+ className="w-4 h-4 rounded border-[#444] bg-[#1a1a1a] accent-[#ffb800] cursor-pointer"
/>
Email
@@ -561,14 +561,14 @@ export default function AdminNewsletterPage() {
type="checkbox"
checked={selectedIds.has(sub.id)}
onChange={() => toggleSelect(sub.id)}
- className="w-4 h-4 rounded border-[#444] bg-[#1a1a1a] accent-[#3b82f6] cursor-pointer"
+ className="w-4 h-4 rounded border-[#444] bg-[#1a1a1a] accent-[#ffb800] cursor-pointer"
/>
Import in progress
+Import in progress
Fetching posts from avbeat.com and saving to database...