diff --git a/.changeset/neat-bushes-thank.md b/.changeset/neat-bushes-thank.md new file mode 100644 index 0000000000..cc012391b5 --- /dev/null +++ b/.changeset/neat-bushes-thank.md @@ -0,0 +1,8 @@ +--- +"@skeletonlabs/skeleton-svelte": minor +"@skeletonlabs/skeleton-react": minor +"@skeletonlabs/skeleton": patch +--- + +feat: add new `TreeView` component. + \ No newline at end of file diff --git a/packages/skeleton-react/vitest.setup.js b/packages/skeleton-react/vitest.setup.js index d4370b46b6..ccfe1a30c3 100644 --- a/packages/skeleton-react/vitest.setup.js +++ b/packages/skeleton-react/vitest.setup.js @@ -6,3 +6,12 @@ import '@testing-library/user-event'; afterEach(() => { cleanup(); }); + +// NOTE: used for the component. +// https://stackoverflow.com/questions/64558062/how-to-mock-resizeobserver-to-work-in-unit-tests-using-react-testing-library +/* eslint-disable no-undef */ +global.ResizeObserver = class MockedResizeObserver { + observe = vi.fn(); + unobserve = vi.fn(); + disconnect = vi.fn(); +}; 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/TreeBranch.svelte b/packages/skeleton-svelte/src/components/TreeView/TreeBranch.svelte new file mode 100644 index 0000000000..f664b0d83c --- /dev/null +++ b/packages/skeleton-svelte/src/components/TreeView/TreeBranch.svelte @@ -0,0 +1,61 @@ + + + + + + {#snippet content({ node: nodeData, nodeProps })} + +
+ + + + +
+ +
+ +
+ {@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..01d9fb7931 --- /dev/null +++ b/packages/skeleton-svelte/src/components/TreeView/TreeItem.svelte @@ -0,0 +1,36 @@ + + + + + + {#snippet content({ node, nodeProps })} + {#if node != null} + + + {/if} + {/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..561d353a4b --- /dev/null +++ b/packages/skeleton-svelte/src/components/TreeView/TreeNode.svelte @@ -0,0 +1,103 @@ + + +{#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 new file mode 100644 index 0000000000..d3ae62f3ce --- /dev/null +++ b/packages/skeleton-svelte/src/components/TreeView/TreeView.svelte @@ -0,0 +1,208 @@ + + + + + +
+ {#if label} +

+ {@render label()} +

+ {/if} + +
+ {#if children} + {@render children()} + {/if} +
+
+ +{#snippet chevron()} + + + +{/snippet} diff --git a/packages/skeleton-svelte/src/components/TreeView/TreeView.test.svelte b/packages/skeleton-svelte/src/components/TreeView/TreeView.test.svelte new file mode 100644 index 0000000000..7ee5187a83 --- /dev/null +++ b/packages/skeleton-svelte/src/components/TreeView/TreeView.test.svelte @@ -0,0 +1,12 @@ + + + + + + + diff --git a/packages/skeleton-svelte/src/components/TreeView/TreeView.test.ts b/packages/skeleton-svelte/src/components/TreeView/TreeView.test.ts new file mode 100644 index 0000000000..28429b7754 --- /dev/null +++ b/packages/skeleton-svelte/src/components/TreeView/TreeView.test.ts @@ -0,0 +1,87 @@ +import { describe, expect, it } from 'vitest'; +import { render, screen } from '@testing-library/svelte'; +import TreeViewTest from './TreeView.test.svelte'; +import { mockSnippet } from '../../internal/test-utils.js'; + +describe('TreeView (template-driven)', () => { + const testIds = { + root: 'tree', + branch: 'tree-branch', + indicator: 'tree-indicator', + branchIcon: 'tree-branch-icon', + itemIcon: 'tree-item-icon', + branchText: 'tree-branch-text', + itemText: 'tree-item-text', + control: 'tree-control', + content: 'tree-content', + item: 'tree-item' + } as const; + + it('Renders the component', () => { + render(TreeViewTest); + const component = screen.getByTestId(testIds.root); + expect(component).toBeInTheDocument(); + }); + + it('should render with the branchIndicator snippet', () => { + const testValue = 'testIndicator'; + render(TreeViewTest, { branchIndicator: mockSnippet(testValue) }); + const input = screen.getByTestId(testIds.indicator); + expect(input).toHaveTextContent(testValue); + }); + + it('should render with the branchIcon snippet', () => { + const testValue = 'testIcon'; + render(TreeViewTest, { branchIcon: mockSnippet(testValue) }); + const input = screen.getByTestId(testIds.branchIcon); + expect(input).toHaveTextContent(testValue); + }); + + it('should render with the value/text of a branch', () => { + const valueToTest = 'node_modules'; + render(TreeViewTest); + const input = screen.getByTestId(testIds.branchText); + expect(input).toHaveTextContent(valueToTest); + }); + + it('should render expanded with the itemIcon snippet', () => { + const testValue = 'testIcon'; + render(TreeViewTest, { defaultExpandedValue: ['LEVEL_1'], itemIcon: mockSnippet(testValue) }); + const input = screen.getByTestId(testIds.itemIcon); + expect(input).toHaveTextContent(testValue); + }); + + it('should render expanded with the value/text of an item', () => { + const valueToTest = 'zag-js'; + render(TreeViewTest, { defaultExpandedValue: ['LEVEL_1'] }); + const input = screen.getByTestId(testIds.itemText); + expect(input).toHaveTextContent(valueToTest); + }); + + const propMap = [ + { testId: testIds.root, props: ['base', 'background', 'spaceY', 'border', 'padding', 'shadow', 'classes'] }, + { + testId: testIds.control, + props: ['controlBase', 'controlBackground', 'controlSpaceY', 'controlBorder', 'controlPadding', 'controlShadow', 'controlClasses'] + }, + { + testId: testIds.content, + props: ['contentBase', 'contentBackground', 'contentSpaceY', 'contentBorder', 'contentPadding', 'contentShadow', 'contentClasses'] + }, + { + testId: testIds.item, + props: ['itemBase', 'itemBackground', 'itemSpaceY', 'itemBorder', 'itemPadding', 'itemShadow', 'itemClasses'] + } + ]; + + for (const item of propMap) { + for (const prop of item.props) { + it(`Correctly applies the ${prop} prop`, () => { + const value = 'bg-green-500'; + render(TreeViewTest, { defaultExpandedValue: ['LEVEL_1'], [prop]: value }); + const component = screen.getByTestId(item.testId); + expect(component).toHaveClass(value); + }); + } + } +}); 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..623858304b --- /dev/null +++ b/packages/skeleton-svelte/src/components/TreeView/context.ts @@ -0,0 +1,12 @@ +// import * as tree from '@zag-js/tree-view'; +import { createContext } from '../../internal/create-context.js'; +import type { NodeContext, TreeViewContext } from './types.js'; + +// const throwOnDefault = (): never => { +// throw new Error('This default value should never be used.'); +// }; + +// @ts-expect-error default value requirement is annoying +export const [setTreeContext, getTreeContext] = createContext({}); + +export const [setNodeContext, getNodeContext] = createContext(undefined); 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..091748a8e7 --- /dev/null +++ b/packages/skeleton-svelte/src/components/TreeView/index.ts @@ -0,0 +1,5 @@ +import TreeView from './TreeView.svelte'; +import Branch from './TreeBranch.svelte'; +import Item from './TreeItem.svelte'; + +export default /* @__PURE__ */ Object.assign(TreeView, { Branch, Item }); 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..72cf1a1478 --- /dev/null +++ b/packages/skeleton-svelte/src/components/TreeView/types.ts @@ -0,0 +1,173 @@ +import type { PropTypes } from '@zag-js/svelte'; +import type { NodeProps } from '@zag-js/tree-view'; +import * as tree from '@zag-js/tree-view'; +import type { Snippet } from 'svelte'; +import type { SlideParams } from 'svelte/transition'; + +// Components --- + +export type TreeViewApi = tree.Api; + +export interface TreeViewProps extends Omit { + /** The animation configuration. */ + animationConfig?: SlideParams; + + // View --- + /** Set base styles. */ + base?: string; + /** Set background styles. */ + background?: 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; + + // Content --- + /** Set content styles. */ + contentBase?: string; + /** Set content background styles. */ + contentBackground?: 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. */ + controlBackground?: 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. */ + itemBackground?: 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. */ + indicatorRotationClass?: string; + /** Set indicator transitions. */ + indicatorTransition?: string; + + // Label --- + /** Set label snippet's styles. */ + labelBase?: string; + /** Set label snippet's background styles. */ + labelBackground?: 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. */ + branchIndicator?: Snippet; + + children?: Snippet; + label?: Snippet; + + // Zag --- + /** Binds the Zag API for external use. */ + onApiReady?: (api: TreeViewApi) => void; +} + +export interface TreeBranchProps { + id: string; + value: string; + disabled?: boolean; + children: Snippet; +} + +export interface TreeItemProps { + id: string; + value: string; + disabled?: boolean; + children?: Snippet; +} + +export interface TreeNodeProps { + id: string; + value: string; + disabled?: boolean; + content: Snippet<[{ node: CollectionNode; nodeProps: NodeProps }]>; +} + +export interface CollectionNode { + id: string; + value: string; + indexPath: number[]; + children?: CollectionNode[]; +} + +export interface NodeSnippets { + control?: Snippet; + content?: Snippet; + item?: Snippet; +} + +export type SnippetTypes = 'item' | 'control' | 'content'; + +export interface TreeViewContext extends TreeViewProps { + api: ReturnType> | undefined; + animationConfig?: SlideParams; + registerNode: (node: CollectionNode) => number[]; + unregisterNode: (nodeId: string) => void; + updateNode: (node: CollectionNode) => void; +} + +export interface NodeContext { + node: CollectionNode; + registerChild: (child: CollectionNode) => number[]; + unregisterChild: (childId: string) => void; + updateChild: (child: CollectionNode) => void; +} diff --git a/packages/skeleton-svelte/src/index.ts b/packages/skeleton-svelte/src/index.ts index 8cb5ef1467..9b8ccbe1cc 100644 --- a/packages/skeleton-svelte/src/index.ts +++ b/packages/skeleton-svelte/src/index.ts @@ -22,9 +22,11 @@ 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'; +export type { CollectionNode, TreeViewApi } from './components/TreeView/types.js'; // Temporary Features --- // The following will be removed or replaced in the future. diff --git a/packages/skeleton/src/base/theme.scss b/packages/skeleton/src/base/theme.scss index cfd5087682..80c86c4497 100644 --- a/packages/skeleton/src/base/theme.scss +++ b/packages/skeleton/src/base/theme.scss @@ -43,6 +43,20 @@ --anchor-text-decoration-active: inherit; --anchor-text-decoration-focus: inherit; + /* Indentation --- */ + + --indent-width-none: 0rem; + --indent-width-xs: 0.6rem; + --indent-width-md: 1.2rem; + --indent-width-lg: 2.4rem; + --indent-width-xl: 4.8rem; + --indent-width-2xl: 9.6rem; + + /* Rotation --- */ + + --rotation-90: 90deg; + --rotation-180: 180deg; + /* Radius --- */ --radius-base: 0.25rem; diff --git a/packages/skeleton/src/utilities/index.css b/packages/skeleton/src/utilities/index.css index 31b045a374..a33c3c4e76 100644 --- a/packages/skeleton/src/utilities/index.css +++ b/packages/skeleton/src/utilities/index.css @@ -8,6 +8,7 @@ @import './placeholders.css'; @import './tables.css'; @import './typography.css'; +@import './tree-view.css'; /* Forms */ @import './form-core.css'; diff --git a/packages/skeleton/src/utilities/tree-view.css b/packages/skeleton/src/utilities/tree-view.css new file mode 100644 index 0000000000..30d0ae50b4 --- /dev/null +++ b/packages/skeleton/src/utilities/tree-view.css @@ -0,0 +1,25 @@ +/* Component: TreeView */ + +@utility indent-guide { + width: var(--indent-width-md); +} + +@utility indent-guide-* { + width: --value(--indent-width- *, [ *]); +} + +@utility branch-indicator-rotation { + transform-box: fill-box; + transform-origin: center; + &[data-state='open'] { + transform: rotate(var(--rotation-90)); + } +} + +@utility branch-indicator-rotation-* { + transform-box: fill-box; + transform-origin: center; + &[data-state='open'] { + transform: rotate(--value(--rotation- *, [angle])); + } +} 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..3d5acc91a4 --- /dev/null +++ b/playgrounds/skeleton-svelte/src/routes/components/tree-view/+page.svelte @@ -0,0 +1,69 @@ + + +
+
+

Tree View

+
+ + +
+
+ (api = treeViewApi)}> + {#snippet branchIcon()} + + {/snippet} + {#snippet itemIcon()} + + {/snippet} + + + + + + + + + +
+
+
+

Selected values:

+
{JSON.stringify(api?.selectedValue, null, 2)}
+
+
+

Expanded values:

+
{JSON.stringify(api?.expandedValue, null, 2)}
+
+
+

Collection:

+
{JSON.stringify(collection, null, 2)}
+
+
+
+
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 89893071ea..9d89f583ec 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,59 +7,62 @@ settings: catalogs: default: '@zag-js/accordion': - specifier: ^1.7.0 - version: 1.7.0 + specifier: ^1.18.2 + version: 1.18.2 '@zag-js/avatar': - specifier: ^1.7.0 - version: 1.7.0 + specifier: ^1.18.2 + version: 1.18.2 '@zag-js/combobox': - specifier: ^1.7.0 - version: 1.7.0 + specifier: ^1.18.2 + version: 1.18.2 '@zag-js/dialog': - specifier: ^1.7.0 - version: 1.7.0 + specifier: ^1.18.2 + version: 1.18.2 '@zag-js/file-upload': - specifier: ^1.7.0 - version: 1.7.0 + specifier: ^1.18.2 + version: 1.18.2 '@zag-js/pagination': - specifier: ^1.7.0 - version: 1.7.0 + specifier: ^1.18.2 + version: 1.18.2 '@zag-js/popover': - specifier: ^1.7.0 - version: 1.7.0 + specifier: ^1.18.2 + version: 1.18.2 '@zag-js/progress': - specifier: ^1.7.0 - version: 1.7.0 + specifier: ^1.18.2 + version: 1.18.2 '@zag-js/radio-group': - specifier: ^1.7.0 - version: 1.7.0 + specifier: ^1.18.2 + version: 1.18.2 '@zag-js/rating-group': - specifier: ^1.7.0 - version: 1.7.0 + specifier: ^1.18.2 + version: 1.18.2 '@zag-js/react': - specifier: ^1.7.0 - version: 1.7.0 + specifier: ^1.18.2 + version: 1.18.2 '@zag-js/slider': - specifier: ^1.7.0 - version: 1.7.0 + specifier: ^1.18.2 + version: 1.18.2 '@zag-js/svelte': - specifier: ^1.7.0 - version: 1.7.0 + specifier: ^1.18.2 + version: 1.18.2 '@zag-js/switch': - specifier: ^1.7.0 - version: 1.7.0 + specifier: ^1.18.2 + version: 1.18.2 '@zag-js/tabs': - specifier: ^1.7.0 - version: 1.7.0 + specifier: ^1.18.2 + version: 1.18.2 '@zag-js/tags-input': - specifier: ^1.7.0 - version: 1.7.0 + specifier: ^1.18.2 + version: 1.18.2 '@zag-js/toast': - specifier: ^1.7.0 - version: 1.7.0 + specifier: ^1.18.2 + version: 1.18.2 '@zag-js/tooltip': - specifier: ^1.7.0 - version: 1.7.0 + specifier: ^1.18.2 + version: 1.18.2 + '@zag-js/tree-view': + specifier: ^1.18.2 + version: 1.18.2 svelte: specifier: ^5.25.3 version: 5.25.3 @@ -241,43 +244,43 @@ importers: dependencies: '@zag-js/accordion': specifier: 'catalog:' - version: 1.7.0 + version: 1.18.2 '@zag-js/avatar': specifier: 'catalog:' - version: 1.7.0 + version: 1.18.2 '@zag-js/file-upload': specifier: 'catalog:' - version: 1.7.0 + version: 1.18.2 '@zag-js/pagination': specifier: 'catalog:' - version: 1.7.0 + version: 1.18.2 '@zag-js/progress': specifier: 'catalog:' - version: 1.7.0 + version: 1.18.2 '@zag-js/radio-group': specifier: 'catalog:' - version: 1.7.0 + version: 1.18.2 '@zag-js/rating-group': specifier: 'catalog:' - version: 1.7.0 + version: 1.18.2 '@zag-js/react': specifier: 'catalog:' - version: 1.7.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 1.18.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@zag-js/slider': specifier: 'catalog:' - version: 1.7.0 + version: 1.18.2 '@zag-js/switch': specifier: 'catalog:' - version: 1.7.0 + version: 1.18.2 '@zag-js/tabs': specifier: 'catalog:' - version: 1.7.0 + version: 1.18.2 '@zag-js/tags-input': specifier: 'catalog:' - version: 1.7.0 + version: 1.18.2 '@zag-js/toast': specifier: 'catalog:' - version: 1.7.0 + version: 1.18.2 devDependencies: '@testing-library/jest-dom': specifier: ^6.6.3 @@ -320,55 +323,58 @@ importers: dependencies: '@zag-js/accordion': specifier: 'catalog:' - version: 1.7.0 + version: 1.18.2 '@zag-js/avatar': specifier: 'catalog:' - version: 1.7.0 + version: 1.18.2 '@zag-js/combobox': specifier: 'catalog:' - version: 1.7.0 + version: 1.18.2 '@zag-js/dialog': specifier: 'catalog:' - version: 1.7.0 + version: 1.18.2 '@zag-js/file-upload': specifier: 'catalog:' - version: 1.7.0 + version: 1.18.2 '@zag-js/pagination': specifier: 'catalog:' - version: 1.7.0 + version: 1.18.2 '@zag-js/popover': specifier: 'catalog:' - version: 1.7.0 + version: 1.18.2 '@zag-js/progress': specifier: 'catalog:' - version: 1.7.0 + version: 1.18.2 '@zag-js/radio-group': specifier: 'catalog:' - version: 1.7.0 + version: 1.18.2 '@zag-js/rating-group': specifier: 'catalog:' - version: 1.7.0 + version: 1.18.2 '@zag-js/slider': specifier: 'catalog:' - version: 1.7.0 + version: 1.18.2 '@zag-js/svelte': specifier: 'catalog:' - version: 1.7.0(svelte@5.25.3) + version: 1.18.2(svelte@5.25.3) '@zag-js/switch': specifier: 'catalog:' - version: 1.7.0 + version: 1.18.2 '@zag-js/tabs': specifier: 'catalog:' - version: 1.7.0 + version: 1.18.2 '@zag-js/tags-input': specifier: 'catalog:' - version: 1.7.0 + version: 1.18.2 '@zag-js/toast': specifier: 'catalog:' - version: 1.7.0 + version: 1.18.2 '@zag-js/tooltip': specifier: 'catalog:' - version: 1.7.0 + version: 1.18.2 + '@zag-js/tree-view': + specifier: 'catalog:' + version: 1.18.2 devDependencies: '@skeletonlabs/skeleton': specifier: workspace:* @@ -1372,9 +1378,15 @@ packages: '@floating-ui/core@1.6.9': resolution: {integrity: sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==} + '@floating-ui/core@1.7.2': + resolution: {integrity: sha512-wNB5ooIKHQc+Kui96jE/n69rHFWAVoxn5CAzL1Xdd8FG03cgY3MLO+GF9U3W737fYDSgPWA6MReKhBQBop6Pcw==} + '@floating-ui/dom@1.6.13': resolution: {integrity: sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==} + '@floating-ui/dom@1.7.2': + resolution: {integrity: sha512-7cfaOQuCS27HD7DX+6ib2OrnW+b4ZBwDNnCcT0uTyidcmyWb03FnQqJybDBoCnpdxwBSfA94UAYlRCt7mV+TbA==} + '@floating-ui/react-dom@2.1.2': resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==} peerDependencies: @@ -1387,6 +1399,9 @@ packages: react: '>=17.0.0' react-dom: '>=17.0.0' + '@floating-ui/utils@0.2.10': + resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} + '@floating-ui/utils@0.2.9': resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==} @@ -2395,124 +2410,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/accordion@1.18.2': + resolution: {integrity: sha512-d9hCE7ECTPk1YrEq/6DwedArWUkSFzB/av9ocensXs2QTq9tr/FOEIWpkG+2YnIAwm9HneXV5R+9APRPqMS7ug==} - '@zag-js/anatomy@1.7.0': - resolution: {integrity: sha512-fkRgH6vPCwykmRdV38uAJeTtJc8tayAnURfoovHAtB9bK0goagPbpdcYTNyGn8msul0h+KBloOtnw4obvX0nPw==} + '@zag-js/anatomy@1.18.2': + resolution: {integrity: sha512-GxwOUfSDrnwU4oROohKBy0TRKPlYjD0dhuFHo52ZJLSPDkr8H8DlE/y3rFlb6BaGVO/bHjCUeJlaZzZgIpFK0g==} - '@zag-js/aria-hidden@1.7.0': - resolution: {integrity: sha512-YNbACFZoqw/1JymxCZXtuAFdeYZm7sK3E0jv3bPbqytPj7TziLa1dRDWDdx8cPcu0B4n4WrBMBSCGUjj/nWDCA==} + '@zag-js/aria-hidden@1.18.2': + resolution: {integrity: sha512-v4t2IQ92Sbj6DIYNGZH91sF6pmtOxbN1oRJFSdCFzRdq4hVdhSc/2qzCiyehqhVlzYlGsnDsHxTYhYd6ohNfLg==} - '@zag-js/auto-resize@1.7.0': - resolution: {integrity: sha512-ifWflzZc1fNJ+XUZaYpB220AiAr4l3Eczq8ELwj/ugg7T/10Wo0FkxTCVmCZfIiCMoqHuh/2oTX3PCTIwg6uxg==} + '@zag-js/auto-resize@1.18.2': + resolution: {integrity: sha512-0q6MponcybbcMVVPg1uFoTadvL1Zk3yYvsgC20Jm0sg98MdhwELnX3rpePYrPyxYZD1Z6OdOc4ZEdV4drTsosw==} - '@zag-js/avatar@1.7.0': - resolution: {integrity: sha512-vzMCMpYIM2BIvPvK34VaRMUsUSpg3jwoxCzA31k+QrCmjm3ti8pLoT4waE01XHiaQwNPcTFbMWUi/nIQQKG14A==} + '@zag-js/avatar@1.18.2': + resolution: {integrity: sha512-CADyLk6T436zRrZcfRBuqX5tcjzBZuDq1PYhHGY2+3buPvZVb77Zc2S/fE5oD89Wv89H7FBi6gs5JKPs+FTrxA==} - '@zag-js/collection@1.7.0': - resolution: {integrity: sha512-gH7I03ag2niEhCVgNpXBYybnIROGXmAkX+5e1rYQ60mOh2oQnK+5k9k3DRkca5rAKbu4uT6JjYFwnY9sA/NZfA==} + '@zag-js/collection@1.18.2': + resolution: {integrity: sha512-pisHJekdEt8yqoERphjCT7hE1CxVjx6RwFyADPbAhJYDDReS6NEQMN4QKz3UPSc1gCKDE2hYYGyb1t8MmZKT9Q==} - '@zag-js/combobox@1.7.0': - resolution: {integrity: sha512-kaMvGoBZwiFC9KaUbHXNFkneg7grZmJlteVxk6kJXYd7JGDHhhYsFznPNIC0apvBCIEqwyBGVB/lCjK+BseZtw==} + '@zag-js/combobox@1.18.2': + resolution: {integrity: sha512-Wb7gK3G5qr37H1llTXPE2+fYmEIotar/nNHwOUoaa22zcfhaVCiPxwQkgFSCyy6xR6KoBt81r8S/VVKD/wmIUw==} - '@zag-js/core@1.7.0': - resolution: {integrity: sha512-FyK1POPqgBp7DBpUIwvmBQH16+L52NaTaQJzg8iTI9mI/4m3AxZ5aN+8a8qzwGIkVI6rlDcrBkmuOcHDVIOEGA==} + '@zag-js/core@1.18.2': + resolution: {integrity: sha512-feKLPL8OMJIegwiGwQwoKI4iB9vA/Gf4d5IOZ+KH0X/5S4lCJ3dswmki+Jtu2Ce2PiyYc7oClvG3CM5mfywtfQ==} - '@zag-js/dialog@1.7.0': - resolution: {integrity: sha512-gx/CtKsPg/Y+2d+HtP3tjEdl7KM+x6lUDttjDDBn9rvXFs2REW69AlcJtRzs6B22CxDPmxssGPr1oi3zaU1AUA==} + '@zag-js/dialog@1.18.2': + resolution: {integrity: sha512-9epQZDGPF5gxS9pqySxKLVf0jYNFMQbBm5Mz8+83ZgPncyzGG6gMpvb3/1I62xHx71RIaSCToYbOuQswDzOB/w==} - '@zag-js/dismissable@1.7.0': - resolution: {integrity: sha512-o6S++e7iaBmizIgsvLt5RwY7gn2OQGeG2etet+oaUAMtNhi/1+uGG+rTZgOMj/MGg9BYpPld5tXfk/RrlShh9Q==} + '@zag-js/dismissable@1.18.2': + resolution: {integrity: sha512-uv4FE62TuxWR/wSdr3wfQ9GRW2EHJYt4/HvhVH+mFno2JVRwm9/rSHDUc6QILabXrDVfnp/PdkPJ1rtsIzoOGA==} - '@zag-js/dom-query@1.7.0': - resolution: {integrity: sha512-cj+mKB7Sj7mqAepHMsbV4bGvDJfUYCt4d4ruYw0dVpDa1Z9N38TtztTznfrm9kuqOYcJkgE0q3Rn/kPLi8rK8g==} + '@zag-js/dom-query@1.18.2': + resolution: {integrity: sha512-/yUfu4u527vL32mDYwoziEWfLLWfIBenwBo/v8JcDVJwrtBw/1OEPFU7lK9iDa7BAKaIBAGhY0pwsiFLT5UxzA==} - '@zag-js/element-rect@1.7.0': - resolution: {integrity: sha512-j0h1+DASUI5urwBCELdjfk4oekLQ0D2v3a1wQJopGh+ITRVAC1gE1YFx3O+vnP2HwqANxG4+RQHwoQBM2bMBCQ==} + '@zag-js/file-upload@1.18.2': + resolution: {integrity: sha512-R1wG9svz0zyhQ2WAZ2Vahk2LSSXi2e3IOOyvelnblsnW4vSbtxtY84nVA1qsvi9WRNq29JqUh13SH66KKYQftQ==} - '@zag-js/element-size@1.7.0': - resolution: {integrity: sha512-Nq+HxG64Ts1QvaJPeDuy8zo/RqcbE95RPNVuHBwuxK3sbXOt7umgIrxQMp8uH+1xeJlp7F8/ydKOPyKOTtgiJg==} + '@zag-js/file-utils@1.18.2': + resolution: {integrity: sha512-7zKji+vCMWB0xinUDNaVUq1AqewaCLMu9hWHbsbqajmd80VeCy7wfwm6i18ETCHmh1iMA4AYQoINjDB7+7TJ7Q==} - '@zag-js/file-upload@1.7.0': - resolution: {integrity: sha512-6yJhUDLYsqbd0YBO70PzMDNVJJv8OdC0ZWrf51GMUSugGfSpvQZNDfpAW5Zkzqd4B5nkJDw5KiTSR5NYQlO7VA==} + '@zag-js/focus-trap@1.18.2': + resolution: {integrity: sha512-sliGYxDEzEUmaEKoALLbGKgj22bj2YvTiDgwGrZ6m2dtCev+P93qcHB6zG2ZkDKKt+frkPmbdgDsJ91zqB326w==} - '@zag-js/file-utils@1.7.0': - resolution: {integrity: sha512-Wb1VoI7UquG1ckJPMFPnmgLg351NI55SXjsEq+CrqgKQCo0httYFLPlkOpp4AbGsoUFZxXRxEXDEVzq5kpPFzQ==} + '@zag-js/focus-visible@1.18.2': + resolution: {integrity: sha512-6l9bW3yLGKpFM250i/ecn86hPiysAHi0JDjs5V47W2cwHnK0VkeNtE4289ko1s70hZ5YFcLQkSS1OOHGPhzPJA==} - '@zag-js/focus-trap@1.7.0': - resolution: {integrity: sha512-JHMZAfiL1aoxMAQGolx+iDMgqOMy067yffaLr1tMX55NGZPfEyXEjgxmPXRPf728/7IOShLkWLX17yacmW/w/Q==} + '@zag-js/i18n-utils@1.18.2': + resolution: {integrity: sha512-Q4pDT2Km4ZHzZ1CufU1K3ZJFctDiPBmAYmuoRrU3QiVsqlDer0siZijRnHKf0VH5cqF6qlstRchA8qNDlzYfQQ==} - '@zag-js/focus-visible@1.7.0': - resolution: {integrity: sha512-ycrO6VetctoA7aaw83rnp3erDmQe2Zsyobzp4fzpMbOBTNWzMklt4Kz54xa1ntkia8CpSWVfoauORLlaZoDiAw==} + '@zag-js/interact-outside@1.18.2': + resolution: {integrity: sha512-X2S3h/+MM5I83EnWihR2eHJYd1xbqfWeCO+Lz05V6+aWmJHpRPrniHGoVKyKocpSqmgQPrUMqY9ONmVuq4EPRA==} - '@zag-js/i18n-utils@1.7.0': - resolution: {integrity: sha512-CcDXxfobG2LlOU1m3xPzV5pXpCe0tSE9u+drtKMz7F/HOZkR3V0rpCCi/zKySPNa3uLC7G8efz1fGQXiOVKONw==} + '@zag-js/live-region@1.18.2': + resolution: {integrity: sha512-V1VCv/f3j3YLzNxYGFzLYFQI7dW94UGryqwb3jAWfmqC8rlndupq44QN8KLn3xI/i/zyUK27Dq9gYGMKFEJwSQ==} - '@zag-js/interact-outside@1.7.0': - resolution: {integrity: sha512-tmsVQmcH2N2X2mG2/8/+WRIo9WbRVvLe1OZa3lzFYV4Mu5i+tNK1CHMESpoAd/RdjJ6AyTR2zYiH05WZe76gMw==} + '@zag-js/pagination@1.18.2': + resolution: {integrity: sha512-iT0GYwMKYfWjAtL/mDIuWp9fib/wJ2OMsdb1reMhpQkm7OHaE9Xij3x4SrvqtCCiNNFpxL7APQe5MBLC9YyXYw==} - '@zag-js/live-region@1.7.0': - resolution: {integrity: sha512-u2bYIAnBIY+GZqfPqxn2ZylOqE2blUVW7Yc2Z4Ey05K4JXSH2gKR3xPmJCS9/u8tcFKQz5L4KQ/98ntgBG2fGQ==} + '@zag-js/popover@1.18.2': + resolution: {integrity: sha512-YB6D4BppP7OZ6zbdV5eeKzYqsDXgGSy5E5V6VdAci01iCH3y5YAlDBqJBujBsn+Q+2vOeelHoXIUhI2bIUjIyw==} - '@zag-js/pagination@1.7.0': - resolution: {integrity: sha512-gIbJe1fIYlQCpXqWssET9CCmMWLvcz8OCCw7W3ASeLYRvUW3IzhkMAht5pEsvJEZ9tIWaab5fZ7OLqcgCTgVQw==} + '@zag-js/popper@1.18.2': + resolution: {integrity: sha512-RAhYpUhDyEjW40787d2FGcPHga8Z6t3vUmNLcoAS5FhIPlZcyPNmUo6PEPndo3Or8ZKrTNFzrU4qOQZ3Jvbf0w==} - '@zag-js/popover@1.7.0': - resolution: {integrity: sha512-Nf9grOVBWlnwQL+AR6X2hAy5bTNQng9xG2Cfo4E8rD2G/CJLKtUGCHHkG8xeQ969HT4urbOrgrZ5UpAhkpNlmw==} + '@zag-js/progress@1.18.2': + resolution: {integrity: sha512-O8CUVbunMutBWuHyuX5LnbI1dpwqJahiRSWecV7Lv3z2zvuMIUFNQ1MhOpNN0UowF+GXIDZR7Iv7Vw+hm1LAjQ==} - '@zag-js/popper@1.7.0': - resolution: {integrity: sha512-1Tr9ZBS2VPeZ/zeAR5uEBYLkWn4VcycbaDDkvWxa44fi6LxknDf064cP+ql9AfUp/eUGD2hN9OSEhyxB/JXjKQ==} + '@zag-js/radio-group@1.18.2': + resolution: {integrity: sha512-GD0gIpFx4NXCUp94/w2/JXpMB/AailsqKRG4FCZoXx6MeBTw05O7/Uhg+TvRSwCvxDRgOCWoRr4n/RirtqCDBA==} - '@zag-js/progress@1.7.0': - resolution: {integrity: sha512-dfjPtUGRZW0pURBalm55ACoN083EJ90cDT1RRRF72JhqlRJu/vSXngjSUFtYuG1WADGS3D7F5XIFMo+PAGynFg==} + '@zag-js/rating-group@1.18.2': + resolution: {integrity: sha512-17ax62srNLXG2X5l3+zWpbKa3TGDdNPJxIX1Zvj7vfNcHR4JJGMUUKLfUVKnrhj7aKWltfETQ9yuPRcEBtjmtA==} - '@zag-js/radio-group@1.7.0': - resolution: {integrity: sha512-9NlI5fTh8ZVX5nXm7nU/ZheQLZpHwrHZeKRjomVQQALEWuMZ5YJtVXZaUT5xsCRTk+LEQVSaKp10+aD/5cIMlA==} - - '@zag-js/rating-group@1.7.0': - resolution: {integrity: sha512-jDr8M+2fXTxB9l8qm8ktA362eM6Xt6FzIz0dKlV1JsYr5KamhsZ70Y8MPB6i3b45FGdDdj02a2aaWGLRUaRnrw==} - - '@zag-js/react@1.7.0': - resolution: {integrity: sha512-phr7WMVJcwfOkiLwtobGWkdzVGdZmVQYvF7w8awloW0j1+YF2OdMYDZK8RauHwmg+sEVmqtGeZPr40hZNnKhVQ==} + '@zag-js/react@1.18.2': + resolution: {integrity: sha512-J7xPcls/Bw2j2U3VArpJDfMHv2DTH3aULCqdl6IDv+ekngWnzqxCXISaSOt4fFEWs7YKhA2XqA7vQEjkyh3YSA==} 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.18.2': + resolution: {integrity: sha512-ML8fvdR8Bok+rc8XjA7aCzLVaGl8qdqvZ7EcOfHNEZR29vZvXWWOs6vg5Gpi6mu1d+gAE1+XUod7oBXgUopQGA==} - '@zag-js/slider@1.7.0': - resolution: {integrity: sha512-0h9ejtOWa4XjxApcCFyGt7By22kd6gG4PdUZgXiKlPCQFgYrxWXZqMlwH6ZtyD4VYUuRPJ05CezDU5KlmZD/3A==} + '@zag-js/slider@1.18.2': + resolution: {integrity: sha512-Mcq/WPMWL84AAGwGM72aQJH3JBW9SFCFcL9fEMlFhDcAMAiewzGYyEDxeHq2mdiIFJuCLUog4gZR3r72HtbTeQ==} - '@zag-js/store@1.7.0': - resolution: {integrity: sha512-3n+AGo3Y3d1+SkEjY/6QPcDU5kfGu4DEA9qMxJgnnOlYT07SEWByMQD2uoEji9M9psHcVvxm86OnF3Y6UuTsuA==} + '@zag-js/store@1.18.2': + resolution: {integrity: sha512-3oqkRjRz7dRb0fqkp6rCvfTiQBEURi79AG46B9XJzdK8ntRI5xHw5kFkGtVXK/OjTaN0WTs5zjBi5LxF+7UYdw==} - '@zag-js/svelte@1.7.0': - resolution: {integrity: sha512-NN9G990gJlqMkW4FMa8tBLEs858MnogWaY5/QPs7skoVnFz5f+3S2kXtyJhyStBbRpZWCnELfbmb5KnMDZ57MQ==} + '@zag-js/svelte@1.18.2': + resolution: {integrity: sha512-8keOrK0z+idW5QURHZVoJzYAhKoyyp5kVgwa3HJ9ptmVrWG67rP9bdBlNRFUNkZ09VoDun6Nc1kfW32lN5CtwA==} peerDependencies: svelte: ^5.0.0-next.1 - '@zag-js/switch@1.7.0': - resolution: {integrity: sha512-sz3whYMAD949fJ5v9DegU43SrpUNKhoPOum4LOpoSrh364ePfm7ShsTIgJnqPrdMknr+17ljLx54tXPS1SsMTw==} + '@zag-js/switch@1.18.2': + resolution: {integrity: sha512-QA/aP+dmhK4N1pZoHA0nCzPnI+IOmBT4TzG66Cb/nMFpJrFMndVSLZznlMySThR+dMnkhDH44pR7v+hyAJh7cA==} - '@zag-js/tabs@1.7.0': - resolution: {integrity: sha512-bAMp7Vhyis5j3BSKs4m0OwsbchRLLzFf6Yaf54CNraAUdKRwLQckznrajQLPI5F+BrHkGzMXvj/lt9jlGiKDcw==} + '@zag-js/tabs@1.18.2': + resolution: {integrity: sha512-ZjJtngFsKHOX+achg8eNo9xeTv7XtNFF/6zoNhfu8uT0C7pBDSL8LmPVAcv4lkSKGRnyVnY14pIio5so4CkLLw==} - '@zag-js/tags-input@1.7.0': - resolution: {integrity: sha512-ME/KwP1yrPHX0bP0EqkHI30IQgrE2cAkREoRluM5ScpG3Uiug98x6+zts0YS9j1OB3pyTl0d4alECBruxN8cPA==} + '@zag-js/tags-input@1.18.2': + resolution: {integrity: sha512-Y8mDNzTOrabQxSgxhTSlNqof60nUDGn7UP1zbvoJHU+G6I7U9ApS3vKllBgdozCMnoLCzsWITI7SaiSFDhYDjQ==} - '@zag-js/toast@1.7.0': - resolution: {integrity: sha512-tvEO1vpC9QZ0oYJOKay2dvcq5lAPn4MT7ahnALs89iVjhWyguXAs5kzoq/Devlbuhi+bUY1YxvtrMDJjYVFhaA==} + '@zag-js/toast@1.18.2': + resolution: {integrity: sha512-ithIftfa18XaGYoPw/q7vhJ3/R32Aq/0dbk7znueVD4bNVqD+XOJ0DoviKufu2WnlK7OpnmddPgxmqcjIIxEEA==} - '@zag-js/tooltip@1.7.0': - resolution: {integrity: sha512-ehZOewcxYZL4+ND5QMeDlQQrckssMTzxcReRCOVFXrRZb5X1jX6+ale9MSG+cJYMpQUqT2J5VtzMJH+GNj/jfw==} + '@zag-js/tooltip@1.18.2': + resolution: {integrity: sha512-VLKJvQvSdvcX0FXC9ZcC9y+ZVlmgzi2oPzN6a8xpT8W06MXg/StLKlawVZHsxIrIfRLL0opu84hiGkhEALHbyQ==} - '@zag-js/types@1.7.0': - resolution: {integrity: sha512-rmPonVc8EBOGIEJYjzWIBQ6LJwUMc3LnipRREECO+n7LNlUQUliCOFbHw1UOGP+4ZkCKmxjGFR3jLtjY8aN4gQ==} + '@zag-js/tree-view@1.18.2': + resolution: {integrity: sha512-ipdZqtG5xGzkTBqxJQjQbSNv8a5wo6MM5qme8Q6juHlJKuP43gOdsGATdiPnAUYIUZdav8T5r45rYtTzonpHMA==} - '@zag-js/utils@1.7.0': - resolution: {integrity: sha512-yIxvH5V27a1WuLgCxHX7qpdtFo8vTJaZLafBpSNfVYG4B8FaxTE+P7JAcpmAzs3UyXura/WfAY2eVWWVBpk9ZA==} + '@zag-js/types@1.18.2': + resolution: {integrity: sha512-iyKwrhRLbMs+y22j8PdqdW7waIo98jbneNI4MmXOVbQUe2AgSfDnapL/JuO58hJ7vshdYrmkcoMzehwNSkYKXw==} + + '@zag-js/utils@1.18.2': + resolution: {integrity: sha512-tGrG2Qnm5qf95VJEBHunrEDHO0OJZGU81FoZU2VNC+YkRmD4C1phcvyxVLklDFT569rNxIHmFn/6gr9D7HmPrQ==} abbrev@3.0.0: resolution: {integrity: sha512-+/kfrslGQ7TNV2ecmQwMJj/B65g5KVq1/L3SGVZ3tCYGqlzFuFCGBZJtMP99wH3NpEUyAjn0zPdPUg0D+DwrOA==} @@ -7195,11 +7207,20 @@ snapshots: dependencies: '@floating-ui/utils': 0.2.9 + '@floating-ui/core@1.7.2': + dependencies: + '@floating-ui/utils': 0.2.10 + '@floating-ui/dom@1.6.13': dependencies: '@floating-ui/core': 1.6.9 '@floating-ui/utils': 0.2.9 + '@floating-ui/dom@1.7.2': + dependencies: + '@floating-ui/core': 1.7.2 + '@floating-ui/utils': 0.2.10 + '@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 @@ -7214,6 +7235,8 @@ snapshots: react-dom: 19.1.0(react@19.1.0) tabbable: 6.2.0 + '@floating-ui/utils@0.2.10': {} + '@floating-ui/utils@0.2.9': {} '@humanfs/core@0.19.1': {} @@ -8335,250 +8358,252 @@ snapshots: '@vscode/l10n@0.0.18': {} - '@zag-js/accordion@1.7.0': + '@zag-js/accordion@1.18.2': 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.18.2 + '@zag-js/core': 1.18.2 + '@zag-js/dom-query': 1.18.2 + '@zag-js/types': 1.18.2 + '@zag-js/utils': 1.18.2 - '@zag-js/anatomy@1.7.0': {} + '@zag-js/anatomy@1.18.2': {} - '@zag-js/aria-hidden@1.7.0': {} + '@zag-js/aria-hidden@1.18.2': {} - '@zag-js/auto-resize@1.7.0': + '@zag-js/auto-resize@1.18.2': dependencies: - '@zag-js/dom-query': 1.7.0 + '@zag-js/dom-query': 1.18.2 - '@zag-js/avatar@1.7.0': + '@zag-js/avatar@1.18.2': 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.18.2 + '@zag-js/core': 1.18.2 + '@zag-js/dom-query': 1.18.2 + '@zag-js/types': 1.18.2 + '@zag-js/utils': 1.18.2 - '@zag-js/collection@1.7.0': + '@zag-js/collection@1.18.2': dependencies: - '@zag-js/utils': 1.7.0 + '@zag-js/utils': 1.18.2 - '@zag-js/combobox@1.7.0': + '@zag-js/combobox@1.18.2': 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/anatomy': 1.18.2 + '@zag-js/aria-hidden': 1.18.2 + '@zag-js/collection': 1.18.2 + '@zag-js/core': 1.18.2 + '@zag-js/dismissable': 1.18.2 + '@zag-js/dom-query': 1.18.2 + '@zag-js/popper': 1.18.2 + '@zag-js/types': 1.18.2 + '@zag-js/utils': 1.18.2 - '@zag-js/core@1.7.0': + '@zag-js/core@1.18.2': dependencies: - '@zag-js/dom-query': 1.7.0 - '@zag-js/utils': 1.7.0 + '@zag-js/dom-query': 1.18.2 + '@zag-js/utils': 1.18.2 - '@zag-js/dialog@1.7.0': + '@zag-js/dialog@1.18.2': 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/anatomy': 1.18.2 + '@zag-js/aria-hidden': 1.18.2 + '@zag-js/core': 1.18.2 + '@zag-js/dismissable': 1.18.2 + '@zag-js/dom-query': 1.18.2 + '@zag-js/focus-trap': 1.18.2 + '@zag-js/remove-scroll': 1.18.2 + '@zag-js/types': 1.18.2 + '@zag-js/utils': 1.18.2 - '@zag-js/dismissable@1.7.0': + '@zag-js/dismissable@1.18.2': dependencies: - '@zag-js/dom-query': 1.7.0 - '@zag-js/interact-outside': 1.7.0 - '@zag-js/utils': 1.7.0 + '@zag-js/dom-query': 1.18.2 + '@zag-js/interact-outside': 1.18.2 + '@zag-js/utils': 1.18.2 - '@zag-js/dom-query@1.7.0': + '@zag-js/dom-query@1.18.2': dependencies: - '@zag-js/types': 1.7.0 + '@zag-js/types': 1.18.2 - '@zag-js/element-rect@1.7.0': {} - - '@zag-js/element-size@1.7.0': {} - - '@zag-js/file-upload@1.7.0': + '@zag-js/file-upload@1.18.2': 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/anatomy': 1.18.2 + '@zag-js/core': 1.18.2 + '@zag-js/dom-query': 1.18.2 + '@zag-js/file-utils': 1.18.2 + '@zag-js/i18n-utils': 1.18.2 + '@zag-js/types': 1.18.2 + '@zag-js/utils': 1.18.2 - '@zag-js/file-utils@1.7.0': + '@zag-js/file-utils@1.18.2': dependencies: - '@zag-js/i18n-utils': 1.7.0 + '@zag-js/i18n-utils': 1.18.2 - '@zag-js/focus-trap@1.7.0': + '@zag-js/focus-trap@1.18.2': dependencies: - '@zag-js/dom-query': 1.7.0 + '@zag-js/dom-query': 1.18.2 - '@zag-js/focus-visible@1.7.0': + '@zag-js/focus-visible@1.18.2': dependencies: - '@zag-js/dom-query': 1.7.0 + '@zag-js/dom-query': 1.18.2 - '@zag-js/i18n-utils@1.7.0': + '@zag-js/i18n-utils@1.18.2': dependencies: - '@zag-js/dom-query': 1.7.0 + '@zag-js/dom-query': 1.18.2 - '@zag-js/interact-outside@1.7.0': + '@zag-js/interact-outside@1.18.2': dependencies: - '@zag-js/dom-query': 1.7.0 - '@zag-js/utils': 1.7.0 + '@zag-js/dom-query': 1.18.2 + '@zag-js/utils': 1.18.2 - '@zag-js/live-region@1.7.0': {} + '@zag-js/live-region@1.18.2': {} - '@zag-js/pagination@1.7.0': + '@zag-js/pagination@1.18.2': 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.18.2 + '@zag-js/core': 1.18.2 + '@zag-js/dom-query': 1.18.2 + '@zag-js/types': 1.18.2 + '@zag-js/utils': 1.18.2 - '@zag-js/popover@1.7.0': + '@zag-js/popover@1.18.2': 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.18.2 + '@zag-js/aria-hidden': 1.18.2 + '@zag-js/core': 1.18.2 + '@zag-js/dismissable': 1.18.2 + '@zag-js/dom-query': 1.18.2 + '@zag-js/focus-trap': 1.18.2 + '@zag-js/popper': 1.18.2 + '@zag-js/remove-scroll': 1.18.2 + '@zag-js/types': 1.18.2 + '@zag-js/utils': 1.18.2 - '@zag-js/popper@1.7.0': + '@zag-js/popper@1.18.2': dependencies: - '@floating-ui/dom': 1.6.13 - '@zag-js/dom-query': 1.7.0 - '@zag-js/utils': 1.7.0 + '@floating-ui/dom': 1.7.2 + '@zag-js/dom-query': 1.18.2 + '@zag-js/utils': 1.18.2 - '@zag-js/progress@1.7.0': + '@zag-js/progress@1.18.2': 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.18.2 + '@zag-js/core': 1.18.2 + '@zag-js/dom-query': 1.18.2 + '@zag-js/types': 1.18.2 + '@zag-js/utils': 1.18.2 - '@zag-js/radio-group@1.7.0': + '@zag-js/radio-group@1.18.2': 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/anatomy': 1.18.2 + '@zag-js/core': 1.18.2 + '@zag-js/dom-query': 1.18.2 + '@zag-js/focus-visible': 1.18.2 + '@zag-js/types': 1.18.2 + '@zag-js/utils': 1.18.2 - '@zag-js/rating-group@1.7.0': + '@zag-js/rating-group@1.18.2': 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.18.2 + '@zag-js/core': 1.18.2 + '@zag-js/dom-query': 1.18.2 + '@zag-js/types': 1.18.2 + '@zag-js/utils': 1.18.2 - '@zag-js/react@1.7.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@zag-js/react@1.18.2(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.18.2 + '@zag-js/store': 1.18.2 + '@zag-js/types': 1.18.2 + '@zag-js/utils': 1.18.2 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.18.2': dependencies: - '@zag-js/dom-query': 1.7.0 + '@zag-js/dom-query': 1.18.2 - '@zag-js/slider@1.7.0': + '@zag-js/slider@1.18.2': 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.18.2 + '@zag-js/core': 1.18.2 + '@zag-js/dom-query': 1.18.2 + '@zag-js/types': 1.18.2 + '@zag-js/utils': 1.18.2 - '@zag-js/store@1.7.0': + '@zag-js/store@1.18.2': dependencies: proxy-compare: 3.0.1 - '@zag-js/svelte@1.7.0(svelte@5.25.3)': + '@zag-js/svelte@1.18.2(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.18.2 + '@zag-js/types': 1.18.2 + '@zag-js/utils': 1.18.2 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/types@1.7.0': + '@zag-js/switch@1.18.2': + dependencies: + '@zag-js/anatomy': 1.18.2 + '@zag-js/core': 1.18.2 + '@zag-js/dom-query': 1.18.2 + '@zag-js/focus-visible': 1.18.2 + '@zag-js/types': 1.18.2 + '@zag-js/utils': 1.18.2 + + '@zag-js/tabs@1.18.2': + dependencies: + '@zag-js/anatomy': 1.18.2 + '@zag-js/core': 1.18.2 + '@zag-js/dom-query': 1.18.2 + '@zag-js/types': 1.18.2 + '@zag-js/utils': 1.18.2 + + '@zag-js/tags-input@1.18.2': + dependencies: + '@zag-js/anatomy': 1.18.2 + '@zag-js/auto-resize': 1.18.2 + '@zag-js/core': 1.18.2 + '@zag-js/dom-query': 1.18.2 + '@zag-js/interact-outside': 1.18.2 + '@zag-js/live-region': 1.18.2 + '@zag-js/types': 1.18.2 + '@zag-js/utils': 1.18.2 + + '@zag-js/toast@1.18.2': + dependencies: + '@zag-js/anatomy': 1.18.2 + '@zag-js/core': 1.18.2 + '@zag-js/dismissable': 1.18.2 + '@zag-js/dom-query': 1.18.2 + '@zag-js/types': 1.18.2 + '@zag-js/utils': 1.18.2 + + '@zag-js/tooltip@1.18.2': + dependencies: + '@zag-js/anatomy': 1.18.2 + '@zag-js/core': 1.18.2 + '@zag-js/dom-query': 1.18.2 + '@zag-js/focus-visible': 1.18.2 + '@zag-js/popper': 1.18.2 + '@zag-js/store': 1.18.2 + '@zag-js/types': 1.18.2 + '@zag-js/utils': 1.18.2 + + '@zag-js/tree-view@1.18.2': + dependencies: + '@zag-js/anatomy': 1.18.2 + '@zag-js/collection': 1.18.2 + '@zag-js/core': 1.18.2 + '@zag-js/dom-query': 1.18.2 + '@zag-js/types': 1.18.2 + '@zag-js/utils': 1.18.2 + + '@zag-js/types@1.18.2': dependencies: csstype: 3.1.3 - '@zag-js/utils@1.7.0': {} + '@zag-js/utils@1.18.2': {} abbrev@3.0.0: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 41ec484899..215b67e729 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.18.2' catalog: '@zag-js/svelte': *zag_version @@ -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'