Seed: education template (18 files)

This commit is contained in:
2026-07-23 22:12:25 +00:00
parent 83258c0f20
commit a17f3dfabd
+77
View File
@@ -0,0 +1,77 @@
import { Link } from "react-router-dom";
import Header from "@/components/Header";
import Footer from "@/components/Footer";
import { Button } from "@/components/ui/button";
import { Badge } from "@/components/ui/badge";
import { Card, CardContent } from "@/components/ui/card";
import { Star, BookOpen, Users, Linkedin, Twitter, Globe } from "lucide-react";
const instructors = [
{ name: "Dr. Sarah Chen", title: "Senior Software Engineer & Educator", specialties: ["React", "Node.js", "TypeScript"], courses: 12, students: 3200, rating: 4.9, gradient: "from-indigo-500 to-purple-600" },
{ name: "Prof. James Rivera", title: "Data Science Lead & Researcher", specialties: ["Python", "Machine Learning", "Statistics"], courses: 8, students: 2800, rating: 4.8, gradient: "from-amber-500 to-orange-600" },
{ name: "Maya Patel", title: "Principal UX Designer", specialties: ["Figma", "UI Design", "Prototyping"], courses: 15, students: 4100, rating: 4.9, gradient: "from-emerald-500 to-teal-600" },
{ name: "Dr. Alex Kim", title: "AI Research Scientist", specialties: ["Deep Learning", "NLP", "Computer Vision"], courses: 10, students: 3600, rating: 4.7, gradient: "from-rose-500 to-pink-600" },
{ name: "Rachel Torres", title: "Business Strategy Consultant", specialties: ["Strategy", "Leadership", "Finance"], courses: 6, students: 2100, rating: 4.8, gradient: "from-cyan-500 to-blue-600" },
{ name: "David Park", title: "Growth Marketing Director", specialties: ["SEO", "Analytics", "Growth"], courses: 9, students: 2500, rating: 4.6, gradient: "from-violet-500 to-fuchsia-600" },
];
export default function InstructorsPage() {
return (
<div className="min-h-screen bg-white dark:bg-slate-950">
<Header />
<section className="pt-32 pb-8">
<div className="mx-auto max-w-7xl px-6 text-center">
<Badge className="bg-indigo-100 text-indigo-700 dark:bg-indigo-900/40 dark:text-indigo-300 mb-4">Our Team</Badge>
<h1 className="text-3xl sm:text-4xl font-bold mb-3 animate-fade-up">Meet Our Instructors</h1>
<p className="text-muted-foreground max-w-xl mx-auto animate-fade-up" style={{ animationDelay: "0.05s" }}>Industry veterans and passionate educators dedicated to your success.</p>
</div>
</section>
<section className="pb-20">
<div className="mx-auto max-w-7xl px-6">
<div className="grid sm:grid-cols-2 lg:grid-cols-3 gap-8">
{instructors.map((inst, i) => (
<Card key={i} className="group bg-white/70 dark:bg-slate-900/70 backdrop-blur border-slate-200/60 dark:border-slate-800/60 rounded-2xl overflow-hidden text-center p-8 hover:ring-2 hover:ring-indigo-500/30 hover:shadow-xl transition-all duration-300 animate-fade-up" style={{ animationDelay: `\${i * 0.1}s` }}>
<div className={`mx-auto w-28 h-28 rounded-full bg-gradient-to-br \${inst.gradient} flex items-center justify-center mb-5 ring-4 ring-white dark:ring-slate-900 group-hover:ring-indigo-200 dark:group-hover:ring-indigo-800 transition-all`}>
<span className="text-3xl font-bold text-white">{inst.name.split(" ").map(n => n[0]).join("")}</span>
</div>
<h3 className="text-xl font-bold mb-1">{inst.name}</h3>
<p className="text-sm text-muted-foreground mb-3">{inst.title}</p>
<div className="flex flex-wrap justify-center gap-2 mb-4">
{inst.specialties.map((s) => (
<Badge key={s} variant="secondary" className="text-xs">{s}</Badge>
))}
</div>
<div className="grid grid-cols-3 gap-2 text-center mb-4">
<div>
<div className="text-lg font-bold text-indigo-600 dark:text-indigo-400">{inst.courses}</div>
<div className="text-xs text-muted-foreground">Courses</div>
</div>
<div>
<div className="text-lg font-bold text-indigo-600 dark:text-indigo-400">{inst.students.toLocaleString()}</div>
<div className="text-xs text-muted-foreground">Students</div>
</div>
<div>
<div className="text-lg font-bold text-amber-500">{inst.rating}</div>
<div className="text-xs text-muted-foreground">Rating</div>
</div>
</div>
<div className="flex justify-center gap-3 mb-4">
{[Linkedin, Twitter, Globe].map((Icon, j) => (
<a key={j} href="#" className="text-slate-400 hover:text-indigo-500 transition-colors"><Icon className="h-4 w-4" /></a>
))}
</div>
<Button asChild variant="outline" className="w-full rounded-full border-indigo-200 dark:border-indigo-800 hover:bg-indigo-600 hover:text-white transition-all">
<Link to="/courses">View Courses</Link>
</Button>
</Card>
))}
</div>
</div>
</section>
<Footer />
</div>
);
}