-
-
-
-
-
-
Pending
-
Submissions
-
-
-
- {stats.pendingSubmissions}
-
+ {/* Stats cards */}
+
+
+
+
+ Pending Submissions
+
+
+
+ {stats.pendingSubmissions}
-
-
-
-
-
- {stats.openReports}
-
+
+
+
+ Open Reports
+
+
+
+ {stats.openReports}
-
-
-
-
-
- {stats.flaggedContent}
-
+
+
+
+ Flagged Content
+
+
+
+ {stats.flaggedContent}
+
- {/* Content Moderation Section - flatter design */}
-
-
-
-
- Moderation Queue
-
-
-
-
-
- {isMobile ? 'Queue' : 'Moderation Queue'}
-
-
-
- Reports
-
-
-
-
-
-
-
-
-
-
-
-
+ {/* Content Moderation Section */}
+
+
+
+
+ Moderation Queue
+
+
+
+
+
+
+
+ {isMobile ? 'Queue' : 'Moderation Queue'}
+
+
+
+ Reports
+
+
+
+
+
+
+
+
+
+
+
+
+
- {/* User Management Section - flatter design */}
-
-
-
- User Management
-
-
-
-
+ {/* User Management Section */}
+
+
+
+
+ User Management
+
+
+
+
+
+
>
);
diff --git a/src/pages/AdminDashboard.tsx b/src/pages/AdminDashboard.tsx
deleted file mode 100644
index bd62a375..00000000
--- a/src/pages/AdminDashboard.tsx
+++ /dev/null
@@ -1,116 +0,0 @@
-import { useRef, useCallback } from 'react';
-import { RefreshCw, FileText, Flag, AlertCircle } from 'lucide-react';
-import { Card, CardContent } from '@/components/ui/card';
-import { AdminLayout } from '@/components/layout/AdminLayout';
-import { useModerationStats } from '@/hooks/useModerationStats';
-import { useAdminSettings } from '@/hooks/useAdminSettings';
-import { useAuth } from '@/hooks/useAuth';
-import { useUserRole } from '@/hooks/useUserRole';
-
-export default function AdminDashboard() {
- const { user, loading: authLoading } = useAuth();
- const { isModerator, loading: roleLoading } = useUserRole();
-
- // Get admin settings for polling configuration
- const {
- getAdminPanelRefreshMode,
- getAdminPanelPollInterval,
- } = useAdminSettings();
-
- const refreshMode = getAdminPanelRefreshMode();
- const pollInterval = getAdminPanelPollInterval();
-
- // Use stats hook with configurable polling
- const { stats, refresh: refreshStats, lastUpdated } = useModerationStats({
- enabled: !!user && !authLoading && !roleLoading && isModerator(),
- pollingEnabled: refreshMode === 'auto',
- pollingInterval: pollInterval,
- });
-
- const handleRefresh = useCallback(() => {
- refreshStats();
- }, [refreshStats]);
-
- return (
-
-
- {/* Refresh status indicator */}
-
-
- {refreshMode === 'auto' ? (
- Auto-refresh: every {pollInterval / 1000}s
- ) : (
- Manual refresh
- )}
- {lastUpdated && (
- • {lastUpdated.toLocaleTimeString()}
- )}
-
-
- {/* Stats Overview */}
-
-
Dashboard Overview
-
-
-
-
-
-
-
-
-
-
-
Pending
-
Submissions
-
-
-
- {stats.pendingSubmissions}
-
-
-
-
-
-
-
-
-
-
- {stats.openReports}
-
-
-
-
-
-
-
-
-
-
- {stats.flaggedContent}
-
-
-
-
-
-
-
-
- );
-}
diff --git a/src/pages/AdminModeration.tsx b/src/pages/AdminModeration.tsx
deleted file mode 100644
index 68783bff..00000000
--- a/src/pages/AdminModeration.tsx
+++ /dev/null
@@ -1,22 +0,0 @@
-import { useRef, useCallback } from 'react';
-import { AdminLayout } from '@/components/layout/AdminLayout';
-import { ModerationQueue, ModerationQueueRef } from '@/components/moderation/ModerationQueue';
-
-export default function AdminModeration() {
- const moderationQueueRef = useRef
(null);
-
- const handleRefresh = useCallback(() => {
- moderationQueueRef.current?.refresh();
- }, []);
-
- return (
-
-
-
-
Moderation Queue
-
-
-
-
- );
-}
diff --git a/src/pages/AdminReports.tsx b/src/pages/AdminReports.tsx
deleted file mode 100644
index 5c3c3ceb..00000000
--- a/src/pages/AdminReports.tsx
+++ /dev/null
@@ -1,22 +0,0 @@
-import { useRef, useCallback } from 'react';
-import { AdminLayout } from '@/components/layout/AdminLayout';
-import { ReportsQueue, ReportsQueueRef } from '@/components/moderation/ReportsQueue';
-
-export default function AdminReports() {
- const reportsQueueRef = useRef(null);
-
- const handleRefresh = useCallback(() => {
- reportsQueueRef.current?.refresh();
- }, []);
-
- return (
-
-
-
- );
-}
diff --git a/src/pages/AdminSettings.tsx b/src/pages/AdminSettings.tsx
index 0a9997f4..632bdada 100644
--- a/src/pages/AdminSettings.tsx
+++ b/src/pages/AdminSettings.tsx
@@ -7,7 +7,7 @@ import { Switch } from '@/components/ui/switch';
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';
import { Badge } from '@/components/ui/badge';
-import { AdminLayout } from '@/components/layout/AdminLayout';
+import { AdminHeader } from '@/components/layout/AdminHeader';
import { useAuth } from '@/hooks/useAuth';
import { useUserRole } from '@/hooks/useUserRole';
import { useAdminSettings } from '@/hooks/useAdminSettings';
@@ -28,18 +28,20 @@ export default function AdminSettings() {
if (roleLoading || isLoading) {
return (
-
+ <>
+
-
+ >
);
}
if (!user || !isSuperuser()) {
return (
-
-
+ <>
+
+
Access Denied
You don't have permission to access admin settings.
@@ -50,14 +52,15 @@ export default function AdminSettings() {
)}
-
+ >
);
}
if (!settings || settings.length === 0) {
return (
-
-
+ <>
+
+
No Settings Found
@@ -70,7 +73,7 @@ export default function AdminSettings() {
)}
-
+ >
);
}
@@ -428,10 +431,11 @@ export default function AdminSettings() {
};
return (
-
-
+ <>
+
+
-
Admin Settings
+
Admin Settings
Configure system-wide settings and preferences with easy-to-use controls
@@ -594,6 +598,6 @@ export default function AdminSettings() {
-
+ >
);
}
\ No newline at end of file
diff --git a/src/pages/AdminUsers.tsx b/src/pages/AdminUsers.tsx
deleted file mode 100644
index 30a1fd5a..00000000
--- a/src/pages/AdminUsers.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-import { AdminLayout } from '@/components/layout/AdminLayout';
-import { UserManagement } from '@/components/admin/UserManagement';
-
-export default function AdminUsers() {
- return (
-
-
-
-
User Management
-
-
-
-
- );
-}