mirror of
https://github.com/blackboxprogramming/BlackRoad-Operating-System.git
synced 2026-03-17 01:57:11 -05:00
Port BR-95 desktop to Next.js components
This commit is contained in:
63
br95/components/shared/Taskbar.tsx
Normal file
63
br95/components/shared/Taskbar.tsx
Normal file
@@ -0,0 +1,63 @@
|
||||
import React from 'react';
|
||||
import { WindowId } from '../../hooks/useWindowManager';
|
||||
|
||||
type Props = {
|
||||
openWindows: WindowId[];
|
||||
activeWindow: WindowId | null;
|
||||
clockText: string;
|
||||
onTaskbarClick: (id: WindowId) => void;
|
||||
onToggleMenu: () => void;
|
||||
menuButtonRef: React.RefObject<HTMLDivElement>;
|
||||
};
|
||||
|
||||
const titles: Record<WindowId, string> = {
|
||||
lucidia: '🧠 Lucidia',
|
||||
agents: '🤖 Agents',
|
||||
roadchain: '⛓️ Chain',
|
||||
wallet: '💰 Wallet',
|
||||
roadmail: '📧 Mail',
|
||||
social: '👥 Social',
|
||||
blackstream: '📺 Stream',
|
||||
roadview: '🌍 RoadView',
|
||||
terminal: '💻 Terminal',
|
||||
pi: '🥧 Pi',
|
||||
miner: '⛏️ Miner',
|
||||
roadcraft: '⛏️ RoadCraft',
|
||||
};
|
||||
|
||||
export default function Taskbar({
|
||||
openWindows,
|
||||
activeWindow,
|
||||
clockText,
|
||||
onTaskbarClick,
|
||||
onToggleMenu,
|
||||
menuButtonRef,
|
||||
}: Props) {
|
||||
return (
|
||||
<div className="taskbar">
|
||||
<div className="road-button" id="road-button" onClick={onToggleMenu} ref={menuButtonRef}>
|
||||
<span className="road-logo"></span>
|
||||
<span>Road</span>
|
||||
</div>
|
||||
<div className="taskbar-apps" id="taskbar-apps">
|
||||
{openWindows.map((id) => (
|
||||
<div
|
||||
key={id}
|
||||
className={`taskbar-app ${activeWindow === id ? 'active-app' : ''}`}
|
||||
onClick={() => onTaskbarClick(id)}
|
||||
>
|
||||
{titles[id] ?? id}
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
<div className="system-tray">
|
||||
<span>🌐</span>
|
||||
<span>🔊</span>
|
||||
<span>⛓️</span>
|
||||
</div>
|
||||
<div className="clock" id="clock">
|
||||
{clockText}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user