'use client' import React, { useState, useEffect, useRef } from 'react' import { SpeakerHigh, WifiHigh, BatteryFull, MagnifyingGlass, Desktop, CirclesFour, Check, Warning } from '@phosphor-icons/react' import { motion, AnimatePresence } from 'framer-motion' import { CalendarWidget } from './CalendarWidget' interface TopBarProps { activeAppName?: string onAboutClick?: () => void onSleep?: () => void onRestart?: () => void onShutdown?: () => void } export function TopBar({ activeAppName = 'Finder', onAboutClick, onSleep, onRestart, onShutdown }: TopBarProps) { const [activeMenu, setActiveMenu] = useState<'apple' | 'battery' | 'wifi' | 'clock' | null>(null) const [dateDisplay, setDateDisplay] = useState('') const [timeDisplay, setTimeDisplay] = useState('') const menuRef = useRef(null) useEffect(() => { const updateTime = () => { const now = new Date() const days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'] const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] const timeString = now.toLocaleTimeString('en-US', { hour: 'numeric', minute: '2-digit', hour12: true }) const dateString = `${days[now.getDay()]} ${now.getDate()} ${months[now.getMonth()]}` setDateDisplay(dateString) setTimeDisplay(timeString) } updateTime() const interval = setInterval(updateTime, 1000) const handleClickOutside = (event: MouseEvent) => { if (menuRef.current && !menuRef.current.contains(event.target as Node)) { setActiveMenu(null) } } document.addEventListener('mousedown', handleClickOutside) return () => { clearInterval(interval) document.removeEventListener('mousedown', handleClickOutside) } }, []) const toggleMenu = (menu: 'apple' | 'battery' | 'wifi' | 'clock') => { setActiveMenu(activeMenu === menu ? null : menu) } return (
{activeMenu === 'apple' && (
)}
Reuben OS {activeAppName}
{/* Battery */}
{activeMenu === 'battery' && (
Battery 85%
Power Source: Battery
Using Significant Energy:
Chrome
)}
{/* WiFi */}
{activeMenu === 'wifi' && (
Wi-Fi
Reuben's WiFi
Personal Hotspots
iPhone 15 Pro
Other Networks
Guest Network
Starbucks WiFi
)}
{/* Clock */}
{activeMenu === 'clock' && ( )}
) }