Linux websever 5.15.0-153-generic #163-Ubuntu SMP Thu Aug 7 16:37:18 UTC 2025 x86_64
Apache/2.4.52 (Ubuntu)
: 192.168.3.70 | : 192.168.1.99
Cant Read [ /etc/named.conf ]
8.1.2-1ubuntu2.23
urlab
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
var /
www /
html /
cqt /
src /
pages /
[ HOME SHELL ]
Name
Size
Permission
Action
AboutPage.tsx
464
B
-rw-r--r--
AdminDashboard.tsx
6.63
KB
-rw-r--r--
AdminLogin.tsx
4.9
KB
-rw-r--r--
ContactPage.tsx
403
B
-rw-r--r--
CourseDetailPage.tsx
17.14
KB
-rw-r--r--
CoursesManager.tsx
15.6
KB
-rw-r--r--
EducationPage.tsx
23.77
KB
-rw-r--r--
Index.tsx
1.25
KB
-rw-r--r--
LabsManager.tsx
13.28
KB
-rw-r--r--
LabsPage.tsx
12.33
KB
-rw-r--r--
NewsDetailPage.tsx
10.51
KB
-rw-r--r--
NewsManager.tsx
11.66
KB
-rw-r--r--
NewsPage.tsx
11.77
KB
-rw-r--r--
NotFound.tsx
727
B
-rw-r--r--
PersonPage.tsx
1.67
KB
-rw-r--r--
PublicationsManager.tsx
12.17
KB
-rw-r--r--
PublicationsPage.tsx
15.17
KB
-rw-r--r--
ResearchDetailPage.tsx
16.93
KB
-rw-r--r--
ResearchManager.tsx
15.75
KB
-rw-r--r--
ResearchPage.tsx
14.3
KB
-rw-r--r--
TeamManager.tsx
12.4
KB
-rw-r--r--
TeamPage.tsx
781
B
-rw-r--r--
WorkshopDetailPage.tsx
19.23
KB
-rw-r--r--
WorkshopsManager.tsx
16.05
KB
-rw-r--r--
WorkshopsPage.tsx
7.63
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : ResearchDetailPage.tsx
import { useParams, Link } from "react-router-dom"; import { useResearchItem } from "@/lib/dataLoader"; import Navigation from "@/components/Navigation"; import Footer from "@/components/Footer"; import { Button } from "@/components/ui/button"; import { Badge } from "@/components/ui/badge"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { ArrowLeft, Calendar, Users, Building2, DollarSign, Award, Target, TrendingUp, ExternalLink, BookOpen } from "lucide-react"; import { motion } from "framer-motion"; const ResearchDetailPage = () => { const { id } = useParams(); const { data: project, isLoading, isError } = useResearchItem(id); if (isLoading) { return ( <div className="min-h-screen"> <Navigation /> <main id="main-content" className="container mx-auto px-4 py-24"> <div className="text-center py-20">Loading research project...</div> </main> <Footer /> </div> ); } if (isError || !project) { return ( <div className="min-h-screen"> <Navigation /> <main id="main-content" className="container mx-auto px-4 py-24"> <div className="text-center py-20"> <h2 className="text-2xl font-bold mb-4">Project Not Found</h2> <Link to="/research"> <Button variant="outline"> <ArrowLeft className="mr-2 h-4 w-4" /> Back to Research </Button> </Link> </div> </main> <Footer /> </div> ); } return ( <div className="min-h-screen bg-background"> <Navigation /> <main id="main-content" className="container mx-auto px-4 py-24"> <div className="max-w-5xl mx-auto"> {/* Back Button */} <motion.div initial={{ opacity: 0, x: -20 }} animate={{ opacity: 1, x: 0 }} transition={{ duration: 0.3 }} className="mb-6" > <Link to="/research"> <Button variant="ghost" size="sm"> <ArrowLeft className="mr-2 h-4 w-4" /> Back to Research </Button> </Link> </motion.div> {/* Header */} <motion.div initial={{ opacity: 0, y: 20 }} animate={{ opacity: 1, y: 0 }} transition={{ duration: 0.5 }} className="mb-8" > <div className="flex flex-wrap gap-2 mb-4"> <Badge variant="secondary" className="bg-secondary/10 text-secondary border-secondary/20"> {project.category} </Badge> <Badge variant="outline" className={`${ project.status === 'Active' ? 'border-green-500 text-green-500' : project.status === 'Planning' ? 'border-yellow-500 text-yellow-500' : 'border-gray-500 text-gray-500' }`}> {project.status} </Badge> {project.featured && ( <Badge variant="outline" className="border-primary text-primary"> Featured </Badge> )} </div> <h1 className="text-4xl md:text-5xl font-bold text-foreground mb-4"> {project.title} </h1> <p className="text-xl text-muted-foreground leading-relaxed"> {project.description} </p> </motion.div> {/* Hero Image */} {project.image && ( <motion.div initial={{ opacity: 0, scale: 0.95 }} animate={{ opacity: 1, scale: 1 }} transition={{ duration: 0.5, delay: 0.2 }} className="mb-12 rounded-xl overflow-hidden shadow-2xl" > <img src={project.image} alt={project.title} className="w-full h-96 object-cover" /> </motion.div> )} {/* Key Information Cards */} <motion.div initial={{ opacity: 0, y: 20 }} animate={{ opacity: 1, y: 0 }} transition={{ duration: 0.5, delay: 0.3 }} className="grid md:grid-cols-2 lg:grid-cols-4 gap-4 mb-12" > <Card className="border-border"> <CardContent className="pt-6"> <div className="flex items-center gap-3"> <div className="p-2 bg-primary/10 rounded-lg"> <Calendar className="h-5 w-5 text-primary" /> </div> <div> <p className="text-xs text-muted-foreground">Started</p> <p className="font-semibold">{new Date(project.startDate).toLocaleDateString('en-US', { month: 'short', year: 'numeric' })}</p> </div> </div> </CardContent> </Card> <Card className="border-border"> <CardContent className="pt-6"> <div className="flex items-center gap-3"> <div className="p-2 bg-secondary/10 rounded-lg"> <DollarSign className="h-5 w-5 text-secondary" /> </div> <div> <p className="text-xs text-muted-foreground">Funding</p> <p className="font-semibold">{project.fundingAmount}</p> </div> </div> </CardContent> </Card> <Card className="border-border"> <CardContent className="pt-6"> <div className="flex items-center gap-3"> <div className="p-2 bg-accent/10 rounded-lg"> <Users className="h-5 w-5 text-accent" /> </div> <div> <p className="text-xs text-muted-foreground">Team Size</p> <p className="font-semibold">{project.teamMembers?.length || 0} Members</p> </div> </div> </CardContent> </Card> <Card className="border-border"> <CardContent className="pt-6"> <div className="flex items-center gap-3"> <div className="p-2 bg-primary/10 rounded-lg"> <Building2 className="h-5 w-5 text-primary" /> </div> <div> <p className="text-xs text-muted-foreground">Partners</p> <p className="font-semibold">{project.collaborators?.length || 0} Orgs</p> </div> </div> </CardContent> </Card> </motion.div> {/* Full Description */} <motion.div initial={{ opacity: 0, y: 20 }} animate={{ opacity: 1, y: 0 }} transition={{ duration: 0.5, delay: 0.4 }} className="mb-12" > <Card className="border-border"> <CardHeader> <CardTitle className="flex items-center gap-2"> <BookOpen className="h-5 w-5" /> Project Overview </CardTitle> </CardHeader> <CardContent> <div className="prose prose-lg max-w-none text-foreground"> {project.fullDescription?.split('\n').map((paragraph: string, idx: number) => ( <p key={idx} className="mb-4 leading-relaxed"> {paragraph} </p> ))} </div> </CardContent> </Card> </motion.div> {/* Two Column Layout */} <div className="grid lg:grid-cols-2 gap-8 mb-12"> {/* Objectives */} {project.objectives && project.objectives.length > 0 && ( <motion.div initial={{ opacity: 0, x: -20 }} animate={{ opacity: 1, x: 0 }} transition={{ duration: 0.5, delay: 0.5 }} > <Card className="border-border h-full"> <CardHeader> <CardTitle className="flex items-center gap-2"> <Target className="h-5 w-5 text-primary" /> Objectives </CardTitle> </CardHeader> <CardContent> <ul className="space-y-3"> {project.objectives.map((objective: string, idx: number) => ( <li key={idx} className="flex items-start gap-3"> <div className="mt-1 h-2 w-2 rounded-full bg-primary flex-shrink-0" /> <span className="text-sm text-foreground">{objective}</span> </li> ))} </ul> </CardContent> </Card> </motion.div> )} {/* Achievements */} {project.achievements && project.achievements.length > 0 && ( <motion.div initial={{ opacity: 0, x: 20 }} animate={{ opacity: 1, x: 0 }} transition={{ duration: 0.5, delay: 0.5 }} > <Card className="border-border h-full"> <CardHeader> <CardTitle className="flex items-center gap-2"> <Award className="h-5 w-5 text-secondary" /> Key Achievements </CardTitle> </CardHeader> <CardContent> <ul className="space-y-3"> {project.achievements.map((achievement: string, idx: number) => ( <li key={idx} className="flex items-start gap-3"> <div className="mt-1 h-2 w-2 rounded-full bg-secondary flex-shrink-0" /> <span className="text-sm text-foreground">{achievement}</span> </li> ))} </ul> </CardContent> </Card> </motion.div> )} </div> {/* Team & Collaborators */} <div className="grid lg:grid-cols-2 gap-8 mb-12"> {/* Team */} <motion.div initial={{ opacity: 0, y: 20 }} animate={{ opacity: 1, y: 0 }} transition={{ duration: 0.5, delay: 0.6 }} > <Card className="border-border"> <CardHeader> <CardTitle className="flex items-center gap-2"> <Users className="h-5 w-5 text-accent" /> Research Team </CardTitle> </CardHeader> <CardContent> <div className="space-y-3"> <div className="pb-3 border-b border-border"> <p className="text-sm text-muted-foreground">Principal Investigator</p> <p className="font-semibold text-foreground">{project.teamLead}</p> </div> {project.teamMembers && project.teamMembers.length > 0 && ( <div> <p className="text-sm text-muted-foreground mb-2">Team Members</p> <ul className="space-y-1"> {project.teamMembers.map((member: string, idx: number) => ( <li key={idx} className="text-sm text-foreground">{member}</li> ))} </ul> </div> )} </div> </CardContent> </Card> </motion.div> {/* Collaborators */} {project.collaborators && project.collaborators.length > 0 && ( <motion.div initial={{ opacity: 0, y: 20 }} animate={{ opacity: 1, y: 0 }} transition={{ duration: 0.5, delay: 0.6 }} > <Card className="border-border"> <CardHeader> <CardTitle className="flex items-center gap-2"> <Building2 className="h-5 w-5 text-primary" /> Collaborating Organizations </CardTitle> </CardHeader> <CardContent> <ul className="space-y-2"> {project.collaborators.map((org: string, idx: number) => ( <li key={idx} className="flex items-center gap-2 text-sm text-foreground"> <div className="h-1.5 w-1.5 rounded-full bg-primary" /> {org} </li> ))} </ul> </CardContent> </Card> </motion.div> )} </div> {/* Publications */} {project.publications && project.publications.length > 0 && ( <motion.div initial={{ opacity: 0, y: 20 }} animate={{ opacity: 1, y: 0 }} transition={{ duration: 0.5, delay: 0.7 }} className="mb-12" > <Card className="border-border"> <CardHeader> <CardTitle className="flex items-center gap-2"> <BookOpen className="h-5 w-5 text-secondary" /> Publications </CardTitle> </CardHeader> <CardContent> <div className="space-y-4"> {project.publications.map((pub: any, idx: number) => ( <div key={idx} className="pb-4 border-b border-border last:border-b-0 last:pb-0"> <h4 className="font-semibold text-foreground mb-1">{pub.title}</h4> <p className="text-sm text-muted-foreground mb-2"> {pub.journal} • {pub.year} </p> {pub.doi && ( <a href={`https://doi.org/${pub.doi}`} target="_blank" rel="noopener noreferrer" className="inline-flex items-center gap-1 text-sm text-primary hover:underline" > <ExternalLink className="h-3 w-3" /> {pub.doi} </a> )} </div> ))} </div> </CardContent> </Card> </motion.div> )} {/* Impact */} {project.impact && ( <motion.div initial={{ opacity: 0, y: 20 }} animate={{ opacity: 1, y: 0 }} transition={{ duration: 0.5, delay: 0.8 }} className="mb-12" > <Card className="border-border bg-gradient-to-br from-primary/5 to-secondary/5"> <CardHeader> <CardTitle className="flex items-center gap-2"> <TrendingUp className="h-5 w-5 text-primary" /> Impact & Significance </CardTitle> </CardHeader> <CardContent> <p className="text-foreground leading-relaxed">{project.impact}</p> </CardContent> </Card> </motion.div> )} {/* Funding Info */} <motion.div initial={{ opacity: 0, y: 20 }} animate={{ opacity: 1, y: 0 }} transition={{ duration: 0.5, delay: 0.9 }} className="mb-12" > <Card className="border-border"> <CardContent className="pt-6"> <div className="flex items-center justify-between flex-wrap gap-4"> <div> <p className="text-sm text-muted-foreground mb-1">Funding Agency</p> <p className="font-semibold text-lg text-foreground">{project.fundingAgency}</p> </div> <div className="text-right"> <p className="text-sm text-muted-foreground mb-1">Total Funding</p> <p className="font-bold text-2xl text-primary">{project.fundingAmount}</p> </div> </div> </CardContent> </Card> </motion.div> {/* Tags */} <motion.div initial={{ opacity: 0 }} animate={{ opacity: 1 }} transition={{ duration: 0.5, delay: 1 }} className="flex flex-wrap gap-2" > {project.tags?.map((tag: string) => ( <Badge key={tag} variant="outline" className="text-sm"> {tag} </Badge> ))} </motion.div> </div> </main> <Footer /> </div> ); }; export default ResearchDetailPage;
Close