'use client';
import { useEffect } from 'react';
import { useRouter } from 'next/navigation';
import { motion } from 'framer-motion';
import { Target, Users, CircleCheck as CheckCircle, Clock, TrendingUp, Star } from 'lucide-react';
import useStore from '@/lib/store';
import HRSidebar from '@/components/navigation/hr-sidebar';
import CosmicCard from '@/components/ui/cosmic-card';
import StatCard from '@/components/ui/stat-card';
export default function HRDashboardPage() {
const router = useRouter();
const { user, missions, isHR } = useStore();
useEffect(() => {
if (!user) {
router.push('/login');
} else if (!isHR) {
router.push('/dashboard');
}
}, [user, isHR, router]);
if (!user || !isHR) return null;
const totalMissions = missions.length;
const completedMissions = missions.filter((m) => m.status === 'completed').length;
const availableMissions = missions.filter((m) => m.status === 'available').length;
const completionRate = totalMissions > 0 ? Math.round((completedMissions / totalMissions) * 100) : 0;
const missionsByCategory = missions.reduce((acc, mission) => {
acc[mission.category] = (acc[mission.category] || 0) + 1;
return acc;
}, {});
return (
HR Дашборд
Управление системой геймификации
Миссии по категориям
{Object.entries(missionsByCategory).map(([category, count], index) => (
{category}
{count}
))}
Быстрые действия
router.push('/hr/missions/create')}
className="w-full p-4 bg-gradient-to-r from-blue-500 to-purple-600 rounded-lg font-semibold text-white hover:from-blue-600 hover:to-purple-700 transition-all text-left"
whileHover={{ scale: 1.02 }}
whileTap={{ scale: 0.98 }}
>
Создать новую миссию
router.push('/hr/missions')}
className="w-full p-4 bg-slate-800 rounded-lg font-semibold text-white hover:bg-slate-700 transition-all text-left border border-slate-700"
whileHover={{ scale: 1.02 }}
whileTap={{ scale: 0.98 }}
>
Управление миссиями
router.push('/hr/users')}
className="w-full p-4 bg-slate-800 rounded-lg font-semibold text-white hover:bg-slate-700 transition-all text-left border border-slate-700"
whileHover={{ scale: 1.02 }}
whileTap={{ scale: 0.98 }}
>
Просмотр пользователей
Последние завершенные миссии
{missions
.filter((m) => m.status === 'completed')
.slice(0, 5)
.map((mission, index) => (
{mission.title}
{mission.category}
+{mission.experienceReward}
))}
{missions.filter((m) => m.status === 'completed').length === 0 && (
Пока нет завершенных миссий
)}
);
}