'use client' import React, { useState, useRef } from 'react' import { motion, AnimatePresence } from 'framer-motion' import { X, Upload, Image, Check } from '@phosphor-icons/react' interface BackgroundSelectorProps { isOpen: boolean onClose: () => void onSelectBackground: (background: string | File) => void currentBackground: string } const presetBackgrounds = [ { id: 'gradient-purple', name: 'Ubuntu Purple', style: 'linear-gradient(135deg, #77216F 0%, #5E2750 50%, #2C001E 100%)' }, { id: 'gradient-blue', name: 'Ocean Blue', style: 'linear-gradient(135deg, #1e3c72 0%, #2a5298 50%, #7e8ba3 100%)' }, { id: 'gradient-green', name: 'Forest Green', style: 'linear-gradient(135deg, #134e5e 0%, #71b280 50%, #a8e063 100%)' }, { id: 'gradient-orange', name: 'Sunset Orange', style: 'linear-gradient(135deg, #ff512f 0%, #dd2476 50%, #f09819 100%)' }, { id: 'gradient-dark', name: 'Dark Mode', style: 'linear-gradient(135deg, #0f0f0f 0%, #1a1a1a 50%, #2d2d2d 100%)' }, { id: 'gradient-cosmic', name: 'Cosmic', style: 'linear-gradient(135deg, #667eea 0%, #764ba2 50%, #f093fb 100%)' } ] export function BackgroundSelector({ isOpen, onClose, onSelectBackground, currentBackground }: BackgroundSelectorProps) { const [selectedTab, setSelectedTab] = useState<'presets' | 'upload'>('presets') const [uploadedImage, setUploadedImage] = useState(null) const fileInputRef = useRef(null) const handleFileUpload = (event: React.ChangeEvent) => { const file = event.target.files?.[0] if (file) { const reader = new FileReader() reader.onload = (e) => { const result = e.target?.result as string setUploadedImage(result) onSelectBackground(file) } reader.readAsDataURL(file) } } return ( {isOpen && ( <> {/* Backdrop */} {/* Modal */} {/* Header */}

Change Desktop Background

{/* Tabs */}
{/* Content */}
{selectedTab === 'presets' ? (
{presetBackgrounds.map((bg) => ( ))}
) : (
{uploadedImage ? (
Uploaded background
) : ( <>
fileInputRef.current?.click()} className="w-32 h-32 border-2 border-dashed border-white/30 rounded-lg flex flex-col items-center justify-center cursor-pointer hover:border-white/50 transition-colors" > Click to upload

Supported formats: JPG, PNG, WEBP, GIF

)}
)}
{/* Footer */}
)}
) }