'use client' import React, { useRef, useEffect } from 'react' import { motion, AnimatePresence } from 'framer-motion' import { Image, PaintBrush, Upload, Palette, Desktop as DesktopIcon, Gradient } from '@phosphor-icons/react' interface DesktopContextMenuProps { isOpen: boolean position: { x: number; y: number } onClose: () => void onChangeBackground: (type: 'upload' | 'preset') => void } const presetBackgrounds = [ { name: 'Ubuntu Purple', value: 'gradient-purple' }, { name: 'Ocean Blue', value: 'gradient-blue' }, { name: 'Forest Green', value: 'gradient-green' }, { name: 'Sunset Orange', value: 'gradient-orange' }, { name: 'Dark Mode', value: 'gradient-dark' }, ] export function DesktopContextMenu({ isOpen, position, onClose, onChangeBackground }: DesktopContextMenuProps) { const menuRef = useRef(null) useEffect(() => { const handleClickOutside = (event: MouseEvent) => { if (menuRef.current && !menuRef.current.contains(event.target as Node)) { onClose() } } const handleEscape = (event: KeyboardEvent) => { if (event.key === 'Escape') { onClose() } } if (isOpen) { document.addEventListener('mousedown', handleClickOutside) document.addEventListener('keydown', handleEscape) } return () => { document.removeEventListener('mousedown', handleClickOutside) document.removeEventListener('keydown', handleEscape) } }, [isOpen, onClose]) return ( {isOpen && ( {/* Change Background Section */} )} ) }