diff --git a/src/lib/components/app/daemon.svelte b/src/lib/components/app/daemon.svelte
index 3d194cb..1691338 100644
--- a/src/lib/components/app/daemon.svelte
+++ b/src/lib/components/app/daemon.svelte
@@ -3,6 +3,8 @@
import { getGeneralData, getStationSongs } from '@/utils';
import { onMount } from 'svelte';
import { useIsMobile } from '@/isMobile.svelte';
+ import Window from '../ui/window/window.svelte';
+ import TodoList from './todo-list.svelte';
// svelte-ignore non_reactive_update
let audioElement: HTMLAudioElement;
@@ -233,4 +235,16 @@
autoplay
preload="none"
>
-{/each}
\ No newline at end of file
+{/each}
+
+ appState.showTodoList = false}
+ show={appState.showTodoList}
+>
+
+
\ No newline at end of file
diff --git a/src/lib/components/app/left-bar.svelte b/src/lib/components/app/left-bar.svelte
new file mode 100644
index 0000000..e3576cd
--- /dev/null
+++ b/src/lib/components/app/left-bar.svelte
@@ -0,0 +1,13 @@
+
+
+
+
+
diff --git a/src/lib/components/app/todo-list.svelte b/src/lib/components/app/todo-list.svelte
new file mode 100644
index 0000000..4f3e425
--- /dev/null
+++ b/src/lib/components/app/todo-list.svelte
@@ -0,0 +1,50 @@
+
+
+
+
e.key === 'Enter' && addTodo()}
+ />
+
+
+
+{#if appState.todoList.length === 0}
+ No tasks yet. Add one above!
+{:else}
+
+ {#each appState.todoList as todo, index}
+ -
+ {todo}
+
+
+ {/each}
+
+{/if}
\ No newline at end of file
diff --git a/src/lib/components/ui/window/window.svelte b/src/lib/components/ui/window/window.svelte
index 12bfaca..ffa15f7 100644
--- a/src/lib/components/ui/window/window.svelte
+++ b/src/lib/components/ui/window/window.svelte
@@ -14,6 +14,7 @@
showTitleBar = true,
showCloseButton = true,
onClose = () => {},
+ show = false,
initialZIndex = 50,
}: {
children?: Snippet;
@@ -25,6 +26,7 @@
showTitleBar?: boolean;
showCloseButton?: boolean;
onClose?: () => void;
+ show?: boolean;
initialZIndex?: number;
} = $props();
@@ -107,37 +109,36 @@
});
-
- {#if showTitleBar}
-
-
{title}
- {#if showCloseButton}
-
- {/if}
+{#if show}
+
+ {#if showTitleBar}
+
+ {title}
+ {#if showCloseButton}
+
+ {/if}
+
+ {/if}
+
+
+ {@render children?.()}
- {/if}
-
-
- {@render children?.()}
-
-
-
+{/if}
\ No newline at end of file
diff --git a/src/lib/state.svelte.ts b/src/lib/state.svelte.ts
index 30b3f85..53a0498 100644
--- a/src/lib/state.svelte.ts
+++ b/src/lib/state.svelte.ts
@@ -23,6 +23,9 @@ export const state = $state({
windowZIndexCounter: 50,
+ todoList: [] as string[],
+ showTodoList: false,
+
// in daemon.svelte
togglePlay: (() => {}) as () => void,
});
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte
index af666c5..22a66b1 100644
--- a/src/routes/+page.svelte
+++ b/src/routes/+page.svelte
@@ -6,6 +6,7 @@
import { state } from '@/state.svelte';
import BackgroundAnalyzer from '@/components/app/bg-analyzer.svelte';
import Title from '@/components/app/title.svelte';
+ import LeftBar from '@/components/app/left-bar.svelte';
@@ -28,5 +29,6 @@
{:else if state.hasInteracted}
+
{/if}