Remove admin alerts and settings pages

Deleted the admin alerts and settings pages and removed their links and icons from the admin sidebar configuration. This streamlines the admin dashboard by eliminating unused or deprecated sections.
This commit is contained in:
g
2025-11-28 19:49:10 +00:00
parent 5562a88d4a
commit e8670ba763
3 changed files with 1 additions and 661 deletions

View File

@@ -1,319 +0,0 @@
import React from "react";
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card";
import { Badge } from "@/components/ui/badge";
import { Button } from "@/components/ui/button";
import { Alert, AlertDescription } from "@/components/ui/alert";
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table";
import { AlertTriangle, CheckCircle, XCircle, Clock, Bell, Shield } from "lucide-react";
import Link from "next/link";
export default function AdminAlertsPage() {
// Mock data for system alerts
const alerts = [
{
id: "1",
type: "security",
severity: "high",
title: "Suspicious Login Attempts",
description: "Multiple failed login attempts detected from IP 192.168.1.100",
timestamp: "2024-01-20 14:30:00",
status: "active",
affectedUsers: 3
},
{
id: "2",
type: "system",
severity: "medium",
title: "High Memory Usage",
description: "Server memory usage has exceeded 85% for the past hour",
timestamp: "2024-01-20 13:45:00",
status: "resolved",
affectedUsers: 0
},
{
id: "3",
type: "payment",
severity: "high",
title: "Payment Processing Error",
description: "Bitcoin payment gateway experiencing delays",
timestamp: "2024-01-20 12:15:00",
status: "active",
affectedUsers: 12
},
{
id: "4",
type: "user",
severity: "low",
title: "New Vendor Registration",
description: "New vendor 'tech_supplies' has registered and requires approval",
timestamp: "2024-01-20 11:20:00",
status: "pending",
affectedUsers: 1
},
{
id: "5",
type: "security",
severity: "critical",
title: "Potential Security Breach",
description: "Unusual API access patterns detected from multiple IPs",
timestamp: "2024-01-20 10:30:00",
status: "investigating",
affectedUsers: 0
}
];
const getSeverityColor = (severity: string) => {
switch (severity) {
case "critical": return "destructive";
case "high": return "destructive";
case "medium": return "secondary";
case "low": return "outline";
default: return "outline";
}
};
const getStatusColor = (status: string) => {
switch (status) {
case "active": return "destructive";
case "resolved": return "default";
case "pending": return "secondary";
case "investigating": return "outline";
default: return "outline";
}
};
const getTypeIcon = (type: string) => {
switch (type) {
case "security": return <Shield className="h-4 w-4" />;
case "system": return <AlertTriangle className="h-4 w-4" />;
case "payment": return <Bell className="h-4 w-4" />;
case "user": return <CheckCircle className="h-4 w-4" />;
default: return <AlertTriangle className="h-4 w-4" />;
}
};
return (
<div className="space-y-6">
<div className="flex items-center justify-between">
<div>
<h1 className="text-2xl font-semibold tracking-tight">System Alerts</h1>
<p className="text-sm text-muted-foreground mt-1">Monitor system alerts and security notifications</p>
</div>
<Button asChild variant="outline" size="sm">
<Link href="/dashboard">Back to Dashboard</Link>
</Button>
</div>
{/* Alert Summary */}
<div className="grid gap-4 md:grid-cols-4">
<Card>
<CardHeader className="flex flex-row items-center justify-between space-y-0 pb-2">
<CardTitle className="text-sm font-medium">Active Alerts</CardTitle>
<AlertTriangle className="h-4 w-4 text-muted-foreground" />
</CardHeader>
<CardContent>
<div className="text-2xl font-bold">8</div>
<p className="text-xs text-muted-foreground">Require attention</p>
</CardContent>
</Card>
<Card>
<CardHeader className="flex flex-row items-center justify-between space-y-0 pb-2">
<CardTitle className="text-sm font-medium">Critical</CardTitle>
<XCircle className="h-4 w-4 text-muted-foreground" />
</CardHeader>
<CardContent>
<div className="text-2xl font-bold">2</div>
<p className="text-xs text-muted-foreground">Immediate action needed</p>
</CardContent>
</Card>
<Card>
<CardHeader className="flex flex-row items-center justify-between space-y-0 pb-2">
<CardTitle className="text-sm font-medium">Resolved Today</CardTitle>
<CheckCircle className="h-4 w-4 text-muted-foreground" />
</CardHeader>
<CardContent>
<div className="text-2xl font-bold">15</div>
<p className="text-xs text-muted-foreground">Successfully resolved</p>
</CardContent>
</Card>
<Card>
<CardHeader className="flex flex-row items-center justify-between space-y-0 pb-2">
<CardTitle className="text-sm font-medium">Avg Response</CardTitle>
<Clock className="h-4 w-4 text-muted-foreground" />
</CardHeader>
<CardContent>
<div className="text-2xl font-bold">12m</div>
<p className="text-xs text-muted-foreground">Average resolution time</p>
</CardContent>
</Card>
</div>
{/* Critical Alerts */}
<Alert variant="destructive">
<AlertTriangle className="h-4 w-4" />
<AlertDescription>
<strong>Critical Alert:</strong> Potential security breach detected. Multiple unusual API access patterns from different IP addresses. Immediate investigation required.
</AlertDescription>
</Alert>
{/* Alerts Table */}
<Card>
<CardHeader>
<div className="flex items-center justify-between">
<div>
<CardTitle>System Alerts</CardTitle>
<CardDescription>Recent system alerts and notifications</CardDescription>
</div>
<div className="flex items-center space-x-2">
<Button variant="outline" size="sm">
Mark All Read
</Button>
<Button variant="outline" size="sm">
Clear Resolved
</Button>
</div>
</div>
</CardHeader>
<CardContent>
<Table>
<TableHeader>
<TableRow>
<TableHead>Type</TableHead>
<TableHead>Alert</TableHead>
<TableHead>Severity</TableHead>
<TableHead>Status</TableHead>
<TableHead>Affected Users</TableHead>
<TableHead>Timestamp</TableHead>
<TableHead className="text-right">Actions</TableHead>
</TableRow>
</TableHeader>
<TableBody>
{alerts.map((alert) => (
<TableRow key={alert.id}>
<TableCell>
<div className="flex items-center space-x-2">
{getTypeIcon(alert.type)}
<span className="capitalize">{alert.type}</span>
</div>
</TableCell>
<TableCell>
<div>
<div className="font-medium">{alert.title}</div>
<div className="text-sm text-muted-foreground max-w-[300px] truncate">
{alert.description}
</div>
</div>
</TableCell>
<TableCell>
<Badge variant={getSeverityColor(alert.severity)}>
{alert.severity}
</Badge>
</TableCell>
<TableCell>
<Badge variant={getStatusColor(alert.status)}>
{alert.status}
</Badge>
</TableCell>
<TableCell>{alert.affectedUsers}</TableCell>
<TableCell className="text-sm text-muted-foreground">
{alert.timestamp}
</TableCell>
<TableCell className="text-right">
<div className="flex items-center justify-end space-x-2">
<Button variant="outline" size="sm">
View Details
</Button>
{alert.status === "active" && (
<Button variant="outline" size="sm">
Resolve
</Button>
)}
</div>
</TableCell>
</TableRow>
))}
</TableBody>
</Table>
</CardContent>
</Card>
{/* Alert Categories */}
<div className="grid gap-6 md:grid-cols-3">
<Card>
<CardHeader>
<CardTitle className="flex items-center">
<Shield className="h-5 w-5 mr-2" />
Security Alerts
</CardTitle>
</CardHeader>
<CardContent>
<div className="space-y-2">
<div className="flex justify-between">
<span className="text-sm">Failed Logins</span>
<Badge variant="destructive">3</Badge>
</div>
<div className="flex justify-between">
<span className="text-sm">Suspicious Activity</span>
<Badge variant="destructive">1</Badge>
</div>
<div className="flex justify-between">
<span className="text-sm">API Abuse</span>
<Badge variant="secondary">0</Badge>
</div>
</div>
</CardContent>
</Card>
<Card>
<CardHeader>
<CardTitle className="flex items-center">
<AlertTriangle className="h-5 w-5 mr-2" />
System Alerts
</CardTitle>
</CardHeader>
<CardContent>
<div className="space-y-2">
<div className="flex justify-between">
<span className="text-sm">High CPU Usage</span>
<Badge variant="secondary">1</Badge>
</div>
<div className="flex justify-between">
<span className="text-sm">Memory Issues</span>
<Badge variant="default">0</Badge>
</div>
<div className="flex justify-between">
<span className="text-sm">Database Slow</span>
<Badge variant="secondary">0</Badge>
</div>
</div>
</CardContent>
</Card>
<Card>
<CardHeader>
<CardTitle className="flex items-center">
<Bell className="h-5 w-5 mr-2" />
Payment Alerts
</CardTitle>
</CardHeader>
<CardContent>
<div className="space-y-2">
<div className="flex justify-between">
<span className="text-sm">Gateway Issues</span>
<Badge variant="destructive">1</Badge>
</div>
<div className="flex justify-between">
<span className="text-sm">Failed Transactions</span>
<Badge variant="secondary">2</Badge>
</div>
<div className="flex justify-between">
<span className="text-sm">High Volume</span>
<Badge variant="outline">0</Badge>
</div>
</div>
</CardContent>
</Card>
</div>
</div>
);
}

