From 7865d18580cde472f092d9d22f1fa59c1c02c8ac Mon Sep 17 00:00:00 2001 From: Huakun Shen Date: Mon, 11 Nov 2024 17:15:42 -0500 Subject: [PATCH] Feature: Settings (#23) * feat: add pin screenshot builtin command * feat: pin screenshot command nows zoom and scroll * chore: upgrade @kksh/svelte5 * feat: add mdns built-in command * feat: add sidebar for settings page * fix: builtin command command listing problem with key id in "each" loop * feat: add settings * style: modify settings sidebar style * feat: add sidebar to troubleshooter pages * fix: some styling bug * feat: add menu item highlight for sidebar * feat: improve some keyboard interaction logic * fix: improve troubleshooter flex box * feat: add uuid for mdns * fix mdns host removing caused by dead lock * feat: settings page implemented, hotkey, hide on blur implemented * style: update styles in settings * feat: improve search bar dropdown menu items --- Cargo.lock | 1 + apps/desktop/components.json | 17 + apps/desktop/package.json | 17 +- apps/desktop/src-tauri/Cargo.toml | 1 + apps/desktop/src/app.css | 134 +- apps/desktop/src/lib/cmds/builtin.ts | 77 +- .../lib/components/common/HotkeyInput.svelte | 81 ++ .../common/HotkeyInputPopover.svelte | 49 + .../components/common/sidebar-trigger.svelte | 24 + .../standalone/settings/AddDevExtForm.svelte | 2 +- .../standalone/settings/hotkey-pick.svelte | 22 + .../install-npm-package-name-form.svelte | 4 +- .../settings/install-tarball-url-form.svelte | 4 +- apps/desktop/src/lib/stores/appConfig.ts | 10 +- apps/desktop/src/lib/utils.ts | 6 + apps/desktop/src/lib/utils/dom.ts | 8 + apps/desktop/src/lib/utils/hotkey.ts | 58 + apps/desktop/src/lib/utils/js.ts | 52 + apps/desktop/src/lib/utils/key.ts | 86 +- apps/desktop/src/lib/utils/notification.ts | 20 + apps/desktop/src/lib/utils/route.ts | 10 + apps/desktop/src/routes/+layout.svelte | 57 +- apps/desktop/src/routes/+layout.ts | 4 +- apps/desktop/src/routes/+page.svelte | 73 +- .../src/routes/extension/store/+layout.svelte | 46 +- .../routes/extension/ui-worker/+page.svelte | 6 +- .../src/routes/settings/+layout.svelte | 18 + apps/desktop/src/routes/settings/+page.svelte | 65 + .../src/routes/settings/about/+page.svelte | 59 + .../settings/add-dev-extension/+page.svelte | 16 +- .../routes/settings/developer/+page.svelte | 0 .../routes/settings/extensions/+page.svelte | 0 .../settings/set-dev-ext-path/+page.svelte | 11 +- .../src/routes/settings/sidebar.svelte | 90 ++ .../src/routes/troubleshooters/+layout.svelte | 18 + .../extension-loading/+page.svelte | 7 +- .../extension-window/+page.svelte | 6 +- .../mdns-debugger/+page.svelte | 27 + .../src/routes/troubleshooters/sidebar.svelte | 72 ++ apps/desktop/svelte.config.js | 2 +- apps/desktop/tailwind.config.ts | 6 +- apps/desktop/uno.config.ts | 5 - apps/desktop/vite.config.js | 3 +- package.json | 2 +- .../jarvis/src/commands/discovery.rs | 15 +- .../jarvis/src/setup/peer_discovery.rs | 15 +- packages/types/src/appConfig.ts | 3 +- packages/ui/package.json | 6 +- packages/ui/src/components/code/shiki.svelte | 26 +- packages/ui/src/components/common/index.ts | 1 + .../extension/templates/MarkdownView.svelte | 2 +- .../extension/templates/form-view.svelte | 1 - .../ui/src/components/main/BuiltinCmds.svelte | 7 +- .../main/GlobalCommandPaletteFooter.svelte | 8 +- packages/ui/src/components/main/types.ts | 6 + pnpm-lock.yaml | 1132 +++-------------- 56 files changed, 1353 insertions(+), 1145 deletions(-) create mode 100644 apps/desktop/components.json create mode 100644 apps/desktop/src/lib/components/common/HotkeyInput.svelte create mode 100644 apps/desktop/src/lib/components/common/HotkeyInputPopover.svelte create mode 100644 apps/desktop/src/lib/components/common/sidebar-trigger.svelte create mode 100644 apps/desktop/src/lib/components/standalone/settings/hotkey-pick.svelte create mode 100644 apps/desktop/src/lib/utils.ts create mode 100644 apps/desktop/src/lib/utils/hotkey.ts create mode 100644 apps/desktop/src/lib/utils/js.ts create mode 100644 apps/desktop/src/lib/utils/notification.ts create mode 100644 apps/desktop/src/routes/settings/+layout.svelte create mode 100644 apps/desktop/src/routes/settings/+page.svelte create mode 100644 apps/desktop/src/routes/settings/about/+page.svelte create mode 100644 apps/desktop/src/routes/settings/developer/+page.svelte create mode 100644 apps/desktop/src/routes/settings/extensions/+page.svelte create mode 100644 apps/desktop/src/routes/settings/sidebar.svelte create mode 100644 apps/desktop/src/routes/troubleshooters/+layout.svelte create mode 100644 apps/desktop/src/routes/troubleshooters/mdns-debugger/+page.svelte create mode 100644 apps/desktop/src/routes/troubleshooters/sidebar.svelte delete mode 100644 apps/desktop/uno.config.ts diff --git a/Cargo.lock b/Cargo.lock index e5c93db..9845496 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3215,6 +3215,7 @@ dependencies = [ "tauri-plugin-upload", "tokio", "urlencoding", + "uuid", "zip 2.2.0", ] diff --git a/apps/desktop/components.json b/apps/desktop/components.json new file mode 100644 index 0000000..a1939f9 --- /dev/null +++ b/apps/desktop/components.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://next.shadcn-svelte.com/schema.json", + "style": "new-york", + "tailwind": { + "config": "tailwind.config.ts", + "css": "src/app.css", + "baseColor": "neutral" + }, + "aliases": { + "components": "$lib/components", + "utils": "$lib/utils", + "ui": "$lib/components/ui", + "hooks": "$lib/hooks" + }, + "typescript": true, + "registry": "https://next.shadcn-svelte.com/registry" +} \ No newline at end of file diff --git a/apps/desktop/package.json b/apps/desktop/package.json index a0e3b94..5c07566 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -21,44 +21,43 @@ "@kksh/ui": "workspace:*", "@kksh/utils": "workspace:*", "@std/semver": "npm:@jsr/std__semver@^1.0.3", - "@tauri-apps/api": "^2", + "@tanstack/table-core": "^8.20.5", + "@tauri-apps/api": "^2.1.0", "@tauri-apps/plugin-shell": "^2", - "bits-ui": "1.0.0-next.36", "gsap": "^3.12.5", - "lucide-svelte": "^0.454.0", "lz-string": "^1.5.0", "mode-watcher": "^0.4.1", "semver": "^7.6.3", - "svelte-radix": "^2.0.1", "svelte-sonner": "^0.3.28", "sveltekit-superforms": "^2.20.0", "tauri-plugin-clipboard-api": "^2.1.11", - "uuid": "^11.0.2" + "uuid": "^11.0.3" }, "devDependencies": { "@kksh/types": "workspace:*", "@sveltejs/adapter-static": "^3.0.6", - "@sveltejs/kit": "^2.7.4", + "@sveltejs/kit": "^2.8.0", "@sveltejs/vite-plugin-svelte": "^4.0.0", "@tailwindcss/aspect-ratio": "^0.4.2", "@tailwindcss/container-queries": "^0.1.1", "@tailwindcss/forms": "^0.5.9", "@tailwindcss/typography": "^0.5.15", - "@tauri-apps/cli": "^2.0.4", + "@tauri-apps/cli": "^2.1.0", "@types/bun": "latest", "@types/semver": "^7.5.8", - "@unocss/preset-attributify": "^0.64.0", "autoprefixer": "^10.4.20", + "bits-ui": "1.0.0-next.49", "clsx": "^2.1.1", "embla-carousel-svelte": "^8.3.1", "formsnap": "^1.0.1", + "lucide-svelte": "^0.456.0", + "svelte-radix": "^2.0.1", "tailwind-merge": "^2.5.4", "tailwind-variants": "^0.2.1", "tailwindcss": "^3.4.14", "tailwindcss-animate": "^1.0.7", "tslib": "^2.8.1", "typescript": "^5.6.3", - "unocss": "^0.64.0", "vaul-svelte": "^0.3.2", "vite": "^5.4.10" } diff --git a/apps/desktop/src-tauri/Cargo.toml b/apps/desktop/src-tauri/Cargo.toml index 9293907..2ffebf6 100644 --- a/apps/desktop/src-tauri/Cargo.toml +++ b/apps/desktop/src-tauri/Cargo.toml @@ -48,6 +48,7 @@ tauri-plugin-store = "2.1.0" tauri-plugin-deep-link = "2" tauri-plugin-log = { version = "2.0.1", features = ["colored"] } zip = "2.1.3" +uuid = "1.11.0" # tauri-plugin-devtools = "2.0.0" [target."cfg(target_os = \"macos\")".dependencies] diff --git a/apps/desktop/src/app.css b/apps/desktop/src/app.css index 2e46a91..b3f5499 100644 --- a/apps/desktop/src/app.css +++ b/apps/desktop/src/app.css @@ -3,73 +3,75 @@ @tailwind utilities; @layer base { - :root { - --background: 0 0% 100%; - --foreground: 0 0% 3.9%; - --muted: 0 0% 96.1%; - --muted-foreground: 0 0% 45.1%; - --popover: 0 0% 100%; - --popover-foreground: 0 0% 3.9%; - --card: 0 0% 100%; - --card-foreground: 0 0% 3.9%; - --border: 0 0% 89.8%; - --input: 0 0% 89.8%; - --primary: 0 0% 9%; - --primary-foreground: 0 0% 98%; - --secondary: 0 0% 96.1%; - --secondary-foreground: 0 0% 9%; - --accent: 0 0% 96.1%; - --accent-foreground: 0 0% 9%; - --destructive: 0 72.2% 50.6%; - --destructive-foreground: 0 0% 98%; - --ring: 0 0% 3.9%; - --radius: 0.5rem; - --sidebar-background: 0 0% 98%; - --sidebar-foreground: 240 5.3% 26.1%; - --sidebar-primary: 240 5.9% 10%; - --sidebar-primary-foreground: 0 0% 98%; - --sidebar-accent: 240 4.8% 95.9%; - --sidebar-accent-foreground: 240 5.9% 10%; - --sidebar-border: 220 13% 91%; - --sidebar-ring: 217.2 91.2% 59.8%; - } + :root { + --background: 0 0% 100%; + --foreground: 0 0% 3.9%; + --muted: 0 0% 96.1%; + --muted-foreground: 0 0% 45.1%; + --popover: 0 0% 100%; + --popover-foreground: 0 0% 3.9%; + --card: 0 0% 100%; + --card-foreground: 0 0% 3.9%; + --border: 0 0% 89.8%; + --input: 0 0% 89.8%; + --primary: 0 0% 9%; + --primary-foreground: 0 0% 98%; + --secondary: 0 0% 96.1%; + --secondary-foreground: 0 0% 9%; + --accent: 0 0% 96.1%; + --accent-foreground: 0 0% 9%; + --destructive: 0 72.2% 50.6%; + --destructive-foreground: 0 0% 98%; + --ring: 0 0% 3.9%; + --radius: 0.5rem; - .dark { - --background: 0 0% 3.9%; - --foreground: 0 0% 98%; - --muted: 0 0% 14.9%; - --muted-foreground: 0 0% 63.9%; - --popover: 0 0% 3.9%; - --popover-foreground: 0 0% 98%; - --card: 0 0% 3.9%; - --card-foreground: 0 0% 98%; - --border: 0 0% 14.9%; - --input: 0 0% 14.9%; - --primary: 0 0% 98%; - --primary-foreground: 0 0% 9%; - --secondary: 0 0% 14.9%; - --secondary-foreground: 0 0% 98%; - --accent: 0 0% 14.9%; - --accent-foreground: 0 0% 98%; - --destructive: 0 62.8% 30.6%; - --destructive-foreground: 0 0% 98%; - --ring: 0 0% 83.1%; - --sidebar-background: 240 5.9% 10%; - --sidebar-foreground: 240 4.8% 95.9%; - --sidebar-primary: 224.3 76.3% 48%; - --sidebar-primary-foreground: 0 0% 100%; - --sidebar-accent: 240 3.7% 15.9%; - --sidebar-accent-foreground: 240 4.8% 95.9%; - --sidebar-border: 240 3.7% 15.9%; - --sidebar-ring: 217.2 91.2% 59.8%; - } + --sidebar-background: 0 0% 98%; + --sidebar-foreground: 240 5.3% 26.1%; + --sidebar-primary: 240 5.9% 10%; + --sidebar-primary-foreground: 0 0% 98%; + --sidebar-accent: 240 4.8% 95.9%; + --sidebar-accent-foreground: 240 5.9% 10%; + --sidebar-border: 220 13% 91%; + --sidebar-ring: 217.2 91.2% 59.8%; + } + + .dark { + --background: 0 0% 3.9%; + --foreground: 0 0% 98%; + --muted: 0 0% 14.9%; + --muted-foreground: 0 0% 63.9%; + --popover: 0 0% 3.9%; + --popover-foreground: 0 0% 98%; + --card: 0 0% 3.9%; + --card-foreground: 0 0% 98%; + --border: 0 0% 14.9%; + --input: 0 0% 14.9%; + --primary: 0 0% 98%; + --primary-foreground: 0 0% 9%; + --secondary: 0 0% 14.9%; + --secondary-foreground: 0 0% 98%; + --accent: 0 0% 14.9%; + --accent-foreground: 0 0% 98%; + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 0 0% 98%; + --ring: 0 0% 83.1%; + + --sidebar-background: 240 5.9% 10%; + --sidebar-foreground: 240 4.8% 95.9%; + --sidebar-primary: 224.3 76.3% 48%; + --sidebar-primary-foreground: 0 0% 100%; + --sidebar-accent: 240 3.7% 15.9%; + --sidebar-accent-foreground: 240 4.8% 95.9%; + --sidebar-border: 240 3.7% 15.9%; + --sidebar-ring: 217.2 91.2% 59.8%; + } } @layer base { - * { - @apply border-border; - } - body { - @apply bg-background text-foreground; - } -} \ No newline at end of file + * { + @apply border-border; + } + body { + @apply bg-background text-foreground; + } +} diff --git a/apps/desktop/src/lib/cmds/builtin.ts b/apps/desktop/src/lib/cmds/builtin.ts index d17b71e..cb70ae6 100644 --- a/apps/desktop/src/lib/cmds/builtin.ts +++ b/apps/desktop/src/lib/cmds/builtin.ts @@ -4,12 +4,14 @@ import type { BuiltinCmd } from "@kksh/ui/types" import { getVersion } from "@tauri-apps/api/app" import { WebviewWindow } from "@tauri-apps/api/webviewWindow" import { exit } from "@tauri-apps/plugin-process" +import { dev } from "$app/environment" import { goto } from "$app/navigation" import { toast } from "svelte-sonner" +import { derived } from "svelte/store" import * as clipboard from "tauri-plugin-clipboard-api" import { v4 as uuidv4 } from "uuid" -export const builtinCmds: BuiltinCmd[] = [ +export const rawBuiltinCmds: BuiltinCmd[] = [ { name: "Store", iconifyIcon: "streamline:store-2-solid", @@ -95,7 +97,8 @@ export const builtinCmds: BuiltinCmd[] = [ url: "/troubleshooters/extension-window", title: "Extension Window Troubleshooter" }) - } + }, + keywords: ["extension", "window", "troubleshooter"] }, { name: "Extension Permission Inspector", @@ -104,7 +107,8 @@ export const builtinCmds: BuiltinCmd[] = [ function: async () => { appState.clearSearchTerm() goto("/extension/permission-inspector") - } + }, + keywords: ["extension"] }, { name: "Extension Loading Troubleshooter", @@ -113,7 +117,8 @@ export const builtinCmds: BuiltinCmd[] = [ function: async () => { appState.clearSearchTerm() goto("/troubleshooters/extension-loading") - } + }, + keywords: ["extension", "troubleshooter"] }, { name: "Create Quicklink", @@ -124,28 +129,15 @@ export const builtinCmds: BuiltinCmd[] = [ goto("/extension/create-quick-link") } }, - // { - // name: "Settings", - // iconifyIcon: "solar:settings-linear", - // description: "Open Settings", - // function: async () => { - // const windows = await getAllWebviewWindows() - // const found = windows.find((w) => w.label === SettingsWindowLabel) - // if (found) { - // ElNotification.error("Settings Page is already open") - // } else { - // const win = await newSettingsPage() - // setTimeout(() => { - // // this is a backup, if window is not properly loaded, - // // the show() will not be called within setting page, we call it here with a larger delay, - // // at least the window will be shown - // win.show() - // }, 800) - // } - // const appStateStore = useAppStateStore() - // appStateStore.setSearchTermSync("") - // } - // }, + { + name: "Settings", + iconifyIcon: "solar:settings-linear", + description: "Open Settings", + function: async () => { + goto("/settings") + appState.clearSearchTerm() + } + }, { name: "Check Update", iconifyIcon: "material-symbols:update", @@ -226,6 +218,18 @@ export const builtinCmds: BuiltinCmd[] = [ }, 2_000) } }, + { + name: "MDNS Debugger", + iconifyIcon: "material-symbols:wifi-find", + description: "MDNS Debugger", + function: async () => { + goto("/troubleshooters/mdns-debugger") + }, + flags: { + developer: true + }, + keywords: ["mdns", "debugger", "troubleshooter"] + }, { name: "Toggle Hide On Blur", iconifyIcon: "ri:toggle-line", @@ -240,5 +244,24 @@ export const builtinCmds: BuiltinCmd[] = [ }) appState.clearSearchTerm() } + }, + { + name: "Toggle Developer Mode", + iconifyIcon: "hugeicons:developer", + description: "Toggle Developer Mode", + function: async () => { + appConfig.update((config) => { + toast.success(`Developer Mode toggled to: ${!config.developerMode}`) + return { ...config, developerMode: !config.developerMode } + }) + } } -] +].map((cmd) => ({ ...cmd, id: uuidv4() })) + +export const builtinCmds = derived(appConfig, ($appConfig) => { + return rawBuiltinCmds.filter((cmd) => { + const passDeveloper = cmd.flags?.developer ? $appConfig.developerMode : true + const passDev = cmd.flags?.dev ? dev : true + return passDeveloper && passDev + }) +}) diff --git a/apps/desktop/src/lib/components/common/HotkeyInput.svelte b/apps/desktop/src/lib/components/common/HotkeyInput.svelte new file mode 100644 index 0000000..f29299e --- /dev/null +++ b/apps/desktop/src/lib/components/common/HotkeyInput.svelte @@ -0,0 +1,81 @@ + + +
{ + e.preventDefault() + onSubmit?.(Array.from(keys)) + }} +> + + { + recording = true + keys = [] + }} + onblur={() => (recording = false)} + /> + +
diff --git a/apps/desktop/src/lib/components/common/HotkeyInputPopover.svelte b/apps/desktop/src/lib/components/common/HotkeyInputPopover.svelte new file mode 100644 index 0000000..8bda438 --- /dev/null +++ b/apps/desktop/src/lib/components/common/HotkeyInputPopover.svelte @@ -0,0 +1,49 @@ + + + + + + {#if savedHotkey.length === 0} + Record Hotkey + {:else} + {keyCombToDisplay(savedHotkey)} + {/if} + + { + e.preventDefault() + console.log("inputRef", inputRef) + // inputRef?.focus() + }} + > + { + open = false + onSubmit(keys) + }} + /> + + diff --git a/apps/desktop/src/lib/components/common/sidebar-trigger.svelte b/apps/desktop/src/lib/components/common/sidebar-trigger.svelte new file mode 100644 index 0000000..9012ed3 --- /dev/null +++ b/apps/desktop/src/lib/components/common/sidebar-trigger.svelte @@ -0,0 +1,24 @@ + + +
+ + {#if sidebar.state === "collapsed"} + + {/if} +
+
diff --git a/apps/desktop/src/lib/components/standalone/settings/AddDevExtForm.svelte b/apps/desktop/src/lib/components/standalone/settings/AddDevExtForm.svelte index 53f66d3..83bf116 100644 --- a/apps/desktop/src/lib/components/standalone/settings/AddDevExtForm.svelte +++ b/apps/desktop/src/lib/components/standalone/settings/AddDevExtForm.svelte @@ -109,7 +109,7 @@ } -
+
diff --git a/apps/desktop/src/lib/components/standalone/settings/hotkey-pick.svelte b/apps/desktop/src/lib/components/standalone/settings/hotkey-pick.svelte new file mode 100644 index 0000000..0e42f29 --- /dev/null +++ b/apps/desktop/src/lib/components/standalone/settings/hotkey-pick.svelte @@ -0,0 +1,22 @@ + + + diff --git a/apps/desktop/src/lib/components/standalone/settings/install-npm-package-name-form.svelte b/apps/desktop/src/lib/components/standalone/settings/install-npm-package-name-form.svelte index 4cb78b5..02d7f2d 100644 --- a/apps/desktop/src/lib/components/standalone/settings/install-npm-package-name-form.svelte +++ b/apps/desktop/src/lib/components/standalone/settings/install-npm-package-name-form.svelte @@ -50,10 +50,10 @@ {#snippet children({ props })} - +
Install - +
{/snippet}
diff --git a/apps/desktop/src/lib/components/standalone/settings/install-tarball-url-form.svelte b/apps/desktop/src/lib/components/standalone/settings/install-tarball-url-form.svelte index a950a64..8fb26a1 100644 --- a/apps/desktop/src/lib/components/standalone/settings/install-tarball-url-form.svelte +++ b/apps/desktop/src/lib/components/standalone/settings/install-tarball-url-form.svelte @@ -51,10 +51,10 @@ {#snippet children({ props })} - +
Install - +
{/snippet}
diff --git a/apps/desktop/src/lib/stores/appConfig.ts b/apps/desktop/src/lib/stores/appConfig.ts index 78ebcd0..40bbb72 100644 --- a/apps/desktop/src/lib/stores/appConfig.ts +++ b/apps/desktop/src/lib/stores/appConfig.ts @@ -5,6 +5,7 @@ import { PersistedAppConfig, type AppConfig } from "@kksh/types" import { debug, error } from "@tauri-apps/plugin-log" import * as os from "@tauri-apps/plugin-os" import { load } from "@tauri-apps/plugin-store" +import { get } from "svelte/store" import * as v from "valibot" export const defaultAppConfig: AppConfig = { @@ -24,13 +25,16 @@ export const defaultAppConfig: AppConfig = { hideOnBlur: true, extensionAutoUpgrade: true, joinBetaProgram: false, - onBoarded: false + onBoarded: false, + developerMode: false } interface AppConfigAPI { init: () => Promise + get: () => AppConfig setTheme: (theme: ThemeConfig) => void setDevExtensionPath: (devExtensionPath: string | null) => void + setTriggerHotkey: (triggerHotkey: string[]) => void } function createAppConfig(): WithSyncStore & AppConfigAPI { @@ -67,11 +71,15 @@ function createAppConfig(): WithSyncStore & AppConfigAPI { return { ...store, + get: () => get(store), setTheme: (theme: ThemeConfig) => store.update((config) => ({ ...config, theme })), setDevExtensionPath: (devExtensionPath: string | null) => { console.log("setDevExtensionPath", devExtensionPath) store.update((config) => ({ ...config, devExtensionPath })) }, + setTriggerHotkey: (triggerHotkey: string[]) => { + store.update((config) => ({ ...config, triggerHotkey })) + }, init } } diff --git a/apps/desktop/src/lib/utils.ts b/apps/desktop/src/lib/utils.ts new file mode 100644 index 0000000..ac680b3 --- /dev/null +++ b/apps/desktop/src/lib/utils.ts @@ -0,0 +1,6 @@ +import { type ClassValue, clsx } from "clsx"; +import { twMerge } from "tailwind-merge"; + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)); +} diff --git a/apps/desktop/src/lib/utils/dom.ts b/apps/desktop/src/lib/utils/dom.ts index 36bcfa6..1502fac 100644 --- a/apps/desktop/src/lib/utils/dom.ts +++ b/apps/desktop/src/lib/utils/dom.ts @@ -1,3 +1,11 @@ export function getActiveElementNodeName(): string | undefined { return document.activeElement?.nodeName } + +export function isInputElement(element: HTMLElement): boolean { + return element instanceof HTMLInputElement || element instanceof HTMLTextAreaElement +} + +export function isKeyboardEventFromInputElement(e: KeyboardEvent): boolean { + return isInputElement(e.target as HTMLElement) +} diff --git a/apps/desktop/src/lib/utils/hotkey.ts b/apps/desktop/src/lib/utils/hotkey.ts new file mode 100644 index 0000000..5a134bc --- /dev/null +++ b/apps/desktop/src/lib/utils/hotkey.ts @@ -0,0 +1,58 @@ +import { getAllWindows } from "@tauri-apps/api/window" +import { isRegistered, register, unregister } from "@tauri-apps/plugin-global-shortcut" +import { debug, info } from "@tauri-apps/plugin-log" +import { sendNotificationWithPermission } from "./notification" + +/** + * Tauri global shortcut doesn't accept 'Meta' Key. This function maps browser detected keys to Tauri-accepted keys. + * @param key + */ +export function mapKeyToTauriKey(key: string): string { + if (key === "Meta") { + return "Command" + } + return key +} + +export async function registerAppHotkey(hotkeyStr: string) { + if (await isRegistered(hotkeyStr)) { + debug(`Hotkey (${hotkeyStr}) already registered`) + await unregister(hotkeyStr) + } + info(`Registering hotkey: ${hotkeyStr}`) + return register(hotkeyStr, async (e) => { + if (e.state === "Released") { + const wins = await getAllWindows() + const mainWin = wins.find((w) => w.label === "main") + if (!mainWin) { + return sendNotificationWithPermission( + "No main window found", + "Please open main window first" + ) + } + const isVisible = await mainWin.isVisible() + const isFocused = await mainWin.isFocused() + if (isVisible) { + if (isFocused) { + mainWin.hide() + } else { + mainWin.setFocus() + } + } else { + mainWin.show() + mainWin.setFocus() + } + } + }) +} + +export async function updateAppHotkey(newHotkey: string[], oldHotkey?: string[] | null) { + if (oldHotkey) { + const hotkeyStr = oldHotkey.map(mapKeyToTauriKey).join("+") + if (await isRegistered(hotkeyStr)) { + await unregister(hotkeyStr) + } + } + const hotkeyStr = newHotkey.map(mapKeyToTauriKey).join("+") + return registerAppHotkey(hotkeyStr) +} diff --git a/apps/desktop/src/lib/utils/js.ts b/apps/desktop/src/lib/utils/js.ts new file mode 100644 index 0000000..a2f99f6 --- /dev/null +++ b/apps/desktop/src/lib/utils/js.ts @@ -0,0 +1,52 @@ +export function setsEqual(set1: Set, set2: Set) { + if (set1.size !== set2.size) return false + for (let item of set1) { + if (!set2.has(item)) return false + } + return true +} + +export const keyToDisplayMap: Record = { + " ": "Space", + Enter: "↵", + ArrowUp: "↑", + ArrowDown: "↓", + ArrowLeft: "←", + ArrowRight: "→", + Escape: "Esc", + Meta: "⌘", + Control: "Ctrl", + Alt: "⌥", + Shift: "⇧" +} + +export function keyCodeToKey(keyCode: string): string { + if (keyCode.startsWith("Key")) { + return keyCode.slice(3) + } + if (keyCode.endsWith("Left")) { + return keyCode.slice(0, -4) + } + if (keyCode.startsWith("Digit")) { + return keyCode.slice(5) + } + if (keyCode.endsWith("Right")) { + return keyCode.slice(0, -5) + } + return keyCode +} + +export function keyToDisplay(keyCode: string): string { + const mappedChar = keyToDisplayMap[keyCodeToKey(keyCode)] + if (mappedChar) { + return mappedChar + } else { + return keyCode + } +} + +export function keyCombToDisplay(keyComb: string[]): string { + return keyComb.map(keyToDisplay).join("+") +} + +export const modifierKeySet = new Set(["Meta", "Shift", "Alt", "Control"]) diff --git a/apps/desktop/src/lib/utils/key.ts b/apps/desktop/src/lib/utils/key.ts index 61e9527..1b7458f 100644 --- a/apps/desktop/src/lib/utils/key.ts +++ b/apps/desktop/src/lib/utils/key.ts @@ -1,20 +1,30 @@ import { appState } from "@/stores" +import { toggleDevTools } from "@kksh/api/commands" +import { getCurrentWebviewWindow } from "@tauri-apps/api/webviewWindow" +import { getCurrentWindow } from "@tauri-apps/api/window" +import { platform } from "@tauri-apps/plugin-os" import { goto } from "$app/navigation" -import { goBack, goHome } from "./route" +import { isKeyboardEventFromInputElement } from "./dom" +import { modifierKeySet } from "./js" +import { goBack, goHome, goHomeOrCloseDependingOnWindow } from "./route" +import { isInMainWindow } from "./window" export function goHomeOnEscape(e: KeyboardEvent) { + console.log("goHomeOnEscape", e.key) if (e.key === "Escape") { goHome() } } export function goBackOnEscape(e: KeyboardEvent) { + console.log("goBackOnEscape", e.key) if (e.key === "Escape") { goBack() } } export function goBackOnEscapeClearSearchTerm(e: KeyboardEvent) { + console.log("goBackOnEscapeClearSearchTerm", e.key) if (e.key === "Escape") { if (appState.get().searchTerm) { appState.clearSearchTerm() @@ -25,6 +35,7 @@ export function goBackOnEscapeClearSearchTerm(e: KeyboardEvent) { } export function goHomeOnEscapeClearSearchTerm(e: KeyboardEvent) { + console.log("goHomeOnEscapeClearSearchTerm", e.key) if (e.key === "Escape") { if (appState.get().searchTerm) { appState.clearSearchTerm() @@ -33,3 +44,76 @@ export function goHomeOnEscapeClearSearchTerm(e: KeyboardEvent) { } } } + +export function goBackOrCloseOnEscape(e: KeyboardEvent) { + console.log("goBackOrCloseOnEscape", e.key) + if (e.key === "Escape") { + if (isInMainWindow()) { + goBack() + } else { + getCurrentWindow().close() + } + } +} + +export function goHomeOrCloseOnEscapeWithInput(e: KeyboardEvent) { + if (e.key === "Escape") { + if (isKeyboardEventFromInputElement(e)) { + const target = e.target as HTMLInputElement + if (target.value === "") { + goHomeOrCloseDependingOnWindow() + } else { + target.value = "" + } + } else { + goHomeOrCloseDependingOnWindow() + } + } +} + +export async function globalKeyDownHandler(e: KeyboardEvent) { + const _platform = platform() + if ((_platform === "macos" && e.metaKey) || (_platform === "windows" && e.ctrlKey)) { + if (e.key === ",") { + e.preventDefault() + goto("/settings") + } + } + // Toggle Devtools with control + shift + I + if (e.ctrlKey && e.shiftKey && e.key === "I") { + e.preventDefault() + toggleDevTools() + } + // Reload window with control + shift + R + if (e.ctrlKey && e.shiftKey && e.key === "R") { + e.preventDefault() + const appWin = getCurrentWebviewWindow() + await appWin.hide() + location.reload() + setTimeout(() => { + appWin.show() + }, 1_000) + } +} + +export function isLetter(letter: string): boolean { + if (letter.length != 1) return false + return letter.match(/[a-zA-Z]/) ? true : false +} + +export function isShortcut(letters: string[]): boolean { + // letters contain at least one modifier key and one non-modifier key + + let hasModifier = false + let hasNonModifier = false + + for (let letter of letters) { + if (modifierKeySet.has(letter)) { + hasModifier = true + } else { + hasNonModifier = true + } + } + + return hasModifier && hasNonModifier +} diff --git a/apps/desktop/src/lib/utils/notification.ts b/apps/desktop/src/lib/utils/notification.ts new file mode 100644 index 0000000..7d14986 --- /dev/null +++ b/apps/desktop/src/lib/utils/notification.ts @@ -0,0 +1,20 @@ +// import { notification } from "@kksh/api/ui" +import * as notification from "@tauri-apps/plugin-notification" + +export async function getNotificationPermission() { + let permissionGranted = await notification.isPermissionGranted() + + // If not we need to request it + if (!permissionGranted) { + const permission = await notification.requestPermission() + permissionGranted = permission === "granted" + } + return permissionGranted +} + +export async function sendNotificationWithPermission(title: string, body: string) { + const notificationGranted = await getNotificationPermission() + if (notificationGranted) { + notification.sendNotification({ title, body }) + } +} diff --git a/apps/desktop/src/lib/utils/route.ts b/apps/desktop/src/lib/utils/route.ts index e483218..24bd483 100644 --- a/apps/desktop/src/lib/utils/route.ts +++ b/apps/desktop/src/lib/utils/route.ts @@ -1,4 +1,6 @@ +import { getCurrentWindow } from "@tauri-apps/api/window" import { goto } from "$app/navigation" +import { isInMainWindow } from "./window" export function goBack() { window.history.back() @@ -7,3 +9,11 @@ export function goBack() { export function goHome() { goto("/") } + +export function goHomeOrCloseDependingOnWindow() { + if (isInMainWindow()) { + goHome() + } else { + getCurrentWindow().close() + } +} diff --git a/apps/desktop/src/routes/+layout.svelte b/apps/desktop/src/routes/+layout.svelte index e0dfed2..079021f 100644 --- a/apps/desktop/src/routes/+layout.svelte +++ b/apps/desktop/src/routes/+layout.svelte @@ -3,6 +3,9 @@ import "../app.css" import { appConfig, appState, extensions, quickLinks } from "@/stores" import { initDeeplink } from "@/utils/deeplink" + import { updateAppHotkey } from "@/utils/hotkey" + import { globalKeyDownHandler, goBackOrCloseOnEscape } from "@/utils/key" + import { listenToWindowBlur } from "@/utils/tauri-events" import { isInMainWindow } from "@/utils/window" import { ModeWatcher, @@ -12,15 +15,39 @@ updateTheme, type ThemeConfig } from "@kksh/svelte5" - import { ViewTransition } from "@kksh/ui" + import { Constants, ViewTransition } from "@kksh/ui" import type { UnlistenFn } from "@tauri-apps/api/event" + import { getCurrentWebviewWindow } from "@tauri-apps/api/webviewWindow" import { attachConsole } from "@tauri-apps/plugin-log" + import { afterNavigate, beforeNavigate } from "$app/navigation" + import { gsap } from "gsap" + import { Flip } from "gsap/Flip" import { onDestroy, onMount } from "svelte" - onMount(() => { - setTimeout(() => { - import("virtual:uno.css") - }, 1000) + /* -------------------------------------------------------------------------- */ + /* Gsap Flip Animation */ + /* -------------------------------------------------------------------------- */ + gsap.registerPlugin(Flip) + let flipState: Flip.FlipState + + beforeNavigate(() => { + flipState = Flip.getState( + `.${Constants.CLASSNAMES.EXT_LOGO}, .${Constants.CLASSNAMES.BACK_BUTTON}` + ) + }) + + afterNavigate(() => { + if (!flipState) { + return + } + + Flip.from(flipState, { + targets: `.${Constants.CLASSNAMES.EXT_LOGO}, .${Constants.CLASSNAMES.BACK_BUTTON}`, + duration: 0.5, + absolute: true, + scale: true, + ease: "ease-out" + }) }) let { children } = $props() @@ -29,12 +56,31 @@ onMount(async () => { attachConsole().then((unlistener) => unlisteners.push(unlistener)) initDeeplink().then((unlistener) => unlisteners.push(unlistener)) + quickLinks.init() appConfig.init() if (isInMainWindow()) { + if ($appConfig.triggerHotkey) { + updateAppHotkey($appConfig.triggerHotkey) + } + unlisteners.push( + await listenToWindowBlur(() => { + const win = getCurrentWebviewWindow() + win.isFocused().then((isFocused) => { + // this extra is focused check may be needed because blur event got triggered somehow when window show() + // for edge case: when settings page is opened and focused, switch to main window, the blur event is triggered for main window + if (!isFocused) { + if ($appConfig.hideOnBlur) { + win.hide() + } + } + }) + }) + ) extensions.init() } else { } + getCurrentWebviewWindow().show() }) onDestroy(() => { @@ -42,6 +88,7 @@ }) + diff --git a/apps/desktop/src/routes/+layout.ts b/apps/desktop/src/routes/+layout.ts index 028840b..703f971 100644 --- a/apps/desktop/src/routes/+layout.ts +++ b/apps/desktop/src/routes/+layout.ts @@ -1,4 +1,4 @@ -import { getExtensionsFolder } from "@/constants" +import { getExtensionsFolder, IS_IN_TAURI } from "@/constants" import type { LayoutLoad } from "./$types" // Tauri doesn't have a Node.js server to do proper SSR @@ -8,5 +8,5 @@ export const prerender = true export const ssr = false export const load: LayoutLoad = async () => { - return { extsInstallDir: await getExtensionsFolder() } + return { extsInstallDir: IS_IN_TAURI ? await getExtensionsFolder() : "" } } diff --git a/apps/desktop/src/routes/+page.svelte b/apps/desktop/src/routes/+page.svelte index be1be7f..ec0a512 100644 --- a/apps/desktop/src/routes/+page.svelte +++ b/apps/desktop/src/routes/+page.svelte @@ -5,8 +5,9 @@ import { systemCommands } from "@/cmds/system" import { appConfig, appState, devStoreExts, installedStoreExts, quickLinks } from "@/stores" import { cmdQueries } from "@/stores/cmdQuery" - import { getActiveElementNodeName } from "@/utils/dom" - import { openDevTools } from "@kksh/api/commands" + import { getActiveElementNodeName, isKeyboardEventFromInputElement } from "@/utils/dom" + import Icon from "@iconify/svelte" + import { openDevTools, toggleDevTools } from "@kksh/api/commands" import type { ExtPackageJsonExtra } from "@kksh/api/models" import { isExtPathInDev } from "@kksh/extension/utils" import { Button, Command, DropdownMenu } from "@kksh/svelte5" @@ -23,22 +24,29 @@ import { cn, commandScore } from "@kksh/ui/utils" import { getCurrentWebviewWindow } from "@tauri-apps/api/webviewWindow" import { exit } from "@tauri-apps/plugin-process" - import { EllipsisVerticalIcon } from "lucide-svelte" - import type { Writable } from "svelte/store" + import { CircleXIcon, EllipsisVerticalIcon, RefreshCcwIcon } from "lucide-svelte" + let inputEle: HTMLInputElement | null = null function onKeyDown(event: KeyboardEvent) { if (event.key === "Escape") { - if (getActiveElementNodeName() === "INPUT") { - ;(event.target as HTMLInputElement).value = "" - if ((event.target as HTMLInputElement | undefined)?.id === "main-command-input") { - $appState.searchTerm = "" - } - } + ;(event.target as HTMLInputElement).value = "" + $appState.searchTerm = "" } } - + { + if (e.key === "/") { + if (isKeyboardEventFromInputElement(e)) { + e.preventDefault() + } else { + e.preventDefault() + inputEle?.focus() + } + } + }} +/> {#snippet rightSlot()} - + - Settings - exit()}>Quit - openDevTools()}>Open Dev Tools - getCurrentWebviewWindow().hide()} - >Close Window exit()}> + + Quit + + getCurrentWebviewWindow().hide()}> + + Close Window + + + + + Developer + + + Toggle Devtools + ⌃+Shift+I + + location.reload()}> + + Reload Window + ⌃+Shift+R + + { + appConfig.update((config) => ({ ...config, hmr: !config.hmr })) + }} > + + Toggle Dev Extension HMR + @@ -123,7 +160,7 @@ /> {/if} - + diff --git a/apps/desktop/src/routes/extension/store/+layout.svelte b/apps/desktop/src/routes/extension/store/+layout.svelte index 965001f..8b08a63 100644 --- a/apps/desktop/src/routes/extension/store/+layout.svelte +++ b/apps/desktop/src/routes/extension/store/+layout.svelte @@ -1,31 +1,31 @@ diff --git a/apps/desktop/src/routes/extension/ui-worker/+page.svelte b/apps/desktop/src/routes/extension/ui-worker/+page.svelte index 2dffffc..4969a1d 100644 --- a/apps/desktop/src/routes/extension/ui-worker/+page.svelte +++ b/apps/desktop/src/routes/extension/ui-worker/+page.svelte @@ -56,11 +56,14 @@ let loaded = $state(false) async function goBack() { + console.log("goBack") if (isInMainWindow()) { + console.log("goBack in main window") // if in main window, then winExtMap store must contain this - winExtMap.unregisterExtensionFromWindow(appWin.label) + // winExtMap.unregisterExtensionFromWindow(appWin.label) goto("/") } else { + console.log("goBack in webview window") appWin.close() } } @@ -179,6 +182,7 @@ searchBarPlaceholder = placeholder }, async goBack() { + console.log("goBack in ui-worker") goBack() } } diff --git a/apps/desktop/src/routes/settings/+layout.svelte b/apps/desktop/src/routes/settings/+layout.svelte new file mode 100644 index 0000000..cc52a0c --- /dev/null +++ b/apps/desktop/src/routes/settings/+layout.svelte @@ -0,0 +1,18 @@ + + + + + + +
+ + {@render children?.()} +
+
diff --git a/apps/desktop/src/routes/settings/+page.svelte b/apps/desktop/src/routes/settings/+page.svelte new file mode 100644 index 0000000..cf5544f --- /dev/null +++ b/apps/desktop/src/routes/settings/+page.svelte @@ -0,0 +1,65 @@ + + +
+ +
    +
  • + Launch at Login + +
  • +
  • + Hotkey + + + +
  • +
  • + Menu Bar Icon + +
  • +
  • + Hide On Blur + +
  • +
  • + Extension Auto Upgrade + +
  • +
  • + Dev Extension HMR + +
  • +
  • + Join Beta Updates + +
  • + + +
+ {#if dev} + + {/if} +
+ + diff --git a/apps/desktop/src/routes/settings/about/+page.svelte b/apps/desktop/src/routes/settings/about/+page.svelte new file mode 100644 index 0000000..135bb24 --- /dev/null +++ b/apps/desktop/src/routes/settings/about/+page.svelte @@ -0,0 +1,59 @@ + + + +
+
+ Logo +
+

KunKun Shell

+

Version: {appVersion}

+

+ Author: + + @HuakunShen + + +

+ + Source Code + + + + Extensions Source Code + + + +
+
+
+
diff --git a/apps/desktop/src/routes/settings/add-dev-extension/+page.svelte b/apps/desktop/src/routes/settings/add-dev-extension/+page.svelte index e8d9d1b..0e77e62 100644 --- a/apps/desktop/src/routes/settings/add-dev-extension/+page.svelte +++ b/apps/desktop/src/routes/settings/add-dev-extension/+page.svelte @@ -3,10 +3,10 @@ import DevExtPathForm from "@/components/standalone/settings/DevExtPathForm.svelte" import { appConfig, extensions } from "@/stores" import { goBackOnEscape } from "@/utils/key" - import { goBack } from "@/utils/route" + import { goBack, goHome } from "@/utils/route" import * as extAPI from "@kksh/extension" import { installFromNpmPackageName } from "@kksh/extension" - import { Button, Separator } from "@kksh/svelte5" + import { Button, Separator, SideBar } from "@kksh/svelte5" import { StrikeSeparator } from "@kksh/ui" import { open as openFileSelector } from "@tauri-apps/plugin-dialog" import * as fs from "@tauri-apps/plugin-fs" @@ -14,18 +14,16 @@ import { ArrowLeftIcon } from "lucide-svelte" import { toast } from "svelte-sonner" import * as v from "valibot" + + const { useSidebar } = SideBar + const sidebar = useSidebar() - - -
-
+

Add Dev Extension

There are 4 options to install an extension in developer mode. Either load it from your local tarball file, a tarball remote URL, npm package name or load from a remote URL. - +
diff --git a/apps/desktop/src/routes/settings/developer/+page.svelte b/apps/desktop/src/routes/settings/developer/+page.svelte new file mode 100644 index 0000000..e69de29 diff --git a/apps/desktop/src/routes/settings/extensions/+page.svelte b/apps/desktop/src/routes/settings/extensions/+page.svelte new file mode 100644 index 0000000..e69de29 diff --git a/apps/desktop/src/routes/settings/set-dev-ext-path/+page.svelte b/apps/desktop/src/routes/settings/set-dev-ext-path/+page.svelte index 5d5d0ee..9636f4e 100644 --- a/apps/desktop/src/routes/settings/set-dev-ext-path/+page.svelte +++ b/apps/desktop/src/routes/settings/set-dev-ext-path/+page.svelte @@ -1,17 +1,8 @@ - - -
-
+

Set Dev Extension Path

This is where your extensions will be installed.

diff --git a/apps/desktop/src/routes/settings/sidebar.svelte b/apps/desktop/src/routes/settings/sidebar.svelte new file mode 100644 index 0000000..a5bfa86 --- /dev/null +++ b/apps/desktop/src/routes/settings/sidebar.svelte @@ -0,0 +1,90 @@ + + + + + + + + + + + + + Settings + + + {#each items as item (item.title)} + + { + currentItem = item + }} + > + {#snippet child({ props })} + + + {item.title} + + {/snippet} + + + {/each} + + + + + diff --git a/apps/desktop/src/routes/troubleshooters/+layout.svelte b/apps/desktop/src/routes/troubleshooters/+layout.svelte new file mode 100644 index 0000000..8972418 --- /dev/null +++ b/apps/desktop/src/routes/troubleshooters/+layout.svelte @@ -0,0 +1,18 @@ + + + + + + +
+ + {@render children?.()} +
+
diff --git a/apps/desktop/src/routes/troubleshooters/extension-loading/+page.svelte b/apps/desktop/src/routes/troubleshooters/extension-loading/+page.svelte index df4901d..43b31b6 100644 --- a/apps/desktop/src/routes/troubleshooters/extension-loading/+page.svelte +++ b/apps/desktop/src/routes/troubleshooters/extension-loading/+page.svelte @@ -77,12 +77,7 @@ }) - - -
-
+

Extension Loading Troubleshooter

diff --git a/apps/desktop/src/routes/troubleshooters/extension-window/+page.svelte b/apps/desktop/src/routes/troubleshooters/extension-window/+page.svelte index 08c0044..e6d4d1d 100644 --- a/apps/desktop/src/routes/troubleshooters/extension-window/+page.svelte +++ b/apps/desktop/src/routes/troubleshooters/extension-window/+page.svelte @@ -65,11 +65,7 @@ } - - -
+
diff --git a/apps/desktop/src/routes/troubleshooters/mdns-debugger/+page.svelte b/apps/desktop/src/routes/troubleshooters/mdns-debugger/+page.svelte new file mode 100644 index 0000000..a7305ba --- /dev/null +++ b/apps/desktop/src/routes/troubleshooters/mdns-debugger/+page.svelte @@ -0,0 +1,27 @@ + + +
+
+ +
{JSON.stringify(peers, null, 2)}
+
diff --git a/apps/desktop/src/routes/troubleshooters/sidebar.svelte b/apps/desktop/src/routes/troubleshooters/sidebar.svelte new file mode 100644 index 0000000..c4f16aa --- /dev/null +++ b/apps/desktop/src/routes/troubleshooters/sidebar.svelte @@ -0,0 +1,72 @@ + + + + + + + + + + + + + Settings + + + {#each items as item (item.title)} + + { + currentItem = item + }} + > + {#snippet child({ props })} + + + {item.title} + + {/snippet} + + + {/each} + + + + + diff --git a/apps/desktop/svelte.config.js b/apps/desktop/svelte.config.js index b626a71..44f109f 100644 --- a/apps/desktop/svelte.config.js +++ b/apps/desktop/svelte.config.js @@ -15,7 +15,7 @@ const config = { alias: { "@/*": "./src/lib/*", // "@kksh/ui/*": "../../packages/ui/*", - "@kksh/svelte5/*": "../../node_modules/@kksh/svelte5/src/lib/*" + // "@kksh/svelte5/*": "../../node_modules/@kksh/svelte5/src/lib/*" } } } diff --git a/apps/desktop/tailwind.config.ts b/apps/desktop/tailwind.config.ts index 95c4e88..9cc7699 100644 --- a/apps/desktop/tailwind.config.ts +++ b/apps/desktop/tailwind.config.ts @@ -8,7 +8,7 @@ const config: Config = { content: [ "./src/**/*.{html,js,svelte,ts}", "./node_modules/@kksh/ui/src/**/*.{html,js,svelte,ts}", - "../../node_modules/@kksh/svelte5/src/**/*.{html,js,svelte,ts}" + "../../node_modules/@kksh/svelte5/dist/**/*.{html,js,svelte,ts}" ], safelist: ["dark", "bg-red-500/30"], theme: { @@ -77,10 +77,10 @@ const config: Config = { keyframes: { "accordion-down": { from: { height: "0" }, - to: { height: "var(--radix-accordion-content-height)" } + to: { height: "var(--bits-accordion-content-height)" } }, "accordion-up": { - from: { height: "var(--radix-accordion-content-height)" }, + from: { height: "var(--bits-accordion-content-height)" }, to: { height: "0" } }, "caret-blink": { diff --git a/apps/desktop/uno.config.ts b/apps/desktop/uno.config.ts deleted file mode 100644 index 7ca4602..0000000 --- a/apps/desktop/uno.config.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { defineConfig, presetAttributify, presetTagify, presetUno } from "unocss" - -export default defineConfig({ - presets: [presetUno(), presetAttributify(), presetTagify()] -}) diff --git a/apps/desktop/vite.config.js b/apps/desktop/vite.config.js index 09ea201..c7490e5 100644 --- a/apps/desktop/vite.config.js +++ b/apps/desktop/vite.config.js @@ -1,5 +1,4 @@ import { sveltekit } from "@sveltejs/kit/vite" -import UnoCSS from "unocss/vite" import { defineConfig } from "vite" // @ts-expect-error process is a nodejs global @@ -7,7 +6,7 @@ const host = process.env.TAURI_DEV_HOST // https://vitejs.dev/config/ export default defineConfig(async () => ({ - plugins: [UnoCSS(), sveltekit()], + plugins: [sveltekit()], // Vite options tailored for Tauri development and only applied in `tauri dev` or `tauri build` // // 1. prevent vite from obscuring rust errors diff --git a/package.json b/package.json index 382d7fb..ce65e48 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "devDependencies": { "@ianvs/prettier-plugin-sort-imports": "^4.3.1", "@kksh/api": "workspace:*", - "@kksh/svelte5": "0.1.2-beta.8", + "@kksh/svelte5": "0.1.9", "prettier": "^3.2.5", "prettier-plugin-svelte": "^3.2.7", "prettier-plugin-tailwindcss": "^0.6.8", diff --git a/packages/tauri-plugins/jarvis/src/commands/discovery.rs b/packages/tauri-plugins/jarvis/src/commands/discovery.rs index 640d511..cbb744b 100644 --- a/packages/tauri-plugins/jarvis/src/commands/discovery.rs +++ b/packages/tauri-plugins/jarvis/src/commands/discovery.rs @@ -13,13 +13,15 @@ impl Peers { } pub fn remove_peer(&self, service_type: String, fullname: String) { - let peers = self.peers.lock().unwrap(); - // find the peer by service_type and fullname - let peer = peers + let peer = self + .peers + .lock() + .unwrap() .iter() - .find(|(_, peer)| peer.fullname == fullname && peer.service_type == service_type); - if let Some((hostname, _)) = peer { - self.peers.lock().unwrap().remove(hostname); + .find(|(_, peer)| peer.fullname == fullname && peer.service_type == service_type) + .map(|(hostname, _)| hostname.clone()); + if let Some(hostname) = peer { + self.peers.lock().unwrap().remove(&hostname); } } @@ -39,5 +41,6 @@ pub async fn get_peers( state: tauri::State<'_, Peers>, ) -> Result, String> { let _peers = state.peers.lock().unwrap(); + println!("get_peers: {:?}", _peers); Ok(_peers.to_owned()) } diff --git a/packages/tauri-plugins/jarvis/src/setup/peer_discovery.rs b/packages/tauri-plugins/jarvis/src/setup/peer_discovery.rs index d062560..82358b2 100644 --- a/packages/tauri-plugins/jarvis/src/setup/peer_discovery.rs +++ b/packages/tauri-plugins/jarvis/src/setup/peer_discovery.rs @@ -2,11 +2,13 @@ use crate::commands::discovery::Peers; use mdns_sd::ServiceEvent; use tauri::{AppHandle, Manager, Runtime}; use tauri_plugin_network::network::mdns::MdnsService; +use uuid::Uuid; pub fn setup_mdns(my_port: u16) -> anyhow::Result { - let mdns = MdnsService::new("tauri")?; + let mdns = MdnsService::new("kunkun")?; + let id = Uuid::new_v4(); mdns.register( - "tauridesktop", + &format!("desktop-{}", id), &MdnsService::get_default_ips_str(), my_port, None, @@ -23,13 +25,22 @@ pub fn handle_mdns_service_evt( tauri::async_runtime::spawn(async move { while let Ok(event) = rx.recv() { match event { + // ServiceEvent::ServiceResolved(info) => { + // log::info!("Service Resolved: {:?}", info); + // }, ServiceEvent::ServiceResolved(info) => { + log::info!("Service Resolved: {:?}", info); app_handle.state::().add_peer(info.into()); + let peers = app_handle.state::().peers.lock().unwrap().clone(); + log::info!("Peers: {:?}", peers); } ServiceEvent::ServiceRemoved(service_type, fullname) => { + log::info!("Service Removed: {:?} {:?}", service_type, fullname); app_handle .state::() .remove_peer(service_type, fullname); + let peers = app_handle.state::().peers.lock().unwrap().clone(); + log::info!("Peers: {:?}", peers); } _ => {} } diff --git a/packages/types/src/appConfig.ts b/packages/types/src/appConfig.ts index 289adc0..225a988 100644 --- a/packages/types/src/appConfig.ts +++ b/packages/types/src/appConfig.ts @@ -16,7 +16,8 @@ export const PersistedAppConfig = v.object({ hideOnBlur: v.boolean(), extensionAutoUpgrade: v.boolean(), joinBetaProgram: v.boolean(), - onBoarded: v.boolean() + onBoarded: v.boolean(), + developerMode: v.boolean() }) export type PersistedAppConfig = v.InferOutput diff --git a/packages/ui/package.json b/packages/ui/package.json index 1150566..bd35131 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -34,12 +34,11 @@ "lint": "eslint ." }, "devDependencies": { - "tauri-plugin-shellx-api": "^2.0.11", "@iconify/svelte": "^4.0.2", "@kksh/api": "workspace:*", - "@kksh/svelte5": "^0.1.2-beta.8", + "@kksh/svelte5": "^0.1.9", "@types/bun": "latest", - "bits-ui": "1.0.0-next.45", + "bits-ui": "1.0.0-next.49", "clsx": "^2.1.1", "formsnap": "2.0.0-next.1", "lucide-svelte": "^0.454.0", @@ -53,6 +52,7 @@ "tailwind-variants": "^0.2.1", "tailwindcss": "^3.4.14", "tailwindcss-animate": "^1.0.7", + "tauri-plugin-shellx-api": "^2.0.11", "zod": "^3.23.8" }, "dependencies": { diff --git a/packages/ui/src/components/code/shiki.svelte b/packages/ui/src/components/code/shiki.svelte index 6c3ed2b..6b7b0dd 100644 --- a/packages/ui/src/components/code/shiki.svelte +++ b/packages/ui/src/components/code/shiki.svelte @@ -3,7 +3,7 @@ diff --git a/packages/ui/src/components/common/index.ts b/packages/ui/src/components/common/index.ts index 92920a6..86e34dd 100644 --- a/packages/ui/src/components/common/index.ts +++ b/packages/ui/src/components/common/index.ts @@ -2,4 +2,5 @@ export { default as IconMultiplexer } from "./IconMultiplexer.svelte" export { default as IconSelector } from "./IconSelector.svelte" export { default as StrikeSeparator } from "./StrikeSeparator.svelte" export { default as LoadingBar } from "./LoadingBar.svelte" +export { default as TauriLink } from "./TauriLink.svelte" export * from "./date" diff --git a/packages/ui/src/components/extension/templates/MarkdownView.svelte b/packages/ui/src/components/extension/templates/MarkdownView.svelte index 296b5d8..8d3f695 100644 --- a/packages/ui/src/components/extension/templates/MarkdownView.svelte +++ b/packages/ui/src/components/extension/templates/MarkdownView.svelte @@ -23,6 +23,6 @@ -
+
diff --git a/packages/ui/src/components/extension/templates/form-view.svelte b/packages/ui/src/components/extension/templates/form-view.svelte index 7a3c040..9a3957e 100644 --- a/packages/ui/src/components/extension/templates/form-view.svelte +++ b/packages/ui/src/components/extension/templates/form-view.svelte @@ -16,4 +16,3 @@

{formViewContent.title}

- diff --git a/packages/ui/src/components/main/BuiltinCmds.svelte b/packages/ui/src/components/main/BuiltinCmds.svelte index 6ef23de..0c4c3a2 100644 --- a/packages/ui/src/components/main/BuiltinCmds.svelte +++ b/packages/ui/src/components/main/BuiltinCmds.svelte @@ -9,7 +9,7 @@ - {#each builtinCmds as cmd} + {#each builtinCmds as cmd (cmd.id)} { @@ -19,6 +19,7 @@ cmdName: cmd.name, cmdType: CmdTypeEnum.Builtin } satisfies CmdValue)} + keywords={cmd.keywords} > {cmd.name} + {/each} diff --git a/packages/ui/src/components/main/GlobalCommandPaletteFooter.svelte b/packages/ui/src/components/main/GlobalCommandPaletteFooter.svelte index b8f20c6..8edfd8f 100644 --- a/packages/ui/src/components/main/GlobalCommandPaletteFooter.svelte +++ b/packages/ui/src/components/main/GlobalCommandPaletteFooter.svelte @@ -25,8 +25,12 @@ data-tauri-drag-region class={cn("h-12 select-none items-center justify-between gap-4 border-t px-2", className)} > - - + + {#if defaultAction} diff --git a/packages/ui/src/components/main/types.ts b/packages/ui/src/components/main/types.ts index fe12236..a16d685 100644 --- a/packages/ui/src/components/main/types.ts +++ b/packages/ui/src/components/main/types.ts @@ -8,10 +8,16 @@ import { import * as v from "valibot" export type BuiltinCmd = { + id: string name: string description: string iconifyIcon: string + keywords?: string[] function: () => Promise + flags?: { + dev?: boolean // commands only available in dev mode + developer?: boolean // commands only available in developer mode + } } export type OnExtCmdSelect = ( diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0058baf..5deabfe 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -88,8 +88,8 @@ importers: specifier: workspace:* version: link:packages/api '@kksh/svelte5': - specifier: 0.1.2-beta.8 - version: 0.1.2-beta.8(lucide-svelte@0.454.0(svelte@5.1.9))(svelte-sonner@0.3.28(svelte@5.1.9))(svelte@5.1.9) + specifier: 0.1.9 + version: 0.1.9(lucide-svelte@0.456.0(svelte@5.1.9))(svelte-sonner@0.3.28(svelte@5.1.9))(svelte@5.1.9) prettier: specifier: ^3.2.5 version: 3.3.3 @@ -135,21 +135,18 @@ importers: '@std/semver': specifier: npm:@jsr/std__semver@^1.0.3 version: '@jsr/std__semver@1.0.3' + '@tanstack/table-core': + specifier: ^8.20.5 + version: 8.20.5 '@tauri-apps/api': - specifier: ^2 - version: 2.0.3 + specifier: ^2.1.0 + version: 2.1.0 '@tauri-apps/plugin-shell': specifier: ^2 version: 2.0.1 - bits-ui: - specifier: 1.0.0-next.36 - version: 1.0.0-next.36(svelte@5.1.9) gsap: specifier: ^3.12.5 version: 3.12.5 - lucide-svelte: - specifier: ^0.454.0 - version: 0.454.0(svelte@5.1.9) lz-string: specifier: ^1.5.0 version: 1.5.0 @@ -159,31 +156,28 @@ importers: semver: specifier: ^7.6.3 version: 7.6.3 - svelte-radix: - specifier: ^2.0.1 - version: 2.0.1(svelte@5.1.9) svelte-sonner: specifier: ^0.3.28 version: 0.3.28(svelte@5.1.9) sveltekit-superforms: specifier: ^2.20.0 - version: 2.20.0(@sveltejs/kit@2.7.4(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(@types/json-schema@7.0.15)(svelte@5.1.9)(typescript@5.6.3) + version: 2.20.0(@sveltejs/kit@2.8.0(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(@types/json-schema@7.0.15)(svelte@5.1.9)(typescript@5.6.3) tauri-plugin-clipboard-api: specifier: ^2.1.11 version: 2.1.11(typescript@5.6.3) uuid: - specifier: ^11.0.2 - version: 11.0.2 + specifier: ^11.0.3 + version: 11.0.3 devDependencies: '@kksh/types': specifier: workspace:* version: link:../../packages/types '@sveltejs/adapter-static': specifier: ^3.0.6 - version: 3.0.6(@sveltejs/kit@2.7.4(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0))) + version: 3.0.6(@sveltejs/kit@2.8.0(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0))) '@sveltejs/kit': - specifier: ^2.7.4 - version: 2.7.4(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)) + specifier: ^2.8.0 + version: 2.8.0(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)) '@sveltejs/vite-plugin-svelte': specifier: ^4.0.0 version: 4.0.0(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)) @@ -200,20 +194,20 @@ importers: specifier: ^0.5.15 version: 0.5.15(tailwindcss@3.4.14) '@tauri-apps/cli': - specifier: ^2.0.4 - version: 2.0.4 + specifier: ^2.1.0 + version: 2.1.0 '@types/bun': specifier: latest version: 1.1.13 '@types/semver': specifier: ^7.5.8 version: 7.5.8 - '@unocss/preset-attributify': - specifier: ^0.64.0 - version: 0.64.0 autoprefixer: specifier: ^10.4.20 version: 10.4.20(postcss@8.4.47) + bits-ui: + specifier: 1.0.0-next.49 + version: 1.0.0-next.49(svelte@5.1.9) clsx: specifier: ^2.1.1 version: 2.1.1 @@ -222,7 +216,13 @@ importers: version: 8.3.1(svelte@5.1.9) formsnap: specifier: ^1.0.1 - version: 1.0.1(svelte@5.1.9)(sveltekit-superforms@2.20.0(@sveltejs/kit@2.7.4(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(@types/json-schema@7.0.15)(svelte@5.1.9)(typescript@5.6.3)) + version: 1.0.1(svelte@5.1.9)(sveltekit-superforms@2.20.0(@sveltejs/kit@2.8.0(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(@types/json-schema@7.0.15)(svelte@5.1.9)(typescript@5.6.3)) + lucide-svelte: + specifier: ^0.456.0 + version: 0.456.0(svelte@5.1.9) + svelte-radix: + specifier: ^2.0.1 + version: 2.0.1(svelte@5.1.9) tailwind-merge: specifier: ^2.5.4 version: 2.5.4 @@ -241,9 +241,6 @@ importers: typescript: specifier: ^5.6.3 version: 5.6.3 - unocss: - specifier: ^0.64.0 - version: 0.64.0(postcss@8.4.47)(rollup@4.24.3)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3)) vaul-svelte: specifier: ^0.3.2 version: 0.3.2(svelte@5.1.9) @@ -541,20 +538,20 @@ importers: specifier: workspace:* version: link:../api '@kksh/svelte5': - specifier: ^0.1.2-beta.8 - version: 0.1.2-beta.8(lucide-svelte@0.454.0(svelte@5.1.9))(svelte-sonner@0.3.28(svelte@5.1.9))(svelte@5.1.9) + specifier: ^0.1.9 + version: 0.1.9(lucide-svelte@0.454.0(svelte@5.1.9))(svelte-sonner@0.3.28(svelte@5.1.9))(svelte@5.1.9) '@types/bun': specifier: latest version: 1.1.13 bits-ui: - specifier: 1.0.0-next.45 - version: 1.0.0-next.45(svelte@5.1.9) + specifier: 1.0.0-next.49 + version: 1.0.0-next.49(svelte@5.1.9) clsx: specifier: ^2.1.1 version: 2.1.1 formsnap: specifier: 2.0.0-next.1 - version: 2.0.0-next.1(svelte@5.1.9)(sveltekit-superforms@2.20.0(@sveltejs/kit@2.7.4(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(@types/json-schema@7.0.15)(svelte@5.1.9)(typescript@5.6.3)) + version: 2.0.0-next.1(svelte@5.1.9)(sveltekit-superforms@2.20.0(@sveltejs/kit@2.8.0(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(@types/json-schema@7.0.15)(svelte@5.1.9)(typescript@5.6.3)) lucide-svelte: specifier: ^0.454.0 version: 0.454.0(svelte@5.1.9) @@ -575,7 +572,7 @@ importers: version: 0.3.28(svelte@5.1.9) sveltekit-superforms: specifier: ^2.20.0 - version: 2.20.0(@sveltejs/kit@2.7.4(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(@types/json-schema@7.0.15)(svelte@5.1.9)(typescript@5.6.3) + version: 2.20.0(@sveltejs/kit@2.8.0(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(@types/json-schema@7.0.15)(svelte@5.1.9)(typescript@5.6.3) tailwind-merge: specifier: ^2.5.4 version: 2.5.4 @@ -668,12 +665,6 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@antfu/install-pkg@0.4.1': - resolution: {integrity: sha512-T7yB5QNG29afhWVkVq7XeIMBa5U/vs9mX69YqayXypPRmYzUmzwnYltplHmPtZ4HPCn+sQKeXW8I47wCbuBOjw==} - - '@antfu/utils@0.7.10': - resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} - '@ark/schema@0.10.0': resolution: {integrity: sha512-zpfXwWLOzj9aUK+dXQ6aleJAOgle4/WrHDop5CMX2M88dFQ85NdH8O0v0pvMAQnfFcaQAZ/nVDYLlBJsFc09XA==} @@ -980,12 +971,6 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.23.1': - resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - '@esbuild/aix-ppc64@0.24.0': resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==} engines: {node: '>=18'} @@ -998,12 +983,6 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.23.1': - resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm64@0.24.0': resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==} engines: {node: '>=18'} @@ -1016,12 +995,6 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.23.1': - resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - '@esbuild/android-arm@0.24.0': resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==} engines: {node: '>=18'} @@ -1034,12 +1007,6 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.23.1': - resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - '@esbuild/android-x64@0.24.0': resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==} engines: {node: '>=18'} @@ -1052,12 +1019,6 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.23.1': - resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-arm64@0.24.0': resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==} engines: {node: '>=18'} @@ -1070,12 +1031,6 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.23.1': - resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - '@esbuild/darwin-x64@0.24.0': resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==} engines: {node: '>=18'} @@ -1088,12 +1043,6 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.23.1': - resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-arm64@0.24.0': resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==} engines: {node: '>=18'} @@ -1106,12 +1055,6 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.23.1': - resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - '@esbuild/freebsd-x64@0.24.0': resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==} engines: {node: '>=18'} @@ -1124,12 +1067,6 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.23.1': - resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm64@0.24.0': resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==} engines: {node: '>=18'} @@ -1142,12 +1079,6 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.23.1': - resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - '@esbuild/linux-arm@0.24.0': resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==} engines: {node: '>=18'} @@ -1160,12 +1091,6 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.23.1': - resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-ia32@0.24.0': resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==} engines: {node: '>=18'} @@ -1178,12 +1103,6 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.23.1': - resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-loong64@0.24.0': resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==} engines: {node: '>=18'} @@ -1196,12 +1115,6 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.23.1': - resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-mips64el@0.24.0': resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==} engines: {node: '>=18'} @@ -1214,12 +1127,6 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.23.1': - resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-ppc64@0.24.0': resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==} engines: {node: '>=18'} @@ -1232,12 +1139,6 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.23.1': - resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-riscv64@0.24.0': resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==} engines: {node: '>=18'} @@ -1250,12 +1151,6 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.23.1': - resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-s390x@0.24.0': resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==} engines: {node: '>=18'} @@ -1268,12 +1163,6 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.23.1': - resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - '@esbuild/linux-x64@0.24.0': resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==} engines: {node: '>=18'} @@ -1286,24 +1175,12 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.23.1': - resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - '@esbuild/netbsd-x64@0.24.0': resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.23.1': - resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - '@esbuild/openbsd-arm64@0.24.0': resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==} engines: {node: '>=18'} @@ -1316,12 +1193,6 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.23.1': - resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - '@esbuild/openbsd-x64@0.24.0': resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==} engines: {node: '>=18'} @@ -1334,12 +1205,6 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.23.1': - resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - '@esbuild/sunos-x64@0.24.0': resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==} engines: {node: '>=18'} @@ -1352,12 +1217,6 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.23.1': - resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-arm64@0.24.0': resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==} engines: {node: '>=18'} @@ -1370,12 +1229,6 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.23.1': - resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-ia32@0.24.0': resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==} engines: {node: '>=18'} @@ -1388,12 +1241,6 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.23.1': - resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - '@esbuild/win32-x64@0.24.0': resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==} engines: {node: '>=18'} @@ -1480,9 +1327,6 @@ packages: '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} - '@iconify/utils@2.1.33': - resolution: {integrity: sha512-jP9h6v/g0BIZx0p7XGJJVtkVnydtbgTgt9mVNcGDYwaa7UhdHdI9dvoq+gKj9sijMSJKxUPEG2JyjsgXjxL7Kw==} - '@internationalized/date@3.5.6': resolution: {integrity: sha512-jLxQjefH9VI5P9UQuqB6qNKnvFt1Ky1TPIzHGsIlCi7sZZoMR8SdYbBGRvM0y+Jtb+ez4ieBzmiAUcpmPYpyOw==} @@ -1524,8 +1368,8 @@ packages: '@jsr/std__semver@1.0.3': resolution: {integrity: sha512-d1uBT0Muxhd3yBIw9ZE1Q/4N1Y0td0EJe1AqwM3hP05IMwaWQV/miksQOPR3rup3bVovuIvqBm7WJcoUripdQA==, tarball: https://npm.jsr.io/~/11/@jsr/std__semver/1.0.3.tgz} - '@kksh/svelte5@0.1.2-beta.8': - resolution: {integrity: sha512-cXReqYbZ/KXICucNREz6T/1DguTlGjvkq2qlUriYH/lgfgsUjbq8ZPhVsCIb0qlDT9IYIu5Pc/8X+azGqFirRA==} + '@kksh/svelte5@0.1.9': + resolution: {integrity: sha512-k6NNyLHCfoC1XQ09dWBtZJDYOLJiXZ9KxmSwtZbu4rdepoY0tMYql+odj92w2tjhzM6Q/LHdtq6DNz67Fxf20Q==} peerDependencies: lucide-svelte: ^0.454.0 svelte: ^5.1.10 @@ -1964,8 +1808,8 @@ packages: peerDependencies: '@sveltejs/kit': ^2.0.0 - '@sveltejs/kit@2.7.4': - resolution: {integrity: sha512-3DOPQYck3CpAmPgGq/HuhJMCCz8GF0ukbompPJQ2zShoSzrEKW9iG/l0nZmaxMvuOO3NNLmZj8F3W9uzqmkNdw==} + '@sveltejs/kit@2.8.0': + resolution: {integrity: sha512-HCiWupCuKJQ3aPaC4Xc6lpPdjOOnoGzEiYjOqMqppdtfGtY2ABrx932Vw66ZwS2RGXc0BmZvFvNq5SzqlmDVLg==} engines: {node: '>=18.13'} hasBin: true peerDependencies: @@ -2011,6 +1855,10 @@ packages: peerDependencies: tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20' + '@tanstack/table-core@8.20.5': + resolution: {integrity: sha512-P9dF7XbibHph2PFRz8gfBKEXEY/HJPOhym8CHmjF8y3q5mWpKx9xtZapXQUWCgkqvsK0R46Azuz+VaxD4Xl+Tg==} + engines: {node: '>=12'} + '@tauri-apps/api@2.0.0-rc.3': resolution: {integrity: sha512-k1erUfnoOFJwL5VNFZz0BQZ2agNstG7CNOjwpdWMl1vOaVuSn4DhJtXB0Deh9lZaaDlfrykKOyZs9c3XXpMi5Q==} @@ -2020,71 +1868,139 @@ packages: '@tauri-apps/api@2.0.3': resolution: {integrity: sha512-840qk6n8rbXBXMA5/aAgTYsg5JAubKO0nXw5wf7IzGnUuYKGbB4oFBIZtXOIWy+E0kNTDI3qhq5iqsoMJfwp8g==} + '@tauri-apps/api@2.1.0': + resolution: {integrity: sha512-1w/JygZOiUtdOU7qart78MaB4/qayZ2heB793KhbZRS7I9q4sxXcXaB7He6uFlprD8w5TI9P8HCuEByCvWRtfw==} + '@tauri-apps/cli-darwin-arm64@2.0.4': resolution: {integrity: sha512-siH7rOHobb16rPbc11k64p1mxIpiRCkWmzs2qmL5IX21Gx9K5onI3Tk67Oqpf2uNupbYzItrOttaDT4NHFC7tw==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] + '@tauri-apps/cli-darwin-arm64@2.1.0': + resolution: {integrity: sha512-ESc6J6CE8hl1yKH2vJ+ALF+thq4Be+DM1mvmTyUCQObvezNCNhzfS6abIUd3ou4x5RGH51ouiANeT3wekU6dCw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + '@tauri-apps/cli-darwin-x64@2.0.4': resolution: {integrity: sha512-zIccfbCoZMfmUpnk6PFCV0keFyfVj1A9XV3Oiiitj/dkTZ9CQvzjhX3XC0XcK4rsTWegfr2PjSrK06aiPAROAw==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] + '@tauri-apps/cli-darwin-x64@2.1.0': + resolution: {integrity: sha512-TasHS442DFs8cSH2eUQzuDBXUST4ECjCd0yyP+zZzvAruiB0Bg+c8A+I/EnqCvBQ2G2yvWLYG8q/LI7c87A5UA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + '@tauri-apps/cli-linux-arm-gnueabihf@2.0.4': resolution: {integrity: sha512-fgQqJzefOGWCBNg4yrVA82Rg4s1XQr5K0dc2rCxBhJfa696e8dQ1LDrnWq/AiO5r+uHfVaoQTIUvxxpFicYRSA==} engines: {node: '>= 10'} cpu: [arm] os: [linux] + '@tauri-apps/cli-linux-arm-gnueabihf@2.1.0': + resolution: {integrity: sha512-aP7ZBGNL4ny07Cbb6kKpUOSrmhcIK2KhjviTzYlh+pPhAptxnC78xQGD3zKQkTi2WliJLPmBYbOHWWQa57lQ9w==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + '@tauri-apps/cli-linux-arm64-gnu@2.0.4': resolution: {integrity: sha512-u8wbt5tPA9pI6j+d7jGrfOz9UVCiTp+IYzKNiIqlrDsAjqAUFaNXYHKqOUboeFWEmI4zoCWj6LgpS2OJTQ5FKg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + '@tauri-apps/cli-linux-arm64-gnu@2.1.0': + resolution: {integrity: sha512-ZTdgD5gLeMCzndMT2f358EkoYkZ5T+Qy6zPzU+l5vv5M7dHVN9ZmblNAYYXmoOuw7y+BY4X/rZvHV9pcGrcanQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + '@tauri-apps/cli-linux-arm64-musl@2.0.4': resolution: {integrity: sha512-hntF1V8e3V1hlrESm93PsghDhf3lA5pbvFrRfYxU1c+fVD/jRXGVw8BH3O1lW8MWwhEg1YdhKk01oAgsuHLuig==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + '@tauri-apps/cli-linux-arm64-musl@2.1.0': + resolution: {integrity: sha512-NzwqjUCilhnhJzusz3d/0i0F1GFrwCQbkwR6yAHUxItESbsGYkZRJk0yMEWkg3PzFnyK4cWTlQJMEU52TjhEzA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + '@tauri-apps/cli-linux-x64-gnu@2.0.4': resolution: {integrity: sha512-Iq1GGJb+oT1T0ZV8izrgf0cBtlzPCJaWcNueRbf1ZXquMf+FSTyQv+/Lo8rq5T6buOIJOH7cAOTuEWWqiCZteg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + '@tauri-apps/cli-linux-x64-gnu@2.1.0': + resolution: {integrity: sha512-TyiIpMEtZxNOQmuFyfJwaaYbg3movSthpBJLIdPlKxSAB2BW0VWLY3/ZfIxm/G2YGHyREkjJvimzYE0i37PnMA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + '@tauri-apps/cli-linux-x64-musl@2.0.4': resolution: {integrity: sha512-9NTk6Pf0bSwXqCBdAA+PDYts9HeHebZzIo8mbRzRyUbER6QngG5HZb9Ka36Z1QWtJjdRy6uxSb4zb/9NuTeHfA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + '@tauri-apps/cli-linux-x64-musl@2.1.0': + resolution: {integrity: sha512-/dQd0TlaxBdJACrR72DhynWftzHDaX32eBtS5WBrNJ+nnNb+znM3gON6nJ9tSE9jgDa6n1v2BkI/oIDtypfUXw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + '@tauri-apps/cli-win32-arm64-msvc@2.0.4': resolution: {integrity: sha512-OF2e9oxiBFR8A8wVMOhUx9QGN/I1ZkquWC7gVQBnA56nx9PabJlDT08QBy5UD8USqZFVznnfNr2ehlheQahb3g==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] + '@tauri-apps/cli-win32-arm64-msvc@2.1.0': + resolution: {integrity: sha512-NdQJO7SmdYqOcE+JPU7bwg7+odfZMWO6g8xF9SXYCMdUzvM2Gv/AQfikNXz5yS7ralRhNFuW32i5dcHlxh4pDg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + '@tauri-apps/cli-win32-ia32-msvc@2.0.4': resolution: {integrity: sha512-T+hCKB3rFP6q0saHHtR02hm6wr1ZPJ0Mkii3oRTxjPG6BBXoVzHNCYzvdgEGJPTA2sFuAQtJH764NRtNlDMifw==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] + '@tauri-apps/cli-win32-ia32-msvc@2.1.0': + resolution: {integrity: sha512-f5h8gKT/cB8s1ticFRUpNmHqkmaLutT62oFDB7N//2YTXnxst7EpMIn1w+QimxTvTk2gcx6EcW6bEk/y2hZGzg==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + '@tauri-apps/cli-win32-x64-msvc@2.0.4': resolution: {integrity: sha512-GVaiI3KWRFLomjJmApHqihhYlkJ+7FqhumhVfBO6Z2tWzZjQyVQgTdNp0kYEuW2WoAYEj0dKY6qd4YM33xYcUA==} engines: {node: '>= 10'} cpu: [x64] os: [win32] + '@tauri-apps/cli-win32-x64-msvc@2.1.0': + resolution: {integrity: sha512-P/+LrdSSb5Xbho1LRP4haBjFHdyPdjWvGgeopL96OVtrFpYnfC+RctB45z2V2XxqFk3HweDDxk266btjttfjGw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + '@tauri-apps/cli@2.0.4': resolution: {integrity: sha512-Hl9eFXz+O366+6su9PfaSzu2EJdFe1p8K8ghkWmi40dz8VmSE7vsMTaOStD0I71ckSOkh2ICDX7FQTBgjlpjWw==} engines: {node: '>= 10'} hasBin: true + '@tauri-apps/cli@2.1.0': + resolution: {integrity: sha512-K2VhcKqBhAeS5pNOVdnR/xQRU6jwpgmkSL2ejHXcl0m+kaTggT0WRDQnFtPq6NljA7aE03cvwsbCAoFG7vtkJw==} + engines: {node: '>= 10'} + hasBin: true + '@tauri-apps/plugin-deep-link@2.0.0': resolution: {integrity: sha512-cDa2k1OrRU5DoKc0IXl1Y8RlFOU107u2phdZfT7FkApsC6TL/VAPs3YOUTT8p9/PZ50EjOKP104HFMqVqnQ0bw==} @@ -2277,86 +2193,6 @@ packages: '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - '@unocss/astro@0.64.0': - resolution: {integrity: sha512-4Ijf3cQblSjdC3XV4SvzkEj17z6gNsuMGy7M+TvNN4cZhGLWQCIChtHR525ESGxJ4kdZ6FoIUoxmLdWHMOpX4Q==} - peerDependencies: - vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 - peerDependenciesMeta: - vite: - optional: true - - '@unocss/cli@0.64.0': - resolution: {integrity: sha512-xfY/qm7vr/4Qaf+CcQHuBJSg5ApZBvvGVD1zwyGFgfhfOFYR1hI3DS2zl75zav6btEwwXsjY7AUv6uYGF4M7dA==} - engines: {node: '>=14'} - hasBin: true - - '@unocss/config@0.64.0': - resolution: {integrity: sha512-L97x4vEk7jNG5ptZY5Xp0xgEk//tbMpQVm2BzfyL7w+Hg8X3AV4YjFL6hysHvpYiTdUCVaZg+S0s3b7wuj8Mqw==} - engines: {node: '>=14'} - - '@unocss/core@0.64.0': - resolution: {integrity: sha512-Qb8wWPYNlTagCdJGzULew+e3NMM8Bd7fr38lDLgrMj+njop+wzkSe1ZZOyMMH9yHSq/Rznn5eCjnyzyHwxGslQ==} - - '@unocss/extractor-arbitrary-variants@0.64.0': - resolution: {integrity: sha512-oVB8l8zM+x0MQJTkraRcsrfJnWEwyPVgMgtzmNUm//HqV+xTrjZCNtOqHFNIZdj/+w0gkErGQLxzRwyPjlHq4g==} - - '@unocss/inspector@0.64.0': - resolution: {integrity: sha512-aFEfxEuPOpbPNH3j1CLLnN7ZyZkc64XoxZbz7RbG20Wy5oJxonOnlu+Wikz9SfGvIyF16MVAMCkHu12WFRRC+g==} - - '@unocss/postcss@0.64.0': - resolution: {integrity: sha512-OMDhAUDEzbb7i+fcYEYNxwdWJLSYklMrFGSC60ADK96UPX/B9S0z1pBz7N34DRPPIzg6shO6NQfDHOaxLelAeg==} - engines: {node: '>=14'} - peerDependencies: - postcss: ^8.4.21 - - '@unocss/preset-attributify@0.64.0': - resolution: {integrity: sha512-3T1mktq5rAQxHXtdLkjjj1UOjPwy9iGbVUChvxyaGV5oOsj1mvfe1oetxz8HqAVQak8MtvsJzFzvuuQQln/6OA==} - - '@unocss/preset-icons@0.64.0': - resolution: {integrity: sha512-jhozA4r583agZZpKttdootaWfvQ29lY/kHxNU1Ah2xeRQcVXXEh7M3cG0bo9HSIX9/BgXSk5rWQlqSPIqFl4Lw==} - - '@unocss/preset-mini@0.64.0': - resolution: {integrity: sha512-bc7zanalVQUrETJ06eyS7y/lhceRlY8kBG/lRCV/dYmKl4Ho/s57LrpZH0G63OcO6IfWIjwoZHVC8/RHAqnYvQ==} - - '@unocss/preset-tagify@0.64.0': - resolution: {integrity: sha512-WlRQXYgtVzJpVlZ+itXhrQyvMj6XW1InNIfvAHMorr5BGvMGETLRnuWwYYhGg2YDF/g+/EucU5PQmk9UkurBzg==} - - '@unocss/preset-typography@0.64.0': - resolution: {integrity: sha512-hMKxhHTRUjvwB0gcdWOh6zWWolH9pvIvgB4p2GaFT1vKyFD0wkTZ/7S/Q3OMKJyevSKHyIgKd+PhNGKTx5FuQQ==} - - '@unocss/preset-uno@0.64.0': - resolution: {integrity: sha512-gUmuL8anty551r/Q2XU5wc0aNZ+te4yydnamXHSUv3EkX6PCphOaiWsQ5f95fj26G8EYH9fLBvxqXurFBPM7og==} - - '@unocss/preset-web-fonts@0.64.0': - resolution: {integrity: sha512-qraIhS0tCFHvdPQnzGTfi/dggwyboWPU8UQn8oLMsmPKogNPsYQfjrtTZs8X6F1KNaPV18c6saaWYvVZ8tXPoA==} - - '@unocss/preset-wind@0.64.0': - resolution: {integrity: sha512-cJbZI4etFrIIQoC1VhRqyEZU5fUaYqOH3uIt5lM3osxBdAvHds7SPjLRbdR612US7JbuPeFhMMRnA1EYoo39sQ==} - - '@unocss/reset@0.64.0': - resolution: {integrity: sha512-75SiDtRX/mtg/7GWeoLfDfdWF4z59zF1XesL46FNd2hDZL36a+SZHIKB/J+PPzLyX9irqm3mAETS2PNfynuJpA==} - - '@unocss/rule-utils@0.64.0': - resolution: {integrity: sha512-R5b/uspq6XsmpEqhxSzOOePHsS+pdxya+0pkQw7m6thsUxNDL7kVDpBiz2iNX5lnwagvhyhUWYu85a8XmZ8ymw==} - engines: {node: '>=14'} - - '@unocss/transformer-attributify-jsx@0.64.0': - resolution: {integrity: sha512-/kG7NFmqMCftK5DJUgMUbe9SWRJt20Z55o36aaCkBcEsrTSYBmWYDyIJPZa3TxsjO8H1qDekRVu7CgDxwlxMEQ==} - - '@unocss/transformer-compile-class@0.64.0': - resolution: {integrity: sha512-p1LZG2AUsD0FrkCSo1JOsWVQ+sEMcgnVCm6XtCgxBraV3nPFeZUyxmj9yEkt0HhfYkMTvdT155c3rDhbwP8AFw==} - - '@unocss/transformer-directives@0.64.0': - resolution: {integrity: sha512-+e2bDEQMEsfq4KZ2R+GQNrEv0bL3E1KbXGPQXUiMGitmZzzagDfIBk9VTP3gNhU+hgTaWtjXlReeap1eSmwKGQ==} - - '@unocss/transformer-variant-group@0.64.0': - resolution: {integrity: sha512-c4CN+W8ShBhGIma3KHHcBe7CRljRwZ0f5UamRrUIMs28a2jfa1TlPlr/4Ke5b6icr0mwTGajJEUaPanOK0Fp1A==} - - '@unocss/vite@0.64.0': - resolution: {integrity: sha512-QrfXlI8YcIaqQc4WRVrLbCho8eEi5pjs1/C8AwnUHGximEDN6MZNUk0htjo4QZ+50IA2b4RrYdz1N3875bJoFg==} - peerDependencies: - vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 - '@vinejs/compiler@2.5.0': resolution: {integrity: sha512-hg4ekaB5Y2zh+IWzBiC/WCDWrIfpVnKu/ubUvelKlidc/VbulsexoFRw5kJGHZenPVI5YzNnDeTdYSALkTV7jQ==} engines: {node: '>=18.0.0'} @@ -2377,20 +2213,6 @@ packages: '@vue/compiler-ssr@3.5.12': resolution: {integrity: sha512-eLwc7v6bfGBSM7wZOGPmRavSWzNFF6+PdRhE+VFJhNCgHiF8AM7ccoqcv5kBXA2eWUfigD7byekvf/JsOfKvPA==} - '@vue/reactivity@3.5.12': - resolution: {integrity: sha512-UzaN3Da7xnJXdz4Okb/BGbAaomRHc3RdoWqTzlvd9+WBR5m3J39J1fGcHes7U3za0ruYn/iYy/a1euhMEHvTAg==} - - '@vue/runtime-core@3.5.12': - resolution: {integrity: sha512-hrMUYV6tpocr3TL3Ad8DqxOdpDe4zuQY4HPY3X/VRh+L2myQO8MFXPAMarIOSGNu0bFAjh1yBkMPXZBqCk62Uw==} - - '@vue/runtime-dom@3.5.12': - resolution: {integrity: sha512-q8VFxR9A2MRfBr6/55Q3umyoN7ya836FzRXajPB6/Vvuv0zOPL+qltd9rIMzG/DbRLAIlREmnLsplEF/kotXKA==} - - '@vue/server-renderer@3.5.12': - resolution: {integrity: sha512-I3QoeDDeEPZm8yR28JtY+rk880Oqmj43hreIBVTicisFTx/Dl7JpG72g/X7YF8hnQD3IFhkky5i2bPonwrTVPg==} - peerDependencies: - vue: 3.5.12 - '@vue/shared@3.5.12': resolution: {integrity: sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==} @@ -2504,14 +2326,8 @@ packages: peerDependencies: svelte: ^4.0.0 || ^5.0.0-next.118 - bits-ui@1.0.0-next.36: - resolution: {integrity: sha512-xkMLjRYWsS7ZwqWssE1tYqQb/7vo89tcJdznc5nEwl+wpMZNeXuUDm3hc++hFZImursN5pltD1KkVTmAfmbsaQ==} - engines: {node: '>=18', pnpm: '>=8.7.0'} - peerDependencies: - svelte: ^5.0.0-next.1 - - bits-ui@1.0.0-next.45: - resolution: {integrity: sha512-kt7gYIirEo2Rg1hMudcGEzSHogQTA22d/j1x8v+wIshsIqqcCN6DXJZpTojSCQWxny8IEa9CRnLwAzY4B2qf1Q==} + bits-ui@1.0.0-next.49: + resolution: {integrity: sha512-7EoNj7pu9+RVv6MM1kGVvDzH2aA38v07Q+BDSq8yiLIHxZ5dTkDHwoikhtT/+jMU25c0uYvHq44GEQX+027IFw==} engines: {node: '>=18', pnpm: '>=8.7.0'} peerDependencies: svelte: ^5.0.0-next.1 @@ -2546,16 +2362,6 @@ packages: bun-types@1.1.34: resolution: {integrity: sha512-br5QygTEL/TwB4uQOb96Ky22j4Gq2WxWH/8Oqv20fk5HagwKXo/akB+LiYgSfzexCt6kkcUaVm+bKiPl71xPvw==} - bundle-require@5.0.0: - resolution: {integrity: sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - peerDependencies: - esbuild: '>=0.18' - - cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -2637,9 +2443,6 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - colorette@2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - comlink-stdio@0.1.7: resolution: {integrity: sha512-LTTyZfEq3KuDKnNSFDsDbJzNh5F6h+MTd13D6K7yRt9zvnP2nxZ5DgyaAaw2H87vQUzJ1T93Se1o3FHk9Ch7cw==} peerDependencies: @@ -2676,13 +2479,6 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - confbox@0.1.8: - resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} - - consola@3.2.3: - resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} - engines: {node: ^14.18.0 || >=16.10.0} - convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} @@ -2697,18 +2493,11 @@ packages: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} - css-tree@3.0.1: - resolution: {integrity: sha512-8Fxxv+tGhORlshCdCwnNJytvlvq46sOLSYEx2ZIGurahWvMucSRnyjPA3AmrMq4VPRYbHVpWj5VkiVasrM2H4Q==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} - cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} hasBin: true - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - data-uri-to-buffer@4.0.1: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} @@ -2743,9 +2532,6 @@ packages: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} - defu@6.1.4: - resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} - dependency-tree@11.0.1: resolution: {integrity: sha512-eCt7HSKIC9NxgIykG2DRq3Aewn9UhVS14MB3rEn6l/AsEI1FBg6ZGSlCU0SZ6Tjm2kkhj6/8c2pViinuyKELhg==} engines: {node: '>=18'} @@ -2755,9 +2541,6 @@ packages: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} - destr@2.0.3: - resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} - detect-indent@6.1.0: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} @@ -2829,9 +2612,6 @@ packages: resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} engines: {node: '>=12'} - duplexer@0.1.2: - resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} - eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} @@ -2883,11 +2663,6 @@ packages: engines: {node: '>=12'} hasBin: true - esbuild@0.23.1: - resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} - engines: {node: '>=18'} - hasBin: true - esbuild@0.24.0: resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==} engines: {node: '>=18'} @@ -3122,9 +2897,6 @@ packages: get-own-enumerable-property-symbols@3.0.2: resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} - get-tsconfig@4.8.1: - resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} - glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -3173,10 +2945,6 @@ packages: gsap@3.12.5: resolution: {integrity: sha512-srBfnk4n+Oe/ZnMIOXt3gT605BX9x5+rh/prT2F1SsNJsU1XuMiP0E2aptW481OnonOGACZWBqseH5Z7csHxhQ==} - gzip-size@6.0.0: - resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} - engines: {node: '>=10'} - has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -3222,9 +2990,6 @@ packages: import-meta-resolve@4.1.0: resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} - importx@0.4.4: - resolution: {integrity: sha512-Lo1pukzAREqrBnnHC+tj+lreMTAvyxtkKsMxLY8H15M/bvLl54p3YuoTI70Tz7Il0AsgSlD7Lrk/FaApRcBL7w==} - imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -3333,10 +3098,6 @@ packages: resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} hasBin: true - jiti@2.0.0-beta.3: - resolution: {integrity: sha512-pmfRbVRs/7khFrSAYnSiJ8C0D5GvzkE4Ey2pAvUcJsw1ly/p+7ut27jbJrjY79BpAJQJ4gXYFtK6d1Aub+9baQ==} - hasBin: true - joi@17.13.3: resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} @@ -3393,9 +3154,6 @@ packages: known-css-properties@0.35.0: resolution: {integrity: sha512-a/RAk2BfKk+WFGhhOCAYqSiFLc34k8Mt/6NWRI4joER0EYUzXIcFivjjnoD3+XU1DggLn/tZc3DOAgke7l8a4A==} - kolorist@1.8.0: - resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} - levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -3417,14 +3175,6 @@ packages: linkify-it@5.0.0: resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} - load-tsconfig@0.2.5: - resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - local-pkg@0.5.0: - resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} - engines: {node: '>=14'} - locate-character@3.0.0: resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} @@ -3469,6 +3219,11 @@ packages: peerDependencies: svelte: ^3 || ^4 || ^5.0.0-next.42 + lucide-svelte@0.456.0: + resolution: {integrity: sha512-SSdmxJOmL1h42ZypuGr54dYsXAT5o6WkQPKVDFnnrD0liOaXzfNNJuA7JbpkO9FFozBchyVpB1A1mKRmXOD8ug==} + peerDependencies: + svelte: ^3 || ^4 || ^5.0.0-next.42 + lunr@2.3.9: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} @@ -3501,9 +3256,6 @@ packages: mdast-util-to-hast@13.2.0: resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} - mdn-data@2.12.1: - resolution: {integrity: sha512-rsfnCbOHjqrhWxwt5/wtSLzpoKTzW7OXdT5lLOIH1OTYhWu9rRJveGq0sKvDZODABH7RX+uoR+DYcpFnq4Tf6Q==} - mdurl@2.0.0: resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} @@ -3568,9 +3320,6 @@ packages: engines: {node: '>=10'} hasBin: true - mlly@1.7.2: - resolution: {integrity: sha512-tN3dvVHYVz4DhSXinXIk7u9syPYaJvio118uomkovAtWBT+RdbP6Lfh/5Lvo519YMmwBafwlh20IPTXIStscpA==} - mode-watcher@0.4.1: resolution: {integrity: sha512-bNC+1NXmwEFZtziCdZSgP7HFQTpqJPcQn9GwwJQGSf6SBF3neEPYV1uRwkYuAQwbsvsXIYtzaqgedDzJ7D1mhg==} peerDependencies: @@ -3621,9 +3370,6 @@ packages: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} - node-fetch-native@1.6.4: - resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} - node-fetch@3.3.2: resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -3659,9 +3405,6 @@ packages: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} - ofetch@1.4.1: - resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} - once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -3761,12 +3504,6 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - pathe@1.1.2: - resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - - perfect-debounce@1.0.0: - resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} - picocolors@1.1.0: resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} @@ -3793,9 +3530,6 @@ packages: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} - pkg-types@1.2.1: - resolution: {integrity: sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==} - plimit-lit@1.6.1: resolution: {integrity: sha512-B7+VDyb8Tl6oMJT9oSO2CW8XC/T4UcJGrwOVoNGwOQsQYhlpfajmrMj5xeejqaASq3V/EqThyOeATEOMuSEXiA==} engines: {node: '>=12'} @@ -4059,9 +3793,6 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} - resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true @@ -4169,10 +3900,6 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} - sirv@2.0.4: - resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} - engines: {node: '>= 10'} - sirv@3.0.0: resolution: {integrity: sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==} engines: {node: '>=18'} @@ -4406,13 +4133,6 @@ packages: tiny-glob@0.2.9: resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} - tinyexec@0.3.1: - resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==} - - tinyglobby@0.2.10: - resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==} - engines: {node: '>=12.0.0'} - tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} @@ -4468,11 +4188,6 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - tsx@4.19.2: - resolution: {integrity: sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==} - engines: {node: '>=18.0.0'} - hasBin: true - turbo-darwin-64@2.2.3: resolution: {integrity: sha512-Rcm10CuMKQGcdIBS3R/9PMeuYnv6beYIHqfZFeKWVYEWH69sauj4INs83zKMTUiZJ3/hWGZ4jet9AOwhsssLyg==} cpu: [x64] @@ -4539,12 +4254,6 @@ packages: uc.micro@2.1.0: resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} - ufo@1.5.4: - resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} - - unconfig@0.5.5: - resolution: {integrity: sha512-VQZ5PT9HDX+qag0XdgQi8tJepPhXiR/yVOkn707gJDKo31lGjRilPREiQJ9Z6zd/Ugpv6ZvO5VxVIcatldYcNQ==} - undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} @@ -4574,18 +4283,6 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} - unocss@0.64.0: - resolution: {integrity: sha512-wiEFRjGXSogzf/4+KICXjFDgSGloSCV1Ka2Dct/8Z8U+iwRqeVpHGVQcGjBFg9Uh0DH1fSVBbis2aPuIkT0nEA==} - engines: {node: '>=14'} - peerDependencies: - '@unocss/webpack': 0.64.0 - vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 - peerDependenciesMeta: - '@unocss/webpack': - optional: true - vite: - optional: true - update-browserslist-db@1.1.1: resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} hasBin: true @@ -4602,6 +4299,10 @@ packages: resolution: {integrity: sha512-14FfcOJmqdjbBPdDjFQyk/SdT4NySW4eM0zcG+HqbHP5jzuH56xO3J1DGhgs/cEMCfwYi3HQI1gnTO62iaG+tQ==} hasBin: true + uuid@11.0.3: + resolution: {integrity: sha512-d0z310fCWv5dJwnX1Y/MncBAqGMKEzlBb1AOf7z9K8ALnd0utBX/msg/fA0+sbyN1ihbMsLhrBlnl1ak7Wa0rg==} + hasBin: true + uuid@9.0.1: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} hasBin: true @@ -4687,22 +4388,9 @@ packages: vite: optional: true - vue-flow-layout@0.1.1: - resolution: {integrity: sha512-JdgRRUVrN0Y2GosA0M68DEbKlXMqJ7FQgsK8CjQD2vxvNSqAU6PZEpi4cfcTVtfM2GVOMjHo7GKKLbXxOBqDqA==} - peerDependencies: - vue: ^3.4.37 - vue-sonner@1.2.5: resolution: {integrity: sha512-dAFCdq2cYxEwvW4gHuJhySCXklmxOWzjl5QwkNL9IIdkqyvSkdu+YnAbnJBdIAH/zo1bhXTuGG+m0Two4AX/KA==} - vue@3.5.12: - resolution: {integrity: sha512-CLVZtXtn2ItBIi/zHZ0Sg1Xkb7+PU32bJJ8Bmy7ts3jxXTcbfsEfBivFYYWz1Hur+lalqGAh65Coin0r+HRUfg==} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - walkdir@0.4.1: resolution: {integrity: sha512-3eBwRyEln6E1MSzcxcVpQIhRG8Q1jLvEqRmCZqS3dsfXEDR/AhOF4d+jHg1qvDCpYaVRZjENPQyrVxAkQqxPgQ==} engines: {node: '>=6.0.0'} @@ -4821,13 +4509,6 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@antfu/install-pkg@0.4.1': - dependencies: - package-manager-detector: 0.2.2 - tinyexec: 0.3.1 - - '@antfu/utils@0.7.10': {} - '@ark/schema@0.10.0': dependencies: '@ark/util': 0.10.0 @@ -5599,213 +5280,141 @@ snapshots: '@esbuild/aix-ppc64@0.21.5': optional: true - '@esbuild/aix-ppc64@0.23.1': - optional: true - '@esbuild/aix-ppc64@0.24.0': optional: true '@esbuild/android-arm64@0.21.5': optional: true - '@esbuild/android-arm64@0.23.1': - optional: true - '@esbuild/android-arm64@0.24.0': optional: true '@esbuild/android-arm@0.21.5': optional: true - '@esbuild/android-arm@0.23.1': - optional: true - '@esbuild/android-arm@0.24.0': optional: true '@esbuild/android-x64@0.21.5': optional: true - '@esbuild/android-x64@0.23.1': - optional: true - '@esbuild/android-x64@0.24.0': optional: true '@esbuild/darwin-arm64@0.21.5': optional: true - '@esbuild/darwin-arm64@0.23.1': - optional: true - '@esbuild/darwin-arm64@0.24.0': optional: true '@esbuild/darwin-x64@0.21.5': optional: true - '@esbuild/darwin-x64@0.23.1': - optional: true - '@esbuild/darwin-x64@0.24.0': optional: true '@esbuild/freebsd-arm64@0.21.5': optional: true - '@esbuild/freebsd-arm64@0.23.1': - optional: true - '@esbuild/freebsd-arm64@0.24.0': optional: true '@esbuild/freebsd-x64@0.21.5': optional: true - '@esbuild/freebsd-x64@0.23.1': - optional: true - '@esbuild/freebsd-x64@0.24.0': optional: true '@esbuild/linux-arm64@0.21.5': optional: true - '@esbuild/linux-arm64@0.23.1': - optional: true - '@esbuild/linux-arm64@0.24.0': optional: true '@esbuild/linux-arm@0.21.5': optional: true - '@esbuild/linux-arm@0.23.1': - optional: true - '@esbuild/linux-arm@0.24.0': optional: true '@esbuild/linux-ia32@0.21.5': optional: true - '@esbuild/linux-ia32@0.23.1': - optional: true - '@esbuild/linux-ia32@0.24.0': optional: true '@esbuild/linux-loong64@0.21.5': optional: true - '@esbuild/linux-loong64@0.23.1': - optional: true - '@esbuild/linux-loong64@0.24.0': optional: true '@esbuild/linux-mips64el@0.21.5': optional: true - '@esbuild/linux-mips64el@0.23.1': - optional: true - '@esbuild/linux-mips64el@0.24.0': optional: true '@esbuild/linux-ppc64@0.21.5': optional: true - '@esbuild/linux-ppc64@0.23.1': - optional: true - '@esbuild/linux-ppc64@0.24.0': optional: true '@esbuild/linux-riscv64@0.21.5': optional: true - '@esbuild/linux-riscv64@0.23.1': - optional: true - '@esbuild/linux-riscv64@0.24.0': optional: true '@esbuild/linux-s390x@0.21.5': optional: true - '@esbuild/linux-s390x@0.23.1': - optional: true - '@esbuild/linux-s390x@0.24.0': optional: true '@esbuild/linux-x64@0.21.5': optional: true - '@esbuild/linux-x64@0.23.1': - optional: true - '@esbuild/linux-x64@0.24.0': optional: true '@esbuild/netbsd-x64@0.21.5': optional: true - '@esbuild/netbsd-x64@0.23.1': - optional: true - '@esbuild/netbsd-x64@0.24.0': optional: true - '@esbuild/openbsd-arm64@0.23.1': - optional: true - '@esbuild/openbsd-arm64@0.24.0': optional: true '@esbuild/openbsd-x64@0.21.5': optional: true - '@esbuild/openbsd-x64@0.23.1': - optional: true - '@esbuild/openbsd-x64@0.24.0': optional: true '@esbuild/sunos-x64@0.21.5': optional: true - '@esbuild/sunos-x64@0.23.1': - optional: true - '@esbuild/sunos-x64@0.24.0': optional: true '@esbuild/win32-arm64@0.21.5': optional: true - '@esbuild/win32-arm64@0.23.1': - optional: true - '@esbuild/win32-arm64@0.24.0': optional: true '@esbuild/win32-ia32@0.21.5': optional: true - '@esbuild/win32-ia32@0.23.1': - optional: true - '@esbuild/win32-ia32@0.24.0': optional: true '@esbuild/win32-x64@0.21.5': optional: true - '@esbuild/win32-x64@0.23.1': - optional: true - '@esbuild/win32-x64@0.24.0': optional: true @@ -5910,18 +5519,6 @@ snapshots: '@iconify/types@2.0.0': {} - '@iconify/utils@2.1.33': - dependencies: - '@antfu/install-pkg': 0.4.1 - '@antfu/utils': 0.7.10 - '@iconify/types': 2.0.0 - debug: 4.3.7 - kolorist: 1.8.0 - local-pkg: 0.5.0 - mlly: 1.7.2 - transitivePeerDependencies: - - supports-color - '@internationalized/date@3.5.6': dependencies: '@swc/helpers': 0.5.13 @@ -5984,13 +5581,20 @@ snapshots: '@jsr/std__semver@1.0.3': {} - '@kksh/svelte5@0.1.2-beta.8(lucide-svelte@0.454.0(svelte@5.1.9))(svelte-sonner@0.3.28(svelte@5.1.9))(svelte@5.1.9)': + '@kksh/svelte5@0.1.9(lucide-svelte@0.454.0(svelte@5.1.9))(svelte-sonner@0.3.28(svelte@5.1.9))(svelte@5.1.9)': dependencies: lucide-svelte: 0.454.0(svelte@5.1.9) svelte: 5.1.9 svelte-persisted-store: 0.12.0(svelte@5.1.9) svelte-sonner: 0.3.28(svelte@5.1.9) + '@kksh/svelte5@0.1.9(lucide-svelte@0.456.0(svelte@5.1.9))(svelte-sonner@0.3.28(svelte@5.1.9))(svelte@5.1.9)': + dependencies: + lucide-svelte: 0.456.0(svelte@5.1.9) + svelte: 5.1.9 + svelte-persisted-store: 0.12.0(svelte@5.1.9) + svelte-sonner: 0.3.28(svelte@5.1.9) + '@manypkg/find-root@1.1.0': dependencies: '@babel/runtime': 7.26.0 @@ -6564,11 +6168,11 @@ snapshots: - bufferutil - utf-8-validate - '@sveltejs/adapter-static@3.0.6(@sveltejs/kit@2.7.4(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))': + '@sveltejs/adapter-static@3.0.6(@sveltejs/kit@2.8.0(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))': dependencies: - '@sveltejs/kit': 2.7.4(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)) + '@sveltejs/kit': 2.8.0(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)) - '@sveltejs/kit@2.7.4(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0))': + '@sveltejs/kit@2.8.0(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0))': dependencies: '@sveltejs/vite-plugin-svelte': 4.0.0(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)) '@types/cookie': 0.6.0 @@ -6633,42 +6237,76 @@ snapshots: postcss-selector-parser: 6.0.10 tailwindcss: 3.4.14 + '@tanstack/table-core@8.20.5': {} + '@tauri-apps/api@2.0.0-rc.3': {} '@tauri-apps/api@2.0.1': {} '@tauri-apps/api@2.0.3': {} + '@tauri-apps/api@2.1.0': {} + '@tauri-apps/cli-darwin-arm64@2.0.4': optional: true + '@tauri-apps/cli-darwin-arm64@2.1.0': + optional: true + '@tauri-apps/cli-darwin-x64@2.0.4': optional: true + '@tauri-apps/cli-darwin-x64@2.1.0': + optional: true + '@tauri-apps/cli-linux-arm-gnueabihf@2.0.4': optional: true + '@tauri-apps/cli-linux-arm-gnueabihf@2.1.0': + optional: true + '@tauri-apps/cli-linux-arm64-gnu@2.0.4': optional: true + '@tauri-apps/cli-linux-arm64-gnu@2.1.0': + optional: true + '@tauri-apps/cli-linux-arm64-musl@2.0.4': optional: true + '@tauri-apps/cli-linux-arm64-musl@2.1.0': + optional: true + '@tauri-apps/cli-linux-x64-gnu@2.0.4': optional: true + '@tauri-apps/cli-linux-x64-gnu@2.1.0': + optional: true + '@tauri-apps/cli-linux-x64-musl@2.0.4': optional: true + '@tauri-apps/cli-linux-x64-musl@2.1.0': + optional: true + '@tauri-apps/cli-win32-arm64-msvc@2.0.4': optional: true + '@tauri-apps/cli-win32-arm64-msvc@2.1.0': + optional: true + '@tauri-apps/cli-win32-ia32-msvc@2.0.4': optional: true + '@tauri-apps/cli-win32-ia32-msvc@2.1.0': + optional: true + '@tauri-apps/cli-win32-x64-msvc@2.0.4': optional: true + '@tauri-apps/cli-win32-x64-msvc@2.1.0': + optional: true + '@tauri-apps/cli@2.0.4': optionalDependencies: '@tauri-apps/cli-darwin-arm64': 2.0.4 @@ -6682,65 +6320,78 @@ snapshots: '@tauri-apps/cli-win32-ia32-msvc': 2.0.4 '@tauri-apps/cli-win32-x64-msvc': 2.0.4 + '@tauri-apps/cli@2.1.0': + optionalDependencies: + '@tauri-apps/cli-darwin-arm64': 2.1.0 + '@tauri-apps/cli-darwin-x64': 2.1.0 + '@tauri-apps/cli-linux-arm-gnueabihf': 2.1.0 + '@tauri-apps/cli-linux-arm64-gnu': 2.1.0 + '@tauri-apps/cli-linux-arm64-musl': 2.1.0 + '@tauri-apps/cli-linux-x64-gnu': 2.1.0 + '@tauri-apps/cli-linux-x64-musl': 2.1.0 + '@tauri-apps/cli-win32-arm64-msvc': 2.1.0 + '@tauri-apps/cli-win32-ia32-msvc': 2.1.0 + '@tauri-apps/cli-win32-x64-msvc': 2.1.0 + '@tauri-apps/plugin-deep-link@2.0.0': dependencies: - '@tauri-apps/api': 2.0.3 + '@tauri-apps/api': 2.1.0 '@tauri-apps/plugin-dialog@2.0.1': dependencies: - '@tauri-apps/api': 2.0.3 + '@tauri-apps/api': 2.1.0 '@tauri-apps/plugin-fs@2.0.0-rc.1': dependencies: - '@tauri-apps/api': 2.0.3 + '@tauri-apps/api': 2.1.0 '@tauri-apps/plugin-fs@2.0.1': dependencies: - '@tauri-apps/api': 2.0.3 + '@tauri-apps/api': 2.1.0 '@tauri-apps/plugin-global-shortcut@2.0.0': dependencies: - '@tauri-apps/api': 2.0.3 + '@tauri-apps/api': 2.1.0 '@tauri-apps/plugin-http@2.0.1': dependencies: - '@tauri-apps/api': 2.0.3 + '@tauri-apps/api': 2.1.0 '@tauri-apps/plugin-log@2.0.0': dependencies: - '@tauri-apps/api': 2.0.3 + '@tauri-apps/api': 2.1.0 '@tauri-apps/plugin-notification@2.0.0': dependencies: - '@tauri-apps/api': 2.0.3 + '@tauri-apps/api': 2.1.0 '@tauri-apps/plugin-os@2.0.0': dependencies: - '@tauri-apps/api': 2.0.3 + '@tauri-apps/api': 2.1.0 '@tauri-apps/plugin-os@2.0.0-rc.0': dependencies: - '@tauri-apps/api': 2.0.3 + '@tauri-apps/api': 2.1.0 '@tauri-apps/plugin-process@2.0.0': dependencies: - '@tauri-apps/api': 2.0.3 + '@tauri-apps/api': 2.1.0 '@tauri-apps/plugin-shell@2.0.1': dependencies: - '@tauri-apps/api': 2.0.3 + '@tauri-apps/api': 2.1.0 '@tauri-apps/plugin-store@2.1.0': dependencies: - '@tauri-apps/api': 2.0.3 + '@tauri-apps/api': 2.1.0 '@tauri-apps/plugin-updater@2.0.0': dependencies: - '@tauri-apps/api': 2.0.3 + '@tauri-apps/api': 2.1.0 '@tauri-apps/plugin-upload@2.0.0': dependencies: - '@tauri-apps/api': 2.0.3 + '@tauri-apps/api': 2.1.0 '@ts-graphviz/adapter@2.0.5': dependencies: @@ -6906,157 +6557,6 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@unocss/astro@0.64.0(rollup@4.24.3)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3))': - dependencies: - '@unocss/core': 0.64.0 - '@unocss/reset': 0.64.0 - '@unocss/vite': 0.64.0(rollup@4.24.3)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3)) - optionalDependencies: - vite: 5.4.10(@types/node@22.8.7)(terser@5.36.0) - transitivePeerDependencies: - - rollup - - supports-color - - vue - - '@unocss/cli@0.64.0(rollup@4.24.3)': - dependencies: - '@ampproject/remapping': 2.3.0 - '@rollup/pluginutils': 5.1.3(rollup@4.24.3) - '@unocss/config': 0.64.0 - '@unocss/core': 0.64.0 - '@unocss/preset-uno': 0.64.0 - cac: 6.7.14 - chokidar: 3.6.0 - colorette: 2.0.20 - consola: 3.2.3 - magic-string: 0.30.12 - pathe: 1.1.2 - perfect-debounce: 1.0.0 - tinyglobby: 0.2.10 - transitivePeerDependencies: - - rollup - - supports-color - - '@unocss/config@0.64.0': - dependencies: - '@unocss/core': 0.64.0 - unconfig: 0.5.5 - transitivePeerDependencies: - - supports-color - - '@unocss/core@0.64.0': {} - - '@unocss/extractor-arbitrary-variants@0.64.0': - dependencies: - '@unocss/core': 0.64.0 - - '@unocss/inspector@0.64.0(vue@3.5.12(typescript@5.6.3))': - dependencies: - '@unocss/core': 0.64.0 - '@unocss/rule-utils': 0.64.0 - gzip-size: 6.0.0 - sirv: 2.0.4 - vue-flow-layout: 0.1.1(vue@3.5.12(typescript@5.6.3)) - transitivePeerDependencies: - - vue - - '@unocss/postcss@0.64.0(postcss@8.4.47)': - dependencies: - '@unocss/config': 0.64.0 - '@unocss/core': 0.64.0 - '@unocss/rule-utils': 0.64.0 - css-tree: 3.0.1 - postcss: 8.4.47 - tinyglobby: 0.2.10 - transitivePeerDependencies: - - supports-color - - '@unocss/preset-attributify@0.64.0': - dependencies: - '@unocss/core': 0.64.0 - - '@unocss/preset-icons@0.64.0': - dependencies: - '@iconify/utils': 2.1.33 - '@unocss/core': 0.64.0 - ofetch: 1.4.1 - transitivePeerDependencies: - - supports-color - - '@unocss/preset-mini@0.64.0': - dependencies: - '@unocss/core': 0.64.0 - '@unocss/extractor-arbitrary-variants': 0.64.0 - '@unocss/rule-utils': 0.64.0 - - '@unocss/preset-tagify@0.64.0': - dependencies: - '@unocss/core': 0.64.0 - - '@unocss/preset-typography@0.64.0': - dependencies: - '@unocss/core': 0.64.0 - '@unocss/preset-mini': 0.64.0 - - '@unocss/preset-uno@0.64.0': - dependencies: - '@unocss/core': 0.64.0 - '@unocss/preset-mini': 0.64.0 - '@unocss/preset-wind': 0.64.0 - '@unocss/rule-utils': 0.64.0 - - '@unocss/preset-web-fonts@0.64.0': - dependencies: - '@unocss/core': 0.64.0 - ofetch: 1.4.1 - - '@unocss/preset-wind@0.64.0': - dependencies: - '@unocss/core': 0.64.0 - '@unocss/preset-mini': 0.64.0 - '@unocss/rule-utils': 0.64.0 - - '@unocss/reset@0.64.0': {} - - '@unocss/rule-utils@0.64.0': - dependencies: - '@unocss/core': 0.64.0 - magic-string: 0.30.12 - - '@unocss/transformer-attributify-jsx@0.64.0': - dependencies: - '@unocss/core': 0.64.0 - - '@unocss/transformer-compile-class@0.64.0': - dependencies: - '@unocss/core': 0.64.0 - - '@unocss/transformer-directives@0.64.0': - dependencies: - '@unocss/core': 0.64.0 - '@unocss/rule-utils': 0.64.0 - css-tree: 3.0.1 - - '@unocss/transformer-variant-group@0.64.0': - dependencies: - '@unocss/core': 0.64.0 - - '@unocss/vite@0.64.0(rollup@4.24.3)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3))': - dependencies: - '@ampproject/remapping': 2.3.0 - '@rollup/pluginutils': 5.1.3(rollup@4.24.3) - '@unocss/config': 0.64.0 - '@unocss/core': 0.64.0 - '@unocss/inspector': 0.64.0(vue@3.5.12(typescript@5.6.3)) - chokidar: 3.6.0 - magic-string: 0.30.12 - tinyglobby: 0.2.10 - vite: 5.4.10(@types/node@22.8.7)(terser@5.36.0) - transitivePeerDependencies: - - rollup - - supports-color - - vue - '@vinejs/compiler@2.5.0': optional: true @@ -7102,28 +6602,6 @@ snapshots: '@vue/compiler-dom': 3.5.12 '@vue/shared': 3.5.12 - '@vue/reactivity@3.5.12': - dependencies: - '@vue/shared': 3.5.12 - - '@vue/runtime-core@3.5.12': - dependencies: - '@vue/reactivity': 3.5.12 - '@vue/shared': 3.5.12 - - '@vue/runtime-dom@3.5.12': - dependencies: - '@vue/reactivity': 3.5.12 - '@vue/runtime-core': 3.5.12 - '@vue/shared': 3.5.12 - csstype: 3.1.3 - - '@vue/server-renderer@3.5.12(vue@3.5.12(typescript@5.6.3))': - dependencies: - '@vue/compiler-ssr': 3.5.12 - '@vue/shared': 3.5.12 - vue: 3.5.12(typescript@5.6.3) - '@vue/shared@3.5.12': {} acorn-jsx@5.3.2(acorn@8.12.1): @@ -7227,17 +6705,7 @@ snapshots: nanoid: 5.0.8 svelte: 5.1.9 - bits-ui@1.0.0-next.36(svelte@5.1.9): - dependencies: - '@floating-ui/core': 1.6.8 - '@floating-ui/dom': 1.6.12 - '@internationalized/date': 3.5.6 - esm-env: 1.1.4 - runed: 0.15.3(svelte@5.1.9) - svelte: 5.1.9 - svelte-toolbelt: 0.4.6(svelte@5.1.9) - - bits-ui@1.0.0-next.45(svelte@5.1.9): + bits-ui@1.0.0-next.49(svelte@5.1.9): dependencies: '@floating-ui/core': 1.6.8 '@floating-ui/dom': 1.6.12 @@ -7288,13 +6756,6 @@ snapshots: '@types/node': 20.12.14 '@types/ws': 8.5.13 - bundle-require@5.0.0(esbuild@0.21.5): - dependencies: - esbuild: 0.21.5 - load-tsconfig: 0.2.5 - - cac@6.7.14: {} - callsites@3.1.0: {} camelcase-css@2.0.1: {} @@ -7368,8 +6829,6 @@ snapshots: color-name@1.1.4: {} - colorette@2.0.20: {} - comlink-stdio@0.1.7(typescript@5.5.4): dependencies: typescript: 5.5.4 @@ -7393,10 +6852,6 @@ snapshots: concat-map@0.0.1: {} - confbox@0.1.8: {} - - consola@3.2.3: {} - convert-source-map@2.0.0: {} cookie@0.6.0: {} @@ -7413,15 +6868,8 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - css-tree@3.0.1: - dependencies: - mdn-data: 2.12.1 - source-map-js: 1.2.1 - cssesc@3.0.0: {} - csstype@3.1.3: {} - data-uri-to-buffer@4.0.1: {} dayjs@1.11.13: @@ -7443,8 +6891,6 @@ snapshots: define-lazy-prop@2.0.0: {} - defu@6.1.4: {} - dependency-tree@11.0.1: dependencies: commander: 12.1.0 @@ -7456,8 +6902,6 @@ snapshots: dequal@2.0.3: {} - destr@2.0.3: {} - detect-indent@6.1.0: {} detective-amd@6.0.0: @@ -7536,8 +6980,6 @@ snapshots: dotenv@16.0.3: {} - duplexer@0.1.2: {} - eastasianwidth@0.2.0: {} effect@3.10.8: @@ -7608,33 +7050,6 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 - esbuild@0.23.1: - optionalDependencies: - '@esbuild/aix-ppc64': 0.23.1 - '@esbuild/android-arm': 0.23.1 - '@esbuild/android-arm64': 0.23.1 - '@esbuild/android-x64': 0.23.1 - '@esbuild/darwin-arm64': 0.23.1 - '@esbuild/darwin-x64': 0.23.1 - '@esbuild/freebsd-arm64': 0.23.1 - '@esbuild/freebsd-x64': 0.23.1 - '@esbuild/linux-arm': 0.23.1 - '@esbuild/linux-arm64': 0.23.1 - '@esbuild/linux-ia32': 0.23.1 - '@esbuild/linux-loong64': 0.23.1 - '@esbuild/linux-mips64el': 0.23.1 - '@esbuild/linux-ppc64': 0.23.1 - '@esbuild/linux-riscv64': 0.23.1 - '@esbuild/linux-s390x': 0.23.1 - '@esbuild/linux-x64': 0.23.1 - '@esbuild/netbsd-x64': 0.23.1 - '@esbuild/openbsd-arm64': 0.23.1 - '@esbuild/openbsd-x64': 0.23.1 - '@esbuild/sunos-x64': 0.23.1 - '@esbuild/win32-arm64': 0.23.1 - '@esbuild/win32-ia32': 0.23.1 - '@esbuild/win32-x64': 0.23.1 - esbuild@0.24.0: optionalDependencies: '@esbuild/aix-ppc64': 0.24.0 @@ -7889,17 +7304,17 @@ snapshots: dependencies: fetch-blob: 3.2.0 - formsnap@1.0.1(svelte@5.1.9)(sveltekit-superforms@2.20.0(@sveltejs/kit@2.7.4(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(@types/json-schema@7.0.15)(svelte@5.1.9)(typescript@5.6.3)): + formsnap@1.0.1(svelte@5.1.9)(sveltekit-superforms@2.20.0(@sveltejs/kit@2.8.0(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(@types/json-schema@7.0.15)(svelte@5.1.9)(typescript@5.6.3)): dependencies: nanoid: 5.0.8 svelte: 5.1.9 - sveltekit-superforms: 2.20.0(@sveltejs/kit@2.7.4(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(@types/json-schema@7.0.15)(svelte@5.1.9)(typescript@5.6.3) + sveltekit-superforms: 2.20.0(@sveltejs/kit@2.8.0(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(@types/json-schema@7.0.15)(svelte@5.1.9)(typescript@5.6.3) - formsnap@2.0.0-next.1(svelte@5.1.9)(sveltekit-superforms@2.20.0(@sveltejs/kit@2.7.4(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(@types/json-schema@7.0.15)(svelte@5.1.9)(typescript@5.6.3)): + formsnap@2.0.0-next.1(svelte@5.1.9)(sveltekit-superforms@2.20.0(@sveltejs/kit@2.8.0(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(@types/json-schema@7.0.15)(svelte@5.1.9)(typescript@5.6.3)): dependencies: svelte: 5.1.9 svelte-toolbelt: 0.4.6(svelte@5.1.9) - sveltekit-superforms: 2.20.0(@sveltejs/kit@2.7.4(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(@types/json-schema@7.0.15)(svelte@5.1.9)(typescript@5.6.3) + sveltekit-superforms: 2.20.0(@sveltejs/kit@2.8.0(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(@types/json-schema@7.0.15)(svelte@5.1.9)(typescript@5.6.3) fraction.js@4.3.7: {} @@ -7939,10 +7354,6 @@ snapshots: get-own-enumerable-property-symbols@3.0.2: {} - get-tsconfig@4.8.1: - dependencies: - resolve-pkg-maps: 1.0.0 - glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -7998,10 +7409,6 @@ snapshots: gsap@3.12.5: {} - gzip-size@6.0.0: - dependencies: - duplexer: 0.1.2 - has-flag@4.0.0: {} hasown@2.0.2: @@ -8056,18 +7463,6 @@ snapshots: import-meta-resolve@4.1.0: {} - importx@0.4.4: - dependencies: - bundle-require: 5.0.0(esbuild@0.21.5) - debug: 4.3.7 - esbuild: 0.21.5 - jiti: 2.0.0-beta.3 - jiti-v1: jiti@1.21.6 - pathe: 1.1.2 - tsx: 4.19.2 - transitivePeerDependencies: - - supports-color - imurmurhash@0.1.4: {} inflight@1.0.6: @@ -8147,8 +7542,6 @@ snapshots: jiti@1.21.6: {} - jiti@2.0.0-beta.3: {} - joi@17.13.3: dependencies: '@hapi/hoek': 9.3.0 @@ -8205,8 +7598,6 @@ snapshots: known-css-properties@0.35.0: {} - kolorist@1.8.0: {} - levn@0.4.1: dependencies: prelude-ls: 1.2.1 @@ -8225,13 +7616,6 @@ snapshots: dependencies: uc.micro: 2.1.0 - load-tsconfig@0.2.5: {} - - local-pkg@0.5.0: - dependencies: - mlly: 1.7.2 - pkg-types: 1.2.1 - locate-character@3.0.0: {} locate-path@5.0.0: @@ -8272,6 +7656,10 @@ snapshots: dependencies: svelte: 5.1.9 + lucide-svelte@0.456.0(svelte@5.1.9): + dependencies: + svelte: 5.1.9 + lunr@2.3.9: {} lz-string@1.5.0: {} @@ -8322,8 +7710,6 @@ snapshots: unist-util-visit: 5.0.0 vfile: 6.0.3 - mdn-data@2.12.1: {} - mdurl@2.0.0: {} memoize-weak@1.0.2: {} @@ -8379,13 +7765,6 @@ snapshots: mkdirp@3.0.1: {} - mlly@1.7.2: - dependencies: - acorn: 8.12.1 - pathe: 1.1.2 - pkg-types: 1.2.1 - ufo: 1.5.4 - mode-watcher@0.4.1(svelte@5.1.9): dependencies: svelte: 5.1.9 @@ -8424,8 +7803,6 @@ snapshots: node-domexception@1.0.0: {} - node-fetch-native@1.6.4: {} - node-fetch@3.3.2: dependencies: data-uri-to-buffer: 4.0.1 @@ -8451,12 +7828,6 @@ snapshots: object-hash@3.0.0: {} - ofetch@1.4.1: - dependencies: - destr: 2.0.3 - node-fetch-native: 1.6.4 - ufo: 1.5.4 - once@1.4.0: dependencies: wrappy: 1.0.2 @@ -8554,10 +7925,6 @@ snapshots: path-type@4.0.0: {} - pathe@1.1.2: {} - - perfect-debounce@1.0.0: {} - picocolors@1.1.0: {} picocolors@1.1.1: {} @@ -8572,12 +7939,6 @@ snapshots: pirates@4.0.6: {} - pkg-types@1.2.1: - dependencies: - confbox: 0.1.8 - mlly: 1.7.2 - pathe: 1.1.2 - plimit-lit@1.6.1: dependencies: queue-lit: 1.5.2 @@ -8767,8 +8128,6 @@ snapshots: resolve-from@5.0.0: {} - resolve-pkg-maps@1.0.0: {} - resolve@1.22.8: dependencies: is-core-module: 2.15.1 @@ -8886,12 +8245,6 @@ snapshots: signal-exit@4.1.0: {} - sirv@2.0.4: - dependencies: - '@polka/url': 1.0.0-next.28 - mrmime: 2.0.0 - totalist: 3.0.1 - sirv@3.0.0: dependencies: '@polka/url': 1.0.0-next.28 @@ -9067,9 +8420,9 @@ snapshots: magic-string: 0.30.12 zimmerframe: 1.1.2 - sveltekit-superforms@2.20.0(@sveltejs/kit@2.7.4(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(@types/json-schema@7.0.15)(svelte@5.1.9)(typescript@5.6.3): + sveltekit-superforms@2.20.0(@sveltejs/kit@2.8.0(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(@types/json-schema@7.0.15)(svelte@5.1.9)(typescript@5.6.3): dependencies: - '@sveltejs/kit': 2.7.4(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)) + '@sveltejs/kit': 2.8.0(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)))(svelte@5.1.9)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0)) devalue: 5.1.1 just-clone: 6.2.0 memoize-weak: 1.0.2 @@ -9152,7 +8505,7 @@ snapshots: '@huakunshen/comlink': 4.4.1 '@rollup/plugin-alias': 5.1.1(rollup@4.24.3) '@rollup/plugin-typescript': 11.1.6(rollup@4.24.3)(tslib@2.8.1)(typescript@5.5.4) - '@tauri-apps/api': 2.0.3 + '@tauri-apps/api': 2.1.0 '@tauri-apps/plugin-dialog': 2.0.1 '@tauri-apps/plugin-fs': 2.0.1 '@tauri-apps/plugin-http': 2.0.1 @@ -9179,7 +8532,7 @@ snapshots: '@huakunshen/comlink': 4.4.1 '@rollup/plugin-alias': 5.1.1(rollup@4.24.3) '@rollup/plugin-typescript': 11.1.6(rollup@4.24.3)(tslib@2.8.1)(typescript@5.6.3) - '@tauri-apps/api': 2.0.3 + '@tauri-apps/api': 2.1.0 '@tauri-apps/plugin-dialog': 2.0.1 '@tauri-apps/plugin-fs': 2.0.1 '@tauri-apps/plugin-http': 2.0.1 @@ -9217,32 +8570,32 @@ snapshots: tauri-plugin-network-api@2.0.4(typescript@5.5.4): dependencies: - '@tauri-apps/api': 2.0.3 + '@tauri-apps/api': 2.1.0 valibot: 0.40.0(typescript@5.5.4) transitivePeerDependencies: - typescript tauri-plugin-network-api@2.0.4(typescript@5.6.3): dependencies: - '@tauri-apps/api': 2.0.3 + '@tauri-apps/api': 2.1.0 valibot: 0.40.0(typescript@5.6.3) transitivePeerDependencies: - typescript tauri-plugin-shellx-api@2.0.11: dependencies: - '@tauri-apps/api': 2.0.3 + '@tauri-apps/api': 2.1.0 tauri-plugin-system-info-api@2.0.8(typescript@5.5.4): dependencies: - '@tauri-apps/api': 2.0.3 + '@tauri-apps/api': 2.1.0 valibot: 0.40.0(typescript@5.5.4) transitivePeerDependencies: - typescript tauri-plugin-system-info-api@2.0.8(typescript@5.6.3): dependencies: - '@tauri-apps/api': 2.0.3 + '@tauri-apps/api': 2.1.0 valibot: 0.40.0(typescript@5.6.3) transitivePeerDependencies: - typescript @@ -9275,13 +8628,6 @@ snapshots: globalyzer: 0.1.0 globrex: 0.1.2 - tinyexec@0.3.1: {} - - tinyglobby@0.2.10: - dependencies: - fdir: 6.4.2(picomatch@4.0.2) - picomatch: 4.0.2 - tmp@0.0.33: dependencies: os-tmpdir: 1.0.2 @@ -9337,13 +8683,6 @@ snapshots: tslib@2.8.1: {} - tsx@4.19.2: - dependencies: - esbuild: 0.23.1 - get-tsconfig: 4.8.1 - optionalDependencies: - fsevents: 2.3.3 - turbo-darwin-64@2.2.3: optional: true @@ -9395,16 +8734,6 @@ snapshots: uc.micro@2.1.0: {} - ufo@1.5.4: {} - - unconfig@0.5.5: - dependencies: - '@antfu/utils': 0.7.10 - defu: 6.1.4 - importx: 0.4.4 - transitivePeerDependencies: - - supports-color - undici-types@5.26.5: {} undici-types@6.19.8: {} @@ -9436,33 +8765,6 @@ snapshots: universalify@2.0.1: {} - unocss@0.64.0(postcss@8.4.47)(rollup@4.24.3)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3)): - dependencies: - '@unocss/astro': 0.64.0(rollup@4.24.3)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3)) - '@unocss/cli': 0.64.0(rollup@4.24.3) - '@unocss/core': 0.64.0 - '@unocss/postcss': 0.64.0(postcss@8.4.47) - '@unocss/preset-attributify': 0.64.0 - '@unocss/preset-icons': 0.64.0 - '@unocss/preset-mini': 0.64.0 - '@unocss/preset-tagify': 0.64.0 - '@unocss/preset-typography': 0.64.0 - '@unocss/preset-uno': 0.64.0 - '@unocss/preset-web-fonts': 0.64.0 - '@unocss/preset-wind': 0.64.0 - '@unocss/transformer-attributify-jsx': 0.64.0 - '@unocss/transformer-compile-class': 0.64.0 - '@unocss/transformer-directives': 0.64.0 - '@unocss/transformer-variant-group': 0.64.0 - '@unocss/vite': 0.64.0(rollup@4.24.3)(vite@5.4.10(@types/node@22.8.7)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3)) - optionalDependencies: - vite: 5.4.10(@types/node@22.8.7)(terser@5.36.0) - transitivePeerDependencies: - - postcss - - rollup - - supports-color - - vue - update-browserslist-db@1.1.1(browserslist@4.24.2): dependencies: browserslist: 4.24.2 @@ -9477,6 +8779,8 @@ snapshots: uuid@11.0.2: {} + uuid@11.0.3: {} + uuid@9.0.1: {} valibot@0.31.1: @@ -9531,22 +8835,8 @@ snapshots: optionalDependencies: vite: 5.4.10(@types/node@22.8.7)(terser@5.36.0) - vue-flow-layout@0.1.1(vue@3.5.12(typescript@5.6.3)): - dependencies: - vue: 3.5.12(typescript@5.6.3) - vue-sonner@1.2.5: {} - vue@3.5.12(typescript@5.6.3): - dependencies: - '@vue/compiler-dom': 3.5.12 - '@vue/compiler-sfc': 3.5.12 - '@vue/runtime-dom': 3.5.12 - '@vue/server-renderer': 3.5.12(vue@3.5.12(typescript@5.6.3)) - '@vue/shared': 3.5.12 - optionalDependencies: - typescript: 5.6.3 - walkdir@0.4.1: {} wcwidth@1.0.1: