| Server IP : 10.200.247.200 / Your IP : 216.73.216.64 Web Server : Apache System : Linux synergy-usa-sites 6.8.0-138-generic #138-Ubuntu SMP PREEMPT_DYNAMIC Fri Jul 31 22:41:49 UTC 2026 x86_64 User : jeremy ( 1001) PHP Version : 8.4.25 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/react_apps_dev/lovable-project-08290a92/src/components/ |
Upload File : |
import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from "@/components/ui/dialog";
import { Button } from "@/components/ui/button";
import { X, Play } from "lucide-react";
interface VideoModalProps {
isOpen: boolean;
onClose: () => void;
videoSrc: string;
title: string;
description?: string;
}
export const VideoModal = ({ isOpen, onClose, videoSrc, title, description }: VideoModalProps) => {
const handlePlayVideo = () => {
// In a real implementation, this would play the actual video
console.log('Playing video:', videoSrc);
};
return (
<Dialog open={isOpen} onOpenChange={onClose}>
<DialogContent className="sm:max-w-3xl">
<DialogHeader>
<div className="flex items-center justify-between">
<DialogTitle>{title}</DialogTitle>
<Button
variant="ghost"
size="sm"
onClick={onClose}
className="h-6 w-6 p-0"
aria-label="Close video modal"
>
<X className="h-4 w-4" />
</Button>
</div>
{description && (
<DialogDescription>{description}</DialogDescription>
)}
</DialogHeader>
<div className="space-y-4">
{/* Video Preview */}
<div className="relative aspect-video bg-black rounded-lg overflow-hidden">
<img
src={videoSrc}
alt={`${title} video thumbnail`}
className="w-full h-full object-cover"
/>
<div className="absolute inset-0 flex items-center justify-center bg-black/20">
<Button
onClick={handlePlayVideo}
size="lg"
className="bg-white/90 hover:bg-white text-black hover:scale-110 transition-all duration-300"
aria-label={`Play ${title} video`}
>
<Play className="w-8 h-8 mr-2" />
Play Video
</Button>
</div>
</div>
{/* Video Description */}
<div className="text-center space-y-2">
<p className="text-muted-foreground">
Learn more about our professional grant writing services and how we can help you secure funding for your business, non-profit, or real estate project.
</p>
<Button variant="outline" onClick={onClose} className="mt-4">
Close
</Button>
</div>
</div>
</DialogContent>
</Dialog>
);
};