diff options
Diffstat (limited to 'src/taskbar')
| -rw-r--r-- | src/taskbar/index.tsx | 44 | ||||
| -rw-r--r-- | src/taskbar/start.tsx | 4 |
2 files changed, 32 insertions, 16 deletions
diff --git a/src/taskbar/index.tsx b/src/taskbar/index.tsx index 34377c2..3752e52 100644 --- a/src/taskbar/index.tsx +++ b/src/taskbar/index.tsx @@ -1,25 +1,39 @@ import { StartButton } from "./start" import { Time } from "./time" +import { Task, taskManager } from "$/desktop" +import { useCallback } from "preact/hooks" +import { useLiveSignal } from "@preact/signals/utils"; + +function TaskButton({ task }: TaskButton.Props) { + const source = useLiveSignal(task.source); + const title = useLiveSignal(task.title); + + const handleClick = useCallback(() => { + task.window.minimized.value = !task.window.minimized.value; + taskManager.focusWindow(task) + }, []) + + return <li> + <button onClick={handleClick}> + <img src={`/assets/${source.value.value.type}.png`} /> + <div>{title.value.value ?? "[404 Title Not Found]"}</div> + </button> + </li> +} + +namespace TaskButton { + export type Props = { + task: Task + } +} export function Taskbar() { + const sortedTasks = [...taskManager.tasks.value.value].sort((a, b) => a.id - b.id); + return <nav> <StartButton /> <ul> - <li> - <button> - README.txt - </button> - </li> - <li> - <button> - KEYGEn - </button> - </li> - <li> - <button> - Chat - </button> - </li> + { sortedTasks.map(task => <TaskButton task={task}/>)} </ul> <Time /> <div id="netpunk_descender"></div> diff --git a/src/taskbar/start.tsx b/src/taskbar/start.tsx index ddf6d47..fb8b18c 100644 --- a/src/taskbar/start.tsx +++ b/src/taskbar/start.tsx @@ -1,5 +1,7 @@ +import { startMenuOpen } from "$/desktop/start"; + export function StartButton() { - return <div id="start"> + return <div id="start" onClick={() => startMenuOpen.value = !startMenuOpen.value}> <button> <img src="/assets/fumo.png" /> Start |
