diff --git a/package.json b/package.json index 8a4b408..aed9fa7 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "type": "module", "scripts": { "build": "pnpm -r build", - "build:packages": "pnpm -F \"./packages/**\" --parallel build", + "build:packages": "pnpm -F \"./packages/**\" -r build", "build:preview": "pnpm build:packages && pnpm -F preview build", "check": "pnpm --parallel check", "format": "pnpm --parallel format", @@ -28,4 +28,4 @@ ] }, "packageManager": "pnpm@10.4.1+sha512.c753b6c3ad7afa13af388fa6d808035a008e30ea9993f58c6663e2bc5ff21679aa834db094987129aa4d488b86df57f7b634981b2f827cdcacc698cc0cfb88af" -} +} \ No newline at end of file diff --git a/packages/svelte-file-tree-styled/.gitignore b/packages/svelte-file-tree-styled/.gitignore new file mode 100644 index 0000000..d8b63e2 --- /dev/null +++ b/packages/svelte-file-tree-styled/.gitignore @@ -0,0 +1,10 @@ +node_modules + +# Generated Files +/.svelte-kit + +# Build +/dist + +# OS Files +.DS_Store diff --git a/packages/svelte-file-tree-styled/.npmrc b/packages/svelte-file-tree-styled/.npmrc new file mode 100644 index 0000000..b6f27f1 --- /dev/null +++ b/packages/svelte-file-tree-styled/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/packages/svelte-file-tree-styled/.prettierrc.json b/packages/svelte-file-tree-styled/.prettierrc.json new file mode 100644 index 0000000..e483835 --- /dev/null +++ b/packages/svelte-file-tree-styled/.prettierrc.json @@ -0,0 +1,14 @@ +{ + "useTabs": true, + "printWidth": 100, + "plugins": ["prettier-plugin-svelte", "prettier-plugin-tailwindcss"], + "overrides": [ + { + "files": "*.svelte", + "options": { + "parser": "svelte" + } + } + ], + "tailwindStylesheet": "./src/app.css" +} diff --git a/packages/svelte-file-tree-styled/README.md b/packages/svelte-file-tree-styled/README.md new file mode 100644 index 0000000..16c70df --- /dev/null +++ b/packages/svelte-file-tree-styled/README.md @@ -0,0 +1,58 @@ +# create-svelte + +Everything you need to build a Svelte library, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/main/packages/create-svelte). + +Read more about creating a library [in the docs](https://svelte.dev/docs/kit/packaging). + +## Creating a project + +If you're seeing this, you've probably already done this step. Congrats! + +```bash +# create a new project in the current directory +npx sv create + +# create a new project in my-app +npx sv create my-app +``` + +## Developing + +Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: + +```bash +npm run dev + +# or start the server and open the app in a new browser tab +npm run dev -- --open +``` + +Everything inside `src/lib` is part of your library, everything inside `src/routes` can be used as a showcase or preview app. + +## Building + +To build your library: + +```bash +npm run package +``` + +To create a production version of your showcase app: + +```bash +npm run build +``` + +You can preview the production build with `npm run preview`. + +> To deploy your app, you may need to install an [adapter](https://svelte.dev/docs/kit/adapters) for your target environment. + +## Publishing + +Go into the `package.json` and give your package the desired name through the `"name"` option. Also consider adding a `"license"` field and point it to a `LICENSE` file which you can create from a template (one popular option is the [MIT license](https://opensource.org/license/mit/)). + +To publish your library to [npm](https://www.npmjs.com): + +```bash +npm publish +``` diff --git a/packages/svelte-file-tree-styled/package.json b/packages/svelte-file-tree-styled/package.json new file mode 100644 index 0000000..d4e1dc1 --- /dev/null +++ b/packages/svelte-file-tree-styled/package.json @@ -0,0 +1,55 @@ +{ + "name": "svelte-file-tree-styled", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "svelte-kit sync && svelte-package --watch", + "build": "svelte-kit sync && svelte-package && publint", + "prepare": "svelte-kit sync || echo ''", + "prepack": "pnpm run build", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", + "format": "prettier --write .", + "format:check": "prettier --check ." + }, + "files": [ + "dist", + "!dist/**/*.test.*", + "!dist/**/*.spec.*" + ], + "sideEffects": [ + "**/*.css" + ], + "exports": { + ".": { + "types": "./dist/index.d.ts", + "svelte": "./dist/index.js" + } + }, + "types": "./dist/index.d.ts", + "svelte": "./dist/index.js", + "peerDependencies": { + "svelte": "^5.20.0" + }, + "devDependencies": { + "@sveltejs/kit": "^2.20.0", + "@sveltejs/package": "^2.0.0", + "@sveltejs/vite-plugin-svelte": "^5.0.0", + "@tailwindcss/vite": "^4.0.14", + "prettier": "^3.4.2", + "prettier-plugin-svelte": "^3.3.3", + "prettier-plugin-tailwindcss": "^0.6.11", + "publint": "^0.3.9", + "svelte": "^5.23.1", + "svelte-check": "^4.1.5", + "tailwindcss": "^4.0.14", + "typescript": "^5.0.0", + "vite": "^6.2.2" + }, + "dependencies": { + "@lucide/svelte": "^0.482.0", + "bits-ui": "^1.3.13", + "svelte-file-tree": "workspace:^" + } +} diff --git a/packages/svelte-file-tree-styled/src/app.css b/packages/svelte-file-tree-styled/src/app.css new file mode 100644 index 0000000..f1d8c73 --- /dev/null +++ b/packages/svelte-file-tree-styled/src/app.css @@ -0,0 +1 @@ +@import "tailwindcss"; diff --git a/packages/svelte-file-tree-styled/src/app.html b/packages/svelte-file-tree-styled/src/app.html new file mode 100644 index 0000000..f22aeaa --- /dev/null +++ b/packages/svelte-file-tree-styled/src/app.html @@ -0,0 +1,12 @@ + + + + + + + %sveltekit.head% + + +
%sveltekit.body%
+ + diff --git a/packages/svelte-file-tree-styled/src/lib/components/AddItemDialog.svelte b/packages/svelte-file-tree-styled/src/lib/components/AddItemDialog.svelte new file mode 100644 index 0000000..2af88fb --- /dev/null +++ b/packages/svelte-file-tree-styled/src/lib/components/AddItemDialog.svelte @@ -0,0 +1,123 @@ + + + + + + {#snippet child({ props })} + {#if isOpen} +
+ {/if} + {/snippet} +
+ + + {#snippet child({ props })} + {#if isOpen} +
+ + Add a New Item + + +
+
+ + +
+ +
+ + +
+ +
+ +
+
+
+ {/if} + {/snippet} +
+
+
diff --git a/packages/svelte-file-tree-styled/src/lib/components/NameConflictDialog.svelte b/packages/svelte-file-tree-styled/src/lib/components/NameConflictDialog.svelte new file mode 100644 index 0000000..37f7f8a --- /dev/null +++ b/packages/svelte-file-tree-styled/src/lib/components/NameConflictDialog.svelte @@ -0,0 +1,88 @@ + + + + + + {#snippet child({ props })} + {#if isOpen} +
+ {/if} + {/snippet} +
+ + + {#snippet child({ props })} + {#if isOpen} +
+ + {title} + + + + {description} + + +
+ + + +
+
+ {/if} + {/snippet} +
+
+
diff --git a/packages/svelte-file-tree-styled/src/lib/components/StyledTree.svelte b/packages/svelte-file-tree-styled/src/lib/components/StyledTree.svelte new file mode 100644 index 0000000..24baf17 --- /dev/null +++ b/packages/svelte-file-tree-styled/src/lib/components/StyledTree.svelte @@ -0,0 +1,157 @@ + + + + {#snippet item({ item, paste, remove })} + handleExpandItem(item)} + onCollapse={() => handleCollapseItem(item)} + onCopy={(operation) => handleCopyItem(item, operation)} + onPaste={paste} + onDelete={remove} + onAdd={() => handleAddItem(item)} + /> + {/snippet} + + + + diff --git a/packages/svelte-file-tree-styled/src/lib/components/StyledTreeItem.svelte b/packages/svelte-file-tree-styled/src/lib/components/StyledTreeItem.svelte new file mode 100644 index 0000000..744bf43 --- /dev/null +++ b/packages/svelte-file-tree-styled/src/lib/components/StyledTreeItem.svelte @@ -0,0 +1,91 @@ + + + + [ + "relative flex items-center rounded-md border border-neutral-400 p-3 hover:bg-neutral-200 focus:outline-2 focus:outline-offset-2 focus:outline-current active:bg-neutral-300 aria-selected:border-blue-400 aria-selected:bg-blue-100 aria-selected:text-blue-800 aria-selected:active:bg-blue-200", + item.dragged() && "opacity-50", + dropPosition() !== undefined && + "before:pointer-events-none before:absolute before:-inset-[2px] before:rounded-[inherit] before:border-2", + dropPosition() === "before" && "before:border-transparent before:border-t-red-500", + dropPosition() === "after" && "before:border-transparent before:border-b-red-500", + dropPosition() === "inside" && "before:border-red-500", + ]} + > + + +
+ {#if item.node.type === "file"} + + {:else if item.expanded()} + + {:else} + + {/if} +
+ + {#if editing} + + {:else} + {item.node.name} + {/if} +
+
diff --git a/packages/svelte-file-tree-styled/src/lib/components/TreeContextMenu.svelte b/packages/svelte-file-tree-styled/src/lib/components/TreeContextMenu.svelte new file mode 100644 index 0000000..6b8ef62 --- /dev/null +++ b/packages/svelte-file-tree-styled/src/lib/components/TreeContextMenu.svelte @@ -0,0 +1,115 @@ + + + + + {@render children()} + + + + + + + Rename + + + onCopy("copy")} + > + + Copy + + + onCopy("cut")} + > + + Cut + + + onPaste()} + > + + Paste + + + onDelete()} + > + + Delete + + + {#if item.node.type === "folder"} + onAdd()} + > + + Add + + {/if} + + + diff --git a/packages/svelte-file-tree-styled/src/lib/components/types.ts b/packages/svelte-file-tree-styled/src/lib/components/types.ts new file mode 100644 index 0000000..8c0d253 --- /dev/null +++ b/packages/svelte-file-tree-styled/src/lib/components/types.ts @@ -0,0 +1,10 @@ +import type { FileTree, FileTreeNode, FolderNode, TreeProps } from "svelte-file-tree"; + +export type AddItemsArgs = { + target: FolderNode | FileTree; + added: Array; +}; + +export interface StyledTreeProps extends Omit { + onAddItems?: (args: AddItemsArgs) => boolean | Promise; +} diff --git a/packages/svelte-file-tree-styled/src/lib/index.ts b/packages/svelte-file-tree-styled/src/lib/index.ts new file mode 100644 index 0000000..c40f723 --- /dev/null +++ b/packages/svelte-file-tree-styled/src/lib/index.ts @@ -0,0 +1,2 @@ +export { default as StyledTree } from "./components/StyledTree.svelte"; +export type * from "./components/types.js"; diff --git a/packages/svelte-file-tree-styled/svelte.config.js b/packages/svelte-file-tree-styled/svelte.config.js new file mode 100644 index 0000000..b0cea44 --- /dev/null +++ b/packages/svelte-file-tree-styled/svelte.config.js @@ -0,0 +1,6 @@ +import { vitePreprocess } from "@sveltejs/vite-plugin-svelte"; + +/** @type {import("@sveltejs/kit").Config} */ +export default { + preprocess: vitePreprocess(), +}; diff --git a/packages/svelte-file-tree-styled/tsconfig.json b/packages/svelte-file-tree-styled/tsconfig.json new file mode 100644 index 0000000..6f788f1 --- /dev/null +++ b/packages/svelte-file-tree-styled/tsconfig.json @@ -0,0 +1,15 @@ +{ + "extends": "./.svelte-kit/tsconfig.json", + "compilerOptions": { + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true, + "module": "NodeNext", + "moduleResolution": "NodeNext" + } +} diff --git a/packages/svelte-file-tree-styled/vite.config.ts b/packages/svelte-file-tree-styled/vite.config.ts new file mode 100644 index 0000000..b0741a1 --- /dev/null +++ b/packages/svelte-file-tree-styled/vite.config.ts @@ -0,0 +1,7 @@ +import { sveltekit } from "@sveltejs/kit/vite"; +import tailwindcss from "@tailwindcss/vite"; +import { defineConfig } from "vite"; + +export default defineConfig({ + plugins: [tailwindcss(), sveltekit()], +}); diff --git a/packages/svelte-file-tree/package.json b/packages/svelte-file-tree/package.json index 453f479..91310a2 100644 --- a/packages/svelte-file-tree/package.json +++ b/packages/svelte-file-tree/package.json @@ -5,8 +5,8 @@ "scripts": { "dev": "svelte-kit sync && svelte-package --watch", "build": "svelte-kit sync && svelte-package && publint", - "prepublishOnly": "pnpm run build", "prepare": "svelte-kit sync || echo ''", + "prepack": "pnpm run build", "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", "format": "prettier --write .", @@ -28,6 +28,8 @@ "svelte": "./dist/index.js" } }, + "types": "./dist/index.d.ts", + "svelte": "./dist/index.js", "peerDependencies": { "svelte": "^5.20.0" }, @@ -36,19 +38,19 @@ "svelte-signals": "^0.0.2" }, "devDependencies": { - "@sveltejs/kit": "^2.18.0", + "@sveltejs/kit": "^2.20.0", "@sveltejs/package": "^2.3.10", "@sveltejs/vite-plugin-svelte": "5.0.3", - "@types/node": "^22.13.9", - "@vitest/browser": "^3.0.7", + "@types/node": "^22.13.10", + "@vitest/browser": "^3.0.9", "jsdom": "^26.0.0", "prettier": "^3.5.3", "prettier-plugin-svelte": "^3.3.3", - "publint": "^0.3.8", - "svelte": "5.22.1", - "svelte-check": "^4.1.4", - "vite": "^6.2.0", - "vitest": "3.0.7", + "publint": "^0.3.9", + "svelte": "5.23.1", + "svelte-check": "^4.1.5", + "vite": "^6.2.2", + "vitest": "3.0.9", "vitest-browser-svelte": "^0.1.0" }, "repository": { diff --git a/packages/svelte-file-tree/src/lib/components/Tree/Tree.svelte b/packages/svelte-file-tree/src/lib/components/Tree/Tree.svelte index df33f36..a3fdc20 100644 --- a/packages/svelte-file-tree/src/lib/components/Tree/Tree.svelte +++ b/packages/svelte-file-tree/src/lib/components/Tree/Tree.svelte @@ -24,25 +24,25 @@ target.name = name; return true; }, - onRenameError, onMoveItems = ({ updates }) => { for (const { target, children } of updates) { target.children = children; } return true; }, - onMoveError, - onInsertItems = ({ target, start, inserted }) => { - target.children.splice(start, 0, ...inserted); + onCopyPasteItems = ({ target, start, copies }) => { + target.children.splice(start, 0, ...copies); return true; }, - onNameConflict = () => "cancel", - onDeleteItems = ({ updates }) => { + onRemoveItems = ({ updates }) => { for (const { target, children } of updates) { target.children = children; } return true; }, + onResolveNameConflict = () => "cancel", + onAlreadyExistsError, + onCircularReferenceError, ...rest }: TreeProps = $props(); @@ -72,12 +72,12 @@ id: () => id, generateCopyId: () => generateCopyId(), onRenameItem: (args) => onRenameItem(args), - onRenameError: (args) => onRenameError?.(args), onMoveItems: (args) => onMoveItems(args), - onMoveError: (args) => onMoveError?.(args), - onInsertItems: (args) => onInsertItems(args), - onNameConflict: (args) => onNameConflict(args), - onDeleteItems: (args) => onDeleteItems(args), + onCopyPasteItems: (args) => onCopyPasteItems(args), + onRemoveItems: (args) => onRemoveItems(args), + onResolveNameConflict: (args) => onResolveNameConflict(args), + onAlreadyExistsError: (args) => onAlreadyExistsError?.(args), + onCircularReferenceError: (args) => onCircularReferenceError?.(args), }); @@ -85,7 +85,12 @@ {#each treeState.items() as i (i.node.id)} {#if i.visible()} - {@render item(i)} + {@render item({ + item: i, + rename: (name) => treeState.rename(i, name), + paste: (position) => treeState.paste(i, position), + remove: () => treeState.remove(i), + })} {/if} {/each} diff --git a/packages/svelte-file-tree/src/lib/components/Tree/TreeItemProvider.svelte b/packages/svelte-file-tree/src/lib/components/Tree/TreeItemProvider.svelte index 31e6710..24a0dc9 100644 --- a/packages/svelte-file-tree/src/lib/components/Tree/TreeItemProvider.svelte +++ b/packages/svelte-file-tree/src/lib/components/Tree/TreeItemProvider.svelte @@ -42,7 +42,7 @@ $effect(() => { return () => { - treeState.onDeleteItem(item.node.id); + treeState.onItemRemoved(item.node.id); }; }); diff --git a/packages/svelte-file-tree/src/lib/components/Tree/state.svelte.ts b/packages/svelte-file-tree/src/lib/components/Tree/state.svelte.ts index ba319b1..05f77bd 100644 --- a/packages/svelte-file-tree/src/lib/components/Tree/state.svelte.ts +++ b/packages/svelte-file-tree/src/lib/components/Tree/state.svelte.ts @@ -4,15 +4,16 @@ import { DEV } from "esm-env"; import { createDerived, createRawState } from "svelte-signals"; import type { SvelteSet } from "svelte/reactivity"; import type { - DeleteItemsArgs, - InsertItemsArgs, - MoveErrorArgs, + AlreadyExistsErrorArgs, + CircularReferenceErrorArgs, + CopyPasteItemsArgs, + DropPosition, MoveItemsArgs, - NameConflictArgs, NameConflictResolution, PasteOperation, - RenameErrorArgs, + RemoveItemsArgs, RenameItemArgs, + ResolveNameConflictArgs, TreeItemState, } from "./types.js"; @@ -28,12 +29,12 @@ export type TreeStateProps = { id: () => string; generateCopyId: () => string; onRenameItem: (args: RenameItemArgs) => MaybePromise; - onRenameError: (args: RenameErrorArgs) => void; onMoveItems: (args: MoveItemsArgs) => MaybePromise; - onMoveError: (args: MoveErrorArgs) => void; - onInsertItems: (args: InsertItemsArgs) => MaybePromise; - onNameConflict: (args: NameConflictArgs) => MaybePromise; - onDeleteItems: (args: DeleteItemsArgs) => MaybePromise; + onCopyPasteItems: (args: CopyPasteItemsArgs) => MaybePromise; + onRemoveItems: (args: RemoveItemsArgs) => MaybePromise; + onResolveNameConflict: (args: ResolveNameConflictArgs) => MaybePromise; + onAlreadyExistsError: (args: AlreadyExistsErrorArgs) => void; + onCircularReferenceError: (args: CircularReferenceErrorArgs) => void; }; export type TreeItemPosition = { @@ -42,7 +43,26 @@ export type TreeItemPosition = { parent?: TreeItemPosition; }; -export type DropPosition = "before" | "after" | "inside"; +function hasAncestor( + item: TreeItemState, + predicate: (ancestor: TreeItemState) => boolean, +): boolean { + for (let ancestor = item.parent; ancestor !== undefined; ancestor = ancestor.parent) { + if (predicate(ancestor)) { + return true; + } + } + + return false; +} + +function isSelected(item: TreeItemState): boolean { + return item.selected(); +} + +function isInClipboard(item: TreeItemState): boolean { + return item.inClipboard(); +} export function createTreeState({ tree, @@ -56,12 +76,12 @@ export function createTreeState({ id, generateCopyId, onRenameItem, - onRenameError, onMoveItems, - onMoveError, - onInsertItems, - onNameConflict, - onDeleteItems, + onCopyPasteItems, + onRemoveItems, + onResolveNameConflict, + onAlreadyExistsError, + onCircularReferenceError, }: TreeStateProps) { const [tabbableId, setTabbableId] = createRawState(); const [draggedId, setDraggedId] = createRawState(); @@ -195,29 +215,11 @@ export function createTreeState({ return { node, index, parent }; } - function copySelectedToClipboard(operation: PasteOperation): void { - if (selectedIds().size === 0) { - return; - } - - clipboardIds().clear(); - for (const id of selectedIds()) { - clipboardIds().add(id); - } - - setPasteOperation(operation); - } - - function clearClipboard(): void { - clipboardIds().clear(); - setPasteOperation(undefined); - } - - function toggleSelection(item: TreeItemState): void { - if (item.selected()) { - selectedIds().delete(item.node.id); + function toggleSelection(target: TreeItemState): void { + if (target.selected()) { + selectedIds().delete(target.node.id); } else { - selectedIds().add(item.node.id); + selectedIds().add(target.node.id); } } @@ -235,7 +237,7 @@ export function createTreeState({ _selectAll(tree().children); } - function selectUntil(item: TreeItemState, element: HTMLElement): void { + function selectUntil(target: TreeItemState, element: HTMLElement): void { let lastSelected: TreeItemState | undefined; for (const id of selectedIds()) { const current = lookup().get(id); @@ -248,7 +250,7 @@ export function createTreeState({ let current: TreeItemPosition | undefined = items()[0]; do { selectedIds().add(current.node.id); - if (current.node === item.node) { + if (current.node === target.node) { break; } current = getNextItem(current); @@ -266,7 +268,7 @@ export function createTreeState({ const navigate = following !== 0 ? getNextItem : getPreviousItem; let current: TreeItemPosition | undefined = lastSelected; - while (current.node !== item.node) { + while (current.node !== target.node) { current = navigate(current); if (current === undefined) { break; @@ -275,54 +277,69 @@ export function createTreeState({ } } - async function renameItem(item: TreeItemState, name: string): Promise { + function copySelectedToClipboard(operation: PasteOperation): void { + if (selectedIds().size === 0) { + return; + } + + clipboardIds().clear(); + + for (const id of selectedIds()) { + clipboardIds().add(id); + } + + setPasteOperation(operation); + } + + function clearClipboard(): void { + clipboardIds().clear(); + setPasteOperation(undefined); + } + + async function rename(target: TreeItemState, name: string): Promise { if (name.length === 0) { - onRenameError({ - error: "empty", - target: item.node, - name, - }); return false; } - const owner = item.parent?.node ?? tree(); + const owner = target.parent?.node ?? tree(); for (const child of owner.children) { - if (child !== item.node && name === child.name) { - onRenameError({ - error: "already-exists", - target: item.node, - name, - }); + if (child !== target.node && name === child.name) { + onAlreadyExistsError({ name }); return false; } } - if (name === item.node.name) { + if (name === target.node.name) { return true; } - const result = onRenameItem({ - target: item.node, + return await onRenameItem({ + target: target.node, name, }); - return result instanceof Promise ? await result : result; } async function moveItems( movedIds: Set, - item: TreeItemState, + isMoved: (item: TreeItemState) => boolean, + target: TreeItemState, position: DropPosition, ): Promise { - for ( - let current: TreeItemState | undefined = item; - current !== undefined; - current = current.parent - ) { - if (movedIds.has(current.node.id)) { - // Don't move an item next to or inside itself. - onMoveError({ - error: "circular-reference", - target: current.node, + if (isMoved(target)) { + // Don't move the target next to or inside itself. + onCircularReferenceError({ + target: target.node, + position, + }); + return false; + } + + for (let ancestor = target.parent; ancestor !== undefined; ancestor = ancestor.parent) { + if (isMoved(ancestor)) { + // Don't move the ancestor inside itself. + onCircularReferenceError({ + target: ancestor.node, + position: "inside", }); return false; } @@ -332,18 +349,19 @@ export function createTreeState({ switch (position) { case "before": case "after": { - owner = item.parent?.node ?? tree(); + owner = target.parent?.node ?? tree(); break; } case "inside": { - if (item.node.type === "file") { + if (target.node.type === "file") { if (DEV) { throw new Error("Cannot move an item inside a file"); } + return false; } - owner = item.node; + owner = target.node; break; } } @@ -356,27 +374,25 @@ export function createTreeState({ const moved: Array = []; const movedOwners = new Set(); const skippedIds = new Set(); - outer: for (const id of movedIds) { + for (const id of movedIds) { const current = lookup().get(id); if (current === undefined) { continue; } - for (let ancestor = current.parent; ancestor !== undefined; ancestor = ancestor.parent) { - if (movedIds.has(ancestor.node.id)) { - // If an ancestor is moved, its children are moved along with it. - continue outer; - } + if (hasAncestor(current, isMoved)) { + // If an ancestor is moved, its children are moved along with it. + continue; } const currentOwner = current.parent?.node ?? tree(); - if (currentOwner !== owner && ownerChildrenNames.has(current.node.name)) { - const result = onNameConflict({ + const { name } = current.node; + if (currentOwner !== owner && ownerChildrenNames.has(name)) { + const resolution = await onResolveNameConflict({ operation: "move", - target: current.node, + name, }); - const conflictResolution = result instanceof Promise ? await result : result; - switch (conflictResolution) { + switch (resolution) { case "skip": { skippedIds.add(current.node.id); continue; @@ -387,7 +403,7 @@ export function createTreeState({ } } - ownerChildrenNames.add(current.node.name); + ownerChildrenNames.add(name); moved.push(current.node); movedOwners.add(currentOwner); } @@ -417,7 +433,7 @@ export function createTreeState({ continue; } - if (child === item.node) { + if (child === target.node) { children.push(...moved); } @@ -434,7 +450,7 @@ export function createTreeState({ children.push(child); - if (child === item.node) { + if (child === target.node) { children.push(...moved); } } @@ -452,15 +468,14 @@ export function createTreeState({ children, }); - const result = onMoveItems({ + return await onMoveItems({ updates, moved, }); - return result instanceof Promise ? await result : result; } - function moveSelected(item: TreeItemState, position: DropPosition): Promise { - return moveItems(selectedIds(), item, position); + function drop(target: TreeItemState, position: DropPosition): Promise { + return moveItems(selectedIds(), isSelected, target, position); } function copyNode(node: FileTreeNode): FileTreeNode { @@ -482,23 +497,24 @@ export function createTreeState({ } } - async function copyPaste(item: TreeItemState, position: DropPosition): Promise { + async function copyPaste(target: TreeItemState, position: DropPosition): Promise { let owner: FolderNode | FileTree; switch (position) { case "before": case "after": { - owner = item.parent?.node ?? tree(); + owner = target.parent?.node ?? tree(); break; } case "inside": { - if (item.node.type === "file") { + if (target.node.type === "file") { if (DEV) { throw new Error("Cannot move an item inside a file"); } + return false; } - owner = item.node; + owner = target.node; break; } } @@ -509,27 +525,26 @@ export function createTreeState({ } const copies: Array = []; - outer: for (const id of clipboardIds()) { + const originals: Array = []; + for (const id of clipboardIds()) { const current = lookup().get(id); if (current === undefined) { continue; } - for (let ancestor = current.parent; ancestor !== undefined; ancestor = ancestor.parent) { - if (ancestor.inClipboard()) { - // If an ancestor is copied, its children are copied along with it. - continue outer; - } + if (hasAncestor(current, isInClipboard)) { + // If an ancestor is copied, its children are copied along with it. + continue; } - const copy = copyNode(current.node); - if (ownerChildrenNames.has(copy.name)) { - const result = onNameConflict({ - operation: "insert", - target: copy, + const original = current.node; + const { name } = original; + if (ownerChildrenNames.has(name)) { + const resolution = await onResolveNameConflict({ + operation: "copy-paste", + name, }); - const conflictResolution = result instanceof Promise ? await result : result; - switch (conflictResolution) { + switch (resolution) { case "skip": { continue; } @@ -539,8 +554,9 @@ export function createTreeState({ } } - ownerChildrenNames.add(copy.name); - copies.push(copy); + ownerChildrenNames.add(name); + copies.push(copyNode(original)); + originals.push(original); } if (copies.length === 0) { @@ -550,11 +566,11 @@ export function createTreeState({ let start: number; switch (position) { case "before": { - start = item.index; + start = target.index; break; } case "after": { - start = item.index + 1; + start = target.index + 1; break; } case "inside": { @@ -563,23 +579,36 @@ export function createTreeState({ } } - const result = onInsertItems({ + return await onCopyPasteItems({ target: owner, start, - inserted: copies, + copies, + originals, }); - return result instanceof Promise ? await result : result; } - async function paste(item: TreeItemState, position: DropPosition): Promise { + async function paste(target: TreeItemState, position?: DropPosition): Promise { + if (position === undefined) { + switch (target.node.type) { + case "file": { + position = "after"; + break; + } + case "folder": { + position = target.expanded() ? "inside" : "after"; + break; + } + } + } + let didPaste: boolean; switch (pasteOperation()) { case "copy": { - didPaste = await copyPaste(item, position); + didPaste = await copyPaste(target, position); break; } case "cut": { - didPaste = await moveItems(clipboardIds(), item, position); + didPaste = await moveItems(clipboardIds(), isInClipboard, target, position); break; } case undefined: { @@ -594,33 +623,32 @@ export function createTreeState({ return didPaste; } - async function deleteSelected(item: TreeItemState): Promise { - const deleted: Array = []; - const deletedOwners = new Set(); - outer: for (const id of selectedIds()) { + async function remove(target: TreeItemState): Promise { + const removed: Array = []; + const removedOwners = new Set(); + for (const id of selectedIds()) { const current = lookup().get(id); if (current === undefined) { continue; } - for (let ancestor = current.parent; ancestor !== undefined; ancestor = ancestor.parent) { - if (ancestor.selected()) { - // If an ancestor is deleted, its children are deleted along with it. - continue outer; - } + if (hasAncestor(current, isSelected)) { + // If an ancestor is removed, its children are removed along with it. + continue; } - deleted.push(current.node); - deletedOwners.add(current.parent?.node ?? tree()); + removed.push(current.node); + removedOwners.add(current.parent?.node ?? tree()); } - if (deleted.length === 0) { - return true; + if (!hasAncestor(target, isSelected)) { + removed.push(target.node); + removedOwners.add(target.parent?.node ?? tree()); } - let focusTarget: TreeItemPosition | undefined = item; - do { - // Move to the highest selected ancestor as all its children will be deleted. + let focusTarget = getNextNonChildItem(target) ?? getPreviousItem(target); + while (focusTarget !== undefined) { + // Move to the highest selected ancestor as all its children will be removed. for ( let ancestor: TreeItemPosition | undefined = focusTarget.parent; ancestor !== undefined; @@ -634,7 +662,7 @@ export function createTreeState({ // Focus the nearest remaining item after this item. let nearestUnselected: TreeItemPosition | undefined = focusTarget; while (nearestUnselected !== undefined && selectedIds().has(nearestUnselected.node.id)) { - // The current item will be deleted, so we shouldn't traverse its children. + // The current item will be removed, so we shouldn't traverse its children. nearestUnselected = getNextNonChildItem(nearestUnselected); } @@ -652,36 +680,37 @@ export function createTreeState({ // This item might be inside a selected folder, so we need to continue the loop. focusTarget = nearestUnselected; - } while (focusTarget !== undefined); + } - const updates: DeleteItemsArgs["updates"] = []; - for (const deletedOwner of deletedOwners) { + const updates: RemoveItemsArgs["updates"] = []; + for (const removedOwner of removedOwners) { updates.push({ - target: deletedOwner, - children: deletedOwner.children.filter((child) => !selectedIds().has(child.id)), + target: removedOwner, + children: removedOwner.children.filter( + (child) => child !== target.node && !selectedIds().has(child.id), + ), }); } - const result = onDeleteItems({ + const didRemove = await onRemoveItems({ updates, - deleted, + removed, }); - const didDelete = result instanceof Promise ? await result : result; - if (didDelete && focusTarget !== undefined) { + if (didRemove && focusTarget !== undefined) { getItemElement(focusTarget.node.id)?.focus(); } - return didDelete; + return didRemove; } - function onDeleteItem(id: string): void { + function onItemRemoved(id: string): void { selectedIds().delete(id); expandedIds().delete(id); clipboardIds().delete(id); } - function onDestroyItem(id: string): void { + function onItemDestroyed(id: string): void { if (tabbableId() === id) { setTabbableId(undefined); } @@ -698,26 +727,28 @@ export function createTreeState({ clipboardIds, pasteOperation, id, + tabbableId, isItemTabbable, setTabbableId, draggedId, setDraggedId, items, + lookup, getItemElementId, getItemElement, getNextItem, getPreviousItem, - copySelectedToClipboard, - clearClipboard, toggleSelection, selectAll, selectUntil, - renameItem, - moveSelected, + copySelectedToClipboard, + clearClipboard, + rename, + drop, paste, - deleteSelected, - onDeleteItem, - onDestroyItem, + remove, + onItemRemoved, + onItemDestroyed, }; } diff --git a/packages/svelte-file-tree/src/lib/components/Tree/types.ts b/packages/svelte-file-tree/src/lib/components/Tree/types.ts index fb4a5cd..9940a30 100644 --- a/packages/svelte-file-tree/src/lib/components/Tree/types.ts +++ b/packages/svelte-file-tree/src/lib/components/Tree/types.ts @@ -17,15 +17,18 @@ export type TreeItemState = { dragged: () => boolean; }; -export type PasteOperation = "copy" | "cut"; +export type DropPosition = "before" | "after" | "inside"; -export type RenameItemArgs = { - target: FileTreeNode; - name: string; +export type TreeItemSnippetArgs = { + item: TreeItemState; + rename: (name: string) => Promise; + paste: (position?: DropPosition) => Promise; + remove: () => Promise; }; -export type RenameErrorArgs = { - error: "empty" | "already-exists"; +export type PasteOperation = "copy" | "cut"; + +export type RenameItemArgs = { target: FileTreeNode; name: string; }; @@ -38,36 +41,41 @@ export type MoveItemsArgs = { moved: Array; }; -export type MoveErrorArgs = { - error: "circular-reference"; - target: FileTreeNode; -}; - -export type InsertItemsArgs = { +export type CopyPasteItemsArgs = { target: FolderNode | FileTree; start: number; - inserted: Array; -}; - -export type NameConflictArgs = { - operation: "move" | "insert"; - target: FileTreeNode; + copies: Array; + originals: Array; }; -export type NameConflictResolution = "skip" | "cancel"; - -export type DeleteItemsArgs = { +export type RemoveItemsArgs = { updates: Array<{ target: FolderNode | FileTree; children: Array; }>; - deleted: Array; + removed: Array; +}; + +export type ResolveNameConflictArgs = { + operation: "move" | "copy-paste"; + name: string; +}; + +export type NameConflictResolution = "skip" | "cancel"; + +export type AlreadyExistsErrorArgs = { + name: string; +}; + +export type CircularReferenceErrorArgs = { + target: FileTreeNode; + position: DropPosition; }; export interface TreeProps extends Omit { tree: FileTree; - item: Snippet<[item: TreeItemState]>; + item: Snippet<[args: TreeItemSnippetArgs]>; defaultSelectedIds?: Iterable; selectedIds?: SvelteSet; defaultExpandedIds?: Iterable; @@ -81,10 +89,10 @@ export interface TreeProps ref?: HTMLElement | null; generateCopyId?: () => string; onRenameItem?: (args: RenameItemArgs) => MaybePromise; - onRenameError?: (args: RenameErrorArgs) => void; onMoveItems?: (args: MoveItemsArgs) => MaybePromise; - onMoveError?: (args: MoveErrorArgs) => void; - onInsertItems?: (args: InsertItemsArgs) => MaybePromise; - onNameConflict?: (args: NameConflictArgs) => MaybePromise; - onDeleteItems?: (args: DeleteItemsArgs) => MaybePromise; + onCopyPasteItems?: (args: CopyPasteItemsArgs) => MaybePromise; + onRemoveItems?: (args: RemoveItemsArgs) => MaybePromise; + onResolveNameConflict?: (args: ResolveNameConflictArgs) => MaybePromise; + onAlreadyExistsError?: (args: AlreadyExistsErrorArgs) => void; + onCircularReferenceError?: (args: CircularReferenceErrorArgs) => void; } diff --git a/packages/svelte-file-tree/src/lib/components/TreeItem/TreeItem.svelte b/packages/svelte-file-tree/src/lib/components/TreeItem/TreeItem.svelte index 5ecc4a9..1a0b07a 100644 --- a/packages/svelte-file-tree/src/lib/components/TreeItem/TreeItem.svelte +++ b/packages/svelte-file-tree/src/lib/components/TreeItem/TreeItem.svelte @@ -4,7 +4,7 @@ import { flushSync, getContext, hasContext, setContext } from "svelte"; import type { EventHandler } from "svelte/elements"; import { getTreeItemProviderContext } from "../Tree/TreeItemProvider.svelte"; - import type { DropPosition, TreeItemPosition } from "../Tree/state.svelte.js"; + import type { TreeItemPosition } from "../Tree/state.svelte.js"; import { createDragState } from "./state.svelte.js"; import type { TreeItemChildrenSnippetArgs, TreeItemProps } from "./types.js"; @@ -33,9 +33,9 @@ let { children, editing = $bindable(false), + ref = $bindable(null), class: className, style, - ref = $bindable(null), onfocusin, onkeydown, onclick, @@ -276,7 +276,7 @@ break; } case "Delete": { - void treeState.deleteSelected(item()); + void treeState.remove(item()); break; } case "a": { @@ -299,19 +299,7 @@ } case "v": { if (isControlOrMeta(event)) { - let position: DropPosition; - switch (item().node.type) { - case "file": { - position = "after"; - break; - } - case "folder": { - position = item().expanded() ? "inside" : "after"; - break; - } - } - - void treeState.paste(item(), position); + void treeState.paste(item()); } break; } @@ -394,8 +382,8 @@ ); treeState.selectedIds().add(draggedId); - void treeState.moveSelected(item(), position).then((didMove) => { - if (didMove) { + void treeState.drop(item(), position).then((didDrop) => { + if (didDrop) { treeState.getItemElement(draggedId)?.focus(); } }); @@ -407,16 +395,16 @@ treeState.setDraggedId(undefined); }; - $effect(() => { - return () => { - treeState.onDestroyItem(item().node.id); - }; - }); - const childrenArgs: TreeItemChildrenSnippetArgs = { editing: () => editing, dropPosition, }; + + $effect(() => { + return () => { + treeState.onItemDestroyed(item().node.id); + }; + });
string | undefined; diff --git a/packages/svelte-file-tree/src/lib/components/TreeItem/types.ts b/packages/svelte-file-tree/src/lib/components/TreeItem/types.ts index 72a39fa..af3324b 100644 --- a/packages/svelte-file-tree/src/lib/components/TreeItem/types.ts +++ b/packages/svelte-file-tree/src/lib/components/TreeItem/types.ts @@ -1,9 +1,7 @@ import type { HTMLDivAttributes } from "$lib/internal/types.js"; import type { Snippet } from "svelte"; import type { ClassValue } from "svelte/elements"; -import type { DropPosition } from "../Tree/state.svelte.js"; - -export type { DropPosition }; +import type { DropPosition } from "../Tree/types.js"; export type TreeItemChildrenSnippetArgs = { editing: () => boolean; @@ -27,15 +25,7 @@ export interface TreeItemProps > { children: Snippet<[args: TreeItemChildrenSnippetArgs]>; editing?: boolean; - class?: - | ClassValue - | null - | undefined - | ((args: TreeItemChildrenSnippetArgs) => ClassValue | null | undefined); - style?: - | string - | null - | undefined - | ((args: TreeItemChildrenSnippetArgs) => string | null | undefined); ref?: HTMLElement | null; + class?: ClassValue | undefined | ((args: TreeItemChildrenSnippetArgs) => ClassValue | undefined); + style?: string | undefined | ((args: TreeItemChildrenSnippetArgs) => string | undefined); } diff --git a/packages/svelte-file-tree/src/lib/components/TreeItemInput/TreeItemInput.svelte b/packages/svelte-file-tree/src/lib/components/TreeItemInput/TreeItemInput.svelte index accfce7..f6beb9c 100644 --- a/packages/svelte-file-tree/src/lib/components/TreeItemInput/TreeItemInput.svelte +++ b/packages/svelte-file-tree/src/lib/components/TreeItemInput/TreeItemInput.svelte @@ -21,7 +21,7 @@ switch (event.key) { case "Enter": { const { node } = item(); - void treeState.renameItem(item(), name).then((didRename) => { + void treeState.rename(item(), name).then((didRename) => { if (didRename) { treeState.getItemElement(node.id)?.focus(); } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a8720c1..7dbdc12 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,7 +19,7 @@ importers: version: 9.21.0(jiti@2.4.2) eslint-plugin-svelte: specifier: ^3.0.2 - version: 3.0.2(eslint@9.21.0(jiti@2.4.2))(svelte@5.22.1) + version: 3.0.2(eslint@9.21.0(jiti@2.4.2))(svelte@5.23.1) globals: specifier: ^16.0.0 version: 16.0.0 @@ -40,23 +40,23 @@ importers: version: 1.2.2 svelte-signals: specifier: ^0.0.2 - version: 0.0.2(svelte@5.22.1) + version: 0.0.2(svelte@5.23.1) devDependencies: '@sveltejs/kit': - specifier: ^2.18.0 - version: 2.18.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1)))(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1)) + specifier: ^2.20.0 + version: 2.20.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.23.1)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)))(svelte@5.23.1)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)) '@sveltejs/package': specifier: ^2.3.10 - version: 2.3.10(svelte@5.22.1)(typescript@5.8.2) + version: 2.3.10(svelte@5.23.1)(typescript@5.8.2) '@sveltejs/vite-plugin-svelte': specifier: 5.0.3 - version: 5.0.3(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1)) + version: 5.0.3(svelte@5.23.1)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)) '@types/node': - specifier: ^22.13.9 - version: 22.13.9 + specifier: ^22.13.10 + version: 22.13.10 '@vitest/browser': - specifier: ^3.0.7 - version: 3.0.7(@types/node@22.13.9)(playwright@1.50.1)(typescript@5.8.2)(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1))(vitest@3.0.7) + specifier: ^3.0.9 + version: 3.0.9(@types/node@22.13.10)(playwright@1.50.1)(typescript@5.8.2)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2))(vitest@3.0.9) jsdom: specifier: ^26.0.0 version: 26.0.0 @@ -65,46 +65,92 @@ importers: version: 3.5.3 prettier-plugin-svelte: specifier: ^3.3.3 - version: 3.3.3(prettier@3.5.3)(svelte@5.22.1) + version: 3.3.3(prettier@3.5.3)(svelte@5.23.1) publint: - specifier: ^0.3.8 - version: 0.3.8 + specifier: ^0.3.9 + version: 0.3.9 svelte: - specifier: 5.22.1 - version: 5.22.1 + specifier: 5.23.1 + version: 5.23.1 svelte-check: - specifier: ^4.1.4 - version: 4.1.4(svelte@5.22.1)(typescript@5.8.2) + specifier: ^4.1.5 + version: 4.1.5(svelte@5.23.1)(typescript@5.8.2) vite: - specifier: ^6.2.0 - version: 6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1) + specifier: ^6.2.2 + version: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2) vitest: - specifier: 3.0.7 - version: 3.0.7(@types/node@22.13.9)(@vitest/browser@3.0.7)(jiti@2.4.2)(jsdom@26.0.0)(lightningcss@1.29.1)(msw@2.7.3(@types/node@22.13.9)(typescript@5.8.2)) + specifier: 3.0.9 + version: 3.0.9(@types/node@22.13.10)(@vitest/browser@3.0.9)(jiti@2.4.2)(jsdom@26.0.0)(lightningcss@1.29.2)(msw@2.7.3(@types/node@22.13.10)(typescript@5.8.2)) vitest-browser-svelte: specifier: ^0.1.0 - version: 0.1.0(@vitest/browser@3.0.7)(svelte@5.22.1)(vitest@3.0.7) + version: 0.1.0(@vitest/browser@3.0.9)(svelte@5.23.1)(vitest@3.0.9) + + packages/svelte-file-tree-styled: + dependencies: + '@lucide/svelte': + specifier: ^0.482.0 + version: 0.482.0(svelte@5.23.1) + bits-ui: + specifier: ^1.3.13 + version: 1.3.13(svelte@5.23.1) + svelte-file-tree: + specifier: workspace:^ + version: link:../svelte-file-tree + devDependencies: + '@sveltejs/kit': + specifier: ^2.20.0 + version: 2.20.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.23.1)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)))(svelte@5.23.1)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)) + '@sveltejs/package': + specifier: ^2.0.0 + version: 2.3.10(svelte@5.23.1)(typescript@5.8.2) + '@sveltejs/vite-plugin-svelte': + specifier: ^5.0.0 + version: 5.0.3(svelte@5.23.1)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)) + '@tailwindcss/vite': + specifier: ^4.0.14 + version: 4.0.14(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)) + prettier: + specifier: ^3.4.2 + version: 3.5.3 + prettier-plugin-svelte: + specifier: ^3.3.3 + version: 3.3.3(prettier@3.5.3)(svelte@5.23.1) + prettier-plugin-tailwindcss: + specifier: ^0.6.11 + version: 0.6.11(prettier-plugin-svelte@3.3.3(prettier@3.5.3)(svelte@5.23.1))(prettier@3.5.3) + publint: + specifier: ^0.3.9 + version: 0.3.9 + svelte: + specifier: ^5.23.1 + version: 5.23.1 + svelte-check: + specifier: ^4.1.5 + version: 4.1.5(svelte@5.23.1)(typescript@5.8.2) + tailwindcss: + specifier: ^4.0.14 + version: 4.0.14 + typescript: + specifier: ^5.0.0 + version: 5.8.2 + vite: + specifier: ^6.2.2 + version: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2) sites/preview: devDependencies: - '@lucide/svelte': - specifier: 0.477.0-rc.0 - version: 0.477.0-rc.0(svelte@5.22.1) '@sveltejs/adapter-static': specifier: ^3.0.6 - version: 3.0.8(@sveltejs/kit@2.18.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1)))(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1))) + version: 3.0.8(@sveltejs/kit@2.18.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)))(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2))) '@sveltejs/kit': specifier: ^2.18.0 - version: 2.18.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1)))(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1)) + version: 2.18.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)))(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)) '@sveltejs/vite-plugin-svelte': specifier: 5.0.3 - version: 5.0.3(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1)) + version: 5.0.3(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)) '@tailwindcss/vite': specifier: 4.0.9 - version: 4.0.9(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1)) - bits-ui: - specifier: 1.3.5 - version: 1.3.5(svelte@5.22.1) + version: 4.0.9(vite@6.2.0(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)) prettier: specifier: ^3.5.3 version: 3.5.3 @@ -123,6 +169,9 @@ importers: svelte-file-tree: specifier: workspace:^ version: link:../../packages/svelte-file-tree + svelte-file-tree-styled: + specifier: workspace:^ + version: link:../../packages/svelte-file-tree-styled svelte-sonner: specifier: ^0.3.28 version: 0.3.28(svelte@5.22.1) @@ -131,34 +180,28 @@ importers: version: 4.0.9 vite: specifier: ^6.2.0 - version: 6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1) + version: 6.2.0(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2) sites/sveltekit-example: devDependencies: - '@lucide/svelte': - specifier: 0.477.0-rc.0 - version: 0.477.0-rc.0(svelte@5.22.1) '@sveltejs/adapter-auto': specifier: ^4.0.0 - version: 4.0.0(@sveltejs/kit@2.18.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1)))(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1))) + version: 4.0.0(@sveltejs/kit@2.18.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)))(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2))) '@sveltejs/kit': specifier: ^2.18.0 - version: 2.18.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1)))(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1)) + version: 2.18.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)))(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)) '@sveltejs/vite-plugin-svelte': specifier: ^5.0.0 - version: 5.0.3(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1)) + version: 5.0.3(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)) '@tailwindcss/vite': specifier: ^4.0.9 - version: 4.0.9(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1)) + version: 4.0.9(vite@6.2.0(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)) '@types/better-sqlite3': specifier: ^7.6.12 version: 7.6.12 better-sqlite3: specifier: ^11.8.1 version: 11.8.1 - bits-ui: - specifier: 1.3.5 - version: 1.3.5(svelte@5.22.1) prettier: specifier: ^3.5.3 version: 3.5.3 @@ -177,6 +220,9 @@ importers: svelte-file-tree: specifier: workspace:^ version: link:../../packages/svelte-file-tree + svelte-file-tree-styled: + specifier: workspace:^ + version: link:../../packages/svelte-file-tree-styled svelte-sonner: specifier: ^0.3.28 version: 0.3.28(svelte@5.22.1) @@ -188,7 +234,7 @@ importers: version: 1.0.0-rc.3(typescript@5.8.2) vite: specifier: ^6.2.0 - version: 6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1) + version: 6.2.0(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2) packages: @@ -207,6 +253,10 @@ packages: resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} + '@babel/runtime@7.26.10': + resolution: {integrity: sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==} + engines: {node: '>=6.9.0'} + '@babel/runtime@7.26.9': resolution: {integrity: sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==} engines: {node: '>=6.9.0'} @@ -309,150 +359,300 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.25.1': + resolution: {integrity: sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.25.0': resolution: {integrity: sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==} engines: {node: '>=18'} cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.25.1': + resolution: {integrity: sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.25.0': resolution: {integrity: sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==} engines: {node: '>=18'} cpu: [arm] os: [android] + '@esbuild/android-arm@0.25.1': + resolution: {integrity: sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.25.0': resolution: {integrity: sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==} engines: {node: '>=18'} cpu: [x64] os: [android] + '@esbuild/android-x64@0.25.1': + resolution: {integrity: sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.25.0': resolution: {integrity: sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.25.1': + resolution: {integrity: sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.25.0': resolution: {integrity: sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==} engines: {node: '>=18'} cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.25.1': + resolution: {integrity: sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.25.0': resolution: {integrity: sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.25.1': + resolution: {integrity: sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.25.0': resolution: {integrity: sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.25.1': + resolution: {integrity: sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.25.0': resolution: {integrity: sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==} engines: {node: '>=18'} cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.25.1': + resolution: {integrity: sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.25.0': resolution: {integrity: sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==} engines: {node: '>=18'} cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.25.1': + resolution: {integrity: sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.25.0': resolution: {integrity: sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==} engines: {node: '>=18'} cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.25.1': + resolution: {integrity: sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.25.0': resolution: {integrity: sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==} engines: {node: '>=18'} cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.25.1': + resolution: {integrity: sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.25.0': resolution: {integrity: sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.25.1': + resolution: {integrity: sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.25.0': resolution: {integrity: sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.25.1': + resolution: {integrity: sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.25.0': resolution: {integrity: sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.25.1': + resolution: {integrity: sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.25.0': resolution: {integrity: sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==} engines: {node: '>=18'} cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.25.1': + resolution: {integrity: sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.25.0': resolution: {integrity: sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==} engines: {node: '>=18'} cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.25.1': + resolution: {integrity: sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-arm64@0.25.0': resolution: {integrity: sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] + '@esbuild/netbsd-arm64@0.25.1': + resolution: {integrity: sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + '@esbuild/netbsd-x64@0.25.0': resolution: {integrity: sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.25.1': + resolution: {integrity: sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + '@esbuild/openbsd-arm64@0.25.0': resolution: {integrity: sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-arm64@0.25.1': + resolution: {integrity: sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.25.0': resolution: {integrity: sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.25.1': + resolution: {integrity: sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/sunos-x64@0.25.0': resolution: {integrity: sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==} engines: {node: '>=18'} cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.25.1': + resolution: {integrity: sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.25.0': resolution: {integrity: sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==} engines: {node: '>=18'} cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.25.1': + resolution: {integrity: sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.25.0': resolution: {integrity: sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==} engines: {node: '>=18'} cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.25.1': + resolution: {integrity: sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.25.0': resolution: {integrity: sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==} engines: {node: '>=18'} cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.25.1': + resolution: {integrity: sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.4.1': resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -516,8 +716,8 @@ packages: resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} engines: {node: '>=18.18'} - '@inquirer/confirm@5.1.6': - resolution: {integrity: sha512-6ZXYK3M1XmaVBZX6FCfChgtponnL0R6I7k8Nu+kaoNkT828FVZTcca1MqmWQipaW2oNREQl5AaPCUOOCVNdRMw==} + '@inquirer/confirm@5.1.8': + resolution: {integrity: sha512-dNLWCYZvXDjO3rnQfk2iuJNL4Ivwz/T2+C3+WnNfJKsNGSuOs3wAo2F6e0p946gtSAk31nZMfW+MRmYaplPKsg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -525,8 +725,8 @@ packages: '@types/node': optional: true - '@inquirer/core@10.1.7': - resolution: {integrity: sha512-AA9CQhlrt6ZgiSy6qoAigiA1izOa751ugX6ioSjqgJ+/Gd+tEN/TORk5sUYNjXuHWfW0r1n/a6ak4u/NqHHrtA==} + '@inquirer/core@10.1.9': + resolution: {integrity: sha512-sXhVB8n20NYkUBfDYgizGHlpRVaCRjtuzNZA6xpALIUbkgfd2Hjz+DfEN6+h1BRnuxw0/P4jCIMjMsEOAMwAJw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -534,12 +734,12 @@ packages: '@types/node': optional: true - '@inquirer/figures@1.0.10': - resolution: {integrity: sha512-Ey6176gZmeqZuY/W/nZiUyvmb1/qInjcpiZjXWi6nON+nxJpD1bxtSoBxNliGISae32n6OwbY+TSXPZ1CfS4bw==} + '@inquirer/figures@1.0.11': + resolution: {integrity: sha512-eOg92lvrn/aRUqbxRyvpEWnrvRuTYRifixHkYVpJiygTgVSBIHDqLh0SrMQXkafvULg3ck11V7xvR+zcgvpHFw==} engines: {node: '>=18'} - '@inquirer/type@3.0.4': - resolution: {integrity: sha512-2MNFrDY8jkFYc9Il9DgLsHhMzuHnOYM1+CUYVWbzu9oT0hC7V7EcYvdCKeoll/Fcci04A+ERZ9wcc7cQ8lTkIA==} + '@inquirer/type@3.0.5': + resolution: {integrity: sha512-ZJpeIYYueOz/i/ONzrfof8g89kNdO2hjGuvULROo3O8rlB2CRtSseE5KeirnyE4t/thAn/EwvS/vuQeJCn+NZg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -568,8 +768,8 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - '@lucide/svelte@0.477.0-rc.0': - resolution: {integrity: sha512-nxfvKd6HQ3Cx6DZkhHPtl97EZP0Iqyq3PPUhYLdExwdYa7jTwuqJKTOcjsZWkfLKKKjMpX49I5HHinSr9cCfLQ==} + '@lucide/svelte@0.482.0': + resolution: {integrity: sha512-n2ycHU9cNcleRDwwpEHBJ6pYzVhHIaL3a+9dQa8kns9hB2g05bY+v2p2KP8v0pZwtNhYTHk/F2o2uZ1bVtQGhw==} peerDependencies: svelte: ^5 @@ -616,96 +816,191 @@ packages: cpu: [arm] os: [android] + '@rollup/rollup-android-arm-eabi@4.36.0': + resolution: {integrity: sha512-jgrXjjcEwN6XpZXL0HUeOVGfjXhPyxAbbhD0BlXUB+abTOpbPiN5Wb3kOT7yb+uEtATNYF5x5gIfwutmuBA26w==} + cpu: [arm] + os: [android] + '@rollup/rollup-android-arm64@4.34.9': resolution: {integrity: sha512-4KW7P53h6HtJf5Y608T1ISKvNIYLWRKMvfnG0c44M6In4DQVU58HZFEVhWINDZKp7FZps98G3gxwC1sb0wXUUg==} cpu: [arm64] os: [android] + '@rollup/rollup-android-arm64@4.36.0': + resolution: {integrity: sha512-NyfuLvdPdNUfUNeYKUwPwKsE5SXa2J6bCt2LdB/N+AxShnkpiczi3tcLJrm5mA+eqpy0HmaIY9F6XCa32N5yzg==} + cpu: [arm64] + os: [android] + '@rollup/rollup-darwin-arm64@4.34.9': resolution: {integrity: sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ==} cpu: [arm64] os: [darwin] + '@rollup/rollup-darwin-arm64@4.36.0': + resolution: {integrity: sha512-JQ1Jk5G4bGrD4pWJQzWsD8I1n1mgPXq33+/vP4sk8j/z/C2siRuxZtaUA7yMTf71TCZTZl/4e1bfzwUmFb3+rw==} + cpu: [arm64] + os: [darwin] + '@rollup/rollup-darwin-x64@4.34.9': resolution: {integrity: sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q==} cpu: [x64] os: [darwin] + '@rollup/rollup-darwin-x64@4.36.0': + resolution: {integrity: sha512-6c6wMZa1lrtiRsbDziCmjE53YbTkxMYhhnWnSW8R/yqsM7a6mSJ3uAVT0t8Y/DGt7gxUWYuFM4bwWk9XCJrFKA==} + cpu: [x64] + os: [darwin] + '@rollup/rollup-freebsd-arm64@4.34.9': resolution: {integrity: sha512-2lzjQPJbN5UnHm7bHIUKFMulGTQwdvOkouJDpPysJS+QFBGDJqcfh+CxxtG23Ik/9tEvnebQiylYoazFMAgrYw==} cpu: [arm64] os: [freebsd] + '@rollup/rollup-freebsd-arm64@4.36.0': + resolution: {integrity: sha512-KXVsijKeJXOl8QzXTsA+sHVDsFOmMCdBRgFmBb+mfEb/7geR7+C8ypAml4fquUt14ZyVXaw2o1FWhqAfOvA4sg==} + cpu: [arm64] + os: [freebsd] + '@rollup/rollup-freebsd-x64@4.34.9': resolution: {integrity: sha512-SLl0hi2Ah2H7xQYd6Qaiu01kFPzQ+hqvdYSoOtHYg/zCIFs6t8sV95kaoqjzjFwuYQLtOI0RZre/Ke0nPaQV+g==} cpu: [x64] os: [freebsd] + '@rollup/rollup-freebsd-x64@4.36.0': + resolution: {integrity: sha512-dVeWq1ebbvByI+ndz4IJcD4a09RJgRYmLccwlQ8bPd4olz3Y213uf1iwvc7ZaxNn2ab7bjc08PrtBgMu6nb4pQ==} + cpu: [x64] + os: [freebsd] + '@rollup/rollup-linux-arm-gnueabihf@4.34.9': resolution: {integrity: sha512-88I+D3TeKItrw+Y/2ud4Tw0+3CxQ2kLgu3QvrogZ0OfkmX/DEppehus7L3TS2Q4lpB+hYyxhkQiYPJ6Mf5/dPg==} cpu: [arm] os: [linux] + '@rollup/rollup-linux-arm-gnueabihf@4.36.0': + resolution: {integrity: sha512-bvXVU42mOVcF4le6XSjscdXjqx8okv4n5vmwgzcmtvFdifQ5U4dXFYaCB87namDRKlUL9ybVtLQ9ztnawaSzvg==} + cpu: [arm] + os: [linux] + '@rollup/rollup-linux-arm-musleabihf@4.34.9': resolution: {integrity: sha512-3qyfWljSFHi9zH0KgtEPG4cBXHDFhwD8kwg6xLfHQ0IWuH9crp005GfoUUh/6w9/FWGBwEHg3lxK1iHRN1MFlA==} cpu: [arm] os: [linux] + '@rollup/rollup-linux-arm-musleabihf@4.36.0': + resolution: {integrity: sha512-JFIQrDJYrxOnyDQGYkqnNBtjDwTgbasdbUiQvcU8JmGDfValfH1lNpng+4FWlhaVIR4KPkeddYjsVVbmJYvDcg==} + cpu: [arm] + os: [linux] + '@rollup/rollup-linux-arm64-gnu@4.34.9': resolution: {integrity: sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw==} cpu: [arm64] os: [linux] + '@rollup/rollup-linux-arm64-gnu@4.36.0': + resolution: {integrity: sha512-KqjYVh3oM1bj//5X7k79PSCZ6CvaVzb7Qs7VMWS+SlWB5M8p3FqufLP9VNp4CazJ0CsPDLwVD9r3vX7Ci4J56A==} + cpu: [arm64] + os: [linux] + '@rollup/rollup-linux-arm64-musl@4.34.9': resolution: {integrity: sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A==} cpu: [arm64] os: [linux] + '@rollup/rollup-linux-arm64-musl@4.36.0': + resolution: {integrity: sha512-QiGnhScND+mAAtfHqeT+cB1S9yFnNQ/EwCg5yE3MzoaZZnIV0RV9O5alJAoJKX/sBONVKeZdMfO8QSaWEygMhw==} + cpu: [arm64] + os: [linux] + '@rollup/rollup-linux-loongarch64-gnu@4.34.9': resolution: {integrity: sha512-dRAgTfDsn0TE0HI6cmo13hemKpVHOEyeciGtvlBTkpx/F65kTvShtY/EVyZEIfxFkV5JJTuQ9tP5HGBS0hfxIg==} cpu: [loong64] os: [linux] + '@rollup/rollup-linux-loongarch64-gnu@4.36.0': + resolution: {integrity: sha512-1ZPyEDWF8phd4FQtTzMh8FQwqzvIjLsl6/84gzUxnMNFBtExBtpL51H67mV9xipuxl1AEAerRBgBwFNpkw8+Lg==} + cpu: [loong64] + os: [linux] + '@rollup/rollup-linux-powerpc64le-gnu@4.34.9': resolution: {integrity: sha512-PHcNOAEhkoMSQtMf+rJofwisZqaU8iQ8EaSps58f5HYll9EAY5BSErCZ8qBDMVbq88h4UxaNPlbrKqfWP8RfJA==} cpu: [ppc64] os: [linux] + '@rollup/rollup-linux-powerpc64le-gnu@4.36.0': + resolution: {integrity: sha512-VMPMEIUpPFKpPI9GZMhJrtu8rxnp6mJR3ZzQPykq4xc2GmdHj3Q4cA+7avMyegXy4n1v+Qynr9fR88BmyO74tg==} + cpu: [ppc64] + os: [linux] + '@rollup/rollup-linux-riscv64-gnu@4.34.9': resolution: {integrity: sha512-Z2i0Uy5G96KBYKjeQFKbbsB54xFOL5/y1P5wNBsbXB8yE+At3oh0DVMjQVzCJRJSfReiB2tX8T6HUFZ2k8iaKg==} cpu: [riscv64] os: [linux] + '@rollup/rollup-linux-riscv64-gnu@4.36.0': + resolution: {integrity: sha512-ttE6ayb/kHwNRJGYLpuAvB7SMtOeQnVXEIpMtAvx3kepFQeowVED0n1K9nAdraHUPJ5hydEMxBpIR7o4nrm8uA==} + cpu: [riscv64] + os: [linux] + '@rollup/rollup-linux-s390x-gnu@4.34.9': resolution: {integrity: sha512-U+5SwTMoeYXoDzJX5dhDTxRltSrIax8KWwfaaYcynuJw8mT33W7oOgz0a+AaXtGuvhzTr2tVKh5UO8GVANTxyQ==} cpu: [s390x] os: [linux] + '@rollup/rollup-linux-s390x-gnu@4.36.0': + resolution: {integrity: sha512-4a5gf2jpS0AIe7uBjxDeUMNcFmaRTbNv7NxI5xOCs4lhzsVyGR/0qBXduPnoWf6dGC365saTiwag8hP1imTgag==} + cpu: [s390x] + os: [linux] + '@rollup/rollup-linux-x64-gnu@4.34.9': resolution: {integrity: sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==} cpu: [x64] os: [linux] + '@rollup/rollup-linux-x64-gnu@4.36.0': + resolution: {integrity: sha512-5KtoW8UWmwFKQ96aQL3LlRXX16IMwyzMq/jSSVIIyAANiE1doaQsx/KRyhAvpHlPjPiSU/AYX/8m+lQ9VToxFQ==} + cpu: [x64] + os: [linux] + '@rollup/rollup-linux-x64-musl@4.34.9': resolution: {integrity: sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA==} cpu: [x64] os: [linux] + '@rollup/rollup-linux-x64-musl@4.36.0': + resolution: {integrity: sha512-sycrYZPrv2ag4OCvaN5js+f01eoZ2U+RmT5as8vhxiFz+kxwlHrsxOwKPSA8WyS+Wc6Epid9QeI/IkQ9NkgYyQ==} + cpu: [x64] + os: [linux] + '@rollup/rollup-win32-arm64-msvc@4.34.9': resolution: {integrity: sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q==} cpu: [arm64] os: [win32] + '@rollup/rollup-win32-arm64-msvc@4.36.0': + resolution: {integrity: sha512-qbqt4N7tokFwwSVlWDsjfoHgviS3n/vZ8LK0h1uLG9TYIRuUTJC88E1xb3LM2iqZ/WTqNQjYrtmtGmrmmawB6A==} + cpu: [arm64] + os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.34.9': resolution: {integrity: sha512-KB48mPtaoHy1AwDNkAJfHXvHp24H0ryZog28spEs0V48l3H1fr4i37tiyHsgKZJnCmvxsbATdZGBpbmxTE3a9w==} cpu: [ia32] os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.36.0': + resolution: {integrity: sha512-t+RY0JuRamIocMuQcfwYSOkmdX9dtkr1PbhKW42AMvaDQa+jOdpUYysroTF/nuPpAaQMWp7ye+ndlmmthieJrQ==} + cpu: [ia32] + os: [win32] + '@rollup/rollup-win32-x64-msvc@4.34.9': resolution: {integrity: sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==} cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-msvc@4.36.0': + resolution: {integrity: sha512-aRXd7tRZkWLqGbChgcMMDEHjOKudo1kChb1Jt1IfR8cY/KIpgNviLeJy5FUb9IpSuQj8dU2fAYNMPW/hLKOSTw==} + cpu: [x64] + os: [win32] + '@sveltejs/acorn-typescript@1.0.5': resolution: {integrity: sha512-IwQk4yfwLdibDlrXVE04jTZYlLnwsTT2PIOQQGNLWfjavGifnk1JD1LcZjZaBTRcxZu2FfPfNLOE04DSu9lqtQ==} peerDependencies: @@ -730,6 +1025,15 @@ packages: svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.3 || ^6.0.0 + '@sveltejs/kit@2.20.0': + resolution: {integrity: sha512-xCUGevE2GFhpDAxZiVOsk6HKaBicwU7uWYcMOcpHCDcjoN6mKBIeMEzuddRMqSA4zjbeA+RcillCv1ppkWRwSQ==} + engines: {node: '>=18.13'} + hasBin: true + peerDependencies: + '@sveltejs/vite-plugin-svelte': ^3.0.0 || ^4.0.0-next.1 || ^5.0.0 + svelte: ^4.0.0 || ^5.0.0-next.0 + vite: ^5.0.3 || ^6.0.0 + '@sveltejs/package@2.3.10': resolution: {integrity: sha512-A4fQacgjJ7C/7oSmxR61/TdB14u6ecyMZ8V9JCR5Lol0bLj/PdJPU4uFodFBsKzO3iFiJMpNTgZZ+zYsYZNpUg==} engines: {node: ^16.14 || >=18} @@ -755,79 +1059,157 @@ packages: '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + '@tailwindcss/node@4.0.14': + resolution: {integrity: sha512-Ux9NbFkKWYE4rfUFz6M5JFLs/GEYP6ysxT8uSyPn6aTbh2K3xDE1zz++eVK4Vwx799fzMF8CID9sdHn4j/Ab8w==} + '@tailwindcss/node@4.0.9': resolution: {integrity: sha512-tOJvdI7XfJbARYhxX+0RArAhmuDcczTC46DGCEziqxzzbIaPnfYaIyRT31n4u8lROrsO7Q6u/K9bmQHL2uL1bQ==} + '@tailwindcss/oxide-android-arm64@4.0.14': + resolution: {integrity: sha512-VBFKC2rFyfJ5J8lRwjy6ub3rgpY186kAcYgiUr8ArR8BAZzMruyeKJ6mlsD22Zp5ZLcPW/FXMasJiJBx0WsdQg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + '@tailwindcss/oxide-android-arm64@4.0.9': resolution: {integrity: sha512-YBgy6+2flE/8dbtrdotVInhMVIxnHJPbAwa7U1gX4l2ThUIaPUp18LjB9wEH8wAGMBZUb//SzLtdXXNBHPUl6Q==} engines: {node: '>= 10'} cpu: [arm64] os: [android] + '@tailwindcss/oxide-darwin-arm64@4.0.14': + resolution: {integrity: sha512-U3XOwLrefGr2YQZ9DXasDSNWGPZBCh8F62+AExBEDMLDfvLLgI/HDzY8Oq8p/JtqkAY38sWPOaNnRwEGKU5Zmg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + '@tailwindcss/oxide-darwin-arm64@4.0.9': resolution: {integrity: sha512-pWdl4J2dIHXALgy2jVkwKBmtEb73kqIfMpYmcgESr7oPQ+lbcQ4+tlPeVXaSAmang+vglAfFpXQCOvs/aGSqlw==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] + '@tailwindcss/oxide-darwin-x64@4.0.14': + resolution: {integrity: sha512-V5AjFuc3ndWGnOi1d379UsODb0TzAS2DYIP/lwEbfvafUaD2aNZIcbwJtYu2DQqO2+s/XBvDVA+w4yUyaewRwg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + '@tailwindcss/oxide-darwin-x64@4.0.9': resolution: {integrity: sha512-4Dq3lKp0/C7vrRSkNPtBGVebEyWt9QPPlQctxJ0H3MDyiQYvzVYf8jKow7h5QkWNe8hbatEqljMj/Y0M+ERYJg==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] + '@tailwindcss/oxide-freebsd-x64@4.0.14': + resolution: {integrity: sha512-tXvtxbaZfcPfqBwW3f53lTcyH6EDT+1eT7yabwcfcxTs+8yTPqxsDUhrqe9MrnEzpNkd+R/QAjJapfd4tjWdLg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + '@tailwindcss/oxide-freebsd-x64@4.0.9': resolution: {integrity: sha512-k7U1RwRODta8x0uealtVt3RoWAWqA+D5FAOsvVGpYoI6ObgmnzqWW6pnVwz70tL8UZ/QXjeMyiICXyjzB6OGtQ==} engines: {node: '>= 10'} cpu: [x64] os: [freebsd] + '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.14': + resolution: {integrity: sha512-cSeLNWWqIWeSTmBntQvyY2/2gcLX8rkPFfDDTQVF8qbRcRMVPLxBvFVJyfSAYRNch6ZyVH2GI6dtgALOBDpdNA==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.9': resolution: {integrity: sha512-NDDjVweHz2zo4j+oS8y3KwKL5wGCZoXGA9ruJM982uVJLdsF8/1AeKvUwKRlMBpxHt1EdWJSAh8a0Mfhl28GlQ==} engines: {node: '>= 10'} cpu: [arm] os: [linux] + '@tailwindcss/oxide-linux-arm64-gnu@4.0.14': + resolution: {integrity: sha512-bwDWLBalXFMDItcSXzFk6y7QKvj6oFlaY9vM+agTlwFL1n1OhDHYLZkSjaYsh6KCeG0VB0r7H8PUJVOM1LRZyg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + '@tailwindcss/oxide-linux-arm64-gnu@4.0.9': resolution: {integrity: sha512-jk90UZ0jzJl3Dy1BhuFfRZ2KP9wVKMXPjmCtY4U6fF2LvrjP5gWFJj5VHzfzHonJexjrGe1lMzgtjriuZkxagg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + '@tailwindcss/oxide-linux-arm64-musl@4.0.14': + resolution: {integrity: sha512-gVkJdnR/L6iIcGYXx64HGJRmlme2FGr/aZH0W6u4A3RgPMAb+6ELRLi+UBiH83RXBm9vwCfkIC/q8T51h8vUJQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + '@tailwindcss/oxide-linux-arm64-musl@4.0.9': resolution: {integrity: sha512-3eMjyTC6HBxh9nRgOHzrc96PYh1/jWOwHZ3Kk0JN0Kl25BJ80Lj9HEvvwVDNTgPg154LdICwuFLuhfgH9DULmg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + '@tailwindcss/oxide-linux-x64-gnu@4.0.14': + resolution: {integrity: sha512-EE+EQ+c6tTpzsg+LGO1uuusjXxYx0Q00JE5ubcIGfsogSKth8n8i2BcS2wYTQe4jXGs+BQs35l78BIPzgwLddw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + '@tailwindcss/oxide-linux-x64-gnu@4.0.9': resolution: {integrity: sha512-v0D8WqI/c3WpWH1kq/HP0J899ATLdGZmENa2/emmNjubT0sWtEke9W9+wXeEoACuGAhF9i3PO5MeyditpDCiWQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + '@tailwindcss/oxide-linux-x64-musl@4.0.14': + resolution: {integrity: sha512-KCCOzo+L6XPT0oUp2Jwh233ETRQ/F6cwUnMnR0FvMUCbkDAzHbcyOgpfuAtRa5HD0WbTbH4pVD+S0pn1EhNfbw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + '@tailwindcss/oxide-linux-x64-musl@4.0.9': resolution: {integrity: sha512-Kvp0TCkfeXyeehqLJr7otsc4hd/BUPfcIGrQiwsTVCfaMfjQZCG7DjI+9/QqPZha8YapLA9UoIcUILRYO7NE1Q==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + '@tailwindcss/oxide-win32-arm64-msvc@4.0.14': + resolution: {integrity: sha512-AHObFiFL9lNYcm3tZSPqa/cHGpM5wOrNmM2uOMoKppp+0Hom5uuyRh0QkOp7jftsHZdrZUpmoz0Mp6vhh2XtUg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + '@tailwindcss/oxide-win32-arm64-msvc@4.0.9': resolution: {integrity: sha512-m3+60T/7YvWekajNq/eexjhV8z10rswcz4BC9bioJ7YaN+7K8W2AmLmG0B79H14m6UHE571qB0XsPus4n0QVgQ==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] + '@tailwindcss/oxide-win32-x64-msvc@4.0.14': + resolution: {integrity: sha512-rNXXMDJfCJLw/ZaFTOLOHoGULxyXfh2iXTGiChFiYTSgKBKQHIGEpV0yn5N25WGzJJ+VBnRjHzlmDqRV+d//oQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + '@tailwindcss/oxide-win32-x64-msvc@4.0.9': resolution: {integrity: sha512-dpc05mSlqkwVNOUjGu/ZXd5U1XNch1kHFJ4/cHkZFvaW1RzbHmRt24gvM8/HC6IirMxNarzVw4IXVtvrOoZtxA==} engines: {node: '>= 10'} cpu: [x64] os: [win32] + '@tailwindcss/oxide@4.0.14': + resolution: {integrity: sha512-M8VCNyO/NBi5vJ2cRcI9u8w7Si+i76a7o1vveoGtbbjpEYJZYiyc7f2VGps/DqawO56l3tImIbq2OT/533jcrA==} + engines: {node: '>= 10'} + '@tailwindcss/oxide@4.0.9': resolution: {integrity: sha512-eLizHmXFqHswJONwfqi/WZjtmWZpIalpvMlNhTM99/bkHtUs6IqgI1XQ0/W5eO2HiRQcIlXUogI2ycvKhVLNcA==} engines: {node: '>= 10'} + '@tailwindcss/vite@4.0.14': + resolution: {integrity: sha512-y69ztPTRFy+13EPS/7dEFVl7q2Goh1pQueVO8IfGeyqSpcx/joNJXFk0lLhMgUbF0VFJotwRSb9ZY7Xoq3r26Q==} + peerDependencies: + vite: ^5.2.0 || ^6 + '@tailwindcss/vite@4.0.9': resolution: {integrity: sha512-BIKJO+hwdIsN7V6I7SziMZIVHWWMsV/uCQKYEbeiGRDRld+TkqyRRl9+dQ0MCXbhcVr+D9T/qX2E84kT7V281g==} peerDependencies: @@ -861,8 +1243,8 @@ packages: '@types/node@12.20.55': resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - '@types/node@22.13.9': - resolution: {integrity: sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw==} + '@types/node@22.13.10': + resolution: {integrity: sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==} '@types/statuses@2.0.5': resolution: {integrity: sha512-jmIUGWrAiwu3dZpxntxieC+1n/5c3mjrImkmOSQ2NC5uP6cYO4aAZDdSmRcI5C1oiTmqlZGHC+/NmJrKogbP5A==} @@ -917,12 +1299,12 @@ packages: resolution: {integrity: sha512-2z8JQJWAzPdDd51dRQ/oqIJxe99/hoLIqmf8RMCAJQtYDc535W/Jt2+RTP4bP0aKeBG1F65yjIZuczOXCmbWwg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@vitest/browser@3.0.7': - resolution: {integrity: sha512-TDzZtnbe37KZLSLhvlO1pUkeRSRzW3rOhPLsshX8agGoPELMlG7EvS4z9GfsdaCxsP7oWLBJpFjNJwLS458Bzg==} + '@vitest/browser@3.0.9': + resolution: {integrity: sha512-P9dcCeMkA3/oYGfUzRFZJLZxiOpApztxhPsQDUiZzAzLoZonWhse2+vPB0xEBP8Q0lX1WCEEmtY7HzBRi4oYBA==} peerDependencies: playwright: '*' safaridriver: '*' - vitest: 3.0.7 + vitest: 3.0.9 webdriverio: ^7.0.0 || ^8.0.0 || ^9.0.0 peerDependenciesMeta: playwright: @@ -932,11 +1314,11 @@ packages: webdriverio: optional: true - '@vitest/expect@3.0.7': - resolution: {integrity: sha512-QP25f+YJhzPfHrHfYHtvRn+uvkCFCqFtW9CktfBxmB+25QqWsx7VB2As6f4GmwllHLDhXNHvqedwhvMmSnNmjw==} + '@vitest/expect@3.0.9': + resolution: {integrity: sha512-5eCqRItYgIML7NNVgJj6TVCmdzE7ZVgJhruW0ziSQV4V7PvLkDL1bBkBdcTs/VuIz0IxPb5da1IDSqc1TR9eig==} - '@vitest/mocker@3.0.7': - resolution: {integrity: sha512-qui+3BLz9Eonx4EAuR/i+QlCX6AUZ35taDQgwGkK/Tw6/WgwodSrjN1X2xf69IA/643ZX5zNKIn2svvtZDrs4w==} + '@vitest/mocker@3.0.9': + resolution: {integrity: sha512-ryERPIBOnvevAkTq+L1lD+DTFBRcjueL9lOUfXsLfwP92h4e+Heb+PjiqS3/OURWPtywfafK0kj++yDFjWUmrA==} peerDependencies: msw: ^2.4.9 vite: ^5.0.0 || ^6.0.0 @@ -946,20 +1328,20 @@ packages: vite: optional: true - '@vitest/pretty-format@3.0.7': - resolution: {integrity: sha512-CiRY0BViD/V8uwuEzz9Yapyao+M9M008/9oMOSQydwbwb+CMokEq3XVaF3XK/VWaOK0Jm9z7ENhybg70Gtxsmg==} + '@vitest/pretty-format@3.0.9': + resolution: {integrity: sha512-OW9F8t2J3AwFEwENg3yMyKWweF7oRJlMyHOMIhO5F3n0+cgQAJZBjNgrF8dLwFTEXl5jUqBLXd9QyyKv8zEcmA==} - '@vitest/runner@3.0.7': - resolution: {integrity: sha512-WeEl38Z0S2ZcuRTeyYqaZtm4e26tq6ZFqh5y8YD9YxfWuu0OFiGFUbnxNynwLjNRHPsXyee2M9tV7YxOTPZl2g==} + '@vitest/runner@3.0.9': + resolution: {integrity: sha512-NX9oUXgF9HPfJSwl8tUZCMP1oGx2+Sf+ru6d05QjzQz4OwWg0psEzwY6VexP2tTHWdOkhKHUIZH+fS6nA7jfOw==} - '@vitest/snapshot@3.0.7': - resolution: {integrity: sha512-eqTUryJWQN0Rtf5yqCGTQWsCFOQe4eNz5Twsu21xYEcnFJtMU5XvmG0vgebhdLlrHQTSq5p8vWHJIeJQV8ovsA==} + '@vitest/snapshot@3.0.9': + resolution: {integrity: sha512-AiLUiuZ0FuA+/8i19mTYd+re5jqjEc2jZbgJ2up0VY0Ddyyxg/uUtBDpIFAy4uzKaQxOW8gMgBdAJJ2ydhu39A==} - '@vitest/spy@3.0.7': - resolution: {integrity: sha512-4T4WcsibB0B6hrKdAZTM37ekuyFZt2cGbEGd2+L0P8ov15J1/HUsUaqkXEQPNAWr4BtPPe1gI+FYfMHhEKfR8w==} + '@vitest/spy@3.0.9': + resolution: {integrity: sha512-/CcK2UDl0aQ2wtkp3YVWldrpLRNCfVcIOFGlVGKO4R5eajsH393Z1yiXLVQ7vWsj26JOEjeZI0x5sm5P4OGUNQ==} - '@vitest/utils@3.0.7': - resolution: {integrity: sha512-xePVpCRfooFX3rANQjwoditoXgWb1MaFbzmGuPP59MK6i13mrnDw/yEIyJudLeW6/38mCNcwCiJIGmpDPibAIg==} + '@vitest/utils@3.0.9': + resolution: {integrity: sha512-ilHM5fHhZ89MCp5aAaM9uhfl1c2JdxVxl3McqsdVyVNN6JffnEen8UMCdRTzOhGXNQGo5GNL9QugHrz727Wnng==} acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} @@ -971,6 +1353,11 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + acorn@8.14.1: + resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} + engines: {node: '>=0.4.0'} + hasBin: true + agent-base@7.1.3: resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} engines: {node: '>= 14'} @@ -1042,8 +1429,8 @@ packages: bindings@1.5.0: resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - bits-ui@1.3.5: - resolution: {integrity: sha512-pfd8MK5Hp7bOvsW25LJrWVABmBIeAOH3g0pFPJLBIKlcqsaalEdBYejQmlSwrynEDX589aW3hTAWbhmWqRjjrQ==} + bits-ui@1.3.13: + resolution: {integrity: sha512-0ysKdvHBIArfFBe+MYVAvu5OANOsivk+UJftdiW+e6lGHzf+EW/TZpLh69Vf0n8pYTjkH+33CHlVIImxTZRIMQ==} engines: {node: '>=18', pnpm: '>=8.7.0'} peerDependencies: svelte: ^5.11.0 @@ -1244,6 +1631,11 @@ packages: engines: {node: '>=18'} hasBin: true + esbuild@0.25.1: + resolution: {integrity: sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==} + engines: {node: '>=18'} + hasBin: true + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -1363,6 +1755,14 @@ packages: picomatch: optional: true + fdir@6.4.3: + resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} @@ -1601,64 +2001,128 @@ packages: cpu: [arm64] os: [darwin] + lightningcss-darwin-arm64@1.29.2: + resolution: {integrity: sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + lightningcss-darwin-x64@1.29.1: resolution: {integrity: sha512-k33G9IzKUpHy/J/3+9MCO4e+PzaFblsgBjSGlpAaFikeBFm8B/CkO3cKU9oI4g+fjS2KlkLM/Bza9K/aw8wsNA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] + lightningcss-darwin-x64@1.29.2: + resolution: {integrity: sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + lightningcss-freebsd-x64@1.29.1: resolution: {integrity: sha512-0SUW22fv/8kln2LnIdOCmSuXnxgxVC276W5KLTwoehiO0hxkacBxjHOL5EtHD8BAXg2BvuhsJPmVMasvby3LiQ==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] + lightningcss-freebsd-x64@1.29.2: + resolution: {integrity: sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + lightningcss-linux-arm-gnueabihf@1.29.1: resolution: {integrity: sha512-sD32pFvlR0kDlqsOZmYqH/68SqUMPNj+0pucGxToXZi4XZgZmqeX/NkxNKCPsswAXU3UeYgDSpGhu05eAufjDg==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] + lightningcss-linux-arm-gnueabihf@1.29.2: + resolution: {integrity: sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + lightningcss-linux-arm64-gnu@1.29.1: resolution: {integrity: sha512-0+vClRIZ6mmJl/dxGuRsE197o1HDEeeRk6nzycSy2GofC2JsY4ifCRnvUWf/CUBQmlrvMzt6SMQNMSEu22csWQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] + lightningcss-linux-arm64-gnu@1.29.2: + resolution: {integrity: sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + lightningcss-linux-arm64-musl@1.29.1: resolution: {integrity: sha512-UKMFrG4rL/uHNgelBsDwJcBqVpzNJbzsKkbI3Ja5fg00sgQnHw/VrzUTEc4jhZ+AN2BvQYz/tkHu4vt1kLuJyw==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] + lightningcss-linux-arm64-musl@1.29.2: + resolution: {integrity: sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + lightningcss-linux-x64-gnu@1.29.1: resolution: {integrity: sha512-u1S+xdODy/eEtjADqirA774y3jLcm8RPtYztwReEXoZKdzgsHYPl0s5V52Tst+GKzqjebkULT86XMSxejzfISw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] + lightningcss-linux-x64-gnu@1.29.2: + resolution: {integrity: sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + lightningcss-linux-x64-musl@1.29.1: resolution: {integrity: sha512-L0Tx0DtaNUTzXv0lbGCLB/c/qEADanHbu4QdcNOXLIe1i8i22rZRpbT3gpWYsCh9aSL9zFujY/WmEXIatWvXbw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] + lightningcss-linux-x64-musl@1.29.2: + resolution: {integrity: sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + lightningcss-win32-arm64-msvc@1.29.1: resolution: {integrity: sha512-QoOVnkIEFfbW4xPi+dpdft/zAKmgLgsRHfJalEPYuJDOWf7cLQzYg0DEh8/sn737FaeMJxHZRc1oBreiwZCjog==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] + lightningcss-win32-arm64-msvc@1.29.2: + resolution: {integrity: sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + lightningcss-win32-x64-msvc@1.29.1: resolution: {integrity: sha512-NygcbThNBe4JElP+olyTI/doBNGJvLs3bFCRPdvuCcxZCcCZ71B858IHpdm7L1btZex0FvCmM17FK98Y9MRy1Q==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] + lightningcss-win32-x64-msvc@1.29.2: + resolution: {integrity: sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + lightningcss@1.29.1: resolution: {integrity: sha512-FmGoeD4S05ewj+AkhTY+D+myDvXI6eL27FjHIjoyUkO/uw7WZD1fBVs0QxeYWa7E17CUHJaYX/RUGISCtcrG4Q==} engines: {node: '>= 12.0.0'} + lightningcss@1.29.2: + resolution: {integrity: sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==} + engines: {node: '>= 12.0.0'} + lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} @@ -1995,8 +2459,8 @@ packages: psl@1.15.0: resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} - publint@0.3.8: - resolution: {integrity: sha512-qJyxCpQFf0j0uvlr7GizYZiQgAFgePbAVRV2uecAbNIXniDD/NMSNNBL8+DxLMMjhjgPuLJ3l2GbrB0F9MwvfA==} + publint@0.3.9: + resolution: {integrity: sha512-irTwfRfYW38vomkxxoiZQtFtUOQKpz5m0p9Z60z4xpXrl1KmvSrX1OMARvnnolB5usOXeNfvLj6d/W3rwXKfBQ==} engines: {node: '>=18'} hasBin: true @@ -2035,8 +2499,8 @@ packages: resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} engines: {node: '>= 14.16.0'} - readdirp@4.1.1: - resolution: {integrity: sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==} + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} engines: {node: '>= 14.18.0'} regenerator-runtime@0.14.1: @@ -2066,6 +2530,11 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rollup@4.36.0: + resolution: {integrity: sha512-zwATAXNQxUcd40zgtQG0ZafcRK4g004WtEl7kbuhTWPvf07PsfohXl39jVUvPF7jvNAIkKPQ2XrsDlWuxBd++Q==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + rrweb-cssom@0.8.0: resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} @@ -2194,6 +2663,14 @@ packages: svelte: ^4.0.0 || ^5.0.0-next.0 typescript: '>=5.0.0' + svelte-check@4.1.5: + resolution: {integrity: sha512-Gb0T2IqBNe1tLB9EB1Qh+LOe+JB8wt2/rNBDGvkxQVvk8vNeAoG+vZgFB/3P5+zC7RWlyBlzm9dVjZFph/maIg==} + engines: {node: '>= 18.0.0'} + hasBin: true + peerDependencies: + svelte: ^4.0.0 || ^5.0.0-next.0 + typescript: '>=5.0.0' + svelte-eslint-parser@1.0.0: resolution: {integrity: sha512-diZzpeeFhAxormeIhmRS4vXx98GG6T7Dq5y1a6qffqs/5MBrBqqDg8bj88iEohp6bvhU4MIABJmOTa0gXWcbSQ==} engines: {node: ^18.20.4 || ^20.18.0 || >=22.10.0} @@ -2229,12 +2706,19 @@ packages: resolution: {integrity: sha512-b9DQGnfrZc+km4u3j6qkEY87pYe23yfgBT03CkeBlYST+Wzij7ut1o0BSoQ+UmiyAO1nPh9DMJJCoGDdUOrunw==} engines: {node: '>=18'} + svelte@5.23.1: + resolution: {integrity: sha512-DUu3e5tQDO+PtKffjqJ548YfeKtw2Rqc9/+nlP26DZ0AopWTJNylkNnTOP/wcgIt1JSnovyISxEZ/lDR1OhbOw==} + engines: {node: '>=18'} + symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} tabbable@6.2.0: resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + tailwindcss@4.0.14: + resolution: {integrity: sha512-92YT2dpt671tFiHH/e1ok9D987N9fHD5VWoly1CdPD/Cd1HMglvZwP3nx2yTj2lbXDAHt8QssZkxTLCCTNL+xw==} + tailwindcss@4.0.9: resolution: {integrity: sha512-12laZu+fv1ONDRoNR9ipTOpUD7RN9essRVkX36sjxuRUInpN7hIiHN4lBd/SIFjbISvnXzp8h/hXzmU8SQQYhw==} @@ -2366,13 +2850,53 @@ packages: typescript: optional: true - vite-node@3.0.7: - resolution: {integrity: sha512-2fX0QwX4GkkkpULXdT1Pf4q0tC1i1lFOyseKoonavXUNlQ77KpW2XqBGGNIm/J4Ows4KxgGJzDguYVPKwG/n5A==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - hasBin: true - - vite@6.2.0: - resolution: {integrity: sha512-7dPxoo+WsT/64rDcwoOjk76XHj+TqNTIvHKcuMQ1k4/SeHDaQt5GFAeLYzrimZrMpn/O6DtdI03WUjdxuPM0oQ==} + vite-node@3.0.9: + resolution: {integrity: sha512-w3Gdx7jDcuT9cNn9jExXgOyKmf5UOTb6WMHz8LGAm54eS1Elf5OuBhCxl6zJxGhEeIkgsE1WbHuoL0mj/UXqXg==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + + vite@6.2.0: + resolution: {integrity: sha512-7dPxoo+WsT/64rDcwoOjk76XHj+TqNTIvHKcuMQ1k4/SeHDaQt5GFAeLYzrimZrMpn/O6DtdI03WUjdxuPM0oQ==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vite@6.2.2: + resolution: {integrity: sha512-yW7PeMM+LkDzc7CgJuRLMW2Jz0FxMOsVJ8Lv3gpgW9WLcb9cTW+121UEr1hvmfR7w3SegR5ItvYyzVz1vxNJgQ==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -2427,16 +2951,16 @@ packages: svelte: '>3.0.0' vitest: ^2.1.0 || ^3.0.0-0 - vitest@3.0.7: - resolution: {integrity: sha512-IP7gPK3LS3Fvn44x30X1dM9vtawm0aesAa2yBIZ9vQf+qB69NXC5776+Qmcr7ohUXIQuLhk7xQR0aSUIDPqavg==} + vitest@3.0.9: + resolution: {integrity: sha512-BbcFDqNyBlfSpATmTtXOAOj71RNKDDvjBM/uPfnxxVGrG+FSH2RQIwgeEngTaTkuU/h0ScFvf+tRcKfYXzBybQ==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/debug': ^4.1.12 '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - '@vitest/browser': 3.0.7 - '@vitest/ui': 3.0.7 + '@vitest/browser': 3.0.9 + '@vitest/ui': 3.0.9 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -2581,6 +3105,10 @@ snapshots: '@babel/helper-validator-identifier@7.25.9': {} + '@babel/runtime@7.26.10': + dependencies: + regenerator-runtime: 0.14.1 + '@babel/runtime@7.26.9': dependencies: regenerator-runtime: 0.14.1 @@ -2763,78 +3291,153 @@ snapshots: '@esbuild/aix-ppc64@0.25.0': optional: true + '@esbuild/aix-ppc64@0.25.1': + optional: true + '@esbuild/android-arm64@0.25.0': optional: true + '@esbuild/android-arm64@0.25.1': + optional: true + '@esbuild/android-arm@0.25.0': optional: true + '@esbuild/android-arm@0.25.1': + optional: true + '@esbuild/android-x64@0.25.0': optional: true + '@esbuild/android-x64@0.25.1': + optional: true + '@esbuild/darwin-arm64@0.25.0': optional: true + '@esbuild/darwin-arm64@0.25.1': + optional: true + '@esbuild/darwin-x64@0.25.0': optional: true + '@esbuild/darwin-x64@0.25.1': + optional: true + '@esbuild/freebsd-arm64@0.25.0': optional: true + '@esbuild/freebsd-arm64@0.25.1': + optional: true + '@esbuild/freebsd-x64@0.25.0': optional: true + '@esbuild/freebsd-x64@0.25.1': + optional: true + '@esbuild/linux-arm64@0.25.0': optional: true + '@esbuild/linux-arm64@0.25.1': + optional: true + '@esbuild/linux-arm@0.25.0': optional: true + '@esbuild/linux-arm@0.25.1': + optional: true + '@esbuild/linux-ia32@0.25.0': optional: true + '@esbuild/linux-ia32@0.25.1': + optional: true + '@esbuild/linux-loong64@0.25.0': optional: true + '@esbuild/linux-loong64@0.25.1': + optional: true + '@esbuild/linux-mips64el@0.25.0': optional: true + '@esbuild/linux-mips64el@0.25.1': + optional: true + '@esbuild/linux-ppc64@0.25.0': optional: true + '@esbuild/linux-ppc64@0.25.1': + optional: true + '@esbuild/linux-riscv64@0.25.0': optional: true + '@esbuild/linux-riscv64@0.25.1': + optional: true + '@esbuild/linux-s390x@0.25.0': optional: true + '@esbuild/linux-s390x@0.25.1': + optional: true + '@esbuild/linux-x64@0.25.0': optional: true + '@esbuild/linux-x64@0.25.1': + optional: true + '@esbuild/netbsd-arm64@0.25.0': optional: true + '@esbuild/netbsd-arm64@0.25.1': + optional: true + '@esbuild/netbsd-x64@0.25.0': optional: true + '@esbuild/netbsd-x64@0.25.1': + optional: true + '@esbuild/openbsd-arm64@0.25.0': optional: true + '@esbuild/openbsd-arm64@0.25.1': + optional: true + '@esbuild/openbsd-x64@0.25.0': optional: true + '@esbuild/openbsd-x64@0.25.1': + optional: true + '@esbuild/sunos-x64@0.25.0': optional: true + '@esbuild/sunos-x64@0.25.1': + optional: true + '@esbuild/win32-arm64@0.25.0': optional: true + '@esbuild/win32-arm64@0.25.1': + optional: true + '@esbuild/win32-ia32@0.25.0': optional: true + '@esbuild/win32-ia32@0.25.1': + optional: true + '@esbuild/win32-x64@0.25.0': optional: true + '@esbuild/win32-x64@0.25.1': + optional: true + '@eslint-community/eslint-utils@4.4.1(eslint@9.21.0(jiti@2.4.2))': dependencies: eslint: 9.21.0(jiti@2.4.2) @@ -2901,17 +3504,17 @@ snapshots: '@humanwhocodes/retry@0.4.2': {} - '@inquirer/confirm@5.1.6(@types/node@22.13.9)': + '@inquirer/confirm@5.1.8(@types/node@22.13.10)': dependencies: - '@inquirer/core': 10.1.7(@types/node@22.13.9) - '@inquirer/type': 3.0.4(@types/node@22.13.9) + '@inquirer/core': 10.1.9(@types/node@22.13.10) + '@inquirer/type': 3.0.5(@types/node@22.13.10) optionalDependencies: - '@types/node': 22.13.9 + '@types/node': 22.13.10 - '@inquirer/core@10.1.7(@types/node@22.13.9)': + '@inquirer/core@10.1.9(@types/node@22.13.10)': dependencies: - '@inquirer/figures': 1.0.10 - '@inquirer/type': 3.0.4(@types/node@22.13.9) + '@inquirer/figures': 1.0.11 + '@inquirer/type': 3.0.5(@types/node@22.13.10) ansi-escapes: 4.3.2 cli-width: 4.1.0 mute-stream: 2.0.0 @@ -2919,13 +3522,13 @@ snapshots: wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 22.13.9 + '@types/node': 22.13.10 - '@inquirer/figures@1.0.10': {} + '@inquirer/figures@1.0.11': {} - '@inquirer/type@3.0.4(@types/node@22.13.9)': + '@inquirer/type@3.0.5(@types/node@22.13.10)': optionalDependencies: - '@types/node': 22.13.9 + '@types/node': 22.13.10 '@internationalized/date@3.7.0': dependencies: @@ -2948,9 +3551,9 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 - '@lucide/svelte@0.477.0-rc.0(svelte@5.22.1)': + '@lucide/svelte@0.482.0(svelte@5.23.1)': dependencies: - svelte: 5.22.1 + svelte: 5.23.1 '@manypkg/find-root@1.1.0': dependencies: @@ -3005,76 +3608,137 @@ snapshots: '@rollup/rollup-android-arm-eabi@4.34.9': optional: true + '@rollup/rollup-android-arm-eabi@4.36.0': + optional: true + '@rollup/rollup-android-arm64@4.34.9': optional: true + '@rollup/rollup-android-arm64@4.36.0': + optional: true + '@rollup/rollup-darwin-arm64@4.34.9': optional: true + '@rollup/rollup-darwin-arm64@4.36.0': + optional: true + '@rollup/rollup-darwin-x64@4.34.9': optional: true + '@rollup/rollup-darwin-x64@4.36.0': + optional: true + '@rollup/rollup-freebsd-arm64@4.34.9': optional: true + '@rollup/rollup-freebsd-arm64@4.36.0': + optional: true + '@rollup/rollup-freebsd-x64@4.34.9': optional: true + '@rollup/rollup-freebsd-x64@4.36.0': + optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.34.9': optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.36.0': + optional: true + '@rollup/rollup-linux-arm-musleabihf@4.34.9': optional: true + '@rollup/rollup-linux-arm-musleabihf@4.36.0': + optional: true + '@rollup/rollup-linux-arm64-gnu@4.34.9': optional: true + '@rollup/rollup-linux-arm64-gnu@4.36.0': + optional: true + '@rollup/rollup-linux-arm64-musl@4.34.9': optional: true + '@rollup/rollup-linux-arm64-musl@4.36.0': + optional: true + '@rollup/rollup-linux-loongarch64-gnu@4.34.9': optional: true + '@rollup/rollup-linux-loongarch64-gnu@4.36.0': + optional: true + '@rollup/rollup-linux-powerpc64le-gnu@4.34.9': optional: true + '@rollup/rollup-linux-powerpc64le-gnu@4.36.0': + optional: true + '@rollup/rollup-linux-riscv64-gnu@4.34.9': optional: true + '@rollup/rollup-linux-riscv64-gnu@4.36.0': + optional: true + '@rollup/rollup-linux-s390x-gnu@4.34.9': optional: true + '@rollup/rollup-linux-s390x-gnu@4.36.0': + optional: true + '@rollup/rollup-linux-x64-gnu@4.34.9': optional: true + '@rollup/rollup-linux-x64-gnu@4.36.0': + optional: true + '@rollup/rollup-linux-x64-musl@4.34.9': optional: true + '@rollup/rollup-linux-x64-musl@4.36.0': + optional: true + '@rollup/rollup-win32-arm64-msvc@4.34.9': optional: true + '@rollup/rollup-win32-arm64-msvc@4.36.0': + optional: true + '@rollup/rollup-win32-ia32-msvc@4.34.9': optional: true + '@rollup/rollup-win32-ia32-msvc@4.36.0': + optional: true + '@rollup/rollup-win32-x64-msvc@4.34.9': optional: true + '@rollup/rollup-win32-x64-msvc@4.36.0': + optional: true + '@sveltejs/acorn-typescript@1.0.5(acorn@8.14.0)': dependencies: acorn: 8.14.0 - '@sveltejs/adapter-auto@4.0.0(@sveltejs/kit@2.18.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1)))(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1)))': + '@sveltejs/acorn-typescript@1.0.5(acorn@8.14.1)': + dependencies: + acorn: 8.14.1 + + '@sveltejs/adapter-auto@4.0.0(@sveltejs/kit@2.18.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)))(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)))': dependencies: - '@sveltejs/kit': 2.18.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1)))(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1)) + '@sveltejs/kit': 2.18.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)))(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)) import-meta-resolve: 4.1.0 - '@sveltejs/adapter-static@3.0.8(@sveltejs/kit@2.18.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1)))(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1)))': + '@sveltejs/adapter-static@3.0.8(@sveltejs/kit@2.18.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)))(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)))': dependencies: - '@sveltejs/kit': 2.18.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1)))(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1)) + '@sveltejs/kit': 2.18.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)))(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)) - '@sveltejs/kit@2.18.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1)))(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1))': + '@sveltejs/kit@2.18.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)))(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2))': dependencies: - '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1)) + '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)) '@types/cookie': 0.6.0 cookie: 0.6.0 devalue: 5.1.1 @@ -3087,38 +3751,77 @@ snapshots: set-cookie-parser: 2.7.1 sirv: 3.0.1 svelte: 5.22.1 - vite: 6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1) + vite: 6.2.0(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2) + + '@sveltejs/kit@2.20.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.23.1)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)))(svelte@5.23.1)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2))': + dependencies: + '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.23.1)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)) + '@types/cookie': 0.6.0 + cookie: 0.6.0 + devalue: 5.1.1 + esm-env: 1.2.2 + import-meta-resolve: 4.1.0 + kleur: 4.1.5 + magic-string: 0.30.17 + mrmime: 2.0.1 + sade: 1.8.1 + set-cookie-parser: 2.7.1 + sirv: 3.0.1 + svelte: 5.23.1 + vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2) - '@sveltejs/package@2.3.10(svelte@5.22.1)(typescript@5.8.2)': + '@sveltejs/package@2.3.10(svelte@5.23.1)(typescript@5.8.2)': dependencies: chokidar: 4.0.3 kleur: 4.1.5 sade: 1.8.1 semver: 7.6.3 - svelte: 5.22.1 - svelte2tsx: 0.7.34(svelte@5.22.1)(typescript@5.8.2) + svelte: 5.23.1 + svelte2tsx: 0.7.34(svelte@5.23.1)(typescript@5.8.2) transitivePeerDependencies: - typescript - '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1)))(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1))': + '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)))(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2))': dependencies: - '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1)) + '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)) debug: 4.4.0 svelte: 5.22.1 - vite: 6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1) + vite: 6.2.0(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2) + transitivePeerDependencies: + - supports-color + + '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.23.1)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)))(svelte@5.23.1)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2))': + dependencies: + '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.23.1)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)) + debug: 4.4.0 + svelte: 5.23.1 + vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1))': + '@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1)))(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1)) + '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)))(svelte@5.22.1)(vite@6.2.0(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)) debug: 4.4.0 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.17 svelte: 5.22.1 - vite: 6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1) - vitefu: 1.0.5(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1)) + vite: 6.2.0(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2) + vitefu: 1.0.5(vite@6.2.0(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)) + transitivePeerDependencies: + - supports-color + + '@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.23.1)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2))': + dependencies: + '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.23.1)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)))(svelte@5.23.1)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)) + debug: 4.4.0 + deepmerge: 4.3.1 + kleur: 4.1.5 + magic-string: 0.30.17 + svelte: 5.23.1 + vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2) + vitefu: 1.0.5(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)) transitivePeerDependencies: - supports-color @@ -3126,45 +3829,98 @@ snapshots: dependencies: tslib: 2.8.1 + '@tailwindcss/node@4.0.14': + dependencies: + enhanced-resolve: 5.18.1 + jiti: 2.4.2 + tailwindcss: 4.0.14 + '@tailwindcss/node@4.0.9': dependencies: enhanced-resolve: 5.18.1 jiti: 2.4.2 tailwindcss: 4.0.9 + '@tailwindcss/oxide-android-arm64@4.0.14': + optional: true + '@tailwindcss/oxide-android-arm64@4.0.9': optional: true + '@tailwindcss/oxide-darwin-arm64@4.0.14': + optional: true + '@tailwindcss/oxide-darwin-arm64@4.0.9': optional: true + '@tailwindcss/oxide-darwin-x64@4.0.14': + optional: true + '@tailwindcss/oxide-darwin-x64@4.0.9': optional: true + '@tailwindcss/oxide-freebsd-x64@4.0.14': + optional: true + '@tailwindcss/oxide-freebsd-x64@4.0.9': optional: true + '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.14': + optional: true + '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.9': optional: true + '@tailwindcss/oxide-linux-arm64-gnu@4.0.14': + optional: true + '@tailwindcss/oxide-linux-arm64-gnu@4.0.9': optional: true + '@tailwindcss/oxide-linux-arm64-musl@4.0.14': + optional: true + '@tailwindcss/oxide-linux-arm64-musl@4.0.9': optional: true + '@tailwindcss/oxide-linux-x64-gnu@4.0.14': + optional: true + '@tailwindcss/oxide-linux-x64-gnu@4.0.9': optional: true + '@tailwindcss/oxide-linux-x64-musl@4.0.14': + optional: true + '@tailwindcss/oxide-linux-x64-musl@4.0.9': optional: true + '@tailwindcss/oxide-win32-arm64-msvc@4.0.14': + optional: true + '@tailwindcss/oxide-win32-arm64-msvc@4.0.9': optional: true + '@tailwindcss/oxide-win32-x64-msvc@4.0.14': + optional: true + '@tailwindcss/oxide-win32-x64-msvc@4.0.9': optional: true + '@tailwindcss/oxide@4.0.14': + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.0.14 + '@tailwindcss/oxide-darwin-arm64': 4.0.14 + '@tailwindcss/oxide-darwin-x64': 4.0.14 + '@tailwindcss/oxide-freebsd-x64': 4.0.14 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.0.14 + '@tailwindcss/oxide-linux-arm64-gnu': 4.0.14 + '@tailwindcss/oxide-linux-arm64-musl': 4.0.14 + '@tailwindcss/oxide-linux-x64-gnu': 4.0.14 + '@tailwindcss/oxide-linux-x64-musl': 4.0.14 + '@tailwindcss/oxide-win32-arm64-msvc': 4.0.14 + '@tailwindcss/oxide-win32-x64-msvc': 4.0.14 + '@tailwindcss/oxide@4.0.9': optionalDependencies: '@tailwindcss/oxide-android-arm64': 4.0.9 @@ -3179,18 +3935,26 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.0.9 '@tailwindcss/oxide-win32-x64-msvc': 4.0.9 - '@tailwindcss/vite@4.0.9(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1))': + '@tailwindcss/vite@4.0.14(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2))': + dependencies: + '@tailwindcss/node': 4.0.14 + '@tailwindcss/oxide': 4.0.14 + lightningcss: 1.29.2 + tailwindcss: 4.0.14 + vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2) + + '@tailwindcss/vite@4.0.9(vite@6.2.0(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2))': dependencies: '@tailwindcss/node': 4.0.9 '@tailwindcss/oxide': 4.0.9 lightningcss: 1.29.1 tailwindcss: 4.0.9 - vite: 6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1) + vite: 6.2.0(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2) '@testing-library/dom@10.4.0': dependencies: '@babel/code-frame': 7.26.2 - '@babel/runtime': 7.26.9 + '@babel/runtime': 7.26.10 '@types/aria-query': 5.0.4 aria-query: 5.3.0 chalk: 4.1.2 @@ -3206,7 +3970,7 @@ snapshots: '@types/better-sqlite3@7.6.12': dependencies: - '@types/node': 22.13.9 + '@types/node': 22.13.10 '@types/cookie@0.6.0': {} @@ -3216,7 +3980,7 @@ snapshots: '@types/node@12.20.55': {} - '@types/node@22.13.9': + '@types/node@22.13.10': dependencies: undici-types: 6.20.0 @@ -3301,17 +4065,17 @@ snapshots: '@typescript-eslint/types': 8.26.0 eslint-visitor-keys: 4.2.0 - '@vitest/browser@3.0.7(@types/node@22.13.9)(playwright@1.50.1)(typescript@5.8.2)(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1))(vitest@3.0.7)': + '@vitest/browser@3.0.9(@types/node@22.13.10)(playwright@1.50.1)(typescript@5.8.2)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2))(vitest@3.0.9)': dependencies: '@testing-library/dom': 10.4.0 '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.0) - '@vitest/mocker': 3.0.7(msw@2.7.3(@types/node@22.13.9)(typescript@5.8.2))(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1)) - '@vitest/utils': 3.0.7 + '@vitest/mocker': 3.0.9(msw@2.7.3(@types/node@22.13.10)(typescript@5.8.2))(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)) + '@vitest/utils': 3.0.9 magic-string: 0.30.17 - msw: 2.7.3(@types/node@22.13.9)(typescript@5.8.2) + msw: 2.7.3(@types/node@22.13.10)(typescript@5.8.2) sirv: 3.0.1 tinyrainbow: 2.0.0 - vitest: 3.0.7(@types/node@22.13.9)(@vitest/browser@3.0.7)(jiti@2.4.2)(jsdom@26.0.0)(lightningcss@1.29.1)(msw@2.7.3(@types/node@22.13.9)(typescript@5.8.2)) + vitest: 3.0.9(@types/node@22.13.10)(@vitest/browser@3.0.9)(jiti@2.4.2)(jsdom@26.0.0)(lightningcss@1.29.2)(msw@2.7.3(@types/node@22.13.10)(typescript@5.8.2)) ws: 8.18.1 optionalDependencies: playwright: 1.50.1 @@ -3322,44 +4086,44 @@ snapshots: - utf-8-validate - vite - '@vitest/expect@3.0.7': + '@vitest/expect@3.0.9': dependencies: - '@vitest/spy': 3.0.7 - '@vitest/utils': 3.0.7 + '@vitest/spy': 3.0.9 + '@vitest/utils': 3.0.9 chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.0.7(msw@2.7.3(@types/node@22.13.9)(typescript@5.8.2))(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1))': + '@vitest/mocker@3.0.9(msw@2.7.3(@types/node@22.13.10)(typescript@5.8.2))(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2))': dependencies: - '@vitest/spy': 3.0.7 + '@vitest/spy': 3.0.9 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - msw: 2.7.3(@types/node@22.13.9)(typescript@5.8.2) - vite: 6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1) + msw: 2.7.3(@types/node@22.13.10)(typescript@5.8.2) + vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2) - '@vitest/pretty-format@3.0.7': + '@vitest/pretty-format@3.0.9': dependencies: tinyrainbow: 2.0.0 - '@vitest/runner@3.0.7': + '@vitest/runner@3.0.9': dependencies: - '@vitest/utils': 3.0.7 + '@vitest/utils': 3.0.9 pathe: 2.0.3 - '@vitest/snapshot@3.0.7': + '@vitest/snapshot@3.0.9': dependencies: - '@vitest/pretty-format': 3.0.7 + '@vitest/pretty-format': 3.0.9 magic-string: 0.30.17 pathe: 2.0.3 - '@vitest/spy@3.0.7': + '@vitest/spy@3.0.9': dependencies: tinyspy: 3.0.2 - '@vitest/utils@3.0.7': + '@vitest/utils@3.0.9': dependencies: - '@vitest/pretty-format': 3.0.7 + '@vitest/pretty-format': 3.0.9 loupe: 3.1.3 tinyrainbow: 2.0.0 @@ -3369,6 +4133,8 @@ snapshots: acorn@8.14.0: {} + acorn@8.14.1: {} + agent-base@7.1.3: {} ajv@6.12.6: @@ -3429,15 +4195,15 @@ snapshots: dependencies: file-uri-to-path: 1.0.0 - bits-ui@1.3.5(svelte@5.22.1): + bits-ui@1.3.13(svelte@5.23.1): dependencies: '@floating-ui/core': 1.6.9 '@floating-ui/dom': 1.6.13 '@internationalized/date': 3.7.0 esm-env: 1.2.2 - runed: 0.23.4(svelte@5.22.1) - svelte: 5.22.1 - svelte-toolbelt: 0.7.1(svelte@5.22.1) + runed: 0.23.4(svelte@5.23.1) + svelte: 5.23.1 + svelte-toolbelt: 0.7.1(svelte@5.23.1) tabbable: 6.2.0 bl@4.1.0: @@ -3491,7 +4257,7 @@ snapshots: chokidar@4.0.3: dependencies: - readdirp: 4.1.1 + readdirp: 4.1.2 chownr@1.1.4: {} @@ -3627,6 +4393,34 @@ snapshots: '@esbuild/win32-ia32': 0.25.0 '@esbuild/win32-x64': 0.25.0 + esbuild@0.25.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.1 + '@esbuild/android-arm': 0.25.1 + '@esbuild/android-arm64': 0.25.1 + '@esbuild/android-x64': 0.25.1 + '@esbuild/darwin-arm64': 0.25.1 + '@esbuild/darwin-x64': 0.25.1 + '@esbuild/freebsd-arm64': 0.25.1 + '@esbuild/freebsd-x64': 0.25.1 + '@esbuild/linux-arm': 0.25.1 + '@esbuild/linux-arm64': 0.25.1 + '@esbuild/linux-ia32': 0.25.1 + '@esbuild/linux-loong64': 0.25.1 + '@esbuild/linux-mips64el': 0.25.1 + '@esbuild/linux-ppc64': 0.25.1 + '@esbuild/linux-riscv64': 0.25.1 + '@esbuild/linux-s390x': 0.25.1 + '@esbuild/linux-x64': 0.25.1 + '@esbuild/netbsd-arm64': 0.25.1 + '@esbuild/netbsd-x64': 0.25.1 + '@esbuild/openbsd-arm64': 0.25.1 + '@esbuild/openbsd-x64': 0.25.1 + '@esbuild/sunos-x64': 0.25.1 + '@esbuild/win32-arm64': 0.25.1 + '@esbuild/win32-ia32': 0.25.1 + '@esbuild/win32-x64': 0.25.1 + escalade@3.2.0: {} escape-string-regexp@4.0.0: {} @@ -3636,7 +4430,7 @@ snapshots: eslint: 9.21.0(jiti@2.4.2) semver: 7.7.1 - eslint-plugin-svelte@3.0.2(eslint@9.21.0(jiti@2.4.2))(svelte@5.22.1): + eslint-plugin-svelte@3.0.2(eslint@9.21.0(jiti@2.4.2))(svelte@5.23.1): dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@9.21.0(jiti@2.4.2)) '@jridgewell/sourcemap-codec': 1.5.0 @@ -3648,9 +4442,9 @@ snapshots: postcss-load-config: 3.1.4(postcss@8.5.3) postcss-safe-parser: 7.0.1(postcss@8.5.3) semver: 7.7.1 - svelte-eslint-parser: 1.0.0(svelte@5.22.1) + svelte-eslint-parser: 1.0.0(svelte@5.23.1) optionalDependencies: - svelte: 5.22.1 + svelte: 5.23.1 transitivePeerDependencies: - ts-node @@ -3766,6 +4560,8 @@ snapshots: fdir@6.4.2: {} + fdir@6.4.3: {} + file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 @@ -3994,33 +4790,63 @@ snapshots: lightningcss-darwin-arm64@1.29.1: optional: true + lightningcss-darwin-arm64@1.29.2: + optional: true + lightningcss-darwin-x64@1.29.1: optional: true + lightningcss-darwin-x64@1.29.2: + optional: true + lightningcss-freebsd-x64@1.29.1: optional: true + lightningcss-freebsd-x64@1.29.2: + optional: true + lightningcss-linux-arm-gnueabihf@1.29.1: optional: true + lightningcss-linux-arm-gnueabihf@1.29.2: + optional: true + lightningcss-linux-arm64-gnu@1.29.1: optional: true + lightningcss-linux-arm64-gnu@1.29.2: + optional: true + lightningcss-linux-arm64-musl@1.29.1: optional: true + lightningcss-linux-arm64-musl@1.29.2: + optional: true + lightningcss-linux-x64-gnu@1.29.1: optional: true + lightningcss-linux-x64-gnu@1.29.2: + optional: true + lightningcss-linux-x64-musl@1.29.1: optional: true + lightningcss-linux-x64-musl@1.29.2: + optional: true + lightningcss-win32-arm64-msvc@1.29.1: optional: true + lightningcss-win32-arm64-msvc@1.29.2: + optional: true + lightningcss-win32-x64-msvc@1.29.1: optional: true + lightningcss-win32-x64-msvc@1.29.2: + optional: true + lightningcss@1.29.1: dependencies: detect-libc: 1.0.3 @@ -4036,6 +4862,21 @@ snapshots: lightningcss-win32-arm64-msvc: 1.29.1 lightningcss-win32-x64-msvc: 1.29.1 + lightningcss@1.29.2: + dependencies: + detect-libc: 2.0.3 + optionalDependencies: + lightningcss-darwin-arm64: 1.29.2 + lightningcss-darwin-x64: 1.29.2 + lightningcss-freebsd-x64: 1.29.2 + lightningcss-linux-arm-gnueabihf: 1.29.2 + lightningcss-linux-arm64-gnu: 1.29.2 + lightningcss-linux-arm64-musl: 1.29.2 + lightningcss-linux-x64-gnu: 1.29.2 + lightningcss-linux-x64-musl: 1.29.2 + lightningcss-win32-arm64-msvc: 1.29.2 + lightningcss-win32-x64-msvc: 1.29.2 + lilconfig@2.1.0: {} locate-character@3.0.0: {} @@ -4099,12 +4940,12 @@ snapshots: ms@2.1.3: {} - msw@2.7.3(@types/node@22.13.9)(typescript@5.8.2): + msw@2.7.3(@types/node@22.13.10)(typescript@5.8.2): dependencies: '@bundled-es-modules/cookie': 2.0.1 '@bundled-es-modules/statuses': 1.0.1 '@bundled-es-modules/tough-cookie': 0.1.6 - '@inquirer/confirm': 5.1.6(@types/node@22.13.9) + '@inquirer/confirm': 5.1.8(@types/node@22.13.10) '@mswjs/interceptors': 0.37.6 '@open-draft/deferred-promise': 2.2.0 '@open-draft/until': 2.1.0 @@ -4277,12 +5118,23 @@ snapshots: prettier: 3.5.3 svelte: 5.22.1 + prettier-plugin-svelte@3.3.3(prettier@3.5.3)(svelte@5.23.1): + dependencies: + prettier: 3.5.3 + svelte: 5.23.1 + prettier-plugin-tailwindcss@0.6.11(prettier-plugin-svelte@3.3.3(prettier@3.5.3)(svelte@5.22.1))(prettier@3.5.3): dependencies: prettier: 3.5.3 optionalDependencies: prettier-plugin-svelte: 3.3.3(prettier@3.5.3)(svelte@5.22.1) + prettier-plugin-tailwindcss@0.6.11(prettier-plugin-svelte@3.3.3(prettier@3.5.3)(svelte@5.23.1))(prettier@3.5.3): + dependencies: + prettier: 3.5.3 + optionalDependencies: + prettier-plugin-svelte: 3.3.3(prettier@3.5.3)(svelte@5.23.1) + prettier@2.8.8: {} prettier@3.5.3: {} @@ -4297,7 +5149,7 @@ snapshots: dependencies: punycode: 2.3.1 - publint@0.3.8: + publint@0.3.9: dependencies: '@publint/pack': 0.1.2 package-manager-detector: 0.2.11 @@ -4341,7 +5193,7 @@ snapshots: readdirp@4.0.2: {} - readdirp@4.1.1: {} + readdirp@4.1.2: {} regenerator-runtime@0.14.1: {} @@ -4380,16 +5232,41 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.34.9 fsevents: 2.3.3 + rollup@4.36.0: + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.36.0 + '@rollup/rollup-android-arm64': 4.36.0 + '@rollup/rollup-darwin-arm64': 4.36.0 + '@rollup/rollup-darwin-x64': 4.36.0 + '@rollup/rollup-freebsd-arm64': 4.36.0 + '@rollup/rollup-freebsd-x64': 4.36.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.36.0 + '@rollup/rollup-linux-arm-musleabihf': 4.36.0 + '@rollup/rollup-linux-arm64-gnu': 4.36.0 + '@rollup/rollup-linux-arm64-musl': 4.36.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.36.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.36.0 + '@rollup/rollup-linux-riscv64-gnu': 4.36.0 + '@rollup/rollup-linux-s390x-gnu': 4.36.0 + '@rollup/rollup-linux-x64-gnu': 4.36.0 + '@rollup/rollup-linux-x64-musl': 4.36.0 + '@rollup/rollup-win32-arm64-msvc': 4.36.0 + '@rollup/rollup-win32-ia32-msvc': 4.36.0 + '@rollup/rollup-win32-x64-msvc': 4.36.0 + fsevents: 2.3.3 + rrweb-cssom@0.8.0: {} run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 - runed@0.23.4(svelte@5.22.1): + runed@0.23.4(svelte@5.23.1): dependencies: esm-env: 1.2.2 - svelte: 5.22.1 + svelte: 5.23.1 sade@1.8.1: dependencies: @@ -4492,7 +5369,19 @@ snapshots: transitivePeerDependencies: - picomatch - svelte-eslint-parser@1.0.0(svelte@5.22.1): + svelte-check@4.1.5(svelte@5.23.1)(typescript@5.8.2): + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + chokidar: 4.0.3 + fdir: 6.4.3 + picocolors: 1.1.1 + sade: 1.8.1 + svelte: 5.23.1 + typescript: 5.8.2 + transitivePeerDependencies: + - picomatch + + svelte-eslint-parser@1.0.0(svelte@5.23.1): dependencies: eslint-scope: 8.2.0 eslint-visitor-keys: 4.2.0 @@ -4501,28 +5390,28 @@ snapshots: postcss-scss: 4.0.9(postcss@8.5.3) postcss-selector-parser: 7.1.0 optionalDependencies: - svelte: 5.22.1 + svelte: 5.23.1 - svelte-signals@0.0.2(svelte@5.22.1): + svelte-signals@0.0.2(svelte@5.23.1): dependencies: - svelte: 5.22.1 + svelte: 5.23.1 svelte-sonner@0.3.28(svelte@5.22.1): dependencies: svelte: 5.22.1 - svelte-toolbelt@0.7.1(svelte@5.22.1): + svelte-toolbelt@0.7.1(svelte@5.23.1): dependencies: clsx: 2.1.1 - runed: 0.23.4(svelte@5.22.1) + runed: 0.23.4(svelte@5.23.1) style-to-object: 1.0.8 - svelte: 5.22.1 + svelte: 5.23.1 - svelte2tsx@0.7.34(svelte@5.22.1)(typescript@5.8.2): + svelte2tsx@0.7.34(svelte@5.23.1)(typescript@5.8.2): dependencies: dedent-js: 1.0.1 pascal-case: 3.1.2 - svelte: 5.22.1 + svelte: 5.23.1 typescript: 5.8.2 svelte@5.22.1: @@ -4542,10 +5431,29 @@ snapshots: magic-string: 0.30.17 zimmerframe: 1.1.2 + svelte@5.23.1: + dependencies: + '@ampproject/remapping': 2.3.0 + '@jridgewell/sourcemap-codec': 1.5.0 + '@sveltejs/acorn-typescript': 1.0.5(acorn@8.14.1) + '@types/estree': 1.0.6 + acorn: 8.14.1 + aria-query: 5.3.2 + axobject-query: 4.1.0 + clsx: 2.1.1 + esm-env: 1.2.2 + esrap: 1.4.5 + is-reference: 3.0.3 + locate-character: 3.0.0 + magic-string: 0.30.17 + zimmerframe: 1.1.2 + symbol-tree@3.2.4: {} tabbable@6.2.0: {} + tailwindcss@4.0.14: {} + tailwindcss@4.0.9: {} tapable@2.2.1: {} @@ -4659,13 +5567,13 @@ snapshots: optionalDependencies: typescript: 5.8.2 - vite-node@3.0.7(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1): + vite-node@3.0.9(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2): dependencies: cac: 6.7.14 debug: 4.4.0 es-module-lexer: 1.6.0 pathe: 2.0.3 - vite: 6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1) + vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2) transitivePeerDependencies: - '@types/node' - jiti @@ -4680,36 +5588,51 @@ snapshots: - tsx - yaml - vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1): + vite@6.2.0(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2): dependencies: esbuild: 0.25.0 postcss: 8.5.3 rollup: 4.34.9 optionalDependencies: - '@types/node': 22.13.9 + '@types/node': 22.13.10 fsevents: 2.3.3 jiti: 2.4.2 - lightningcss: 1.29.1 + lightningcss: 1.29.2 + + vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2): + dependencies: + esbuild: 0.25.1 + postcss: 8.5.3 + rollup: 4.36.0 + optionalDependencies: + '@types/node': 22.13.10 + fsevents: 2.3.3 + jiti: 2.4.2 + lightningcss: 1.29.2 + + vitefu@1.0.5(vite@6.2.0(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)): + optionalDependencies: + vite: 6.2.0(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2) - vitefu@1.0.5(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1)): + vitefu@1.0.5(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)): optionalDependencies: - vite: 6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1) + vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2) - vitest-browser-svelte@0.1.0(@vitest/browser@3.0.7)(svelte@5.22.1)(vitest@3.0.7): + vitest-browser-svelte@0.1.0(@vitest/browser@3.0.9)(svelte@5.23.1)(vitest@3.0.9): dependencies: - '@vitest/browser': 3.0.7(@types/node@22.13.9)(playwright@1.50.1)(typescript@5.8.2)(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1))(vitest@3.0.7) - svelte: 5.22.1 - vitest: 3.0.7(@types/node@22.13.9)(@vitest/browser@3.0.7)(jiti@2.4.2)(jsdom@26.0.0)(lightningcss@1.29.1)(msw@2.7.3(@types/node@22.13.9)(typescript@5.8.2)) + '@vitest/browser': 3.0.9(@types/node@22.13.10)(playwright@1.50.1)(typescript@5.8.2)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2))(vitest@3.0.9) + svelte: 5.23.1 + vitest: 3.0.9(@types/node@22.13.10)(@vitest/browser@3.0.9)(jiti@2.4.2)(jsdom@26.0.0)(lightningcss@1.29.2)(msw@2.7.3(@types/node@22.13.10)(typescript@5.8.2)) - vitest@3.0.7(@types/node@22.13.9)(@vitest/browser@3.0.7)(jiti@2.4.2)(jsdom@26.0.0)(lightningcss@1.29.1)(msw@2.7.3(@types/node@22.13.9)(typescript@5.8.2)): + vitest@3.0.9(@types/node@22.13.10)(@vitest/browser@3.0.9)(jiti@2.4.2)(jsdom@26.0.0)(lightningcss@1.29.2)(msw@2.7.3(@types/node@22.13.10)(typescript@5.8.2)): dependencies: - '@vitest/expect': 3.0.7 - '@vitest/mocker': 3.0.7(msw@2.7.3(@types/node@22.13.9)(typescript@5.8.2))(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1)) - '@vitest/pretty-format': 3.0.7 - '@vitest/runner': 3.0.7 - '@vitest/snapshot': 3.0.7 - '@vitest/spy': 3.0.7 - '@vitest/utils': 3.0.7 + '@vitest/expect': 3.0.9 + '@vitest/mocker': 3.0.9(msw@2.7.3(@types/node@22.13.10)(typescript@5.8.2))(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)) + '@vitest/pretty-format': 3.0.9 + '@vitest/runner': 3.0.9 + '@vitest/snapshot': 3.0.9 + '@vitest/spy': 3.0.9 + '@vitest/utils': 3.0.9 chai: 5.2.0 debug: 4.4.0 expect-type: 1.2.0 @@ -4720,12 +5643,12 @@ snapshots: tinyexec: 0.3.2 tinypool: 1.0.2 tinyrainbow: 2.0.0 - vite: 6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1) - vite-node: 3.0.7(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1) + vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2) + vite-node: 3.0.9(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.13.9 - '@vitest/browser': 3.0.7(@types/node@22.13.9)(playwright@1.50.1)(typescript@5.8.2)(vite@6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.29.1))(vitest@3.0.7) + '@types/node': 22.13.10 + '@vitest/browser': 3.0.9(@types/node@22.13.10)(playwright@1.50.1)(typescript@5.8.2)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2))(vitest@3.0.9) jsdom: 26.0.0 transitivePeerDependencies: - jiti diff --git a/sites/preview/package.json b/sites/preview/package.json index bd6e9fd..3cef1c9 100644 --- a/sites/preview/package.json +++ b/sites/preview/package.json @@ -14,18 +14,17 @@ "format:check": "prettier --check ." }, "devDependencies": { - "@lucide/svelte": "0.477.0-rc.0", "@sveltejs/adapter-static": "^3.0.6", "@sveltejs/kit": "^2.18.0", "@sveltejs/vite-plugin-svelte": "5.0.3", "@tailwindcss/vite": "4.0.9", - "bits-ui": "1.3.5", "prettier": "^3.5.3", "prettier-plugin-svelte": "^3.3.3", "prettier-plugin-tailwindcss": "^0.6.11", "svelte": "5.22.1", "svelte-check": "^4.1.1", "svelte-file-tree": "workspace:^", + "svelte-file-tree-styled": "workspace:^", "svelte-sonner": "^0.3.28", "tailwindcss": "4.0.9", "vite": "^6.2.0" diff --git a/sites/preview/src/app.css b/sites/preview/src/app.css index f1d8c73..6e32ea3 100644 --- a/sites/preview/src/app.css +++ b/sites/preview/src/app.css @@ -1 +1,2 @@ @import "tailwindcss"; +@source "../node_modules/svelte-file-tree-styled"; diff --git a/sites/preview/src/lib/components/Tree.svelte b/sites/preview/src/lib/components/Tree.svelte deleted file mode 100644 index cd172b8..0000000 --- a/sites/preview/src/lib/components/Tree.svelte +++ /dev/null @@ -1,189 +0,0 @@ - - - - - - {#snippet item({ node, depth, expanded, dragged })} - { - expandedIds.add(node.id); - }} - onCollapse={() => { - expandedIds.delete(node.id); - }} - /> - {/snippet} - - - { - if (!open) { - closeDialog("cancel"); - } - }} -> - - - {#snippet child({ props, open })} - {#if open} -
- {/if} - {/snippet} -
- - - {#snippet child({ props, open })} - {#if open} -
- - {dialogData()?.title} - - - - {dialogData()?.description} - - -
- - - -
-
- {/if} - {/snippet} -
-
-
diff --git a/sites/preview/src/lib/components/TreeItem.svelte b/sites/preview/src/lib/components/TreeItem.svelte deleted file mode 100644 index f30de9f..0000000 --- a/sites/preview/src/lib/components/TreeItem.svelte +++ /dev/null @@ -1,81 +0,0 @@ - - - [ - "relative flex items-center rounded-md border border-neutral-400 p-3 hover:bg-neutral-200 focus:outline-2 focus:outline-offset-2 focus:outline-current active:bg-neutral-300 aria-selected:border-blue-400 aria-selected:bg-blue-100 aria-selected:text-blue-800 aria-selected:active:bg-blue-200", - dragged && "opacity-50", - dropPosition() !== undefined && - "before:pointer-events-none before:absolute before:-inset-[2px] before:rounded-[inherit] before:border-2", - dropPosition() === "before" && "before:border-transparent before:border-t-red-500", - dropPosition() === "after" && "before:border-transparent before:border-b-red-500", - dropPosition() === "inside" && "before:border-red-500", - ]} - style="margin-inline-start: {depth * 16}px;" -> - {#snippet children({ editing })} - - -
- {#if node.type === "file"} - - {:else if expanded} - - {:else} - - {/if} -
- - {#if editing()} - - {:else} - {node.name} - {/if} - {/snippet} -
diff --git a/sites/preview/src/routes/+layout.svelte b/sites/preview/src/routes/+layout.svelte index e6411d5..7bbfa24 100644 --- a/sites/preview/src/routes/+layout.svelte +++ b/sites/preview/src/routes/+layout.svelte @@ -6,5 +6,4 @@ - {@render children()} diff --git a/sites/preview/src/routes/+page.svelte b/sites/preview/src/routes/+page.svelte index 60c03f4..c7b6c73 100644 --- a/sites/preview/src/routes/+page.svelte +++ b/sites/preview/src/routes/+page.svelte @@ -1,6 +1,13 @@
- +
diff --git a/sites/sveltekit-example/package.json b/sites/sveltekit-example/package.json index 32bef2e..0aa5a75 100644 --- a/sites/sveltekit-example/package.json +++ b/sites/sveltekit-example/package.json @@ -14,20 +14,19 @@ "format:check": "prettier --check ." }, "devDependencies": { - "@lucide/svelte": "0.477.0-rc.0", "@sveltejs/adapter-auto": "^4.0.0", "@sveltejs/kit": "^2.18.0", "@sveltejs/vite-plugin-svelte": "^5.0.0", "@tailwindcss/vite": "^4.0.9", "@types/better-sqlite3": "^7.6.12", "better-sqlite3": "^11.8.1", - "bits-ui": "1.3.5", "prettier": "^3.5.3", "prettier-plugin-svelte": "^3.3.3", "prettier-plugin-tailwindcss": "^0.6.11", "svelte": "^5.22.1", "svelte-check": "^4.0.0", "svelte-file-tree": "workspace:^", + "svelte-file-tree-styled": "workspace:^", "svelte-sonner": "^0.3.28", "tailwindcss": "^4.0.9", "valibot": "1.0.0-rc.3", diff --git a/sites/sveltekit-example/src/app.css b/sites/sveltekit-example/src/app.css index f1d8c73..6e32ea3 100644 --- a/sites/sveltekit-example/src/app.css +++ b/sites/sveltekit-example/src/app.css @@ -1 +1,2 @@ @import "tailwindcss"; +@source "../node_modules/svelte-file-tree-styled"; diff --git a/sites/sveltekit-example/src/lib/components/Tree.svelte b/sites/sveltekit-example/src/lib/components/Tree.svelte deleted file mode 100644 index cd172b8..0000000 --- a/sites/sveltekit-example/src/lib/components/Tree.svelte +++ /dev/null @@ -1,189 +0,0 @@ - - - - - - {#snippet item({ node, depth, expanded, dragged })} - { - expandedIds.add(node.id); - }} - onCollapse={() => { - expandedIds.delete(node.id); - }} - /> - {/snippet} - - - { - if (!open) { - closeDialog("cancel"); - } - }} -> - - - {#snippet child({ props, open })} - {#if open} -
- {/if} - {/snippet} -
- - - {#snippet child({ props, open })} - {#if open} -
- - {dialogData()?.title} - - - - {dialogData()?.description} - - -
- - - -
-
- {/if} - {/snippet} -
-
-
diff --git a/sites/sveltekit-example/src/lib/components/TreeItem.svelte b/sites/sveltekit-example/src/lib/components/TreeItem.svelte deleted file mode 100644 index f30de9f..0000000 --- a/sites/sveltekit-example/src/lib/components/TreeItem.svelte +++ /dev/null @@ -1,81 +0,0 @@ - - - [ - "relative flex items-center rounded-md border border-neutral-400 p-3 hover:bg-neutral-200 focus:outline-2 focus:outline-offset-2 focus:outline-current active:bg-neutral-300 aria-selected:border-blue-400 aria-selected:bg-blue-100 aria-selected:text-blue-800 aria-selected:active:bg-blue-200", - dragged && "opacity-50", - dropPosition() !== undefined && - "before:pointer-events-none before:absolute before:-inset-[2px] before:rounded-[inherit] before:border-2", - dropPosition() === "before" && "before:border-transparent before:border-t-red-500", - dropPosition() === "after" && "before:border-transparent before:border-b-red-500", - dropPosition() === "inside" && "before:border-red-500", - ]} - style="margin-inline-start: {depth * 16}px;" -> - {#snippet children({ editing })} - - -
- {#if node.type === "file"} - - {:else if expanded} - - {:else} - - {/if} -
- - {#if editing()} - - {:else} - {node.name} - {/if} - {/snippet} -
diff --git a/sites/sveltekit-example/src/routes/+layout.svelte b/sites/sveltekit-example/src/routes/+layout.svelte index e6411d5..7bbfa24 100644 --- a/sites/sveltekit-example/src/routes/+layout.svelte +++ b/sites/sveltekit-example/src/routes/+layout.svelte @@ -6,5 +6,4 @@ - {@render children()} diff --git a/sites/sveltekit-example/src/routes/+page.svelte b/sites/sveltekit-example/src/routes/+page.svelte index 2846bdd..2952322 100644 --- a/sites/sveltekit-example/src/routes/+page.svelte +++ b/sites/sveltekit-example/src/routes/+page.svelte @@ -1,17 +1,19 @@
- pendingIds.has(node.id)} + onRenameItem={handleRenameItem} + onMoveItems={handleMoveItems} + onCopyPasteItems={handleCopyPasteItems} + onAddItems={handleAddItems} + onRemoveItems={handleRemoveItems} + onAlreadyExistsError={handleAlreadyExistsError} + onCircularReferenceError={handleCircularReferenceError} />
diff --git a/sites/sveltekit-example/vite.config.ts b/sites/sveltekit-example/vite.config.ts index e13ff68..b0741a1 100644 --- a/sites/sveltekit-example/vite.config.ts +++ b/sites/sveltekit-example/vite.config.ts @@ -1,5 +1,5 @@ -import tailwindcss from "@tailwindcss/vite"; import { sveltekit } from "@sveltejs/kit/vite"; +import tailwindcss from "@tailwindcss/vite"; import { defineConfig } from "vite"; export default defineConfig({