import React from 'react';
import Link from 'next/link';
import type { Metadata } from 'next';
export const metadata: Metadata = {
title: 'Admin Dashboard | Olathe Club of the Deaf',
description: 'Admin dashboard for the Olathe Club of the Deaf website',
};
// Stats Card Component
const StatCard = ({ title, value, icon, href }: { title: string; value: string; icon: React.ReactNode; href: string }) => (
);
// Simple icons
const MembersIcon = () => (
);
const EventsIcon = () => (
);
const ContactIcon = () => (
);
const VideosIcon = () => (
);
export default function AdminDashboardPage() {
// In a real app, these would be fetched from the API
const stats = {
members: "47",
activeMembers: "41",
events: "12",
videos: "8",
documents: "15",
unreadContacts: "3"
};
// Upcoming events - in a real app, these would be fetched from the API
const upcomingEvents = [
{
id: '1',
title: 'Monthly Social',
date: 'Apr 15, 2025',
location: 'Olathe Community Center',
status: 'Published'
},
{
id: '2',
title: 'ASL Workshop',
date: 'Apr 22, 2025',
location: 'OCD Meeting Room',
status: 'Draft'
},
{
id: '3',
title: 'Board Meeting',
date: 'May 5, 2025',
location: 'Zoom Meeting',
status: 'Published'
}
];
// Membership expirations - in a real app, these would be fetched from the API
const expiringMemberships = [
{
id: '101',
name: 'John Smith',
expiryDate: 'Apr 30, 2025',
type: 'Regular',
status: 'Expiring Soon'
},
{
id: '102',
name: 'Sarah Johnson',
expiryDate: 'May 15, 2025',
type: 'Family',
status: 'Expiring Soon'
},
{
id: '103',
name: 'Robert Lee',
expiryDate: 'Mar 28, 2025',
type: 'Regular',
status: 'Expired'
}
];
return (
Overview
}
href="/admin/members"
/>
}
href="/admin/members/active"
/>
}
href="/admin/events"
/>
}
href="/admin/contact"
/>
{/* Upcoming Events */}
Upcoming Events
View All
{upcomingEvents.map((event) => (
{event.title}
{event.date} • {event.location}
{event.status}
))}
{/* Membership Expirations */}
Membership Expirations
View All
{expiringMemberships.map((member) => (
{member.name}
{member.expiryDate} • {member.type}
{member.status}
))}
{/* Quick Actions */}
Quick Actions
New Event
Add Member
Upload Video
Edit Pages
);
}