View File

@@ -1,339 +0,0 @@
import React from "react";
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card";
import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input";
import { Label } from "@/components/ui/label";
import { Switch } from "@/components/ui/switch";
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select";
import { Textarea } from "@/components/ui/textarea";
import { Separator } from "@/components/ui/separator";
import { Settings, Shield, Bell, Database, Globe, Key, Save } from "lucide-react";
import Link from "next/link";
export default function AdminSettingsPage() {
return (
<div className="space-y-6">
<div className="flex items-center justify-between">
<div>
<h1 className="text-2xl font-semibold tracking-tight">Admin Settings</h1>
<p className="text-sm text-muted-foreground mt-1">Configure system settings and preferences</p>
</div>
<Button asChild variant="outline" size="sm">
<Link href="/dashboard">Back to Dashboard</Link>
</Button>
</div>
<div className="grid gap-6 lg:grid-cols-2">
{/* General Settings */}
<Card>
<CardHeader>
<CardTitle className="flex items-center">
<Settings className="h-5 w-5 mr-2" />
General Settings
</CardTitle>
<CardDescription>
Basic platform configuration and preferences
</CardDescription>
</CardHeader>
<CardContent className="space-y-6">
<div className="space-y-2">
<Label htmlFor="siteName">Site Name</Label>
<Input id="siteName" defaultValue="Ember Market" />
</div>
<div className="space-y-2">
<Label htmlFor="siteDescription">Site Description</Label>
<Textarea
id="siteDescription"
defaultValue="A secure cryptocurrency marketplace for vendors and customers"
rows={3}
/>
</div>
<div className="space-y-2">
<Label htmlFor="defaultCurrency">Default Currency</Label>
<Select defaultValue="btc">
<SelectTrigger>
<SelectValue />
</SelectTrigger>
<SelectContent>
<SelectItem value="btc">Bitcoin (BTC)</SelectItem>
<SelectItem value="eth">Ethereum (ETH)</SelectItem>
<SelectItem value="ltc">Litecoin (LTC)</SelectItem>
<SelectItem value="usdt">Tether (USDT)</SelectItem>
</SelectContent>
</Select>
</div>
<div className="flex items-center justify-between">
<div className="space-y-0.5">
<Label>Maintenance Mode</Label>
<p className="text-sm text-muted-foreground">
Temporarily disable public access
</p>
</div>
<Switch />
</div>
</CardContent>
</Card>
{/* Security Settings */}
<Card>
<CardHeader>
<CardTitle className="flex items-center">
<Shield className="h-5 w-5 mr-2" />
Security Settings
</CardTitle>
<CardDescription>
Configure security policies and authentication
</CardDescription>
</CardHeader>
<CardContent className="space-y-6">
<div className="flex items-center justify-between">
<div className="space-y-0.5">
<Label>Two-Factor Authentication</Label>
<p className="text-sm text-muted-foreground">
Require 2FA for all admin accounts
</p>
</div>
<Switch defaultChecked />
</div>
<div className="flex items-center justify-between">
<div className="space-y-0.5">
<Label>Session Timeout</Label>
<p className="text-sm text-muted-foreground">
Auto-logout after inactivity
</p>
</div>
<Switch defaultChecked />
</div>
<div className="space-y-2">
<Label htmlFor="sessionDuration">Session Duration (minutes)</Label>
<Input id="sessionDuration" type="number" defaultValue="60" />
</div>
<div className="flex items-center justify-between">
<div className="space-y-0.5">
<Label>IP Whitelist</Label>
<p className="text-sm text-muted-foreground">
Restrict admin access to specific IPs
</p>
</div>
<Switch />
</div>
<div className="space-y-2">
<Label htmlFor="allowedIPs">Allowed IP Addresses</Label>
<Textarea
id="allowedIPs"
placeholder="192.168.1.100&#10;10.0.0.50"
rows={3}
/>
</div>
</CardContent>
</Card>
{/* Notification Settings */}
<Card>
<CardHeader>
<CardTitle className="flex items-center">
<Bell className="h-5 w-5 mr-2" />
Notification Settings
</CardTitle>
<CardDescription>
Configure alert and notification preferences
</CardDescription>
</CardHeader>
<CardContent className="space-y-6">
<div className="flex items-center justify-between">
<div className="space-y-0.5">
<Label>Email Notifications</Label>
<p className="text-sm text-muted-foreground">
Send alerts via email
</p>
</div>
<Switch defaultChecked />
</div>
<div className="space-y-2">
<Label htmlFor="adminEmail">Admin Email</Label>
<Input id="adminEmail" type="email" defaultValue="admin@ember-market.com" />
</div>
<div className="flex items-center justify-between">
<div className="space-y-0.5">
<Label>Security Alerts</Label>
<p className="text-sm text-muted-foreground">
Notify on security events
</p>
</div>
<Switch defaultChecked />
</div>
<div className="flex items-center justify-between">
<div className="space-y-0.5">
<Label>System Alerts</Label>
<p className="text-sm text-muted-foreground">
Notify on system issues
</p>
</div>
<Switch defaultChecked />
</div>
<div className="flex items-center justify-between">
<div className="space-y-0.5">
<Label>Order Alerts</Label>
<p className="text-sm text-muted-foreground">
Notify on high-value orders
</p>
</div>
<Switch />
</div>
</CardContent>
</Card>
{/* Database Settings */}
<Card>
<CardHeader>
<CardTitle className="flex items-center">
<Database className="h-5 w-5 mr-2" />
Database Settings
</CardTitle>
<CardDescription>
Database configuration and maintenance
</CardDescription>
</CardHeader>
<CardContent className="space-y-6">
<div className="space-y-2">
<Label htmlFor="backupFrequency">Backup Frequency</Label>
<Select defaultValue="daily">
<SelectTrigger>
<SelectValue />
</SelectTrigger>
<SelectContent>
<SelectItem value="hourly">Hourly</SelectItem>
<SelectItem value="daily">Daily</SelectItem>
<SelectItem value="weekly">Weekly</SelectItem>
<SelectItem value="monthly">Monthly</SelectItem>
</SelectContent>
</Select>
</div>
<div className="flex items-center justify-between">
<div className="space-y-0.5">
<Label>Auto Backup</Label>
<p className="text-sm text-muted-foreground">
Automatically backup database
</p>
</div>
<Switch defaultChecked />
</div>
<div className="space-y-2">
<Label htmlFor="retentionPeriod">Backup Retention (days)</Label>
<Input id="retentionPeriod" type="number" defaultValue="30" />
</div>
<Separator />
<div className="space-y-2">
<Label>Database Actions</Label>
<div className="flex space-x-2">
<Button variant="outline" size="sm">
Create Backup
</Button>
<Button variant="outline" size="sm">
Optimize Database
</Button>
</div>
</div>
</CardContent>
</Card>
{/* API Settings */}
<Card>
<CardHeader>
<CardTitle className="flex items-center">
<Key className="h-5 w-5 mr-2" />
API Settings
</CardTitle>
<CardDescription>
API configuration and rate limiting
</CardDescription>
</CardHeader>
<CardContent className="space-y-6">
<div className="space-y-2">
<Label htmlFor="apiVersion">API Version</Label>
<Input id="apiVersion" defaultValue="v1" />
</div>
<div className="space-y-2">
<Label htmlFor="rateLimit">Rate Limit (requests/minute)</Label>
<Input id="rateLimit" type="number" defaultValue="1000" />
</div>
<div className="flex items-center justify-between">
<div className="space-y-0.5">
<Label>API Logging</Label>
<p className="text-sm text-muted-foreground">
Log all API requests
</p>
</div>
<Switch defaultChecked />
</div>
<div className="space-y-2">
<Label htmlFor="apiKey">Master API Key</Label>
<Input id="apiKey" type="password" defaultValue="••••••••••••••••" />
</div>
</CardContent>
</Card>
{/* System Information */}
<Card>
<CardHeader>
<CardTitle className="flex items-center">
<Globe className="h-5 w-5 mr-2" />
System Information
</CardTitle>
<CardDescription>
Platform version and system details
</CardDescription>
</CardHeader>
<CardContent className="space-y-4">
<div className="flex justify-between">
<span className="text-sm font-medium">Platform Version</span>
<span className="text-sm text-muted-foreground">v2.1.0</span>
</div>
<div className="flex justify-between">
<span className="text-sm font-medium">Database Version</span>
<span className="text-sm text-muted-foreground">MongoDB 6.0</span>
</div>
<div className="flex justify-between">
<span className="text-sm font-medium">Node.js Version</span>
<span className="text-sm text-muted-foreground">v18.17.0</span>
</div>
<div className="flex justify-between">
<span className="text-sm font-medium">Last Updated</span>
<span className="text-sm text-muted-foreground">2024-01-15</span>
</div>
<div className="flex justify-between">
<span className="text-sm font-medium">Uptime</span>
<span className="text-sm text-muted-foreground">15 days, 3 hours</span>
</div>
</CardContent>
</Card>
</div>
{/* Save Button */}
<div className="flex justify-end">
<Button className="w-full sm:w-auto">
<Save className="h-4 w-4 mr-2" />
Save All Settings
</Button>
</div>
</div>
);
}

View File

@@ -1,4 +1,4 @@
import { Home, Shield, Users, Ban, UserPlus, Package, Settings, BarChart3, AlertTriangle } from "lucide-react"
import { Home, Shield, Users, Ban, UserPlus, Package, BarChart3 } from "lucide-react"
export const adminSidebarConfig = [
{
@@ -20,8 +20,6 @@ export const adminSidebarConfig = [
title: "System",
items: [
{ name: "Recent Orders", href: "/dashboard/admin/orders", icon: Package },
{ name: "System Alerts", href: "/dashboard/admin/alerts", icon: AlertTriangle },
{ name: "Settings", href: "/dashboard/admin/settings", icon: Settings },
],
},
]