Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 0 additions & 33 deletions .changeset/add-toc-component.md

This file was deleted.

7 changes: 0 additions & 7 deletions .changeset/fix-aschild-rsc-lazy.md

This file was deleted.

17 changes: 0 additions & 17 deletions .changeset/hotkeys.md

This file was deleted.

12 changes: 0 additions & 12 deletions .changeset/presence-enter-complete.md

This file was deleted.

46 changes: 46 additions & 0 deletions packages/react/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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
<Toc.Root items={items} scrollEl={() => contentRef.current}>
<Toc.Content />
<Toc.Nav>
<Toc.Title />
<Toc.List>
<Toc.Indicator />
<Toc.Item item={item}>
<Toc.Link />
</Toc.Item>
</Toc.List>
</Toc.Nav>
</Toc.Root>
```
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
Expand Down
2 changes: 1 addition & 1 deletion packages/react/package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
39 changes: 39 additions & 0 deletions packages/solid/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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
<Toc.Root items={items} scrollEl={() => contentRef.current}>
<Toc.Content />
<Toc.Nav>
<Toc.Title />
<Toc.List>
<Toc.Indicator />
<Toc.Item item={item}>
<Toc.Link />
</Toc.Item>
</Toc.List>
</Toc.Nav>
</Toc.Root>
```
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
Expand Down
2 changes: 1 addition & 1 deletion packages/solid/package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
39 changes: 39 additions & 0 deletions packages/svelte/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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
<Toc.Root items={items} scrollEl={() => contentRef.current}>
<Toc.Content />
<Toc.Nav>
<Toc.Title />
<Toc.List>
<Toc.Indicator />
<Toc.Item item={item}>
<Toc.Link />
</Toc.Item>
</Toc.List>
</Toc.Nav>
</Toc.Root>
```
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
Expand Down
2 changes: 1 addition & 1 deletion packages/svelte/package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
39 changes: 39 additions & 0 deletions packages/vue/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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
<Toc.Root items={items} scrollEl={() => contentRef.current}>
<Toc.Content />
<Toc.Nav>
<Toc.Title />
<Toc.List>
<Toc.Indicator />
<Toc.Item item={item}>
<Toc.Link />
</Toc.Item>
</Toc.List>
</Toc.Nav>
</Toc.Root>
```
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
Expand Down
2 changes: 1 addition & 1 deletion packages/vue/package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down