diff --git a/apps/tauri/src/lib/screens/SettingsScreen.svelte b/apps/tauri/src/lib/screens/SettingsScreen.svelte index c932bc6..1576ff1 100644 --- a/apps/tauri/src/lib/screens/SettingsScreen.svelte +++ b/apps/tauri/src/lib/screens/SettingsScreen.svelte @@ -2,7 +2,10 @@ import { invoke } from "@tauri-apps/api/core"; import { app } from "../stores/app.svelte"; - let { onclose }: { onclose?: () => void } = $props(); + let { onclose, workspaceName }: { onclose?: () => void; workspaceName: string } = $props(); + + let ws = $derived(app.config?.workspaces[workspaceName]); + let isWebdav = $derived(ws?.mode === "webdav"); let webdavUrl = $state(""); let webdavUser = $state(""); @@ -10,19 +13,15 @@ let testStatus = $state<"idle" | "testing" | "ok" | "fail">("idle"); $effect(() => { - const ws = app.config?.current_workspace; - if (!ws) return; - const cfg = app.config?.workspaces[ws]; - if (cfg?.webdav_url) { - webdavUrl = cfg.webdav_url; - try { - const domain = new URL(cfg.webdav_url).hostname; - invoke<[string, string]>("load_credentials", { domain }).then(([u, p]) => { - webdavUser = u; - webdavPass = p; - }).catch(() => {}); - } catch {} - } + if (!ws?.webdav_url) return; + webdavUrl = ws.webdav_url; + try { + const domain = new URL(ws.webdav_url).hostname; + invoke<[string, string]>("load_credentials", { domain }).then(([u, p]) => { + webdavUser = u; + webdavPass = p; + }).catch(() => {}); + } catch {} }); async function testConnection() { @@ -40,9 +39,9 @@ } async function saveWebdav() { - if (!app.config?.current_workspace || !webdavUrl.trim()) return; + if (!webdavUrl.trim()) return; await invoke("set_webdav_config", { - workspaceName: app.config.current_workspace, + workspaceName, webdavUrl: webdavUrl.trim(), }); if (webdavUser && webdavPass) { @@ -55,13 +54,12 @@ } await app.loadConfig(); } -
-

Settings

+

{workspaceName} Settings

- -
-

- WebDAV Sync -

-
- - + + {#if isWebdav} +
+

+ WebDAV Sync +

+
+ + - - + + - - + + -
- - +
+ + +
-
- {#if app.config?.current_workspace}
{ + const val = (e.target as HTMLSelectElement).value; + app.setTheme(val || null); + }} + class="w-full appearance-none rounded-lg border border-border-light bg-surface-light px-3 py-2 text-sm text-text-light outline-none focus:border-primary dark:border-border-dark dark:bg-surface-dark dark:text-text-dark" > -
-
- + + + + + + + +

Tauri v2 + Svelte

diff --git a/apps/tauri/src/lib/screens/SetupScreen.svelte b/apps/tauri/src/lib/screens/SetupScreen.svelte index f164798..7741941 100644 --- a/apps/tauri/src/lib/screens/SetupScreen.svelte +++ b/apps/tauri/src/lib/screens/SetupScreen.svelte @@ -1,16 +1,25 @@
-
+
+
+ {#if cancellable} + + {/if} +
{#if isDesktop}
{#if isWindows} @@ -72,58 +121,162 @@ class="w-full max-w-sm rounded-2xl bg-card-light p-8 shadow-lg dark:bg-card-dark" >

Onyx

-

- Create a new workspace or open an existing one. -

- + {#if mode === null} + +

+ How would you like to store your tasks? +

- - -
- -
- + -
-
- or -
-
+ {:else if mode === "local"} + +

+ Create a new workspace or open an existing one. +

- + + + + +
+ + +
+ + + +
+
+ or +
+
+ + + + {#if !isMobile} + + {/if} + + {:else} + +

+ Connect to a WebDAV server for cloud-synced tasks. +

+ + + + + + + + + + + + +
+ +
+ + + + {#if !isMobile} + + {/if} + {/if}
diff --git a/apps/tauri/src/lib/screens/TasksScreen.svelte b/apps/tauri/src/lib/screens/TasksScreen.svelte index 6ed0665..f22d91f 100644 --- a/apps/tauri/src/lib/screens/TasksScreen.svelte +++ b/apps/tauri/src/lib/screens/TasksScreen.svelte @@ -35,6 +35,7 @@ let showDrawer = $state(false); let showSettings = $state(false); + let settingsWorkspace = $state(null); let showNewList = $state(false); let showWorkspacePicker = $state(false); let workspacePickerEl = $state(null); @@ -152,7 +153,7 @@ clone.style.position = "absolute"; clone.style.top = "-9999px"; clone.style.left = "-9999px"; - if (app.darkMode) { + if (app.isDark) { clone.classList.add("dark"); clone.style.backgroundColor = "var(--color-surface-dark)"; clone.style.color = "var(--color-text-dark)"; @@ -192,12 +193,9 @@ showNewList = false; } - function openSettings() { - showSettings = true; - } - function closeSettings() { showSettings = false; + settingsWorkspace = null; } function handleHeaderMouseDown(e: MouseEvent) { @@ -256,7 +254,7 @@ {/if}

{name}

-

{ws?.path ?? ""}

+

{ws?.mode === "webdav" ? ws.webdav_url ?? "WebDAV" : ws?.path ?? ""}

@@ -270,6 +268,15 @@ {#if wsMenuName === name}
+
- - @@ -632,7 +625,7 @@ class="relative flex h-full w-full flex-col overflow-hidden rounded-2xl bg-surface-light transition-transform duration-200 dark:bg-surface-dark {showSettings ? 'scale-100' : 'scale-95'}" style="border: 1px solid rgba(255,255,255,0.1); box-shadow: 0 25px 60px rgba(0,0,0,0.7), 0 10px 20px rgba(0,0,0,0.5)" > - +