Update license year, enhance user management with last booking date, and improve admin dashboard navigation
This commit is contained in:
@@ -5,6 +5,12 @@ import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
|
||||
import { Button } from '@/components/ui/button';
|
||||
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';
|
||||
import { Badge } from '@/components/ui/badge';
|
||||
import {
|
||||
DropdownMenu,
|
||||
DropdownMenuContent,
|
||||
DropdownMenuItem,
|
||||
DropdownMenuTrigger,
|
||||
} from '@/components/ui/dropdown-menu';
|
||||
import {
|
||||
Users,
|
||||
Calendar,
|
||||
@@ -17,6 +23,7 @@ import {
|
||||
Activity,
|
||||
LogOut,
|
||||
ArrowLeft,
|
||||
ChevronDown,
|
||||
} from 'lucide-react';
|
||||
import { useRouter } from 'next/navigation';
|
||||
import { AdminUserManagement } from './AdminUserManagement';
|
||||
@@ -47,6 +54,7 @@ interface RecentBooking {
|
||||
|
||||
export function AdminDashboard() {
|
||||
const router = useRouter();
|
||||
const [activeTab, setActiveTab] = useState('bookings');
|
||||
const [stats, setStats] = useState<AdminStats>({
|
||||
totalUsers: 0,
|
||||
activeCourts: 0,
|
||||
@@ -206,8 +214,9 @@ export function AdminDashboard() {
|
||||
</div>
|
||||
|
||||
{/* Admin Tabs */}
|
||||
<Tabs defaultValue='bookings' className='space-y-6'>
|
||||
<TabsList className='grid w-full grid-cols-6'>
|
||||
<Tabs value={activeTab} onValueChange={setActiveTab} className='space-y-6'>
|
||||
{/* Desktop Tabs */}
|
||||
<TabsList className='hidden md:grid w-full grid-cols-6'>
|
||||
<TabsTrigger value='bookings'>Bookings</TabsTrigger>
|
||||
<TabsTrigger value='users'>Users</TabsTrigger>
|
||||
<TabsTrigger value='courts'>Courts</TabsTrigger>
|
||||
@@ -215,6 +224,48 @@ export function AdminDashboard() {
|
||||
<TabsTrigger value='announcements'>Announcements</TabsTrigger>
|
||||
<TabsTrigger value='logs'>Logs</TabsTrigger>
|
||||
</TabsList>
|
||||
{/* Mobile Dropdown */}
|
||||
<div className='md:hidden'>
|
||||
<DropdownMenu>
|
||||
<DropdownMenuTrigger asChild>
|
||||
<Button variant='outline' className='w-full justify-between'>
|
||||
{activeTab === 'bookings' && 'Bookings'}
|
||||
{activeTab === 'users' && 'Users'}
|
||||
{activeTab === 'courts' && 'Courts'}
|
||||
{activeTab === 'settings' && 'Settings'}
|
||||
{activeTab === 'announcements' && 'Announcements'}
|
||||
{activeTab === 'logs' && 'Logs'}
|
||||
<ChevronDown className='h-4 w-4' />
|
||||
</Button>
|
||||
</DropdownMenuTrigger>
|
||||
<DropdownMenuContent className='w-full'>
|
||||
<DropdownMenuItem onClick={() => setActiveTab('bookings')}>
|
||||
<Calendar className='h-4 w-4 mr-2' />
|
||||
Bookings
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem onClick={() => setActiveTab('users')}>
|
||||
<Users className='h-4 w-4 mr-2' />
|
||||
Users
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem onClick={() => setActiveTab('courts')}>
|
||||
<MapPin className='h-4 w-4 mr-2' />
|
||||
Courts
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem onClick={() => setActiveTab('settings')}>
|
||||
<Settings className='h-4 w-4 mr-2' />
|
||||
Settings
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem onClick={() => setActiveTab('announcements')}>
|
||||
<Bell className='h-4 w-4 mr-2' />
|
||||
Announcements
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem onClick={() => setActiveTab('logs')}>
|
||||
<Activity className='h-4 w-4 mr-2' />
|
||||
Logs
|
||||
</DropdownMenuItem>
|
||||
</DropdownMenuContent>
|
||||
</DropdownMenu>
|
||||
</div>
|
||||
<TabsContent value='bookings'>
|
||||
<AdminRecentBookings />
|
||||
</TabsContent>
|
||||
|
||||
Reference in New Issue
Block a user