diff --git a/client/pages/Staff.tsx b/client/pages/Staff.tsx new file mode 100644 index 00000000..86a872a1 --- /dev/null +++ b/client/pages/Staff.tsx @@ -0,0 +1,233 @@ +import Layout from "@/components/Layout"; +import { Button } from "@/components/ui/button"; +import { Badge } from "@/components/ui/badge"; +import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; +import { + Users, + Briefcase, + BookOpen, + MessageSquare, + Trophy, + Target, + ArrowRight, + Shield, +} from "lucide-react"; +import { useNavigate } from "react-router-dom"; +import { useEffect, useState, useRef } from "react"; +import LoadingScreen from "@/components/LoadingScreen"; +import { aethexToast } from "@/lib/aethex-toast"; + +export default function Staff() { + const navigate = useNavigate(); + const [isLoading, setIsLoading] = useState(true); + const toastShownRef = useRef(false); + + useEffect(() => { + const timer = setTimeout(() => { + setIsLoading(false); + if (!toastShownRef.current) { + aethexToast.system("Staff operations portal initialized"); + toastShownRef.current = true; + } + }, 900); + + return () => clearTimeout(timer); + }, []); + + if (isLoading) { + return ( + + ); + } + + const staffResources = [ + { + icon: Briefcase, + title: "Announcements", + description: "Company updates, news, and important information", + link: "/staff/announcements", + color: "from-rose-500 to-pink-500", + }, + { + icon: BookOpen, + title: "Knowledge Base", + description: "Internal documentation, guides, and best practices", + link: "/staff/knowledge-base", + color: "from-blue-500 to-cyan-500", + }, + { + icon: MessageSquare, + title: "Team Handbook", + description: "Policies, procedures, and team guidelines", + link: "/staff/team-handbook", + color: "from-green-500 to-emerald-500", + }, + { + icon: Trophy, + title: "Performance Reviews", + description: "Career development and performance tracking", + link: "/staff/performance-reviews", + color: "from-amber-500 to-orange-500", + }, + { + icon: Target, + title: "Project Tracking", + description: "Team projects and task management", + link: "/staff/project-tracking", + color: "from-violet-500 to-indigo-500", + }, + { + icon: Users, + title: "Directory", + description: "Staff directory and team contacts", + link: "/staff/knowledge-base", + color: "from-teal-500 to-cyan-500", + }, + ]; + + const statsCards = [ + { label: "Active Team Members", value: "142", color: "text-purple-400" }, + { label: "Departments", value: "8", color: "text-purple-400" }, + { label: "Ongoing Projects", value: "47", color: "text-purple-400" }, + { label: "Completed Q1", value: "23", color: "text-purple-400" }, + ]; + + return ( + +
+ {/* Animated gradient background */} +
+
+
+
+
+ +
+ {/* Hero Section */} +
+
+ + + Secure Staff Portal + +

+ Staff Operations Hub +

+

+ Centralized portal for internal communications, resources, and team collaboration +

+
+ +
+
+ + {/* Stats Grid */} +
+ {statsCards.map((stat) => ( + + +
+ {stat.value} +
+

{stat.label}

+
+
+ ))} +
+ + {/* Staff Resources Grid */} +
+

+ Quick Access Resources +

+
+ {staffResources.map((resource) => { + const Icon = resource.icon; + return ( + navigate(resource.link)} + > + +
+ +
+ + {resource.title} + +
+ +

+ {resource.description} +

+
+
+ ); + })} +
+
+ + {/* Features Section */} +
+

+ Staff Portal Features +

+
+
+

Communication

+
    +
  • + + Company-wide announcements and updates +
  • +
  • + + Department notifications +
  • +
  • + + Team collaboration tools +
  • +
+
+
+

Resources

+
    +
  • + + Internal documentation and guides +
  • +
  • + + Policies and procedures +
  • +
  • + + Learning and development materials +
  • +
+
+
+
+
+
+
+ + ); +}