diff --git a/.changeset/add-toc-component.md b/.changeset/add-toc-component.md deleted file mode 100644 index 91699740e7..0000000000 --- a/.changeset/add-toc-component.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -'@ark-ui/react': minor -'@ark-ui/solid': minor -'@ark-ui/svelte': minor -'@ark-ui/vue': minor ---- - -**Toc** [New]: Add a table of contents component that tracks which headings are in view as the reader scrolls. - -Pass the headings to `Toc.Root` as `items`, where each entry needs the heading element's `id` as `value` and its level -as `depth`. Set `scrollEl` when the content scrolls inside a container rather than the page, so tracking observes that -element instead of the viewport. - -```tsx - contentRef.current}> - - - - - - - - - - - -``` - -More than one heading can be active at once, so `Toc.Item` carries `data-first` and `data-last` to mark the ends of the -range, and `Toc.Indicator` spans it. Use `useToc` with `Toc.RootProvider` to reach `activeItems` and `scrollTo` from -outside the tree. - -The API may still change while the component is in preview. diff --git a/.changeset/fix-aschild-rsc-lazy.md b/.changeset/fix-aschild-rsc-lazy.md deleted file mode 100644 index 2d60bf1e3a..0000000000 --- a/.changeset/fix-aschild-rsc-lazy.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@ark-ui/react': patch ---- - -Fix `asChild` rendering nothing when the child crosses the React Server Components boundary. React's Flight protocol can -hand the child over wrapped in `Symbol(react.lazy)`, which `isValidElement` rejects, so the factory bailed out and -rendered neither the child nor the element it stood in for. The lazy child is now unwrapped before its props are merged. diff --git a/.changeset/hotkeys.md b/.changeset/hotkeys.md deleted file mode 100644 index 2a63d825c0..0000000000 --- a/.changeset/hotkeys.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -'@ark-ui/react': minor -'@ark-ui/solid': minor -'@ark-ui/svelte': minor -'@ark-ui/vue': minor ---- - -Add a `hotkeys` entrypoint with hooks for registering and inspecting keyboard shortcuts, built on `@zag-js/hotkeys`. - -- `useHotkey` and `useHotkeys` register commands. `mod+K` resolves per platform, and `G > H` sequences are handled by - the same hook rather than a separate one. -- `useHotkeyRegistrations` returns the registered commands with their metadata (`label`, `description`, `category`, - `keywords`), so a command palette or shortcut dialog can render from the same registration that binds the key. -- `usePressedKeys` and `useIsKeyPressed` track live key state. -- `useHotkeyRecorder` records a chord or a sequence for rebinding UIs. -- `usePlatform` and `useFormatHotkey` render shortcuts for the current platform without a hydration mismatch. -- `HotkeysProvider` shares one store and sets default options, active scopes, conflict behavior, and sequence timeout. diff --git a/.changeset/presence-enter-complete.md b/.changeset/presence-enter-complete.md deleted file mode 100644 index cd6fbaebfd..0000000000 --- a/.changeset/presence-enter-complete.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -'@ark-ui/react': minor -'@ark-ui/solid': minor -'@ark-ui/svelte': minor -'@ark-ui/vue': minor ---- - -**Presence**: Add `onEnterComplete`, called once the enter animation finishes, mirroring the existing `onExitComplete`. -Vue exposes it as the `enter-complete` emit. - -> Affects Color Picker, Combobox, Date Picker, Dialog, Drawer, Floating Panel, Hover Card, Menu, Popover, Select, -> Tooltip, and Tour. diff --git a/packages/react/CHANGELOG.md b/packages/react/CHANGELOG.md index 14bade376d..b7f9412a43 100644 --- a/packages/react/CHANGELOG.md +++ b/packages/react/CHANGELOG.md @@ -1,5 +1,51 @@ # @ark-ui/react +## [5.39.0] - 2026-08-21 + +### Added + +- **Toc** [New]: Add a table of contents component that tracks which headings are in view as the reader scrolls. Pass + the headings to `Toc.Root` as `items`, where each entry needs the heading element's `id` as `value` and its level as + `depth`. Set `scrollEl` when the content scrolls inside a container rather than the page, so tracking observes that + element instead of the viewport. + ```tsx + contentRef.current}> + + + + + + + + + + + + ``` + More than one heading can be active at once, so `Toc.Item` carries `data-first` and `data-last` to mark the ends of + the range, and `Toc.Indicator` spans it. Use `useToc` with `Toc.RootProvider` to reach `activeItems` and `scrollTo` + from outside the tree. The API may still change while the component is in preview. +- Add a `hotkeys` entrypoint with hooks for registering and inspecting keyboard shortcuts, built on `@zag-js/hotkeys`. + - `useHotkey` and `useHotkeys` register commands. `mod+K` resolves per platform, and `G > H` sequences are handled by + the same hook rather than a separate one. + - `useHotkeyRegistrations` returns the registered commands with their metadata (`label`, `description`, `category`, + `keywords`), so a command palette or shortcut dialog can render from the same registration that binds the key. + - `usePressedKeys` and `useIsKeyPressed` track live key state. + - `useHotkeyRecorder` records a chord or a sequence for rebinding UIs. + - `usePlatform` and `useFormatHotkey` render shortcuts for the current platform without a hydration mismatch. + - `HotkeysProvider` shares one store and sets default options, active scopes, conflict behavior, and sequence timeout. +- **Presence**: Add `onEnterComplete`, called once the enter animation finishes, mirroring the existing + `onExitComplete`. Vue exposes it as the `enter-complete` emit. + > Affects Color Picker, Combobox, Date Picker, Dialog, Drawer, Floating Panel, Hover Card, Menu, Popover, Select, + > Tooltip, and Tour. + +### Fixed + +- Fix `asChild` rendering nothing when the child crosses the React Server Components boundary. React's Flight protocol + can hand the child over wrapped in `Symbol(react.lazy)`, which `isValidElement` rejects, so the factory bailed out and + rendered neither the child nor the element it stood in for. The lazy child is now unwrapped before its props are + merged. + ## [5.38.2] - 2026-08-17 ### Fixed diff --git a/packages/react/package.json b/packages/react/package.json index 2769ec0a49..07db988917 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,7 +1,7 @@ { "name": "@ark-ui/react", "type": "module", - "version": "5.38.2", + "version": "5.39.0", "description": "A collection of unstyled, accessible UI components for React, utilizing state machines for seamless interaction.", "keywords": [ "accordion", diff --git a/packages/solid/CHANGELOG.md b/packages/solid/CHANGELOG.md index a36facd196..c67c55c266 100644 --- a/packages/solid/CHANGELOG.md +++ b/packages/solid/CHANGELOG.md @@ -1,5 +1,44 @@ # @ark-ui/solid +## [5.39.0] - 2026-08-21 + +### Added + +- **Toc** [New]: Add a table of contents component that tracks which headings are in view as the reader scrolls. Pass + the headings to `Toc.Root` as `items`, where each entry needs the heading element's `id` as `value` and its level as + `depth`. Set `scrollEl` when the content scrolls inside a container rather than the page, so tracking observes that + element instead of the viewport. + ```tsx + contentRef.current}> + + + + + + + + + + + + ``` + More than one heading can be active at once, so `Toc.Item` carries `data-first` and `data-last` to mark the ends of + the range, and `Toc.Indicator` spans it. Use `useToc` with `Toc.RootProvider` to reach `activeItems` and `scrollTo` + from outside the tree. The API may still change while the component is in preview. +- Add a `hotkeys` entrypoint with hooks for registering and inspecting keyboard shortcuts, built on `@zag-js/hotkeys`. + - `useHotkey` and `useHotkeys` register commands. `mod+K` resolves per platform, and `G > H` sequences are handled by + the same hook rather than a separate one. + - `useHotkeyRegistrations` returns the registered commands with their metadata (`label`, `description`, `category`, + `keywords`), so a command palette or shortcut dialog can render from the same registration that binds the key. + - `usePressedKeys` and `useIsKeyPressed` track live key state. + - `useHotkeyRecorder` records a chord or a sequence for rebinding UIs. + - `usePlatform` and `useFormatHotkey` render shortcuts for the current platform without a hydration mismatch. + - `HotkeysProvider` shares one store and sets default options, active scopes, conflict behavior, and sequence timeout. +- **Presence**: Add `onEnterComplete`, called once the enter animation finishes, mirroring the existing + `onExitComplete`. Vue exposes it as the `enter-complete` emit. + > Affects Color Picker, Combobox, Date Picker, Dialog, Drawer, Floating Panel, Hover Card, Menu, Popover, Select, + > Tooltip, and Tour. + ## [5.38.2] - 2026-08-17 ### Fixed diff --git a/packages/solid/package.json b/packages/solid/package.json index da8e371125..df2d4b2dd1 100644 --- a/packages/solid/package.json +++ b/packages/solid/package.json @@ -1,7 +1,7 @@ { "name": "@ark-ui/solid", "type": "module", - "version": "5.38.2", + "version": "5.39.0", "description": "A collection of unstyled, accessible UI components for Solid, utilizing state machines for seamless interaction.", "keywords": [ "accordion", diff --git a/packages/svelte/CHANGELOG.md b/packages/svelte/CHANGELOG.md index 517405a0c3..83b80f5d6d 100644 --- a/packages/svelte/CHANGELOG.md +++ b/packages/svelte/CHANGELOG.md @@ -1,5 +1,44 @@ # @ark-ui/svelte +## [5.24.0] - 2026-08-21 + +### Added + +- **Toc** [New]: Add a table of contents component that tracks which headings are in view as the reader scrolls. Pass + the headings to `Toc.Root` as `items`, where each entry needs the heading element's `id` as `value` and its level as + `depth`. Set `scrollEl` when the content scrolls inside a container rather than the page, so tracking observes that + element instead of the viewport. + ```tsx + contentRef.current}> + + + + + + + + + + + + ``` + More than one heading can be active at once, so `Toc.Item` carries `data-first` and `data-last` to mark the ends of + the range, and `Toc.Indicator` spans it. Use `useToc` with `Toc.RootProvider` to reach `activeItems` and `scrollTo` + from outside the tree. The API may still change while the component is in preview. +- Add a `hotkeys` entrypoint with hooks for registering and inspecting keyboard shortcuts, built on `@zag-js/hotkeys`. + - `useHotkey` and `useHotkeys` register commands. `mod+K` resolves per platform, and `G > H` sequences are handled by + the same hook rather than a separate one. + - `useHotkeyRegistrations` returns the registered commands with their metadata (`label`, `description`, `category`, + `keywords`), so a command palette or shortcut dialog can render from the same registration that binds the key. + - `usePressedKeys` and `useIsKeyPressed` track live key state. + - `useHotkeyRecorder` records a chord or a sequence for rebinding UIs. + - `usePlatform` and `useFormatHotkey` render shortcuts for the current platform without a hydration mismatch. + - `HotkeysProvider` shares one store and sets default options, active scopes, conflict behavior, and sequence timeout. +- **Presence**: Add `onEnterComplete`, called once the enter animation finishes, mirroring the existing + `onExitComplete`. Vue exposes it as the `enter-complete` emit. + > Affects Color Picker, Combobox, Date Picker, Dialog, Drawer, Floating Panel, Hover Card, Menu, Popover, Select, + > Tooltip, and Tour. + ## [5.23.1] - 2026-08-17 ### Fixed diff --git a/packages/svelte/package.json b/packages/svelte/package.json index 2ceeeca58a..f66ff10409 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -1,7 +1,7 @@ { "name": "@ark-ui/svelte", "type": "module", - "version": "5.23.1", + "version": "5.24.0", "description": "A collection of unstyled, accessible UI components for Svelte", "keywords": [ "accordion", diff --git a/packages/vue/CHANGELOG.md b/packages/vue/CHANGELOG.md index 061e2ba462..53faae5089 100644 --- a/packages/vue/CHANGELOG.md +++ b/packages/vue/CHANGELOG.md @@ -1,5 +1,44 @@ # @ark-ui/vue +## [5.39.0] - 2026-08-21 + +### Added + +- **Toc** [New]: Add a table of contents component that tracks which headings are in view as the reader scrolls. Pass + the headings to `Toc.Root` as `items`, where each entry needs the heading element's `id` as `value` and its level as + `depth`. Set `scrollEl` when the content scrolls inside a container rather than the page, so tracking observes that + element instead of the viewport. + ```tsx + contentRef.current}> + + + + + + + + + + + + ``` + More than one heading can be active at once, so `Toc.Item` carries `data-first` and `data-last` to mark the ends of + the range, and `Toc.Indicator` spans it. Use `useToc` with `Toc.RootProvider` to reach `activeItems` and `scrollTo` + from outside the tree. The API may still change while the component is in preview. +- Add a `hotkeys` entrypoint with hooks for registering and inspecting keyboard shortcuts, built on `@zag-js/hotkeys`. + - `useHotkey` and `useHotkeys` register commands. `mod+K` resolves per platform, and `G > H` sequences are handled by + the same hook rather than a separate one. + - `useHotkeyRegistrations` returns the registered commands with their metadata (`label`, `description`, `category`, + `keywords`), so a command palette or shortcut dialog can render from the same registration that binds the key. + - `usePressedKeys` and `useIsKeyPressed` track live key state. + - `useHotkeyRecorder` records a chord or a sequence for rebinding UIs. + - `usePlatform` and `useFormatHotkey` render shortcuts for the current platform without a hydration mismatch. + - `HotkeysProvider` shares one store and sets default options, active scopes, conflict behavior, and sequence timeout. +- **Presence**: Add `onEnterComplete`, called once the enter animation finishes, mirroring the existing + `onExitComplete`. Vue exposes it as the `enter-complete` emit. + > Affects Color Picker, Combobox, Date Picker, Dialog, Drawer, Floating Panel, Hover Card, Menu, Popover, Select, + > Tooltip, and Tour. + ## [5.38.2] - 2026-08-17 ### Fixed diff --git a/packages/vue/package.json b/packages/vue/package.json index 34863e96e1..b6efe0888d 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -1,7 +1,7 @@ { "name": "@ark-ui/vue", "type": "module", - "version": "5.38.2", + "version": "5.39.0", "description": "A collection of unstyled, accessible UI components for Vue, utilizing state machines for seamless interaction.", "keywords": [ "accordion",