"use client"; import { useState } from 'react'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Badge } from '@/components/ui/badge'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger, } from '@/components/ui/dialog'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu'; import { Plus, Upload, Search, FolderPlus, MoreHorizontal, Play, Download, Trash2, Eye, Grid3X3, List, } from 'lucide-react'; const mockAlbums = [ { id: 1, name: 'Tech Videos', itemCount: 12, thumbnail: 'https://images.pexels.com/photos/3861969/pexels-photo-3861969.jpeg?auto=compress&cs=tinysrgb&w=300', createdAt: '2024-01-15', }, { id: 2, name: 'Marketing Assets', itemCount: 8, thumbnail: 'https://images.pexels.com/photos/3184287/pexels-photo-3184287.jpeg?auto=compress&cs=tinysrgb&w=300', createdAt: '2024-01-10', }, { id: 3, name: 'Stock Footage', itemCount: 24, thumbnail: 'https://images.pexels.com/photos/3184465/pexels-photo-3184465.jpeg?auto=compress&cs=tinysrgb&w=300', createdAt: '2024-01-05', }, ]; const mockMediaFiles = [ { id: 1, name: 'intro-video.mp4', type: 'video', size: '45.2 MB', duration: '2:30', thumbnail: 'https://images.pexels.com/photos/3861969/pexels-photo-3861969.jpeg?auto=compress&cs=tinysrgb&w=300', albumId: 1, uploadedAt: '2024-01-15', }, { id: 2, name: 'product-demo.mp4', type: 'video', size: '78.9 MB', duration: '4:15', thumbnail: 'https://images.pexels.com/photos/3184287/pexels-photo-3184287.jpeg?auto=compress&cs=tinysrgb&w=300', albumId: 1, uploadedAt: '2024-01-14', }, { id: 3, name: 'background-music.mp3', type: 'audio', size: '8.3 MB', duration: '3:45', thumbnail: null, albumId: 2, uploadedAt: '2024-01-12', }, { id: 4, name: 'hero-image.jpg', type: 'image', size: '2.1 MB', duration: null, thumbnail: 'https://images.pexels.com/photos/3184465/pexels-photo-3184465.jpeg?auto=compress&cs=tinysrgb&w=300', albumId: 2, uploadedAt: '2024-01-10', }, ]; export function MediaLibraryPage() { const [searchQuery, setSearchQuery] = useState(''); const [viewMode, setViewMode] = useState<'grid' | 'list'>('grid'); const [selectedAlbum, setSelectedAlbum] = useState(null); const filteredFiles = mockMediaFiles.filter(file => file.name.toLowerCase().includes(searchQuery.toLowerCase()) && (selectedAlbum ? file.albumId === selectedAlbum : true) ); const getFileIcon = (type: string) => { switch (type) { case 'video': return '🎥'; case 'audio': return '🎵'; case 'image': return '🖼️'; default: return '📄'; } }; return (
{/* Header */}

Media Library

Organize and manage your video, audio, and image assets

Create New Album
{/* Search and Filters */}
setSearchQuery(e.target.value)} className="pl-10 w-64" />
{mockAlbums.map((album) => ( ))}
Files Albums {viewMode === 'grid' ? (
{filteredFiles.map((file) => (
{file.thumbnail ? ( {file.name} ) : (
{getFileIcon(file.type)}
)}
{file.type === 'video' && ( )}
{file.type} {file.duration && ( {file.duration} )}

{file.name}

{file.size} Download Delete
))}
) : (
{filteredFiles.map((file) => (
{file.thumbnail ? ( {file.name} ) : (
{getFileIcon(file.type)}
)}

{file.name}

{file.size} • {file.type} {file.duration && ` • ${file.duration}`}

{file.uploadedAt} Download Delete
))}
)}
{mockAlbums.map((album) => (
{album.name}

{album.name}

Edit Delete
{album.itemCount} items Created {new Date(album.createdAt).toLocaleDateString()}
))}
); }