"use client"; import { useEffect } from "react"; import Image from "next/image"; import { X, Flame, Sparkles, Wind, Zap, Star, Monitor } from "lucide-react"; import type { ClassItem } from "@/types"; const iconMap: Record = { flame: , sparkles: , wind: , zap: , star: , monitor: , }; interface ClassModalProps { classItem: ClassItem | null; onClose: () => void; } export function ClassModal({ classItem, onClose }: ClassModalProps) { useEffect(() => { if (!classItem) return; document.body.style.overflow = "hidden"; function handleKeyDown(e: KeyboardEvent) { if (e.key === "Escape") onClose(); } document.addEventListener("keydown", handleKeyDown); return () => { document.body.style.overflow = ""; document.removeEventListener("keydown", handleKeyDown); }; }, [classItem, onClose]); if (!classItem) return null; const heroImage = classItem.images?.[0]; return (
e.stopPropagation()} > {/* Hero image banner */} {heroImage && (
{classItem.name}
{/* Close button */} {/* Title on image */}
{iconMap[classItem.icon]}

{classItem.name}

)} {/* Content */}
{/* Title fallback when no image */} {!heroImage && (
{iconMap[classItem.icon]}

{classItem.name}

)} {classItem.detailedDescription && (
{classItem.detailedDescription}
)}
); }