From 03167cc296bc95a0b8fdb8b283428d3412c69e4d Mon Sep 17 00:00:00 2001
From: dev-viinz <42003446+dev-viinz@users.noreply.github.com>
Date: Wed, 25 Jun 2025 21:11:25 +0200
Subject: [PATCH 01/30] feat: add @zag-js/tree-view to catalog
---
pnpm-lock.yaml | 57 +++++++++++++++++++++++++++++++++++++++++++++
pnpm-workspace.yaml | 1 +
2 files changed, 58 insertions(+)
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 89893071ea..94c2f78c8c 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -60,6 +60,9 @@ catalogs:
'@zag-js/tooltip':
specifier: ^1.7.0
version: 1.7.0
+ '@zag-js/tree-view':
+ specifier: ^1.7.0
+ version: 1.17.1
svelte:
specifier: ^5.25.3
version: 5.25.3
@@ -369,6 +372,9 @@ importers:
'@zag-js/tooltip':
specifier: 'catalog:'
version: 1.7.0
+ '@zag-js/tree-view':
+ specifier: 'catalog:'
+ version: 1.17.1
devDependencies:
'@skeletonlabs/skeleton':
specifier: workspace:*
@@ -2398,6 +2404,9 @@ packages:
'@zag-js/accordion@1.7.0':
resolution: {integrity: sha512-LNJOjLTW2KwrToXBrXIbNIAiISA94n0AdWp14H8RrskdokywmEGiC0GgWTGEJ7DNA6TGP6Ae5o9rJ4fHSmCsDQ==}
+ '@zag-js/anatomy@1.17.1':
+ resolution: {integrity: sha512-TiZsZEXSkoBgO5mQOxPZB/yvBwGyIgWDWXcVrAXk7Vd0ooaCgcT4ROAyfMmxQTXQT4vIoxcMji5KC8LD23yjpg==}
+
'@zag-js/anatomy@1.7.0':
resolution: {integrity: sha512-fkRgH6vPCwykmRdV38uAJeTtJc8tayAnURfoovHAtB9bK0goagPbpdcYTNyGn8msul0h+KBloOtnw4obvX0nPw==}
@@ -2410,12 +2419,18 @@ packages:
'@zag-js/avatar@1.7.0':
resolution: {integrity: sha512-vzMCMpYIM2BIvPvK34VaRMUsUSpg3jwoxCzA31k+QrCmjm3ti8pLoT4waE01XHiaQwNPcTFbMWUi/nIQQKG14A==}
+ '@zag-js/collection@1.17.1':
+ resolution: {integrity: sha512-BhY93FophALDD/IiHYiqlJuEtBSX6SfwAA+0SzCWvYGBkPzRw+VMCbVKPxFZV9IzIX8ccXRbJ9uxdaXNh2EAPw==}
+
'@zag-js/collection@1.7.0':
resolution: {integrity: sha512-gH7I03ag2niEhCVgNpXBYybnIROGXmAkX+5e1rYQ60mOh2oQnK+5k9k3DRkca5rAKbu4uT6JjYFwnY9sA/NZfA==}
'@zag-js/combobox@1.7.0':
resolution: {integrity: sha512-kaMvGoBZwiFC9KaUbHXNFkneg7grZmJlteVxk6kJXYd7JGDHhhYsFznPNIC0apvBCIEqwyBGVB/lCjK+BseZtw==}
+ '@zag-js/core@1.17.1':
+ resolution: {integrity: sha512-68jh6R87QLMYrtntu34eSF9JJXRXd+/l5Mpaz/InEOwA9sjxuyJIESqO578IpI2GAqk+cE1sUTKhhPmkzeTq3g==}
+
'@zag-js/core@1.7.0':
resolution: {integrity: sha512-FyK1POPqgBp7DBpUIwvmBQH16+L52NaTaQJzg8iTI9mI/4m3AxZ5aN+8a8qzwGIkVI6rlDcrBkmuOcHDVIOEGA==}
@@ -2425,6 +2440,9 @@ packages:
'@zag-js/dismissable@1.7.0':
resolution: {integrity: sha512-o6S++e7iaBmizIgsvLt5RwY7gn2OQGeG2etet+oaUAMtNhi/1+uGG+rTZgOMj/MGg9BYpPld5tXfk/RrlShh9Q==}
+ '@zag-js/dom-query@1.17.1':
+ resolution: {integrity: sha512-fwwzEKLPq3kAZVkkPBdskL4Ge4aHRAGqBLfAHCKioQNgvKYGRTzqmGA6ijls9ESULUWf0M2ogKstuUtY19PopA==}
+
'@zag-js/dom-query@1.7.0':
resolution: {integrity: sha512-cj+mKB7Sj7mqAepHMsbV4bGvDJfUYCt4d4ruYw0dVpDa1Z9N38TtztTznfrm9kuqOYcJkgE0q3Rn/kPLi8rK8g==}
@@ -2508,9 +2526,18 @@ packages:
'@zag-js/tooltip@1.7.0':
resolution: {integrity: sha512-ehZOewcxYZL4+ND5QMeDlQQrckssMTzxcReRCOVFXrRZb5X1jX6+ale9MSG+cJYMpQUqT2J5VtzMJH+GNj/jfw==}
+ '@zag-js/tree-view@1.17.1':
+ resolution: {integrity: sha512-G5V24wKVfN1YPGK5GszblcI0NY9HqyEFxwo23JASmm9LTmwAr/5TKu8IEkobzKw0IH6Mo/eEyGrL+L6LNuof6Q==}
+
+ '@zag-js/types@1.17.1':
+ resolution: {integrity: sha512-KEPko1DK19hEMfM5IPKTZQtpf4HC3X56qwckezRX1yk+/vGotVUxdjRIrv+pcITjlFAoQQO9TiiZv2UiiVrFGA==}
+
'@zag-js/types@1.7.0':
resolution: {integrity: sha512-rmPonVc8EBOGIEJYjzWIBQ6LJwUMc3LnipRREECO+n7LNlUQUliCOFbHw1UOGP+4ZkCKmxjGFR3jLtjY8aN4gQ==}
+ '@zag-js/utils@1.17.1':
+ resolution: {integrity: sha512-+w/Kx7uZufg3cD6I5bQ8iSoeY3qSarPpUwrxz6FCOxJ86IAmf3ActqFC2pJ6DQCdHdkWINaKKchb4GNt8ld7KQ==}
+
'@zag-js/utils@1.7.0':
resolution: {integrity: sha512-yIxvH5V27a1WuLgCxHX7qpdtFo8vTJaZLafBpSNfVYG4B8FaxTE+P7JAcpmAzs3UyXura/WfAY2eVWWVBpk9ZA==}
@@ -8343,6 +8370,8 @@ snapshots:
'@zag-js/types': 1.7.0
'@zag-js/utils': 1.7.0
+ '@zag-js/anatomy@1.17.1': {}
+
'@zag-js/anatomy@1.7.0': {}
'@zag-js/aria-hidden@1.7.0': {}
@@ -8359,6 +8388,10 @@ snapshots:
'@zag-js/types': 1.7.0
'@zag-js/utils': 1.7.0
+ '@zag-js/collection@1.17.1':
+ dependencies:
+ '@zag-js/utils': 1.17.1
+
'@zag-js/collection@1.7.0':
dependencies:
'@zag-js/utils': 1.7.0
@@ -8375,6 +8408,11 @@ snapshots:
'@zag-js/types': 1.7.0
'@zag-js/utils': 1.7.0
+ '@zag-js/core@1.17.1':
+ dependencies:
+ '@zag-js/dom-query': 1.17.1
+ '@zag-js/utils': 1.17.1
+
'@zag-js/core@1.7.0':
dependencies:
'@zag-js/dom-query': 1.7.0
@@ -8398,6 +8436,10 @@ snapshots:
'@zag-js/interact-outside': 1.7.0
'@zag-js/utils': 1.7.0
+ '@zag-js/dom-query@1.17.1':
+ dependencies:
+ '@zag-js/types': 1.17.1
+
'@zag-js/dom-query@1.7.0':
dependencies:
'@zag-js/types': 1.7.0
@@ -8574,10 +8616,25 @@ snapshots:
'@zag-js/types': 1.7.0
'@zag-js/utils': 1.7.0
+ '@zag-js/tree-view@1.17.1':
+ dependencies:
+ '@zag-js/anatomy': 1.17.1
+ '@zag-js/collection': 1.17.1
+ '@zag-js/core': 1.17.1
+ '@zag-js/dom-query': 1.17.1
+ '@zag-js/types': 1.17.1
+ '@zag-js/utils': 1.17.1
+
+ '@zag-js/types@1.17.1':
+ dependencies:
+ csstype: 3.1.3
+
'@zag-js/types@1.7.0':
dependencies:
csstype: 3.1.3
+ '@zag-js/utils@1.17.1': {}
+
'@zag-js/utils@1.7.0': {}
abbrev@3.0.0: {}
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index 41ec484899..d0a465d296 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -24,6 +24,7 @@ catalog:
'@zag-js/tags-input': *zag_version
'@zag-js/toast': *zag_version
'@zag-js/tooltip': *zag_version
+ '@zag-js/tree-view': *zag_version
typescript: '^5.8.2'
svelte: '^5.25.3'
tailwindcss: '^4.0.17'
From 8aa1c45f62571cf9f57a2ea181be2046f6ead738 Mon Sep 17 00:00:00 2001
From: dev-viinz <42003446+dev-viinz@users.noreply.github.com>
Date: Fri, 27 Jun 2025 23:35:22 +0200
Subject: [PATCH 02/30] feat: implemented pretty much the example from zag.js
---
packages/skeleton-svelte/package.json | 3 +-
.../src/components/TreeView/TreeNode.svelte | 44 ++++++++++++++
.../src/components/TreeView/TreeView.svelte | 59 +++++++++++++++++++
.../src/components/TreeView/context.ts | 5 ++
.../src/components/TreeView/index.ts | 3 +
.../src/components/TreeView/types.ts | 19 ++++++
packages/skeleton-svelte/src/index.ts | 1 +
.../skeleton-svelte/src/routes/+layout.svelte | 1 +
.../routes/components/tree-view/+page.svelte | 5 ++
9 files changed, 139 insertions(+), 1 deletion(-)
create mode 100644 packages/skeleton-svelte/src/components/TreeView/TreeNode.svelte
create mode 100644 packages/skeleton-svelte/src/components/TreeView/TreeView.svelte
create mode 100644 packages/skeleton-svelte/src/components/TreeView/context.ts
create mode 100644 packages/skeleton-svelte/src/components/TreeView/index.ts
create mode 100644 packages/skeleton-svelte/src/components/TreeView/types.ts
create mode 100644 playgrounds/skeleton-svelte/src/routes/components/tree-view/+page.svelte
diff --git a/packages/skeleton-svelte/package.json b/packages/skeleton-svelte/package.json
index f4ef2e73ed..8450eb6337 100644
--- a/packages/skeleton-svelte/package.json
+++ b/packages/skeleton-svelte/package.json
@@ -39,7 +39,8 @@
"@zag-js/tabs": "catalog:",
"@zag-js/tags-input": "catalog:",
"@zag-js/toast": "catalog:",
- "@zag-js/tooltip": "catalog:"
+ "@zag-js/tooltip": "catalog:",
+ "@zag-js/tree-view": "catalog:"
},
"peerDependencies": {
"svelte": "^5.20.0"
diff --git a/packages/skeleton-svelte/src/components/TreeView/TreeNode.svelte b/packages/skeleton-svelte/src/components/TreeView/TreeNode.svelte
new file mode 100644
index 0000000000..cc611e13b4
--- /dev/null
+++ b/packages/skeleton-svelte/src/components/TreeView/TreeNode.svelte
@@ -0,0 +1,44 @@
+
+
+{#if nodeState.isBranch}
+
+
+ 📁
+ {node.name}
+ ➡️
+
+
+
+ {#if node.children}
+ {#each node.children as childNode, index}
+
+ {/each}
+ {/if}
+
+
+{:else}
+
+ 📄
+ {node.name}
+
+{/if}
diff --git a/packages/skeleton-svelte/src/components/TreeView/TreeView.svelte b/packages/skeleton-svelte/src/components/TreeView/TreeView.svelte
new file mode 100644
index 0000000000..01ef5a39de
--- /dev/null
+++ b/packages/skeleton-svelte/src/components/TreeView/TreeView.svelte
@@ -0,0 +1,59 @@
+
+
+
+
My Documents
+
+ {#if collection.rootNode.children}
+ {#each collection.rootNode.children as node, index}
+
+ {/each}
+ {/if}
+
+
diff --git a/packages/skeleton-svelte/src/components/TreeView/context.ts b/packages/skeleton-svelte/src/components/TreeView/context.ts
new file mode 100644
index 0000000000..ce8838dbf6
--- /dev/null
+++ b/packages/skeleton-svelte/src/components/TreeView/context.ts
@@ -0,0 +1,5 @@
+import { createContext } from '../../internal/create-context.js';
+import type { TreeViewContext } from './types.js';
+
+// @ts-expect-error - Defaults for context don't make sense, `createContext` should just throw TBH
+export const [setTreeViewContext, getTreeViewContext, key] = createContext();
diff --git a/packages/skeleton-svelte/src/components/TreeView/index.ts b/packages/skeleton-svelte/src/components/TreeView/index.ts
new file mode 100644
index 0000000000..7f1d3f4c46
--- /dev/null
+++ b/packages/skeleton-svelte/src/components/TreeView/index.ts
@@ -0,0 +1,3 @@
+import TreeView from './TreeView.svelte';
+
+export default Object.assign(TreeView);
diff --git a/packages/skeleton-svelte/src/components/TreeView/types.ts b/packages/skeleton-svelte/src/components/TreeView/types.ts
new file mode 100644
index 0000000000..c793c1676a
--- /dev/null
+++ b/packages/skeleton-svelte/src/components/TreeView/types.ts
@@ -0,0 +1,19 @@
+import * as tree from '@zag-js/tree-view';
+
+// TreeViewContext ---
+
+export interface TreeViewContext {
+ api: ReturnType;
+}
+
+// Components ---
+
+export interface TreeViewProps extends Omit {
+ prop: string;
+}
+
+export interface Node {
+ id: string;
+ name: string;
+ children?: Node[];
+}
diff --git a/packages/skeleton-svelte/src/index.ts b/packages/skeleton-svelte/src/index.ts
index 8cb5ef1467..b6b163ad80 100644
--- a/packages/skeleton-svelte/src/index.ts
+++ b/packages/skeleton-svelte/src/index.ts
@@ -22,6 +22,7 @@ export { default as TagsInput } from './components/TagsInput/TagsInput.svelte';
export { default as Toaster } from './components/Toast/Toaster.svelte';
export { createToaster } from './components/Toast/create-toaster.js';
export { default as Rating } from './components/Rating/index.js';
+export { default as TreeView } from './components/TreeView/index.js';
// Types
export type { FileUploadApi } from './components/FileUpload/types.js';
diff --git a/playgrounds/skeleton-svelte/src/routes/+layout.svelte b/playgrounds/skeleton-svelte/src/routes/+layout.svelte
index 739048000e..f9b5bb40d8 100644
--- a/playgrounds/skeleton-svelte/src/routes/+layout.svelte
+++ b/playgrounds/skeleton-svelte/src/routes/+layout.svelte
@@ -32,6 +32,7 @@
Tabs
Tags Input
Toast
+ TreeView
diff --git a/playgrounds/skeleton-svelte/src/routes/components/tree-view/+page.svelte b/playgrounds/skeleton-svelte/src/routes/components/tree-view/+page.svelte
new file mode 100644
index 0000000000..c50da8f560
--- /dev/null
+++ b/playgrounds/skeleton-svelte/src/routes/components/tree-view/+page.svelte
@@ -0,0 +1,5 @@
+
+
+
From 15630085394cd665fe78796dc5e5a03c0d353baf Mon Sep 17 00:00:00 2001
From: dev-viinz <42003446+dev-viinz@users.noreply.github.com>
Date: Sat, 28 Jun 2025 03:13:31 +0200
Subject: [PATCH 03/30] fix: types
---
packages/skeleton-svelte/src/components/Modal/types.ts | 1 +
packages/skeleton-svelte/src/components/Popover/types.ts | 1 +
packages/skeleton-svelte/src/components/Tooltip/types.ts | 1 +
3 files changed, 3 insertions(+)
diff --git a/packages/skeleton-svelte/src/components/Modal/types.ts b/packages/skeleton-svelte/src/components/Modal/types.ts
index bb0a601cd8..75b3bf7389 100644
--- a/packages/skeleton-svelte/src/components/Modal/types.ts
+++ b/packages/skeleton-svelte/src/components/Modal/types.ts
@@ -1,6 +1,7 @@
import type { Snippet } from 'svelte';
import * as dialog from '@zag-js/dialog';
import type { FlyParams, FadeParams } from 'svelte/transition';
+import type { HTMLButtonAttributes } from 'svelte/elements';
export interface ModalProps extends Omit {
// Base ---
diff --git a/packages/skeleton-svelte/src/components/Popover/types.ts b/packages/skeleton-svelte/src/components/Popover/types.ts
index 1639032d65..cd656f29f5 100644
--- a/packages/skeleton-svelte/src/components/Popover/types.ts
+++ b/packages/skeleton-svelte/src/components/Popover/types.ts
@@ -1,5 +1,6 @@
import type { Snippet } from 'svelte';
import * as popover from '@zag-js/popover';
+import type { HTMLButtonAttributes } from 'svelte/elements';
export interface PopoverProps extends Omit {
/** Enable display of the popover arrow. */
diff --git a/packages/skeleton-svelte/src/components/Tooltip/types.ts b/packages/skeleton-svelte/src/components/Tooltip/types.ts
index ab89c13150..fdf6dbe14a 100644
--- a/packages/skeleton-svelte/src/components/Tooltip/types.ts
+++ b/packages/skeleton-svelte/src/components/Tooltip/types.ts
@@ -1,5 +1,6 @@
import type { Snippet } from 'svelte';
import * as tooltip from '@zag-js/tooltip';
+import type { HTMLButtonAttributes } from 'svelte/elements';
export interface TooltipProps extends Omit {
/** Enable display of the popover arrow. */
From db170eafee03350d2c786158a4cda82aca9aa4d9 Mon Sep 17 00:00:00 2001
From: dev-viinz <42003446+dev-viinz@users.noreply.github.com>
Date: Sat, 28 Jun 2025 03:13:54 +0200
Subject: [PATCH 04/30] chore: update zag...
---
pnpm-lock.yaml | 721 +++++++++++++++++++++-----------------------
pnpm-workspace.yaml | 2 +-
2 files changed, 343 insertions(+), 380 deletions(-)
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 94c2f78c8c..8d9ec02286 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -7,62 +7,62 @@ settings:
catalogs:
default:
'@zag-js/accordion':
- specifier: ^1.7.0
- version: 1.7.0
+ specifier: ^1.17.4
+ version: 1.17.4
'@zag-js/avatar':
- specifier: ^1.7.0
- version: 1.7.0
+ specifier: ^1.17.4
+ version: 1.17.4
'@zag-js/combobox':
- specifier: ^1.7.0
- version: 1.7.0
+ specifier: ^1.17.4
+ version: 1.17.4
'@zag-js/dialog':
- specifier: ^1.7.0
- version: 1.7.0
+ specifier: ^1.17.4
+ version: 1.17.4
'@zag-js/file-upload':
- specifier: ^1.7.0
- version: 1.7.0
+ specifier: ^1.17.4
+ version: 1.17.4
'@zag-js/pagination':
- specifier: ^1.7.0
- version: 1.7.0
+ specifier: ^1.17.4
+ version: 1.17.4
'@zag-js/popover':
- specifier: ^1.7.0
- version: 1.7.0
+ specifier: ^1.17.4
+ version: 1.17.4
'@zag-js/progress':
- specifier: ^1.7.0
- version: 1.7.0
+ specifier: ^1.17.4
+ version: 1.17.4
'@zag-js/radio-group':
- specifier: ^1.7.0
- version: 1.7.0
+ specifier: ^1.17.4
+ version: 1.17.4
'@zag-js/rating-group':
- specifier: ^1.7.0
- version: 1.7.0
+ specifier: ^1.17.4
+ version: 1.17.4
'@zag-js/react':
- specifier: ^1.7.0
- version: 1.7.0
+ specifier: ^1.17.4
+ version: 1.17.4
'@zag-js/slider':
- specifier: ^1.7.0
- version: 1.7.0
+ specifier: ^1.17.4
+ version: 1.17.4
'@zag-js/svelte':
- specifier: ^1.7.0
- version: 1.7.0
+ specifier: ^1.17.4
+ version: 1.17.4
'@zag-js/switch':
- specifier: ^1.7.0
- version: 1.7.0
+ specifier: ^1.17.4
+ version: 1.17.4
'@zag-js/tabs':
- specifier: ^1.7.0
- version: 1.7.0
+ specifier: ^1.17.4
+ version: 1.17.4
'@zag-js/tags-input':
- specifier: ^1.7.0
- version: 1.7.0
+ specifier: ^1.17.4
+ version: 1.17.4
'@zag-js/toast':
- specifier: ^1.7.0
- version: 1.7.0
+ specifier: ^1.17.4
+ version: 1.17.4
'@zag-js/tooltip':
- specifier: ^1.7.0
- version: 1.7.0
+ specifier: ^1.17.4
+ version: 1.17.4
'@zag-js/tree-view':
- specifier: ^1.7.0
- version: 1.17.1
+ specifier: ^1.17.4
+ version: 1.17.4
svelte:
specifier: ^5.25.3
version: 5.25.3
@@ -244,43 +244,43 @@ importers:
dependencies:
'@zag-js/accordion':
specifier: 'catalog:'
- version: 1.7.0
+ version: 1.17.4
'@zag-js/avatar':
specifier: 'catalog:'
- version: 1.7.0
+ version: 1.17.4
'@zag-js/file-upload':
specifier: 'catalog:'
- version: 1.7.0
+ version: 1.17.4
'@zag-js/pagination':
specifier: 'catalog:'
- version: 1.7.0
+ version: 1.17.4
'@zag-js/progress':
specifier: 'catalog:'
- version: 1.7.0
+ version: 1.17.4
'@zag-js/radio-group':
specifier: 'catalog:'
- version: 1.7.0
+ version: 1.17.4
'@zag-js/rating-group':
specifier: 'catalog:'
- version: 1.7.0
+ version: 1.17.4
'@zag-js/react':
specifier: 'catalog:'
- version: 1.7.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ version: 1.17.4(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@zag-js/slider':
specifier: 'catalog:'
- version: 1.7.0
+ version: 1.17.4
'@zag-js/switch':
specifier: 'catalog:'
- version: 1.7.0
+ version: 1.17.4
'@zag-js/tabs':
specifier: 'catalog:'
- version: 1.7.0
+ version: 1.17.4
'@zag-js/tags-input':
specifier: 'catalog:'
- version: 1.7.0
+ version: 1.17.4
'@zag-js/toast':
specifier: 'catalog:'
- version: 1.7.0
+ version: 1.17.4
devDependencies:
'@testing-library/jest-dom':
specifier: ^6.6.3
@@ -323,58 +323,58 @@ importers:
dependencies:
'@zag-js/accordion':
specifier: 'catalog:'
- version: 1.7.0
+ version: 1.17.4
'@zag-js/avatar':
specifier: 'catalog:'
- version: 1.7.0
+ version: 1.17.4
'@zag-js/combobox':
specifier: 'catalog:'
- version: 1.7.0
+ version: 1.17.4
'@zag-js/dialog':
specifier: 'catalog:'
- version: 1.7.0
+ version: 1.17.4
'@zag-js/file-upload':
specifier: 'catalog:'
- version: 1.7.0
+ version: 1.17.4
'@zag-js/pagination':
specifier: 'catalog:'
- version: 1.7.0
+ version: 1.17.4
'@zag-js/popover':
specifier: 'catalog:'
- version: 1.7.0
+ version: 1.17.4
'@zag-js/progress':
specifier: 'catalog:'
- version: 1.7.0
+ version: 1.17.4
'@zag-js/radio-group':
specifier: 'catalog:'
- version: 1.7.0
+ version: 1.17.4
'@zag-js/rating-group':
specifier: 'catalog:'
- version: 1.7.0
+ version: 1.17.4
'@zag-js/slider':
specifier: 'catalog:'
- version: 1.7.0
+ version: 1.17.4
'@zag-js/svelte':
specifier: 'catalog:'
- version: 1.7.0(svelte@5.25.3)
+ version: 1.17.4(svelte@5.25.3)
'@zag-js/switch':
specifier: 'catalog:'
- version: 1.7.0
+ version: 1.17.4
'@zag-js/tabs':
specifier: 'catalog:'
- version: 1.7.0
+ version: 1.17.4
'@zag-js/tags-input':
specifier: 'catalog:'
- version: 1.7.0
+ version: 1.17.4
'@zag-js/toast':
specifier: 'catalog:'
- version: 1.7.0
+ version: 1.17.4
'@zag-js/tooltip':
specifier: 'catalog:'
- version: 1.7.0
+ version: 1.17.4
'@zag-js/tree-view':
specifier: 'catalog:'
- version: 1.17.1
+ version: 1.17.4
devDependencies:
'@skeletonlabs/skeleton':
specifier: workspace:*
@@ -1378,9 +1378,15 @@ packages:
'@floating-ui/core@1.6.9':
resolution: {integrity: sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==}
+ '@floating-ui/core@1.7.1':
+ resolution: {integrity: sha512-azI0DrjMMfIug/ExbBaeDVJXcY0a7EPvPjb2xAJPa4HeimBX+Z18HK8QQR3jb6356SnDDdxx+hinMLcJEDdOjw==}
+
'@floating-ui/dom@1.6.13':
resolution: {integrity: sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==}
+ '@floating-ui/dom@1.7.1':
+ resolution: {integrity: sha512-cwsmW/zyw5ltYTUeeYJ60CnQuPqmGwuGVhG9w0PRaRKkAyi38BT5CKrpIbb+jtahSwUl04cWzSx9ZOIxeS6RsQ==}
+
'@floating-ui/react-dom@2.1.2':
resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==}
peerDependencies:
@@ -2401,145 +2407,121 @@ packages:
'@vscode/l10n@0.0.18':
resolution: {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==}
- '@zag-js/accordion@1.7.0':
- resolution: {integrity: sha512-LNJOjLTW2KwrToXBrXIbNIAiISA94n0AdWp14H8RrskdokywmEGiC0GgWTGEJ7DNA6TGP6Ae5o9rJ4fHSmCsDQ==}
-
- '@zag-js/anatomy@1.17.1':
- resolution: {integrity: sha512-TiZsZEXSkoBgO5mQOxPZB/yvBwGyIgWDWXcVrAXk7Vd0ooaCgcT4ROAyfMmxQTXQT4vIoxcMji5KC8LD23yjpg==}
-
- '@zag-js/anatomy@1.7.0':
- resolution: {integrity: sha512-fkRgH6vPCwykmRdV38uAJeTtJc8tayAnURfoovHAtB9bK0goagPbpdcYTNyGn8msul0h+KBloOtnw4obvX0nPw==}
-
- '@zag-js/aria-hidden@1.7.0':
- resolution: {integrity: sha512-YNbACFZoqw/1JymxCZXtuAFdeYZm7sK3E0jv3bPbqytPj7TziLa1dRDWDdx8cPcu0B4n4WrBMBSCGUjj/nWDCA==}
-
- '@zag-js/auto-resize@1.7.0':
- resolution: {integrity: sha512-ifWflzZc1fNJ+XUZaYpB220AiAr4l3Eczq8ELwj/ugg7T/10Wo0FkxTCVmCZfIiCMoqHuh/2oTX3PCTIwg6uxg==}
-
- '@zag-js/avatar@1.7.0':
- resolution: {integrity: sha512-vzMCMpYIM2BIvPvK34VaRMUsUSpg3jwoxCzA31k+QrCmjm3ti8pLoT4waE01XHiaQwNPcTFbMWUi/nIQQKG14A==}
-
- '@zag-js/collection@1.17.1':
- resolution: {integrity: sha512-BhY93FophALDD/IiHYiqlJuEtBSX6SfwAA+0SzCWvYGBkPzRw+VMCbVKPxFZV9IzIX8ccXRbJ9uxdaXNh2EAPw==}
+ '@zag-js/accordion@1.17.4':
+ resolution: {integrity: sha512-WkzoksfxJjuSdq+hIHCINc6hQtoYo5Nf0SfuInBiehRnoJtVjmpqk8VLxhLWhwFD/KMqz0wtWcM0itUGNpOyiw==}
- '@zag-js/collection@1.7.0':
- resolution: {integrity: sha512-gH7I03ag2niEhCVgNpXBYybnIROGXmAkX+5e1rYQ60mOh2oQnK+5k9k3DRkca5rAKbu4uT6JjYFwnY9sA/NZfA==}
+ '@zag-js/anatomy@1.17.4':
+ resolution: {integrity: sha512-EDc7dD5nnr5T3kujMc+EvWIAACZ45cyeKKiPDUCAsmrOAYxIpD+Efh5lvKum6XLIUyUNnkpEVTazVNOeaoZBtQ==}
- '@zag-js/combobox@1.7.0':
- resolution: {integrity: sha512-kaMvGoBZwiFC9KaUbHXNFkneg7grZmJlteVxk6kJXYd7JGDHhhYsFznPNIC0apvBCIEqwyBGVB/lCjK+BseZtw==}
+ '@zag-js/aria-hidden@1.17.4':
+ resolution: {integrity: sha512-P7aSTINxBwGbDUxhemto10JsajbE+kIzKrPMOWAbIipfFSwPtaN4XJRg2aQHZFBuHNm1n2x87n2TJBwjAlPiNQ==}
- '@zag-js/core@1.17.1':
- resolution: {integrity: sha512-68jh6R87QLMYrtntu34eSF9JJXRXd+/l5Mpaz/InEOwA9sjxuyJIESqO578IpI2GAqk+cE1sUTKhhPmkzeTq3g==}
+ '@zag-js/auto-resize@1.17.4':
+ resolution: {integrity: sha512-kCC0cvuxG/yf28P52waRlz7FaliPrOyPXH+XM+GrznLkC8/TpMeR092G9+oHiYauNESTb+yyQzGgKqW6xFd/Rw==}
- '@zag-js/core@1.7.0':
- resolution: {integrity: sha512-FyK1POPqgBp7DBpUIwvmBQH16+L52NaTaQJzg8iTI9mI/4m3AxZ5aN+8a8qzwGIkVI6rlDcrBkmuOcHDVIOEGA==}
+ '@zag-js/avatar@1.17.4':
+ resolution: {integrity: sha512-+B4esXErOoiYNmHarg9aZWAhUhx6bzoIp31zCMkb6lNUKCDb8hBpFIWYpkgOrPmMaMka2zSYSvpfx6+4zA1Lcg==}
- '@zag-js/dialog@1.7.0':
- resolution: {integrity: sha512-gx/CtKsPg/Y+2d+HtP3tjEdl7KM+x6lUDttjDDBn9rvXFs2REW69AlcJtRzs6B22CxDPmxssGPr1oi3zaU1AUA==}
+ '@zag-js/collection@1.17.4':
+ resolution: {integrity: sha512-N4FUhh6avw146IAUKxMj57clXOoN1XjY45ETWJMfahlmmmnttaCKuiiUj57/XIgmt3Vpg2bYIthcyTxeI+K4QQ==}
- '@zag-js/dismissable@1.7.0':
- resolution: {integrity: sha512-o6S++e7iaBmizIgsvLt5RwY7gn2OQGeG2etet+oaUAMtNhi/1+uGG+rTZgOMj/MGg9BYpPld5tXfk/RrlShh9Q==}
+ '@zag-js/combobox@1.17.4':
+ resolution: {integrity: sha512-E7mDsVEcIVbRUUIzsI8+OfXyTdPCih60/g7SRd5Mu8cLnzOxdC4tmeoIY+42otPr0e1bieVMjUXTEKR7wvQuAA==}
- '@zag-js/dom-query@1.17.1':
- resolution: {integrity: sha512-fwwzEKLPq3kAZVkkPBdskL4Ge4aHRAGqBLfAHCKioQNgvKYGRTzqmGA6ijls9ESULUWf0M2ogKstuUtY19PopA==}
+ '@zag-js/core@1.17.4':
+ resolution: {integrity: sha512-DIL2MXMLBYKR3pnjGGodiEUkY+ST/J81gtIJ32bLYxWWiMeX0SoPIvDZ9tqDHub9Kkd5CF07onXHkdAmB9Djrg==}
- '@zag-js/dom-query@1.7.0':
- resolution: {integrity: sha512-cj+mKB7Sj7mqAepHMsbV4bGvDJfUYCt4d4ruYw0dVpDa1Z9N38TtztTznfrm9kuqOYcJkgE0q3Rn/kPLi8rK8g==}
+ '@zag-js/dialog@1.17.4':
+ resolution: {integrity: sha512-UCTcGlAlbTSS2Po5XvOOl7FiLba5+kh0Vltz8NAZUNn4e87LeitQVTW68k/pxa2nnnaKfPN6CsAWYQ21aZOcwA==}
- '@zag-js/element-rect@1.7.0':
- resolution: {integrity: sha512-j0h1+DASUI5urwBCELdjfk4oekLQ0D2v3a1wQJopGh+ITRVAC1gE1YFx3O+vnP2HwqANxG4+RQHwoQBM2bMBCQ==}
+ '@zag-js/dismissable@1.17.4':
+ resolution: {integrity: sha512-LkFdUz2Ay3D/CsSjQSVjxQwzH6U5rU6cvEcUTOM90RUSozuV2pAK5NnI3JH3jAy1USlpTbjxHL+2bdep2jkAEg==}
- '@zag-js/element-size@1.7.0':
- resolution: {integrity: sha512-Nq+HxG64Ts1QvaJPeDuy8zo/RqcbE95RPNVuHBwuxK3sbXOt7umgIrxQMp8uH+1xeJlp7F8/ydKOPyKOTtgiJg==}
+ '@zag-js/dom-query@1.17.4':
+ resolution: {integrity: sha512-1fNDCWkHRZXB4dD2hoiyMy0cSkrB/u4fur3To5sOKteka5e9om1/YdbYxXNLmVfeTiC/SJtWNelXP7c/8uDwOw==}
- '@zag-js/file-upload@1.7.0':
- resolution: {integrity: sha512-6yJhUDLYsqbd0YBO70PzMDNVJJv8OdC0ZWrf51GMUSugGfSpvQZNDfpAW5Zkzqd4B5nkJDw5KiTSR5NYQlO7VA==}
+ '@zag-js/file-upload@1.17.4':
+ resolution: {integrity: sha512-onV7jN2l9oXcKAuO/KY0TNcqyaFroQ8JjY+QxOOrZEmhvo48h/Lbi0FwBfk3syNWCRK3ihpRQbKOa1lthupGjg==}
- '@zag-js/file-utils@1.7.0':
- resolution: {integrity: sha512-Wb1VoI7UquG1ckJPMFPnmgLg351NI55SXjsEq+CrqgKQCo0httYFLPlkOpp4AbGsoUFZxXRxEXDEVzq5kpPFzQ==}
+ '@zag-js/file-utils@1.17.4':
+ resolution: {integrity: sha512-eg+ywy2qJn+rXz7wBsJc0N0H6qmKEMvxaWtsynBZ+XDbyrEec/aHNRDaM+l5xdFjDKb5/R151nEDXgnBAT8miA==}
- '@zag-js/focus-trap@1.7.0':
- resolution: {integrity: sha512-JHMZAfiL1aoxMAQGolx+iDMgqOMy067yffaLr1tMX55NGZPfEyXEjgxmPXRPf728/7IOShLkWLX17yacmW/w/Q==}
+ '@zag-js/focus-trap@1.17.4':
+ resolution: {integrity: sha512-6exU3DOkyqE2LSRydhgQIho/XhNOvQ35AEbYN81I6yniJPARbkGmDcQaKHZXSL7+tAe0ynX09yfVo4Cskio8Ow==}
- '@zag-js/focus-visible@1.7.0':
- resolution: {integrity: sha512-ycrO6VetctoA7aaw83rnp3erDmQe2Zsyobzp4fzpMbOBTNWzMklt4Kz54xa1ntkia8CpSWVfoauORLlaZoDiAw==}
+ '@zag-js/focus-visible@1.17.4':
+ resolution: {integrity: sha512-9P1GtsFqbuLcplwK/Y7MdnQz9NipYUjef8PS2/duQzRf3UM99/zu1ZbRqwNIW/Tf5ztvet3+dMBAN5HEyYW0Rw==}
- '@zag-js/i18n-utils@1.7.0':
- resolution: {integrity: sha512-CcDXxfobG2LlOU1m3xPzV5pXpCe0tSE9u+drtKMz7F/HOZkR3V0rpCCi/zKySPNa3uLC7G8efz1fGQXiOVKONw==}
+ '@zag-js/i18n-utils@1.17.4':
+ resolution: {integrity: sha512-HiRKMQGaZUpjqekq1h1UlMqquIBnQYSiGpW9vWCUbKs5hr7z3VIgJtKoxdCsBkno7vBEejl316DIIDh3N2qbeA==}
- '@zag-js/interact-outside@1.7.0':
- resolution: {integrity: sha512-tmsVQmcH2N2X2mG2/8/+WRIo9WbRVvLe1OZa3lzFYV4Mu5i+tNK1CHMESpoAd/RdjJ6AyTR2zYiH05WZe76gMw==}
+ '@zag-js/interact-outside@1.17.4':
+ resolution: {integrity: sha512-jd7/4V7ESS6FJILPWIm5CmXVR+maZ4fQmQUPV56WOURKdl2LZ2bPgfjvEaVI9BTm7qPTML6O55xgB87rS/sXlw==}
- '@zag-js/live-region@1.7.0':
- resolution: {integrity: sha512-u2bYIAnBIY+GZqfPqxn2ZylOqE2blUVW7Yc2Z4Ey05K4JXSH2gKR3xPmJCS9/u8tcFKQz5L4KQ/98ntgBG2fGQ==}
+ '@zag-js/live-region@1.17.4':
+ resolution: {integrity: sha512-fP2f6C6vEcWydvhYKMYWaVu8tqyiCnKJx8auJ2zL/yZGLz/W3xDdRRqHJCfneilN7m8C6tJhWBBZm5Th22bGmQ==}
- '@zag-js/pagination@1.7.0':
- resolution: {integrity: sha512-gIbJe1fIYlQCpXqWssET9CCmMWLvcz8OCCw7W3ASeLYRvUW3IzhkMAht5pEsvJEZ9tIWaab5fZ7OLqcgCTgVQw==}
+ '@zag-js/pagination@1.17.4':
+ resolution: {integrity: sha512-yTOcwRdJ0CozEzw0Q+lAUkpWUERFVCCSx9qqIAGqF5jEZSWefUWMQVcPRqupLQ51mhCXdt+wDDh2mTY6Mr+L3A==}
- '@zag-js/popover@1.7.0':
- resolution: {integrity: sha512-Nf9grOVBWlnwQL+AR6X2hAy5bTNQng9xG2Cfo4E8rD2G/CJLKtUGCHHkG8xeQ969HT4urbOrgrZ5UpAhkpNlmw==}
+ '@zag-js/popover@1.17.4':
+ resolution: {integrity: sha512-uDRfw5/F3FPeanOJbXnVmk5c+RFFkQozZ6dn3qdnynWn1sLh56Kf5Ys4X+MQInxqUKdtDCb7cO2tfkAZXE5ZOA==}
- '@zag-js/popper@1.7.0':
- resolution: {integrity: sha512-1Tr9ZBS2VPeZ/zeAR5uEBYLkWn4VcycbaDDkvWxa44fi6LxknDf064cP+ql9AfUp/eUGD2hN9OSEhyxB/JXjKQ==}
+ '@zag-js/popper@1.17.4':
+ resolution: {integrity: sha512-ZdlDcaBzDx4XUzicTviaCP0Q6W1AXwRzdPVO2TzosqQyyn/tYqEfcJePYu9XVsr1Y6bkume4Pt0ucuRN+kUeYQ==}
- '@zag-js/progress@1.7.0':
- resolution: {integrity: sha512-dfjPtUGRZW0pURBalm55ACoN083EJ90cDT1RRRF72JhqlRJu/vSXngjSUFtYuG1WADGS3D7F5XIFMo+PAGynFg==}
+ '@zag-js/progress@1.17.4':
+ resolution: {integrity: sha512-1FWUIizd8OMcK+0uUA/6ly3VJd5eHeOZkXC4lIWDGGwLhfEv2Lm+pgF5Ix5u1mtcmawBbhpkSlYjc1CbsjUTQQ==}
- '@zag-js/radio-group@1.7.0':
- resolution: {integrity: sha512-9NlI5fTh8ZVX5nXm7nU/ZheQLZpHwrHZeKRjomVQQALEWuMZ5YJtVXZaUT5xsCRTk+LEQVSaKp10+aD/5cIMlA==}
+ '@zag-js/radio-group@1.17.4':
+ resolution: {integrity: sha512-/u9ugWth+FPu3W1VUTuBIVq3TbJZMLYF8cFPhvTgIjBvbQw9Oe+TW+WywyH1z7Oaz03e4IYhW445sWGoC9TNvw==}
- '@zag-js/rating-group@1.7.0':
- resolution: {integrity: sha512-jDr8M+2fXTxB9l8qm8ktA362eM6Xt6FzIz0dKlV1JsYr5KamhsZ70Y8MPB6i3b45FGdDdj02a2aaWGLRUaRnrw==}
+ '@zag-js/rating-group@1.17.4':
+ resolution: {integrity: sha512-5KQdf+CLX3RzCu7Bj8Xn7AKeDU+sxCjxCcbjs8VviLl6Rj/OaFUoUomZFf/wLsJLY1tqk6PD7dX4NczY7YC2YQ==}
- '@zag-js/react@1.7.0':
- resolution: {integrity: sha512-phr7WMVJcwfOkiLwtobGWkdzVGdZmVQYvF7w8awloW0j1+YF2OdMYDZK8RauHwmg+sEVmqtGeZPr40hZNnKhVQ==}
+ '@zag-js/react@1.17.4':
+ resolution: {integrity: sha512-43TEe1Afjh1RR3Byxib/jZ2Wn4UVdZY5Irx5v3tnp8NY8BFeswPhP28e6W2NT4c/UZoWeRxYlXDdrRS2p8L8Wg==}
peerDependencies:
react: '>=18.0.0'
react-dom: '>=18.0.0'
- '@zag-js/remove-scroll@1.7.0':
- resolution: {integrity: sha512-sjuBT/iHUZKoDaIdEa5fn0Ii6qjPbp/xO5g/2n2gI3RhRPjcc9jmrTxuvjKftB+ZoBy4GO8MbeaPKdQLIreufg==}
+ '@zag-js/remove-scroll@1.17.4':
+ resolution: {integrity: sha512-EY+N1UodKfu2omYknbWfv+33pljfVW5ZX01iuSlTng3Vx5Zn6xlQCTxpVWvDidACEN6jjBn00QFbGWEhDDBpdw==}
- '@zag-js/slider@1.7.0':
- resolution: {integrity: sha512-0h9ejtOWa4XjxApcCFyGt7By22kd6gG4PdUZgXiKlPCQFgYrxWXZqMlwH6ZtyD4VYUuRPJ05CezDU5KlmZD/3A==}
+ '@zag-js/slider@1.17.4':
+ resolution: {integrity: sha512-Iq3pgLmJIvmQXaUm/+Xt1/s1IV1p73E7ySbThdZ8EADDn60m5ESVTwEymK9jnH10hpXuxDvI1GcbWPOTrIxwYQ==}
- '@zag-js/store@1.7.0':
- resolution: {integrity: sha512-3n+AGo3Y3d1+SkEjY/6QPcDU5kfGu4DEA9qMxJgnnOlYT07SEWByMQD2uoEji9M9psHcVvxm86OnF3Y6UuTsuA==}
+ '@zag-js/store@1.17.4':
+ resolution: {integrity: sha512-80i4/ggb2OrZ9+l1EJgYcp8uBy5oJwwae/kzy2/r93P+gotct5/qiyZYrybE8+YhU0u5zPiyjTxH0SILfP9Ofg==}
- '@zag-js/svelte@1.7.0':
- resolution: {integrity: sha512-NN9G990gJlqMkW4FMa8tBLEs858MnogWaY5/QPs7skoVnFz5f+3S2kXtyJhyStBbRpZWCnELfbmb5KnMDZ57MQ==}
+ '@zag-js/svelte@1.17.4':
+ resolution: {integrity: sha512-eILJQr0GPLdJC9ewccD0sIQ0LT3fhXRnYzo8FRT3T++HzDonaxny2PGZRFjhIgD4JPhWKMrSJo1pXer83JLT+w==}
peerDependencies:
svelte: ^5.0.0-next.1
- '@zag-js/switch@1.7.0':
- resolution: {integrity: sha512-sz3whYMAD949fJ5v9DegU43SrpUNKhoPOum4LOpoSrh364ePfm7ShsTIgJnqPrdMknr+17ljLx54tXPS1SsMTw==}
+ '@zag-js/switch@1.17.4':
+ resolution: {integrity: sha512-d5kBKe+q7V87V6K3BcsfJ1jU2qiJvPLjBumUDFkrzU0E5jweVOOwYrqDzLX8X4cBXk9A2R6U8rYdgGwWDctmWQ==}
- '@zag-js/tabs@1.7.0':
- resolution: {integrity: sha512-bAMp7Vhyis5j3BSKs4m0OwsbchRLLzFf6Yaf54CNraAUdKRwLQckznrajQLPI5F+BrHkGzMXvj/lt9jlGiKDcw==}
+ '@zag-js/tabs@1.17.4':
+ resolution: {integrity: sha512-jvchw7erb8ryQTR92QQyP64nmJPJHCeOr6s09ghYqyNIVI5xgVy5hcfgrE4iMXODJ9CSAMsZHqY7QN5Xq10l3Q==}
- '@zag-js/tags-input@1.7.0':
- resolution: {integrity: sha512-ME/KwP1yrPHX0bP0EqkHI30IQgrE2cAkREoRluM5ScpG3Uiug98x6+zts0YS9j1OB3pyTl0d4alECBruxN8cPA==}
+ '@zag-js/tags-input@1.17.4':
+ resolution: {integrity: sha512-BYzvgIdqjv2LZSf5tfRECklCEt9u/uyc4gaGOiEseNIzcyQ9xrg9fq2Yk6Wt8mhWujdCbC/zJS2RB3LdcVePng==}
- '@zag-js/toast@1.7.0':
- resolution: {integrity: sha512-tvEO1vpC9QZ0oYJOKay2dvcq5lAPn4MT7ahnALs89iVjhWyguXAs5kzoq/Devlbuhi+bUY1YxvtrMDJjYVFhaA==}
+ '@zag-js/toast@1.17.4':
+ resolution: {integrity: sha512-lhu0mhHLpT2DaI9d6BjlE2vJEL9/jFmyPGJ9QG9kkQAxDNtEJLiCJEe12mKs5S9LoxDHJGWGYkF2O/7XwLkDnA==}
- '@zag-js/tooltip@1.7.0':
- resolution: {integrity: sha512-ehZOewcxYZL4+ND5QMeDlQQrckssMTzxcReRCOVFXrRZb5X1jX6+ale9MSG+cJYMpQUqT2J5VtzMJH+GNj/jfw==}
+ '@zag-js/tooltip@1.17.4':
+ resolution: {integrity: sha512-lDRXZjd7anVb4h2ZvDCYYZ+puJZZwry5xi72jY6xhz3vVWX5qfkYjZ/MHuuDk/S+fEY+luWJXJ+cPh+v1zie0g==}
- '@zag-js/tree-view@1.17.1':
- resolution: {integrity: sha512-G5V24wKVfN1YPGK5GszblcI0NY9HqyEFxwo23JASmm9LTmwAr/5TKu8IEkobzKw0IH6Mo/eEyGrL+L6LNuof6Q==}
+ '@zag-js/tree-view@1.17.4':
+ resolution: {integrity: sha512-XRc2DxB/gVrkmS7+ZTJBC8p0G1J+mqtFb5zzRxyNitp+VW7yMsRtAUJ7m5gT5bD71zOkk4fPhwuB+ZZtpPAaMQ==}
- '@zag-js/types@1.17.1':
- resolution: {integrity: sha512-KEPko1DK19hEMfM5IPKTZQtpf4HC3X56qwckezRX1yk+/vGotVUxdjRIrv+pcITjlFAoQQO9TiiZv2UiiVrFGA==}
+ '@zag-js/types@1.17.4':
+ resolution: {integrity: sha512-GHE1ykkMeHuIPHkkU1JNcIWMoFH322Yq65S4dhhsEgqMRX3BUHW8ids5e+7WOu9ZSH3PGJdpUXe8+jg3USpwaw==}
- '@zag-js/types@1.7.0':
- resolution: {integrity: sha512-rmPonVc8EBOGIEJYjzWIBQ6LJwUMc3LnipRREECO+n7LNlUQUliCOFbHw1UOGP+4ZkCKmxjGFR3jLtjY8aN4gQ==}
-
- '@zag-js/utils@1.17.1':
- resolution: {integrity: sha512-+w/Kx7uZufg3cD6I5bQ8iSoeY3qSarPpUwrxz6FCOxJ86IAmf3ActqFC2pJ6DQCdHdkWINaKKchb4GNt8ld7KQ==}
-
- '@zag-js/utils@1.7.0':
- resolution: {integrity: sha512-yIxvH5V27a1WuLgCxHX7qpdtFo8vTJaZLafBpSNfVYG4B8FaxTE+P7JAcpmAzs3UyXura/WfAY2eVWWVBpk9ZA==}
+ '@zag-js/utils@1.17.4':
+ resolution: {integrity: sha512-FXici9HJG1ZBLCmbHO/ed4iurDriDjdx8XOfSD052bu22ViWl5jnO2K77OwagexbXGGAJNhswvDeQg5CSqYbvA==}
abbrev@3.0.0:
resolution: {integrity: sha512-+/kfrslGQ7TNV2ecmQwMJj/B65g5KVq1/L3SGVZ3tCYGqlzFuFCGBZJtMP99wH3NpEUyAjn0zPdPUg0D+DwrOA==}
@@ -7222,11 +7204,20 @@ snapshots:
dependencies:
'@floating-ui/utils': 0.2.9
+ '@floating-ui/core@1.7.1':
+ dependencies:
+ '@floating-ui/utils': 0.2.9
+
'@floating-ui/dom@1.6.13':
dependencies:
'@floating-ui/core': 1.6.9
'@floating-ui/utils': 0.2.9
+ '@floating-ui/dom@1.7.1':
+ dependencies:
+ '@floating-ui/core': 1.7.1
+ '@floating-ui/utils': 0.2.9
+
'@floating-ui/react-dom@2.1.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
dependencies:
'@floating-ui/dom': 1.6.13
@@ -8362,280 +8353,252 @@ snapshots:
'@vscode/l10n@0.0.18': {}
- '@zag-js/accordion@1.7.0':
+ '@zag-js/accordion@1.17.4':
dependencies:
- '@zag-js/anatomy': 1.7.0
- '@zag-js/core': 1.7.0
- '@zag-js/dom-query': 1.7.0
- '@zag-js/types': 1.7.0
- '@zag-js/utils': 1.7.0
-
- '@zag-js/anatomy@1.17.1': {}
+ '@zag-js/anatomy': 1.17.4
+ '@zag-js/core': 1.17.4
+ '@zag-js/dom-query': 1.17.4
+ '@zag-js/types': 1.17.4
+ '@zag-js/utils': 1.17.4
- '@zag-js/anatomy@1.7.0': {}
+ '@zag-js/anatomy@1.17.4': {}
- '@zag-js/aria-hidden@1.7.0': {}
+ '@zag-js/aria-hidden@1.17.4': {}
- '@zag-js/auto-resize@1.7.0':
+ '@zag-js/auto-resize@1.17.4':
dependencies:
- '@zag-js/dom-query': 1.7.0
+ '@zag-js/dom-query': 1.17.4
- '@zag-js/avatar@1.7.0':
+ '@zag-js/avatar@1.17.4':
dependencies:
- '@zag-js/anatomy': 1.7.0
- '@zag-js/core': 1.7.0
- '@zag-js/dom-query': 1.7.0
- '@zag-js/types': 1.7.0
- '@zag-js/utils': 1.7.0
+ '@zag-js/anatomy': 1.17.4
+ '@zag-js/core': 1.17.4
+ '@zag-js/dom-query': 1.17.4
+ '@zag-js/types': 1.17.4
+ '@zag-js/utils': 1.17.4
- '@zag-js/collection@1.17.1':
+ '@zag-js/collection@1.17.4':
dependencies:
- '@zag-js/utils': 1.17.1
+ '@zag-js/utils': 1.17.4
- '@zag-js/collection@1.7.0':
+ '@zag-js/combobox@1.17.4':
dependencies:
- '@zag-js/utils': 1.7.0
+ '@zag-js/anatomy': 1.17.4
+ '@zag-js/aria-hidden': 1.17.4
+ '@zag-js/collection': 1.17.4
+ '@zag-js/core': 1.17.4
+ '@zag-js/dismissable': 1.17.4
+ '@zag-js/dom-query': 1.17.4
+ '@zag-js/popper': 1.17.4
+ '@zag-js/types': 1.17.4
+ '@zag-js/utils': 1.17.4
- '@zag-js/combobox@1.7.0':
+ '@zag-js/core@1.17.4':
dependencies:
- '@zag-js/anatomy': 1.7.0
- '@zag-js/aria-hidden': 1.7.0
- '@zag-js/collection': 1.7.0
- '@zag-js/core': 1.7.0
- '@zag-js/dismissable': 1.7.0
- '@zag-js/dom-query': 1.7.0
- '@zag-js/popper': 1.7.0
- '@zag-js/types': 1.7.0
- '@zag-js/utils': 1.7.0
+ '@zag-js/dom-query': 1.17.4
+ '@zag-js/utils': 1.17.4
- '@zag-js/core@1.17.1':
+ '@zag-js/dialog@1.17.4':
dependencies:
- '@zag-js/dom-query': 1.17.1
- '@zag-js/utils': 1.17.1
+ '@zag-js/anatomy': 1.17.4
+ '@zag-js/aria-hidden': 1.17.4
+ '@zag-js/core': 1.17.4
+ '@zag-js/dismissable': 1.17.4
+ '@zag-js/dom-query': 1.17.4
+ '@zag-js/focus-trap': 1.17.4
+ '@zag-js/remove-scroll': 1.17.4
+ '@zag-js/types': 1.17.4
+ '@zag-js/utils': 1.17.4
- '@zag-js/core@1.7.0':
+ '@zag-js/dismissable@1.17.4':
dependencies:
- '@zag-js/dom-query': 1.7.0
- '@zag-js/utils': 1.7.0
+ '@zag-js/dom-query': 1.17.4
+ '@zag-js/interact-outside': 1.17.4
+ '@zag-js/utils': 1.17.4
- '@zag-js/dialog@1.7.0':
+ '@zag-js/dom-query@1.17.4':
dependencies:
- '@zag-js/anatomy': 1.7.0
- '@zag-js/aria-hidden': 1.7.0
- '@zag-js/core': 1.7.0
- '@zag-js/dismissable': 1.7.0
- '@zag-js/dom-query': 1.7.0
- '@zag-js/focus-trap': 1.7.0
- '@zag-js/remove-scroll': 1.7.0
- '@zag-js/types': 1.7.0
- '@zag-js/utils': 1.7.0
+ '@zag-js/types': 1.17.4
- '@zag-js/dismissable@1.7.0':
+ '@zag-js/file-upload@1.17.4':
dependencies:
- '@zag-js/dom-query': 1.7.0
- '@zag-js/interact-outside': 1.7.0
- '@zag-js/utils': 1.7.0
+ '@zag-js/anatomy': 1.17.4
+ '@zag-js/core': 1.17.4
+ '@zag-js/dom-query': 1.17.4
+ '@zag-js/file-utils': 1.17.4
+ '@zag-js/i18n-utils': 1.17.4
+ '@zag-js/types': 1.17.4
+ '@zag-js/utils': 1.17.4
- '@zag-js/dom-query@1.17.1':
+ '@zag-js/file-utils@1.17.4':
dependencies:
- '@zag-js/types': 1.17.1
+ '@zag-js/i18n-utils': 1.17.4
- '@zag-js/dom-query@1.7.0':
+ '@zag-js/focus-trap@1.17.4':
dependencies:
- '@zag-js/types': 1.7.0
-
- '@zag-js/element-rect@1.7.0': {}
-
- '@zag-js/element-size@1.7.0': {}
+ '@zag-js/dom-query': 1.17.4
- '@zag-js/file-upload@1.7.0':
+ '@zag-js/focus-visible@1.17.4':
dependencies:
- '@zag-js/anatomy': 1.7.0
- '@zag-js/core': 1.7.0
- '@zag-js/dom-query': 1.7.0
- '@zag-js/file-utils': 1.7.0
- '@zag-js/i18n-utils': 1.7.0
- '@zag-js/types': 1.7.0
- '@zag-js/utils': 1.7.0
+ '@zag-js/dom-query': 1.17.4
- '@zag-js/file-utils@1.7.0':
+ '@zag-js/i18n-utils@1.17.4':
dependencies:
- '@zag-js/i18n-utils': 1.7.0
+ '@zag-js/dom-query': 1.17.4
- '@zag-js/focus-trap@1.7.0':
+ '@zag-js/interact-outside@1.17.4':
dependencies:
- '@zag-js/dom-query': 1.7.0
+ '@zag-js/dom-query': 1.17.4
+ '@zag-js/utils': 1.17.4
- '@zag-js/focus-visible@1.7.0':
- dependencies:
- '@zag-js/dom-query': 1.7.0
+ '@zag-js/live-region@1.17.4': {}
- '@zag-js/i18n-utils@1.7.0':
+ '@zag-js/pagination@1.17.4':
dependencies:
- '@zag-js/dom-query': 1.7.0
+ '@zag-js/anatomy': 1.17.4
+ '@zag-js/core': 1.17.4
+ '@zag-js/dom-query': 1.17.4
+ '@zag-js/types': 1.17.4
+ '@zag-js/utils': 1.17.4
- '@zag-js/interact-outside@1.7.0':
+ '@zag-js/popover@1.17.4':
dependencies:
- '@zag-js/dom-query': 1.7.0
- '@zag-js/utils': 1.7.0
-
- '@zag-js/live-region@1.7.0': {}
+ '@zag-js/anatomy': 1.17.4
+ '@zag-js/aria-hidden': 1.17.4
+ '@zag-js/core': 1.17.4
+ '@zag-js/dismissable': 1.17.4
+ '@zag-js/dom-query': 1.17.4
+ '@zag-js/focus-trap': 1.17.4
+ '@zag-js/popper': 1.17.4
+ '@zag-js/remove-scroll': 1.17.4
+ '@zag-js/types': 1.17.4
+ '@zag-js/utils': 1.17.4
- '@zag-js/pagination@1.7.0':
+ '@zag-js/popper@1.17.4':
dependencies:
- '@zag-js/anatomy': 1.7.0
- '@zag-js/core': 1.7.0
- '@zag-js/dom-query': 1.7.0
- '@zag-js/types': 1.7.0
- '@zag-js/utils': 1.7.0
+ '@floating-ui/dom': 1.7.1
+ '@zag-js/dom-query': 1.17.4
+ '@zag-js/utils': 1.17.4
- '@zag-js/popover@1.7.0':
+ '@zag-js/progress@1.17.4':
dependencies:
- '@zag-js/anatomy': 1.7.0
- '@zag-js/aria-hidden': 1.7.0
- '@zag-js/core': 1.7.0
- '@zag-js/dismissable': 1.7.0
- '@zag-js/dom-query': 1.7.0
- '@zag-js/focus-trap': 1.7.0
- '@zag-js/popper': 1.7.0
- '@zag-js/remove-scroll': 1.7.0
- '@zag-js/types': 1.7.0
- '@zag-js/utils': 1.7.0
+ '@zag-js/anatomy': 1.17.4
+ '@zag-js/core': 1.17.4
+ '@zag-js/dom-query': 1.17.4
+ '@zag-js/types': 1.17.4
+ '@zag-js/utils': 1.17.4
- '@zag-js/popper@1.7.0':
+ '@zag-js/radio-group@1.17.4':
dependencies:
- '@floating-ui/dom': 1.6.13
- '@zag-js/dom-query': 1.7.0
- '@zag-js/utils': 1.7.0
+ '@zag-js/anatomy': 1.17.4
+ '@zag-js/core': 1.17.4
+ '@zag-js/dom-query': 1.17.4
+ '@zag-js/focus-visible': 1.17.4
+ '@zag-js/types': 1.17.4
+ '@zag-js/utils': 1.17.4
- '@zag-js/progress@1.7.0':
+ '@zag-js/rating-group@1.17.4':
dependencies:
- '@zag-js/anatomy': 1.7.0
- '@zag-js/core': 1.7.0
- '@zag-js/dom-query': 1.7.0
- '@zag-js/types': 1.7.0
- '@zag-js/utils': 1.7.0
+ '@zag-js/anatomy': 1.17.4
+ '@zag-js/core': 1.17.4
+ '@zag-js/dom-query': 1.17.4
+ '@zag-js/types': 1.17.4
+ '@zag-js/utils': 1.17.4
- '@zag-js/radio-group@1.7.0':
+ '@zag-js/react@1.17.4(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
dependencies:
- '@zag-js/anatomy': 1.7.0
- '@zag-js/core': 1.7.0
- '@zag-js/dom-query': 1.7.0
- '@zag-js/element-rect': 1.7.0
- '@zag-js/focus-visible': 1.7.0
- '@zag-js/types': 1.7.0
- '@zag-js/utils': 1.7.0
-
- '@zag-js/rating-group@1.7.0':
- dependencies:
- '@zag-js/anatomy': 1.7.0
- '@zag-js/core': 1.7.0
- '@zag-js/dom-query': 1.7.0
- '@zag-js/types': 1.7.0
- '@zag-js/utils': 1.7.0
-
- '@zag-js/react@1.7.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
- dependencies:
- '@zag-js/core': 1.7.0
- '@zag-js/store': 1.7.0
- '@zag-js/types': 1.7.0
- '@zag-js/utils': 1.7.0
+ '@zag-js/core': 1.17.4
+ '@zag-js/store': 1.17.4
+ '@zag-js/types': 1.17.4
+ '@zag-js/utils': 1.17.4
react: 19.1.0
react-dom: 19.1.0(react@19.1.0)
- '@zag-js/remove-scroll@1.7.0':
+ '@zag-js/remove-scroll@1.17.4':
dependencies:
- '@zag-js/dom-query': 1.7.0
+ '@zag-js/dom-query': 1.17.4
- '@zag-js/slider@1.7.0':
+ '@zag-js/slider@1.17.4':
dependencies:
- '@zag-js/anatomy': 1.7.0
- '@zag-js/core': 1.7.0
- '@zag-js/dom-query': 1.7.0
- '@zag-js/element-size': 1.7.0
- '@zag-js/types': 1.7.0
- '@zag-js/utils': 1.7.0
+ '@zag-js/anatomy': 1.17.4
+ '@zag-js/core': 1.17.4
+ '@zag-js/dom-query': 1.17.4
+ '@zag-js/types': 1.17.4
+ '@zag-js/utils': 1.17.4
- '@zag-js/store@1.7.0':
+ '@zag-js/store@1.17.4':
dependencies:
proxy-compare: 3.0.1
- '@zag-js/svelte@1.7.0(svelte@5.25.3)':
+ '@zag-js/svelte@1.17.4(svelte@5.25.3)':
dependencies:
- '@zag-js/core': 1.7.0
- '@zag-js/types': 1.7.0
- '@zag-js/utils': 1.7.0
+ '@zag-js/core': 1.17.4
+ '@zag-js/types': 1.17.4
+ '@zag-js/utils': 1.17.4
svelte: 5.25.3
- '@zag-js/switch@1.7.0':
- dependencies:
- '@zag-js/anatomy': 1.7.0
- '@zag-js/core': 1.7.0
- '@zag-js/dom-query': 1.7.0
- '@zag-js/focus-visible': 1.7.0
- '@zag-js/types': 1.7.0
- '@zag-js/utils': 1.7.0
-
- '@zag-js/tabs@1.7.0':
- dependencies:
- '@zag-js/anatomy': 1.7.0
- '@zag-js/core': 1.7.0
- '@zag-js/dom-query': 1.7.0
- '@zag-js/element-rect': 1.7.0
- '@zag-js/types': 1.7.0
- '@zag-js/utils': 1.7.0
-
- '@zag-js/tags-input@1.7.0':
- dependencies:
- '@zag-js/anatomy': 1.7.0
- '@zag-js/auto-resize': 1.7.0
- '@zag-js/core': 1.7.0
- '@zag-js/dom-query': 1.7.0
- '@zag-js/interact-outside': 1.7.0
- '@zag-js/live-region': 1.7.0
- '@zag-js/types': 1.7.0
- '@zag-js/utils': 1.7.0
-
- '@zag-js/toast@1.7.0':
- dependencies:
- '@zag-js/anatomy': 1.7.0
- '@zag-js/core': 1.7.0
- '@zag-js/dismissable': 1.7.0
- '@zag-js/dom-query': 1.7.0
- '@zag-js/types': 1.7.0
- '@zag-js/utils': 1.7.0
-
- '@zag-js/tooltip@1.7.0':
- dependencies:
- '@zag-js/anatomy': 1.7.0
- '@zag-js/core': 1.7.0
- '@zag-js/dom-query': 1.7.0
- '@zag-js/focus-visible': 1.7.0
- '@zag-js/popper': 1.7.0
- '@zag-js/store': 1.7.0
- '@zag-js/types': 1.7.0
- '@zag-js/utils': 1.7.0
-
- '@zag-js/tree-view@1.17.1':
- dependencies:
- '@zag-js/anatomy': 1.17.1
- '@zag-js/collection': 1.17.1
- '@zag-js/core': 1.17.1
- '@zag-js/dom-query': 1.17.1
- '@zag-js/types': 1.17.1
- '@zag-js/utils': 1.17.1
-
- '@zag-js/types@1.17.1':
+ '@zag-js/switch@1.17.4':
+ dependencies:
+ '@zag-js/anatomy': 1.17.4
+ '@zag-js/core': 1.17.4
+ '@zag-js/dom-query': 1.17.4
+ '@zag-js/focus-visible': 1.17.4
+ '@zag-js/types': 1.17.4
+ '@zag-js/utils': 1.17.4
+
+ '@zag-js/tabs@1.17.4':
+ dependencies:
+ '@zag-js/anatomy': 1.17.4
+ '@zag-js/core': 1.17.4
+ '@zag-js/dom-query': 1.17.4
+ '@zag-js/types': 1.17.4
+ '@zag-js/utils': 1.17.4
+
+ '@zag-js/tags-input@1.17.4':
+ dependencies:
+ '@zag-js/anatomy': 1.17.4
+ '@zag-js/auto-resize': 1.17.4
+ '@zag-js/core': 1.17.4
+ '@zag-js/dom-query': 1.17.4
+ '@zag-js/interact-outside': 1.17.4
+ '@zag-js/live-region': 1.17.4
+ '@zag-js/types': 1.17.4
+ '@zag-js/utils': 1.17.4
+
+ '@zag-js/toast@1.17.4':
+ dependencies:
+ '@zag-js/anatomy': 1.17.4
+ '@zag-js/core': 1.17.4
+ '@zag-js/dismissable': 1.17.4
+ '@zag-js/dom-query': 1.17.4
+ '@zag-js/types': 1.17.4
+ '@zag-js/utils': 1.17.4
+
+ '@zag-js/tooltip@1.17.4':
+ dependencies:
+ '@zag-js/anatomy': 1.17.4
+ '@zag-js/core': 1.17.4
+ '@zag-js/dom-query': 1.17.4
+ '@zag-js/focus-visible': 1.17.4
+ '@zag-js/popper': 1.17.4
+ '@zag-js/store': 1.17.4
+ '@zag-js/types': 1.17.4
+ '@zag-js/utils': 1.17.4
+
+ '@zag-js/tree-view@1.17.4':
+ dependencies:
+ '@zag-js/anatomy': 1.17.4
+ '@zag-js/collection': 1.17.4
+ '@zag-js/core': 1.17.4
+ '@zag-js/dom-query': 1.17.4
+ '@zag-js/types': 1.17.4
+ '@zag-js/utils': 1.17.4
+
+ '@zag-js/types@1.17.4':
dependencies:
csstype: 3.1.3
- '@zag-js/types@1.7.0':
- dependencies:
- csstype: 3.1.3
-
- '@zag-js/utils@1.17.1': {}
-
- '@zag-js/utils@1.7.0': {}
+ '@zag-js/utils@1.17.4': {}
abbrev@3.0.0: {}
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index d0a465d296..209bcbdf19 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -3,7 +3,7 @@ packages:
- 'sites/*'
- 'playgrounds/*'
-define: &zag_version '^1.7.0'
+define: &zag_version '^1.17.4'
catalog:
'@zag-js/svelte': *zag_version
From 4bd9f476351ff16b23a1afe973d2a9d482273aaa Mon Sep 17 00:00:00 2001
From: dev-viinz <42003446+dev-viinz@users.noreply.github.com>
Date: Tue, 1 Jul 2025 01:10:11 +0200
Subject: [PATCH 05/30] feat: working prototype
---
.../src/components/TreeView/TreeNode.svelte | 44 ------
.../src/components/TreeView/TreeView.svelte | 145 ++++++++++++++----
.../components/TreeView/TreeViewNode.svelte | 137 +++++++++++++++++
.../src/components/TreeView/index.ts | 3 +-
.../src/components/TreeView/types.ts | 125 ++++++++++++++-
.../routes/components/tree-view/+page.svelte | 34 +++-
6 files changed, 401 insertions(+), 87 deletions(-)
delete mode 100644 packages/skeleton-svelte/src/components/TreeView/TreeNode.svelte
create mode 100644 packages/skeleton-svelte/src/components/TreeView/TreeViewNode.svelte
diff --git a/packages/skeleton-svelte/src/components/TreeView/TreeNode.svelte b/packages/skeleton-svelte/src/components/TreeView/TreeNode.svelte
deleted file mode 100644
index cc611e13b4..0000000000
--- a/packages/skeleton-svelte/src/components/TreeView/TreeNode.svelte
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-{#if nodeState.isBranch}
-
-
- 📁
- {node.name}
- ➡️
-
-
-
- {#if node.children}
- {#each node.children as childNode, index}
-
- {/each}
- {/if}
-
-
-{:else}
-
- 📄
- {node.name}
-
-{/if}
diff --git a/packages/skeleton-svelte/src/components/TreeView/TreeView.svelte b/packages/skeleton-svelte/src/components/TreeView/TreeView.svelte
index 01ef5a39de..482e4c0d88 100644
--- a/packages/skeleton-svelte/src/components/TreeView/TreeView.svelte
+++ b/packages/skeleton-svelte/src/components/TreeView/TreeView.svelte
@@ -1,58 +1,135 @@
-
-
My Documents
+
- {#if collection.rootNode.children}
- {#each collection.rootNode.children as node, index}
-
+ {#if treeCollection.rootNode.children}
+ {#each treeCollection.rootNode.children as node, index}
+
{/each}
{/if}
diff --git a/packages/skeleton-svelte/src/components/TreeView/TreeViewNode.svelte b/packages/skeleton-svelte/src/components/TreeView/TreeViewNode.svelte
new file mode 100644
index 0000000000..26ec332367
--- /dev/null
+++ b/packages/skeleton-svelte/src/components/TreeView/TreeViewNode.svelte
@@ -0,0 +1,137 @@
+
+
+
+
+{#if nodeState.isBranch}
+
+
+
+
+
+
+ {#if ctx.api.expandedValue.includes(node.id)}
+
+
+
+ {#if node.children}
+ {#each node.children as childNode, index}
+
+ {/each}
+ {/if}
+
+
+ {/if}
+
+{:else}
+
+{/if}
+
+
diff --git a/packages/skeleton-svelte/src/components/TreeView/index.ts b/packages/skeleton-svelte/src/components/TreeView/index.ts
index 7f1d3f4c46..4359f140f7 100644
--- a/packages/skeleton-svelte/src/components/TreeView/index.ts
+++ b/packages/skeleton-svelte/src/components/TreeView/index.ts
@@ -1,3 +1,4 @@
import TreeView from './TreeView.svelte';
+import Node from './TreeViewNode.svelte';
-export default Object.assign(TreeView);
+export default Object.assign(TreeView, { Node });
diff --git a/packages/skeleton-svelte/src/components/TreeView/types.ts b/packages/skeleton-svelte/src/components/TreeView/types.ts
index c793c1676a..78590f6590 100644
--- a/packages/skeleton-svelte/src/components/TreeView/types.ts
+++ b/packages/skeleton-svelte/src/components/TreeView/types.ts
@@ -1,19 +1,130 @@
import * as tree from '@zag-js/tree-view';
+import type { Snippet } from 'svelte';
+import type { SlideParams } from 'svelte/transition';
// TreeViewContext ---
-export interface TreeViewContext {
- api: ReturnType
;
+export interface TreeViewContext extends TreeNodeProps {
+ api: ReturnType>>;
}
// Components ---
-export interface TreeViewProps extends Omit {
- prop: string;
+export interface TreeViewProps extends Omit, TreeNodeProps {
+ // Data ---
+ collection: TreeViewCollection;
+ // View ---
+ /** Set base styles. */
+ base?: string;
+ /** Set background styles. */
+ bg?: string;
+ /** Set vertical spacing styles. */
+ spaceY?: string;
+ /** Set border styles. */
+ border?: string;
+ /** Set padding styles. */
+ padding?: string;
+ /** Set shadow styles. */
+ shadow?: string;
+ /** Provide arbitrary CSS classes. */
+ classes?: string;
+ // Node ---
+ nodeBase: string;
+ nodeBg: string;
+ nodeClasses: string;
+ // Label ---
+ /** Set label snippet's styles. */
+ labelBase?: string;
+ /** Set label snippet's background styles. */
+ labelBg?: string;
+ /** Set label snippet's vertical spacing styles. */
+ labelSpaceY?: string;
+ /** Set label snippet's border styles. */
+ labelBorder?: string;
+ /** Set label snippet's padding styles. */
+ labelPadding?: string;
+ /** Set label snippet's shadow styles. */
+ labelShadow?: string;
+ /** Provide arbitrary CSS classes to the label. */
+ labelClasses?: string;
+ // Snippets ---
+ children?: Snippet;
}
-export interface Node {
+export interface TreeNodeProps {
+ /** The animation configuration */
+ animationConfig?: SlideParams;
+ // Content ---
+ /** Set content styles. */
+ contentBase?: string;
+ /** Set content background styles. */
+ contentBg?: string;
+ /** Set content vertical spacing styles. */
+ contentSpaceY?: string;
+ /** Set content border styles. */
+ contentBorder?: string;
+ /** Set content padding styles. */
+ contentPadding?: string;
+ /** Set content shadow styles. */
+ contentShadow?: string;
+ /** Provide arbitrary CSS classes to the contents. */
+ contentClasses?: string;
+
+ // Control ---
+ /** Set control styles. */
+ controlBase?: string;
+ /** Set control background styles. */
+ controlBg?: string;
+ /** Set control vertical spacing styles. */
+ controlSpaceY?: string;
+ /** Set control hover styles. */
+ controlHover: string;
+ /** Set control border styles. */
+ controlBorder?: string;
+ /** Set control padding styles. */
+ controlPadding?: string;
+ /** Set control shadow styles. */
+ controlShadow?: string;
+ /** Provide arbitrary CSS classes to the controls. */
+ controlClasses?: string;
+
+ // Item ---
+ /** Set item styles. */
+ itemBase?: string;
+ /** Set item background styles. */
+ itemBg?: string;
+ /** Set item vertical spacing styles. */
+ itemSpaceY?: string;
+ /** Set item hover styles. */
+ itemHover: string;
+ /** Set item border styles. */
+ itemBorder?: string;
+ /** Set item padding styles. */
+ itemPadding?: string;
+ /** Set item shadow styles. */
+ itemShadow?: string;
+ /** Provide arbitrary CSS classes to the items. */
+ itemClasses?: string;
+
+ // Indent ---
+ /** Set indentation amount. */
+ indentAmount?: string;
+ // Indicator ---
+ /** Set indicator transformations when open. */
+ indicatorOpenRotation?: string;
+ /** Set indicator transitions. */
+ indicatorTransition?: string;
+ // Snippets ---
+ branchIcon: Snippet;
+ itemIcon: Snippet;
+ nodeText: Snippet<[string]>;
+ nodeIndicator: Snippet;
+}
+
+export interface Node {
id: string;
- name: string;
- children?: Node[];
+ value: T;
+ children?: Node[];
}
+
+export type TreeViewCollection = Node[];
diff --git a/playgrounds/skeleton-svelte/src/routes/components/tree-view/+page.svelte b/playgrounds/skeleton-svelte/src/routes/components/tree-view/+page.svelte
index c50da8f560..d4a7331561 100644
--- a/playgrounds/skeleton-svelte/src/routes/components/tree-view/+page.svelte
+++ b/playgrounds/skeleton-svelte/src/routes/components/tree-view/+page.svelte
@@ -1,5 +1,37 @@
-
+
+ {#snippet nodeIndicator()}
+ ⇒
+ {/snippet}
+ {#snippet branchIcon()}
+ 📁
+ {/snippet}
+ {#snippet itemIcon()}
+ 📄
+ {/snippet}
+ {#snippet nodeText(text: string)}
+ {text} ✨
+ {/snippet}
+
From ed9ccb08cf0080d4e4ab7b83446b5335f0063b4e Mon Sep 17 00:00:00 2001
From: dev-viinz <42003446+dev-viinz@users.noreply.github.com>
Date: Tue, 1 Jul 2025 20:04:14 +0200
Subject: [PATCH 06/30] feat: re-order things for draft
---
.../src/components/TreeView/TreeView.svelte | 79 ++++++-------
.../components/TreeView/TreeViewNode.svelte | 106 +++++++++++-------
.../src/components/TreeView/types.ts | 58 ++++++----
3 files changed, 141 insertions(+), 102 deletions(-)
diff --git a/packages/skeleton-svelte/src/components/TreeView/TreeView.svelte b/packages/skeleton-svelte/src/components/TreeView/TreeView.svelte
index 482e4c0d88..96acf63a30 100644
--- a/packages/skeleton-svelte/src/components/TreeView/TreeView.svelte
+++ b/packages/skeleton-svelte/src/components/TreeView/TreeView.svelte
@@ -1,9 +1,8 @@
@@ -69,7 +70,7 @@
{#if nodeIndicator}
{@render nodeIndicator()}
@@ -96,11 +97,40 @@
transition:slide={animationConfig}
{...ctx.api.getBranchContentProps(zagProps)}
>
-
+
{#if node.children}
{#each node.children as childNode, index}
-
+
{/each}
{/if}
diff --git a/packages/skeleton-svelte/src/components/TreeView/types.ts b/packages/skeleton-svelte/src/components/TreeView/types.ts
index 78590f6590..ee11f133e9 100644
--- a/packages/skeleton-svelte/src/components/TreeView/types.ts
+++ b/packages/skeleton-svelte/src/components/TreeView/types.ts
@@ -4,15 +4,30 @@ import type { SlideParams } from 'svelte/transition';
// TreeViewContext ---
-export interface TreeViewContext extends TreeNodeProps {
- api: ReturnType>>;
+export interface TreeViewContext {
+ /** The animation configuration. */
+ animationConfig?: SlideParams;
+ // Zag ---
+ /** The api of the state machine. */
+ api: ReturnType>;
+ // Snippets ---
+ /** The lead icon for expandable branches. */
+ branchIcon?: Snippet;
+ /** The lead icon for end nodes */
+ itemIcon?: Snippet;
+ /** The snippet that accepts the node value for display. */
+ nodeText?: Snippet<[string]>;
+ /** The icon to indicate if the node children are expanded. */
+ nodeIndicator?: Snippet;
}
// Components ---
-export interface TreeViewProps extends Omit, TreeNodeProps {
+export interface TreeViewProps extends Omit, Omit {
+ /** The animation configuration. */
+ animationConfig?: SlideParams;
// Data ---
- collection: TreeViewCollection;
+ collection: TreeViewCollection;
// View ---
/** Set base styles. */
base?: string;
@@ -29,9 +44,9 @@ export interface TreeViewProps extends Omit extends Omit;
- nodeIndicator: Snippet;
}
-export interface Node {
+export interface CollectionNode {
id: string;
- value: T;
- children?: Node[];
+ value: string;
+ children?: CollectionNode[];
}
-export type TreeViewCollection = Node[];
+export type TreeViewCollection = CollectionNode[];
From 2fa4e9f18922b4b61c421c7542ca30571c8c88c8 Mon Sep 17 00:00:00 2001
From: dev-viinz <42003446+dev-viinz@users.noreply.github.com>
Date: Thu, 3 Jul 2025 23:02:06 +0200
Subject: [PATCH 07/30] feat: consolidate treeview into single component +
improve playground
---
.../src/components/TreeView/TreeView.svelte | 144 ++++++++++-----
.../components/TreeView/TreeViewNode.svelte | 167 ------------------
.../src/components/TreeView/index.ts | 4 -
packages/skeleton-svelte/src/index.ts | 2 +-
.../routes/components/tree-view/+page.svelte | 59 ++++---
5 files changed, 139 insertions(+), 237 deletions(-)
delete mode 100644 packages/skeleton-svelte/src/components/TreeView/TreeViewNode.svelte
delete mode 100644 packages/skeleton-svelte/src/components/TreeView/index.ts
diff --git a/packages/skeleton-svelte/src/components/TreeView/TreeView.svelte b/packages/skeleton-svelte/src/components/TreeView/TreeView.svelte
index 96acf63a30..7beb65f57a 100644
--- a/packages/skeleton-svelte/src/components/TreeView/TreeView.svelte
+++ b/packages/skeleton-svelte/src/components/TreeView/TreeView.svelte
@@ -1,9 +1,22 @@
+
+
+
+
+
{#if treeCollection.rootNode.children}
{#each treeCollection.rootNode.children as node, index}
-
+ {@render treeNode({ node, indexPath: [index] })}
{/each}
{/if}
+
+
+{#snippet treeNode(nodeProps: tree.NodeProps)}
+ {#if api.getNodeState(nodeProps).isBranch}
+
+
+
+
+
+
+ {#if api.expandedValue.includes(nodeProps.node.id)}
+
+
+
+ {#if nodeProps.node.children}
+ {#each nodeProps.node.children as childNode, index}
+ {@render treeNode({ node: childNode, indexPath: [...nodeProps.indexPath, index] })}
+ {/each}
+ {/if}
+
+
+ {/if}
+
+ {:else}
+
+ {/if}
+{/snippet}
+
+
diff --git a/packages/skeleton-svelte/src/components/TreeView/TreeViewNode.svelte b/packages/skeleton-svelte/src/components/TreeView/TreeViewNode.svelte
deleted file mode 100644
index ba0529f6ca..0000000000
--- a/packages/skeleton-svelte/src/components/TreeView/TreeViewNode.svelte
+++ /dev/null
@@ -1,167 +0,0 @@
-
-
-
-
-{#if nodeState.isBranch}
-
-
-
-
-
-
- {#if ctx.api.expandedValue.includes(node.id)}
-
-
-
- {#if node.children}
- {#each node.children as childNode, index}
-
- {/each}
- {/if}
-
-
- {/if}
-
-{:else}
-
-{/if}
-
-
diff --git a/packages/skeleton-svelte/src/components/TreeView/index.ts b/packages/skeleton-svelte/src/components/TreeView/index.ts
deleted file mode 100644
index 4359f140f7..0000000000
--- a/packages/skeleton-svelte/src/components/TreeView/index.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-import TreeView from './TreeView.svelte';
-import Node from './TreeViewNode.svelte';
-
-export default Object.assign(TreeView, { Node });
diff --git a/packages/skeleton-svelte/src/index.ts b/packages/skeleton-svelte/src/index.ts
index b6b163ad80..d82806d00b 100644
--- a/packages/skeleton-svelte/src/index.ts
+++ b/packages/skeleton-svelte/src/index.ts
@@ -22,7 +22,7 @@ export { default as TagsInput } from './components/TagsInput/TagsInput.svelte';
export { default as Toaster } from './components/Toast/Toaster.svelte';
export { createToaster } from './components/Toast/create-toaster.js';
export { default as Rating } from './components/Rating/index.js';
-export { default as TreeView } from './components/TreeView/index.js';
+export { default as TreeView } from './components/TreeView/TreeView.svelte';
// Types
export type { FileUploadApi } from './components/FileUpload/types.js';
diff --git a/playgrounds/skeleton-svelte/src/routes/components/tree-view/+page.svelte b/playgrounds/skeleton-svelte/src/routes/components/tree-view/+page.svelte
index d4a7331561..0168793742 100644
--- a/playgrounds/skeleton-svelte/src/routes/components/tree-view/+page.svelte
+++ b/playgrounds/skeleton-svelte/src/routes/components/tree-view/+page.svelte
@@ -1,19 +1,23 @@
-
- {#snippet nodeIndicator()}
- ⇒
- {/snippet}
- {#snippet branchIcon()}
- 📁
- {/snippet}
- {#snippet itemIcon()}
- 📄
- {/snippet}
- {#snippet nodeText(text: string)}
- {text} ✨
- {/snippet}
-
+
+
+
+
+
+ Default
+ {JSON.stringify(valueDefault)}
+ (valueDefault = e.expandedValue)}>
+
+
+ Icons
+
+ {#snippet nodeIndicator()}
+ ⇒
+ {/snippet}
+ {#snippet branchIcon()}
+ 📁
+ {/snippet}
+ {#snippet itemIcon()}
+ 📄
+ {/snippet}
+
+
+
+
{JSON.stringify(collection, null, 2)}
+
+
From 5650a385edebca0e45d40694be849a728e80dc53 Mon Sep 17 00:00:00 2001
From: dev-viinz <42003446+dev-viinz@users.noreply.github.com>
Date: Fri, 4 Jul 2025 01:58:18 +0200
Subject: [PATCH 08/30] chore: cleanup types + lint
---
.../src/components/TreeView/TreeView.svelte | 2 -
.../src/components/TreeView/types.ts | 78 +++++++------------
packages/skeleton-svelte/src/index.ts | 1 +
.../routes/components/tree-view/+page.svelte | 13 ++--
4 files changed, 35 insertions(+), 59 deletions(-)
diff --git a/packages/skeleton-svelte/src/components/TreeView/TreeView.svelte b/packages/skeleton-svelte/src/components/TreeView/TreeView.svelte
index 7beb65f57a..b863bdb47d 100644
--- a/packages/skeleton-svelte/src/components/TreeView/TreeView.svelte
+++ b/packages/skeleton-svelte/src/components/TreeView/TreeView.svelte
@@ -65,9 +65,7 @@
// Snippets
branchIcon,
itemIcon,
- nodeText,
nodeIndicator,
- children,
...zagProps
}: TreeViewProps = $props();
diff --git a/packages/skeleton-svelte/src/components/TreeView/types.ts b/packages/skeleton-svelte/src/components/TreeView/types.ts
index ee11f133e9..9e2dec2664 100644
--- a/packages/skeleton-svelte/src/components/TreeView/types.ts
+++ b/packages/skeleton-svelte/src/components/TreeView/types.ts
@@ -2,32 +2,15 @@ import * as tree from '@zag-js/tree-view';
import type { Snippet } from 'svelte';
import type { SlideParams } from 'svelte/transition';
-// TreeViewContext ---
-
-export interface TreeViewContext {
- /** The animation configuration. */
- animationConfig?: SlideParams;
- // Zag ---
- /** The api of the state machine. */
- api: ReturnType>;
- // Snippets ---
- /** The lead icon for expandable branches. */
- branchIcon?: Snippet;
- /** The lead icon for end nodes */
- itemIcon?: Snippet;
- /** The snippet that accepts the node value for display. */
- nodeText?: Snippet<[string]>;
- /** The icon to indicate if the node children are expanded. */
- nodeIndicator?: Snippet;
-}
-
// Components ---
-export interface TreeViewProps extends Omit, Omit {
+export interface TreeViewProps extends Omit {
/** The animation configuration. */
animationConfig?: SlideParams;
+
// Data ---
collection: TreeViewCollection;
+
// View ---
/** Set base styles. */
base?: string;
@@ -43,38 +26,7 @@ export interface TreeViewProps extends Omit, Om
shadow?: string;
/** Provide arbitrary CSS classes. */
classes?: string;
- // Node ---
- nodeBase?: string;
- nodeBg?: string;
- nodeClasses?: string;
- // Label ---
- /** Set label snippet's styles. */
- labelBase?: string;
- /** Set label snippet's background styles. */
- labelBg?: string;
- /** Set label snippet's vertical spacing styles. */
- labelSpaceY?: string;
- /** Set label snippet's border styles. */
- labelBorder?: string;
- /** Set label snippet's padding styles. */
- labelPadding?: string;
- /** Set label snippet's shadow styles. */
- labelShadow?: string;
- /** Provide arbitrary CSS classes to the label. */
- labelClasses?: string;
- // Snippets ---
- children?: Snippet;
- /** The lead icon for expandable branches. */
- branchIcon?: Snippet;
- /** The lead icon for end nodes */
- itemIcon?: Snippet;
- /** The snippet that accepts the node value for display. */
- nodeText?: Snippet;
- /** The icon to indicate if the node children are expanded. */
- nodeIndicator?: Snippet;
-}
-export interface TreeNodeProps extends tree.NodeProps {
// Content ---
/** Set content styles. */
contentBase?: string;
@@ -135,6 +87,30 @@ export interface TreeNodeProps extends tree.NodeProps {
indicatorOpenRotation?: string;
/** Set indicator transitions. */
indicatorTransition?: string;
+
+ // Label ---
+ /** Set label snippet's styles. */
+ labelBase?: string;
+ /** Set label snippet's background styles. */
+ labelBg?: string;
+ /** Set label snippet's vertical spacing styles. */
+ labelSpaceY?: string;
+ /** Set label snippet's border styles. */
+ labelBorder?: string;
+ /** Set label snippet's padding styles. */
+ labelPadding?: string;
+ /** Set label snippet's shadow styles. */
+ labelShadow?: string;
+ /** Provide arbitrary CSS classes to the label. */
+ labelClasses?: string;
+
+ // Snippets ---
+ /** The lead icon for expandable branches. */
+ branchIcon?: Snippet;
+ /** The lead icon for end nodes */
+ itemIcon?: Snippet;
+ /** The icon to indicate if the node children are expanded. */
+ nodeIndicator?: Snippet;
}
export interface CollectionNode {
diff --git a/packages/skeleton-svelte/src/index.ts b/packages/skeleton-svelte/src/index.ts
index d82806d00b..e2b463dd17 100644
--- a/packages/skeleton-svelte/src/index.ts
+++ b/packages/skeleton-svelte/src/index.ts
@@ -26,6 +26,7 @@ export { default as TreeView } from './components/TreeView/TreeView.svelte';
// Types
export type { FileUploadApi } from './components/FileUpload/types.js';
+export type { CollectionNode, TreeViewCollection } from './components/TreeView/types.js';
// Temporary Features ---
// The following will be removed or replaced in the future.
diff --git a/playgrounds/skeleton-svelte/src/routes/components/tree-view/+page.svelte b/playgrounds/skeleton-svelte/src/routes/components/tree-view/+page.svelte
index 0168793742..8e4e7a769d 100644
--- a/playgrounds/skeleton-svelte/src/routes/components/tree-view/+page.svelte
+++ b/playgrounds/skeleton-svelte/src/routes/components/tree-view/+page.svelte
@@ -1,11 +1,11 @@
-
+
+
+ {#snippet content({ node: nodeData, nodeProps })}
+
+ {JSON.stringify(nodeProps, undefined, 2)}
+
+
+
+
+
+
+
+
+ {@render children()}
+
+
+
+ {/snippet}
+
diff --git a/packages/skeleton-svelte/src/components/TreeView/TreeItem.svelte b/packages/skeleton-svelte/src/components/TreeView/TreeItem.svelte
new file mode 100644
index 0000000000..ae31b8b938
--- /dev/null
+++ b/packages/skeleton-svelte/src/components/TreeView/TreeItem.svelte
@@ -0,0 +1,36 @@
+
+
+
+ {#snippet content({ node: nodeData, nodeProps })}
+
+ {/snippet}
+
diff --git a/packages/skeleton-svelte/src/components/TreeView/TreeNode.svelte b/packages/skeleton-svelte/src/components/TreeView/TreeNode.svelte
new file mode 100644
index 0000000000..d3909aa1e6
--- /dev/null
+++ b/packages/skeleton-svelte/src/components/TreeView/TreeNode.svelte
@@ -0,0 +1,157 @@
+
+
+{#if isRegistered}
+ {@render content({ node: nodeData, nodeProps })}
+{/if}
diff --git a/packages/skeleton-svelte/src/components/TreeView/TreeView.svelte b/packages/skeleton-svelte/src/components/TreeView/TreeView.svelte
index 1497efb7e8..22f59781d6 100644
--- a/packages/skeleton-svelte/src/components/TreeView/TreeView.svelte
+++ b/packages/skeleton-svelte/src/components/TreeView/TreeView.svelte
@@ -1,8 +1,15 @@
+{JSON.stringify(Array.from(nodes.values()), undefined, 2)}
+{JSON.stringify(api.expandedValue)}
+
+ {#if label}
+
+ {@render label()}
+
+ {/if}
+
- {#if treeCollection.rootNode.children}
- {#each treeCollection.rootNode.children as node, index}
- {@render treeNode({ node, indexPath: [index] })}
- {/each}
+ {#if children}
+ {@render children()}
{/if}
-
-{#snippet treeNode(nodeProps: tree.NodeProps)}
- {#if api.getNodeState(nodeProps).isBranch}
-
-
-
-
-
-
- {#if api.expandedValue.includes(nodeProps.node.id)}
-
-
-
- {#if nodeProps.node.children}
- {#each nodeProps.node.children as childNode, index}
- {@render treeNode({ node: childNode, indexPath: [...nodeProps.indexPath, index] })}
- {/each}
- {/if}
-
-
- {/if}
-
- {:else}
-
- {/if}
-{/snippet}
-
{#snippet chevron()}