From b3bdce611ce7b192399315d20b07d9c41d7b509b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 3 Aug 2026 20:50:53 +0200 Subject: [PATCH] chore: release packages (#3919) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .changeset/calm-refs-attach.md | 5 - .changeset/mcp-docs-tools.md | 5 - .changeset/react-create-toaster-generic.md | 5 - .changeset/react-presence-hide-mode.md | 29 ---- .changeset/react-steps-root-provider.md | 5 - .changeset/solid-create-toaster-generic.md | 5 - .changeset/solid-floating-panel-lazy-mount.md | 7 - .changeset/solid-scroll-area-root-provider.md | 8 - .changeset/svelte-create-toaster-generic.md | 5 - .changeset/svelte-field-context-inputs.md | 6 - .../svelte-scroll-area-root-provider.md | 7 - .changeset/swift-fields-fix.md | 5 - .changeset/vue-controlled-vmodel-emits.md | 7 - .changeset/vue-create-toaster-generic.md | 5 - .changeset/vue-drawer-exit-complete.md | 5 - .changeset/vue-drawer-snap-point-null.md | 5 - .changeset/vue-file-upload-accepted-files.md | 5 - .../vue-json-tree-view-root-provider.md | 5 - .changeset/vue-presence-detached-dom.md | 7 - .changeset/vue-signature-pad-paths.md | 5 - .changeset/zag-1-42-features.md | 17 --- .changeset/zag-1-42-fixes.md | 33 ----- .changeset/zag-1-43-features.md | 39 ----- .changeset/zag-1-43-fixes.md | 69 --------- packages/mcp/CHANGELOG.md | 7 + packages/mcp/package.json | 2 +- packages/react/CHANGELOG.md | 138 ++++++++++++++++++ packages/react/package.json | 2 +- packages/solid/CHANGELOG.md | 122 ++++++++++++++++ packages/solid/package.json | 2 +- packages/svelte/CHANGELOG.md | 121 +++++++++++++++ packages/svelte/package.json | 2 +- packages/vue/CHANGELOG.md | 133 +++++++++++++++++ packages/vue/package.json | 2 +- 34 files changed, 526 insertions(+), 299 deletions(-) delete mode 100644 .changeset/calm-refs-attach.md delete mode 100644 .changeset/mcp-docs-tools.md delete mode 100644 .changeset/react-create-toaster-generic.md delete mode 100644 .changeset/react-presence-hide-mode.md delete mode 100644 .changeset/react-steps-root-provider.md delete mode 100644 .changeset/solid-create-toaster-generic.md delete mode 100644 .changeset/solid-floating-panel-lazy-mount.md delete mode 100644 .changeset/solid-scroll-area-root-provider.md delete mode 100644 .changeset/svelte-create-toaster-generic.md delete mode 100644 .changeset/svelte-field-context-inputs.md delete mode 100644 .changeset/svelte-scroll-area-root-provider.md delete mode 100644 .changeset/swift-fields-fix.md delete mode 100644 .changeset/vue-controlled-vmodel-emits.md delete mode 100644 .changeset/vue-create-toaster-generic.md delete mode 100644 .changeset/vue-drawer-exit-complete.md delete mode 100644 .changeset/vue-drawer-snap-point-null.md delete mode 100644 .changeset/vue-file-upload-accepted-files.md delete mode 100644 .changeset/vue-json-tree-view-root-provider.md delete mode 100644 .changeset/vue-presence-detached-dom.md delete mode 100644 .changeset/vue-signature-pad-paths.md delete mode 100644 .changeset/zag-1-42-features.md delete mode 100644 .changeset/zag-1-42-fixes.md delete mode 100644 .changeset/zag-1-43-features.md delete mode 100644 .changeset/zag-1-43-fixes.md diff --git a/.changeset/calm-refs-attach.md b/.changeset/calm-refs-attach.md deleted file mode 100644 index 85c6b82c84..0000000000 --- a/.changeset/calm-refs-attach.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@ark-ui/react": patch ---- - -Fixed composed refs to keep stable callback refs attached across re-renders. diff --git a/.changeset/mcp-docs-tools.md b/.changeset/mcp-docs-tools.md deleted file mode 100644 index 30496aadfa..0000000000 --- a/.changeset/mcp-docs-tools.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@ark-ui/mcp': minor ---- - -Added `search_docs` and `get_docs` so you can find Ark UI documentation by keyword and pull the full page markdown when you need it. diff --git a/.changeset/react-create-toaster-generic.md b/.changeset/react-create-toaster-generic.md deleted file mode 100644 index 2fa8fcd99a..0000000000 --- a/.changeset/react-create-toaster-generic.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@ark-ui/react': patch ---- - -Exposed the toast content generic on `createToaster` so `CreateToasterReturn` can type custom toast data. diff --git a/.changeset/react-presence-hide-mode.md b/.changeset/react-presence-hide-mode.md deleted file mode 100644 index 474c84a27f..0000000000 --- a/.changeset/react-presence-hide-mode.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -'@ark-ui/react': minor ---- - -Added `hideMode` (`'display-none' | 'activity'`) for how kept-mounted content is hidden when closed. Covers -presence-based overlays and Collapsible (including Accordion and TreeView). - -- `'display-none'` (default): HTML `hidden`. Effects stay alive. -- `'activity'`: React 19 [`Activity`](https://react.dev/reference/react/Activity). Effects pause. - -Applies while content stays mounted: - -```jsx -// applies from the start - - -// applies after the first open (lazyMount only delays the first mount) - - - - -``` - -Does not apply when content is unmounted: - -```jsx -// unmountOnExit removes the tree on close, so hideMode never runs - -``` diff --git a/.changeset/react-steps-root-provider.md b/.changeset/react-steps-root-provider.md deleted file mode 100644 index 5b6cf86a33..0000000000 --- a/.changeset/react-steps-root-provider.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@ark-ui/react': patch ---- - -Fixed Steps `RootProvider` rendering children twice via both `mergedProps` and explicit `{props.children}`. diff --git a/.changeset/solid-create-toaster-generic.md b/.changeset/solid-create-toaster-generic.md deleted file mode 100644 index ab5b2d80cb..0000000000 --- a/.changeset/solid-create-toaster-generic.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@ark-ui/solid': patch ---- - -Exposed the toast content generic on `createToaster` so `CreateToasterReturn` can type custom toast data. diff --git a/.changeset/solid-floating-panel-lazy-mount.md b/.changeset/solid-floating-panel-lazy-mount.md deleted file mode 100644 index 58a3dd8efe..0000000000 --- a/.changeset/solid-floating-panel-lazy-mount.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@ark-ui/solid': patch ---- - -Fixed FloatingPanel `Content` and `Positioner` not reacting to presence changes. The panel never appeared when -`lazyMount` was used, and was never removed from the DOM when `unmountOnExit` was used. `Content` now also forwards the -presence ref so exit animations are tracked before unmounting. diff --git a/.changeset/solid-scroll-area-root-provider.md b/.changeset/solid-scroll-area-root-provider.md deleted file mode 100644 index e81073da80..0000000000 --- a/.changeset/solid-scroll-area-root-provider.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@ark-ui/solid': patch ---- - -- **Scroll Area**: Fixed `RootProvider` throwing `useScrollAreaContext returned undefined` by evaluating children outside the provider, and merge `getRootProps()` onto the root element. -- **Password Input**: Fixed `RootProvider` spreading the machine `value` onto the root DOM element. -- **Steps**: Fixed `RootProvider` rendering children twice via both `mergedProps` and explicit `{props.children}`. -- **Marquee**: Fixed `Content` merging `children` into every cloned content element's props. diff --git a/.changeset/svelte-create-toaster-generic.md b/.changeset/svelte-create-toaster-generic.md deleted file mode 100644 index 663f489588..0000000000 --- a/.changeset/svelte-create-toaster-generic.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@ark-ui/svelte': patch ---- - -Exposed the toast content generic on `createToaster` so `CreateToasterReturn` can type custom toast data. diff --git a/.changeset/svelte-field-context-inputs.md b/.changeset/svelte-field-context-inputs.md deleted file mode 100644 index 6b67ec1084..0000000000 --- a/.changeset/svelte-field-context-inputs.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@ark-ui/svelte': patch ---- - -Fixed PasswordInput, PinInput, and FileUpload to consume Field context, propagating -`invalid`, `disabled`, `readOnly`, `required`, and `ids` when wrapped in `Field.Root`. diff --git a/.changeset/svelte-scroll-area-root-provider.md b/.changeset/svelte-scroll-area-root-provider.md deleted file mode 100644 index 32a1f19b7e..0000000000 --- a/.changeset/svelte-scroll-area-root-provider.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@ark-ui/svelte': patch ---- - -- **Scroll Area**: Fixed `RootProvider` not merging `getRootProps()` onto the root element. -- **Password Input**: Fixed `RootProvider` spreading the machine `value` onto the root DOM element and rendering children twice. -- **Json Tree View**: Fixed `RootProvider` not stripping `options` from `value` before forwarding to `TreeView.RootProvider`, and rendering children twice. diff --git a/.changeset/swift-fields-fix.md b/.changeset/swift-fields-fix.md deleted file mode 100644 index ab5262b898..0000000000 --- a/.changeset/swift-fields-fix.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@ark-ui/vue": patch ---- - -Fixed Field input, textarea, and select to render outside `Field.Root` without crashing. diff --git a/.changeset/vue-controlled-vmodel-emits.md b/.changeset/vue-controlled-vmodel-emits.md deleted file mode 100644 index 478c994e7c..0000000000 --- a/.changeset/vue-controlled-vmodel-emits.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@ark-ui/vue': patch ---- - -Fixed missing `v-model` emit wiring for `Drawer` (`open`, `snapPoint`), `Listbox` (`highlightedValue`), `Marquee` -(`paused`), `DateInput` (`placeholderValue`), and `triggerValue` on Dialog, Drawer, HoverCard, Menu, Popover, and -Tooltip. diff --git a/.changeset/vue-create-toaster-generic.md b/.changeset/vue-create-toaster-generic.md deleted file mode 100644 index 07bde2684b..0000000000 --- a/.changeset/vue-create-toaster-generic.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@ark-ui/vue': patch ---- - -Exposed the toast content generic on `createToaster` so `CreateToasterReturn` can type custom toast data. diff --git a/.changeset/vue-drawer-exit-complete.md b/.changeset/vue-drawer-exit-complete.md deleted file mode 100644 index 3d9d542fac..0000000000 --- a/.changeset/vue-drawer-exit-complete.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@ark-ui/vue": patch ---- - -Fixed Drawer `Root` and `RootProvider` not emitting `exitComplete` after the close animation. diff --git a/.changeset/vue-drawer-snap-point-null.md b/.changeset/vue-drawer-snap-point-null.md deleted file mode 100644 index a3f5f9f5cf..0000000000 --- a/.changeset/vue-drawer-snap-point-null.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@ark-ui/vue": patch ---- - -Fixed `Drawer.Root` rejecting `null` for `snapPoint` and `defaultSnapPoint`. diff --git a/.changeset/vue-file-upload-accepted-files.md b/.changeset/vue-file-upload-accepted-files.md deleted file mode 100644 index 12bfeb6a5a..0000000000 --- a/.changeset/vue-file-upload-accepted-files.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@ark-ui/vue': patch ---- - -Fixed `FileUpload.Root` ignoring the controlled `acceptedFiles` prop. diff --git a/.changeset/vue-json-tree-view-root-provider.md b/.changeset/vue-json-tree-view-root-provider.md deleted file mode 100644 index a61c4ea68a..0000000000 --- a/.changeset/vue-json-tree-view-root-provider.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@ark-ui/vue': patch ---- - -Fixed JsonTreeView `RootProvider` not forwarding root HTML props (such as `class` and `asChild`) to `TreeView.RootProvider`. diff --git a/.changeset/vue-presence-detached-dom.md b/.changeset/vue-presence-detached-dom.md deleted file mode 100644 index c82dfb7809..0000000000 --- a/.changeset/vue-presence-detached-dom.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@ark-ui/vue": patch ---- - -Fixed Presence-based components (Dialog, Popover, Menu, Tooltip, etc.) leaking detached DOM -nodes after each open/close cycle when `lazyMount`/`unmountOnExit` is used. The machine's -`node` and `styles` refs are now cleared when the element unmounts. diff --git a/.changeset/vue-signature-pad-paths.md b/.changeset/vue-signature-pad-paths.md deleted file mode 100644 index 26c84ffde4..0000000000 --- a/.changeset/vue-signature-pad-paths.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@ark-ui/vue": patch ---- - -Fixed `SignaturePad.Root` ignoring the controlled `paths` prop. diff --git a/.changeset/zag-1-42-features.md b/.changeset/zag-1-42-features.md deleted file mode 100644 index 0636484ed3..0000000000 --- a/.changeset/zag-1-42-features.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -'@ark-ui/react': minor -'@ark-ui/solid': minor -'@ark-ui/svelte': minor -'@ark-ui/vue': minor ---- - -- **Number Input**: Add `largeStep` and `smallStep` props for configurable keyboard stepping. Hold `Shift` for - `largeStep` (defaults to `10 * step`), `Alt` for `smallStep` (defaults to `step / 10`). The defaults match the - previous behavior. - - ```jsx - - ``` - -- **Slider**: Add `largeStep` prop, applied on `Shift` or `PageUp`/`PageDown` (defaults to `10 * step`). The default - matches the previous behavior. diff --git a/.changeset/zag-1-42-fixes.md b/.changeset/zag-1-42-fixes.md deleted file mode 100644 index b5c5c45737..0000000000 --- a/.changeset/zag-1-42-fixes.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -'@ark-ui/react': patch -'@ark-ui/solid': patch -'@ark-ui/svelte': patch -'@ark-ui/vue': patch ---- - -- **Date Input** - - Type dates using your locale's native numerals (Arabic-Indic `٠-٩`, Devanagari `०-९`), not just ASCII digits. - - Fix timezone-naive values (`CalendarDate`/`CalendarDateTime`) shifting by your local UTC offset when you pass a - custom `formatter` without a `timeZone`. A wall-clock value now round-trips unchanged. - -- **Date Picker** - - Type dates using your locale's native numerals, not just ASCII digits. - - Reorder dates on blur in range selection, matching the other selection paths. - - Fix the day view briefly flashing when you close the picker from the month or year view. - - Fix `visibleRangeText` returning a stale value when multiple pickers share a visible range. This was also causing - SSR hydration mismatches. - -- **Menu**: Fix the context menu flashing at the top-left before positioning. Long-press (touch) context menus no longer - open stuck at `(0,0)`. - -- **Number Input** - - Fix `api.setValue` throwing when you pass a number and `formatOptions` is set. - - Fix `Cmd`/`Ctrl` + arrow keys producing values off the `step` grid. - -- **Slider**: Fix `Cmd`/`Ctrl` + arrow keys producing values off the `step` grid. - -- **Tags Input**: Fix native form submit so `FormData` reflects the current tags. The hidden input used to keep its - initial value after you added, removed, or cleared tags. - -- **Toast**: Fix a height flicker when expanding the stack in overlap mode. Heights are now measured without the `scale` - transform. diff --git a/.changeset/zag-1-43-features.md b/.changeset/zag-1-43-features.md deleted file mode 100644 index cb02d20680..0000000000 --- a/.changeset/zag-1-43-features.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -'@ark-ui/react': minor -'@ark-ui/solid': minor -'@ark-ui/svelte': minor -'@ark-ui/vue': minor ---- - -- **Autofocus Control**: Add `data-autofocus` and `data-no-autofocus` to decide what gets focus when an overlay opens. - Mark chrome like the close button with `data-no-autofocus` to skip it, or mark the real target with `data-autofocus`. - - ```jsx - - Close - - - - ``` - - Focus goes to `initialFocusEl`, then `[data-autofocus]`, then the first tabbable element without - `[data-no-autofocus]`, then the content root. - - > Supported in Dialog and Drawer. - -- **Focus Trap**: Add `persistentElements` to treat portalled content as part of the trap when it isn't reachable via - `aria-controls`/`aria-expanded`. Pass getters so the elements can be resolved lazily. - - ```jsx - document.getElementById('toast-region')]} /> - ``` - -- **Image Cropper**: `getCropData()` now returns the exact `corners` and `outputSize` of the crop in natural-image - pixels, so you can hand the region straight to a server-side cropper. - -- **Image Cropper**: Add `maxSize` to `getCroppedImage()` to cap the output dimensions. The crop keeps its aspect ratio - and scales down to fit. - - ```jsx - const blob = await imageCropper.getCroppedImage({ maxSize: { width: 512, height: 512 } }) - ``` diff --git a/.changeset/zag-1-43-fixes.md b/.changeset/zag-1-43-fixes.md deleted file mode 100644 index a388d442de..0000000000 --- a/.changeset/zag-1-43-fixes.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -'@ark-ui/react': patch -'@ark-ui/solid': patch -'@ark-ui/svelte': patch -'@ark-ui/vue': patch ---- - -- **Color Picker**: Fix the channel input committing a partial value when you press `Enter` to confirm an IME - composition. - -- **Date Input** - - Fix segment text lagging behind while you type over an already committed date. - - Fix in-progress edits being dropped while focus catches up after auto-advance. Fast typing and - `ArrowUp`/`ArrowDown`/`Home`/`End` now land on the segment you're actually editing. - -- **Date Picker** - - Fix disabled and read-only pickers still reacting to cell clicks, the clear trigger, and presets. Read-only pickers - keep roving-focus navigation; disabled pickers drop out of the tab order. - - Fix `minView`, `maxView`, and `defaultView` being ignored when resolving the initial view, which was hardcoded to - day through year. - - Fix `defaultOpen` winning over `open`, so a controlled picker could open against its own prop. - - Fix `maxSelectedDates` not being enforced on month and year cells in `multiple` selection mode. - - Fix keyboard range selection drifting from pointer behavior. Picking a third date restarts the range, and the hover - preview updates for `Enter`, `Home`, `End`, and `PageUp`/`PageDown`. - - Fix reopening the calendar with only a start date restarting the range instead of resuming it. - -- **Drawer**: Fix the backdrop flickering on a controlled close when the `open` setter is async. - -- **Field**: Fix `Field.Textarea` with `autoresize` dispatching a synthetic `input` event when you set `value` - programmatically, which fed the value back into your framework and broke controlled state. - -- **Focus Return**: Fix three focus-trap issues you'd hit with overlays. - - Closing an overlay no longer steals focus back from an element your app focused in the meantime, like a second - dialog opened right after closing the first. - - Closing a nested overlay, such as a popover inside a dialog, no longer throws when the outer container has no - connected focusable element at that moment. - - The focus ring now shows on the returned-to element after you close with `Escape`. - - > Affects Dialog, Drawer, Popover, and anything else that traps focus. - -- **Image Cropper**: Fix `getCroppedImage()` and `getCropData()` returning a different region from the one you see after - rotating or flipping the image. - -- **Marquee**: Fix scroll speed depending on content width. The duration now comes from the content size and the actual - translation distance, so `speed` matches real pixel speed even when the content is narrower than the viewport. - -- **Popover**: Fix tabbing out of portalled content looping back into the content when the trigger was the last tabbable - element on the page. Focus now moves to the next tabbable element after the trigger. - -- **Scroll Lock**: Fix the scroll lock targeting `` on layouts where `` is the real scroll container, which - meant nothing was locked while an overlay was open. - -- **Signature Pad**: Fix controlled `paths` drifting out of sync because the in-progress stroke was appended to `paths`. - It now stays in `onDraw.currentPath` until the stroke ends. - -- **Splitter** - - Fix collapsed panels sizing to `minSize` instead of `collapsedSize`. - - Fix keyboard resizing breaking when a resize trigger got focus while hovered. - -- **Tour** - - Fix dismissing a tour from a step's `effect` skipping cleanup, which could miss firing the `completed` status. - - Fix a tooltip step's position resetting unexpectedly when the tour closed. - - Fix a step action with `action: "skip"` doing nothing when clicked. - -- **Solid**: Fix a `value` of `null` being read as uncontrolled, so controlled components fell back to internal state. - -- **Solid, Svelte**: Fix machine exit actions running when a component was disposed before the machine started. - -- **Vue, Svelte**: Fix `defaultValue` being resolved before `value`, unlike React and Solid. diff --git a/packages/mcp/CHANGELOG.md b/packages/mcp/CHANGELOG.md index b850d18515..c3fed69cbb 100644 --- a/packages/mcp/CHANGELOG.md +++ b/packages/mcp/CHANGELOG.md @@ -1,5 +1,12 @@ # @ark-ui/mcp +## [1.3.0] - 2026-08-01 + +### Added + +- Added `search_docs` and `get_docs` so you can find Ark UI documentation by keyword and pull the full page markdown + when you need it. + ## [1.2.1] - 2026-03-26 ### Fixed diff --git a/packages/mcp/package.json b/packages/mcp/package.json index 4f742a8af2..c739440ad3 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -1,7 +1,7 @@ { "name": "@ark-ui/mcp", "description": "The official MCP server for Ark UI", - "version": "1.2.1", + "version": "1.3.0", "main": "dist/stdio.js", "type": "module", "license": "MIT", diff --git a/packages/react/CHANGELOG.md b/packages/react/CHANGELOG.md index 6971f26f8b..4036cea1d0 100644 --- a/packages/react/CHANGELOG.md +++ b/packages/react/CHANGELOG.md @@ -1,5 +1,143 @@ # @ark-ui/react +## [5.38.0] - 2026-08-01 + +### Added + +- Added `hideMode` (`'display-none' | 'activity'`) for how kept-mounted content is hidden when closed. Covers + presence-based overlays and Collapsible (including Accordion and TreeView). + - `'display-none'` (default): HTML `hidden`. Effects stay alive. + - `'activity'`: React 19 [`Activity`](https://react.dev/reference/react/Activity). Effects pause. Applies while + content stays mounted: + + ```jsx + // applies from the start + + // applies after the first open (lazyMount only delays the first mount) + + + + ``` + + Does not apply when content is unmounted: + + ```jsx + // unmountOnExit removes the tree on close, so hideMode never runs + + ``` + +- - **Number Input**: Add `largeStep` and `smallStep` props for configurable keyboard stepping. Hold `Shift` for + `largeStep` (defaults to `10 * step`), `Alt` for `smallStep` (defaults to `step / 10`). The defaults match the + previous behavior. + ```jsx + + ``` + - **Slider**: Add `largeStep` prop, applied on `Shift` or `PageUp`/`PageDown` (defaults to `10 * step`). The default + matches the previous behavior. + +- - **Autofocus Control**: Add `data-autofocus` and `data-no-autofocus` to decide what gets focus when an overlay opens. + Mark chrome like the close button with `data-no-autofocus` to skip it, or mark the real target with + `data-autofocus`. + ```jsx + + Close + + + + ``` + Focus goes to `initialFocusEl`, then `[data-autofocus]`, then the first tabbable element without + `[data-no-autofocus]`, then the content root. + > Supported in Dialog and Drawer. + - **Focus Trap**: Add `persistentElements` to treat portalled content as part of the trap when it isn't reachable via + `aria-controls`/`aria-expanded`. Pass getters so the elements can be resolved lazily. + ```jsx + document.getElementById('toast-region')]} /> + ``` + - **Image Cropper**: `getCropData()` now returns the exact `corners` and `outputSize` of the crop in natural-image + pixels, so you can hand the region straight to a server-side cropper. + - **Image Cropper**: Add `maxSize` to `getCroppedImage()` to cap the output dimensions. The crop keeps its aspect + ratio and scales down to fit. + ```jsx + const blob = await imageCropper.getCroppedImage({ maxSize: { width: 512, height: 512 } }) + ``` + +### Fixed + +- Fixed composed refs to keep stable callback refs attached across re-renders. + +- Exposed the toast content generic on `createToaster` so `CreateToasterReturn` can type custom toast data. + +- Fixed Steps `RootProvider` rendering children twice via both `mergedProps` and explicit `{props.children}`. + +- - **Date Input** + - Type dates using your locale's native numerals (Arabic-Indic `٠-٩`, Devanagari `०-९`), not just ASCII digits. + - Fix timezone-naive values (`CalendarDate`/`CalendarDateTime`) shifting by your local UTC offset when you pass a + custom `formatter` without a `timeZone`. A wall-clock value now round-trips unchanged. + - **Date Picker** + - Type dates using your locale's native numerals, not just ASCII digits. + - Reorder dates on blur in range selection, matching the other selection paths. + - Fix the day view briefly flashing when you close the picker from the month or year view. + - Fix `visibleRangeText` returning a stale value when multiple pickers share a visible range. This was also causing + SSR hydration mismatches. + - **Menu**: Fix the context menu flashing at the top-left before positioning. Long-press (touch) context menus no + longer open stuck at `(0,0)`. + - **Number Input** + - Fix `api.setValue` throwing when you pass a number and `formatOptions` is set. + - Fix `Cmd`/`Ctrl` + arrow keys producing values off the `step` grid. + - **Slider**: Fix `Cmd`/`Ctrl` + arrow keys producing values off the `step` grid. + - **Tags Input**: Fix native form submit so `FormData` reflects the current tags. The hidden input used to keep its + initial value after you added, removed, or cleared tags. + - **Toast**: Fix a height flicker when expanding the stack in overlap mode. Heights are now measured without the + `scale` transform. + +- - **Color Picker**: Fix the channel input committing a partial value when you press `Enter` to confirm an IME + composition. + - **Date Input** + - Fix segment text lagging behind while you type over an already committed date. + - Fix in-progress edits being dropped while focus catches up after auto-advance. Fast typing and + `ArrowUp`/`ArrowDown`/`Home`/`End` now land on the segment you're actually editing. + - **Date Picker** + - Fix disabled and read-only pickers still reacting to cell clicks, the clear trigger, and presets. Read-only + pickers keep roving-focus navigation; disabled pickers drop out of the tab order. + - Fix `minView`, `maxView`, and `defaultView` being ignored when resolving the initial view, which was hardcoded to + day through year. + - Fix `defaultOpen` winning over `open`, so a controlled picker could open against its own prop. + - Fix `maxSelectedDates` not being enforced on month and year cells in `multiple` selection mode. + - Fix keyboard range selection drifting from pointer behavior. Picking a third date restarts the range, and the + hover preview updates for `Enter`, `Home`, `End`, and `PageUp`/`PageDown`. + - Fix reopening the calendar with only a start date restarting the range instead of resuming it. + - **Drawer**: Fix the backdrop flickering on a controlled close when the `open` setter is async. + - **Field**: Fix `Field.Textarea` with `autoresize` dispatching a synthetic `input` event when you set `value` + programmatically, which fed the value back into your framework and broke controlled state. + - **Focus Return**: Fix three focus-trap issues you'd hit with overlays. + - Closing an overlay no longer steals focus back from an element your app focused in the meantime, like a second + dialog opened right after closing the first. + - Closing a nested overlay, such as a popover inside a dialog, no longer throws when the outer container has no + connected focusable element at that moment. + - The focus ring now shows on the returned-to element after you close with `Escape`. + > Affects Dialog, Drawer, Popover, and anything else that traps focus. + - **Image Cropper**: Fix `getCroppedImage()` and `getCropData()` returning a different region from the one you see + after rotating or flipping the image. + - **Marquee**: Fix scroll speed depending on content width. The duration now comes from the content size and the + actual translation distance, so `speed` matches real pixel speed even when the content is narrower than the + viewport. + - **Popover**: Fix tabbing out of portalled content looping back into the content when the trigger was the last + tabbable element on the page. Focus now moves to the next tabbable element after the trigger. + - **Scroll Lock**: Fix the scroll lock targeting `` on layouts where `` is the real scroll container, + which meant nothing was locked while an overlay was open. + - **Signature Pad**: Fix controlled `paths` drifting out of sync because the in-progress stroke was appended to + `paths`. It now stays in `onDraw.currentPath` until the stroke ends. + - **Splitter** + - Fix collapsed panels sizing to `minSize` instead of `collapsedSize`. + - Fix keyboard resizing breaking when a resize trigger got focus while hovered. + - **Tour** + - Fix dismissing a tour from a step's `effect` skipping cleanup, which could miss firing the `completed` status. + - Fix a tooltip step's position resetting unexpectedly when the tour closed. + - Fix a step action with `action: "skip"` doing nothing when clicked. + - **Solid**: Fix a `value` of `null` being read as uncontrolled, so controlled components fell back to internal state. + - **Solid, Svelte**: Fix machine exit actions running when a component was disposed before the machine started. + - **Vue, Svelte**: Fix `defaultValue` being resolved before `value`, unlike React and Solid. + ## [5.37.2] - 2026-06-08 ### Fixed diff --git a/packages/react/package.json b/packages/react/package.json index 91707a7ee2..9f63b4d0c2 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,7 +1,7 @@ { "name": "@ark-ui/react", "type": "module", - "version": "5.37.2", + "version": "5.38.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 e2f2dbb9bd..b627200bda 100644 --- a/packages/solid/CHANGELOG.md +++ b/packages/solid/CHANGELOG.md @@ -1,5 +1,127 @@ # @ark-ui/solid +## [5.38.0] - 2026-08-01 + +### Added + +- - **Number Input**: Add `largeStep` and `smallStep` props for configurable keyboard stepping. Hold `Shift` for + `largeStep` (defaults to `10 * step`), `Alt` for `smallStep` (defaults to `step / 10`). The defaults match the + previous behavior. + ```jsx + + ``` + - **Slider**: Add `largeStep` prop, applied on `Shift` or `PageUp`/`PageDown` (defaults to `10 * step`). The default + matches the previous behavior. + +- - **Autofocus Control**: Add `data-autofocus` and `data-no-autofocus` to decide what gets focus when an overlay opens. + Mark chrome like the close button with `data-no-autofocus` to skip it, or mark the real target with + `data-autofocus`. + ```jsx + + Close + + + + ``` + Focus goes to `initialFocusEl`, then `[data-autofocus]`, then the first tabbable element without + `[data-no-autofocus]`, then the content root. + > Supported in Dialog and Drawer. + - **Focus Trap**: Add `persistentElements` to treat portalled content as part of the trap when it isn't reachable via + `aria-controls`/`aria-expanded`. Pass getters so the elements can be resolved lazily. + ```jsx + document.getElementById('toast-region')]} /> + ``` + - **Image Cropper**: `getCropData()` now returns the exact `corners` and `outputSize` of the crop in natural-image + pixels, so you can hand the region straight to a server-side cropper. + - **Image Cropper**: Add `maxSize` to `getCroppedImage()` to cap the output dimensions. The crop keeps its aspect + ratio and scales down to fit. + ```jsx + const blob = await imageCropper.getCroppedImage({ maxSize: { width: 512, height: 512 } }) + ``` + +### Fixed + +- Exposed the toast content generic on `createToaster` so `CreateToasterReturn` can type custom toast data. + +- Fixed FloatingPanel `Content` and `Positioner` not reacting to presence changes. The panel never appeared when + `lazyMount` was used, and was never removed from the DOM when `unmountOnExit` was used. `Content` now also forwards + the presence ref so exit animations are tracked before unmounting. + +- - **Scroll Area**: Fixed `RootProvider` throwing `useScrollAreaContext returned undefined` by evaluating children + outside the provider, and merge `getRootProps()` onto the root element. + - **Password Input**: Fixed `RootProvider` spreading the machine `value` onto the root DOM element. + - **Steps**: Fixed `RootProvider` rendering children twice via both `mergedProps` and explicit `{props.children}`. + - **Marquee**: Fixed `Content` merging `children` into every cloned content element's props. + +- - **Date Input** + - Type dates using your locale's native numerals (Arabic-Indic `٠-٩`, Devanagari `०-९`), not just ASCII digits. + - Fix timezone-naive values (`CalendarDate`/`CalendarDateTime`) shifting by your local UTC offset when you pass a + custom `formatter` without a `timeZone`. A wall-clock value now round-trips unchanged. + - **Date Picker** + - Type dates using your locale's native numerals, not just ASCII digits. + - Reorder dates on blur in range selection, matching the other selection paths. + - Fix the day view briefly flashing when you close the picker from the month or year view. + - Fix `visibleRangeText` returning a stale value when multiple pickers share a visible range. This was also causing + SSR hydration mismatches. + - **Menu**: Fix the context menu flashing at the top-left before positioning. Long-press (touch) context menus no + longer open stuck at `(0,0)`. + - **Number Input** + - Fix `api.setValue` throwing when you pass a number and `formatOptions` is set. + - Fix `Cmd`/`Ctrl` + arrow keys producing values off the `step` grid. + - **Slider**: Fix `Cmd`/`Ctrl` + arrow keys producing values off the `step` grid. + - **Tags Input**: Fix native form submit so `FormData` reflects the current tags. The hidden input used to keep its + initial value after you added, removed, or cleared tags. + - **Toast**: Fix a height flicker when expanding the stack in overlap mode. Heights are now measured without the + `scale` transform. + +- - **Color Picker**: Fix the channel input committing a partial value when you press `Enter` to confirm an IME + composition. + - **Date Input** + - Fix segment text lagging behind while you type over an already committed date. + - Fix in-progress edits being dropped while focus catches up after auto-advance. Fast typing and + `ArrowUp`/`ArrowDown`/`Home`/`End` now land on the segment you're actually editing. + - **Date Picker** + - Fix disabled and read-only pickers still reacting to cell clicks, the clear trigger, and presets. Read-only + pickers keep roving-focus navigation; disabled pickers drop out of the tab order. + - Fix `minView`, `maxView`, and `defaultView` being ignored when resolving the initial view, which was hardcoded to + day through year. + - Fix `defaultOpen` winning over `open`, so a controlled picker could open against its own prop. + - Fix `maxSelectedDates` not being enforced on month and year cells in `multiple` selection mode. + - Fix keyboard range selection drifting from pointer behavior. Picking a third date restarts the range, and the + hover preview updates for `Enter`, `Home`, `End`, and `PageUp`/`PageDown`. + - Fix reopening the calendar with only a start date restarting the range instead of resuming it. + - **Drawer**: Fix the backdrop flickering on a controlled close when the `open` setter is async. + - **Field**: Fix `Field.Textarea` with `autoresize` dispatching a synthetic `input` event when you set `value` + programmatically, which fed the value back into your framework and broke controlled state. + - **Focus Return**: Fix three focus-trap issues you'd hit with overlays. + - Closing an overlay no longer steals focus back from an element your app focused in the meantime, like a second + dialog opened right after closing the first. + - Closing a nested overlay, such as a popover inside a dialog, no longer throws when the outer container has no + connected focusable element at that moment. + - The focus ring now shows on the returned-to element after you close with `Escape`. + > Affects Dialog, Drawer, Popover, and anything else that traps focus. + - **Image Cropper**: Fix `getCroppedImage()` and `getCropData()` returning a different region from the one you see + after rotating or flipping the image. + - **Marquee**: Fix scroll speed depending on content width. The duration now comes from the content size and the + actual translation distance, so `speed` matches real pixel speed even when the content is narrower than the + viewport. + - **Popover**: Fix tabbing out of portalled content looping back into the content when the trigger was the last + tabbable element on the page. Focus now moves to the next tabbable element after the trigger. + - **Scroll Lock**: Fix the scroll lock targeting `` on layouts where `` is the real scroll container, + which meant nothing was locked while an overlay was open. + - **Signature Pad**: Fix controlled `paths` drifting out of sync because the in-progress stroke was appended to + `paths`. It now stays in `onDraw.currentPath` until the stroke ends. + - **Splitter** + - Fix collapsed panels sizing to `minSize` instead of `collapsedSize`. + - Fix keyboard resizing breaking when a resize trigger got focus while hovered. + - **Tour** + - Fix dismissing a tour from a step's `effect` skipping cleanup, which could miss firing the `completed` status. + - Fix a tooltip step's position resetting unexpectedly when the tour closed. + - Fix a step action with `action: "skip"` doing nothing when clicked. + - **Solid**: Fix a `value` of `null` being read as uncontrolled, so controlled components fell back to internal state. + - **Solid, Svelte**: Fix machine exit actions running when a component was disposed before the machine started. + - **Vue, Svelte**: Fix `defaultValue` being resolved before `value`, unlike React and Solid. + ## [5.37.1] - 2026-06-06 ### Fixed diff --git a/packages/solid/package.json b/packages/solid/package.json index 39ac004fe1..51bb351ecd 100644 --- a/packages/solid/package.json +++ b/packages/solid/package.json @@ -1,7 +1,7 @@ { "name": "@ark-ui/solid", "type": "module", - "version": "5.37.1", + "version": "5.38.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 deb9c6ab63..170e98f655 100644 --- a/packages/svelte/CHANGELOG.md +++ b/packages/svelte/CHANGELOG.md @@ -1,5 +1,126 @@ # @ark-ui/svelte +## [5.23.0] - 2026-08-01 + +### Added + +- - **Number Input**: Add `largeStep` and `smallStep` props for configurable keyboard stepping. Hold `Shift` for + `largeStep` (defaults to `10 * step`), `Alt` for `smallStep` (defaults to `step / 10`). The defaults match the + previous behavior. + ```jsx + + ``` + - **Slider**: Add `largeStep` prop, applied on `Shift` or `PageUp`/`PageDown` (defaults to `10 * step`). The default + matches the previous behavior. + +- - **Autofocus Control**: Add `data-autofocus` and `data-no-autofocus` to decide what gets focus when an overlay opens. + Mark chrome like the close button with `data-no-autofocus` to skip it, or mark the real target with + `data-autofocus`. + ```jsx + + Close + + + + ``` + Focus goes to `initialFocusEl`, then `[data-autofocus]`, then the first tabbable element without + `[data-no-autofocus]`, then the content root. + > Supported in Dialog and Drawer. + - **Focus Trap**: Add `persistentElements` to treat portalled content as part of the trap when it isn't reachable via + `aria-controls`/`aria-expanded`. Pass getters so the elements can be resolved lazily. + ```jsx + document.getElementById('toast-region')]} /> + ``` + - **Image Cropper**: `getCropData()` now returns the exact `corners` and `outputSize` of the crop in natural-image + pixels, so you can hand the region straight to a server-side cropper. + - **Image Cropper**: Add `maxSize` to `getCroppedImage()` to cap the output dimensions. The crop keeps its aspect + ratio and scales down to fit. + ```jsx + const blob = await imageCropper.getCroppedImage({ maxSize: { width: 512, height: 512 } }) + ``` + +### Fixed + +- Exposed the toast content generic on `createToaster` so `CreateToasterReturn` can type custom toast data. + +- Fixed PasswordInput, PinInput, and FileUpload to consume Field context, propagating `invalid`, `disabled`, `readOnly`, + `required`, and `ids` when wrapped in `Field.Root`. + +- - **Scroll Area**: Fixed `RootProvider` not merging `getRootProps()` onto the root element. + - **Password Input**: Fixed `RootProvider` spreading the machine `value` onto the root DOM element and rendering + children twice. + - **Json Tree View**: Fixed `RootProvider` not stripping `options` from `value` before forwarding to + `TreeView.RootProvider`, and rendering children twice. + +- - **Date Input** + - Type dates using your locale's native numerals (Arabic-Indic `٠-٩`, Devanagari `०-९`), not just ASCII digits. + - Fix timezone-naive values (`CalendarDate`/`CalendarDateTime`) shifting by your local UTC offset when you pass a + custom `formatter` without a `timeZone`. A wall-clock value now round-trips unchanged. + - **Date Picker** + - Type dates using your locale's native numerals, not just ASCII digits. + - Reorder dates on blur in range selection, matching the other selection paths. + - Fix the day view briefly flashing when you close the picker from the month or year view. + - Fix `visibleRangeText` returning a stale value when multiple pickers share a visible range. This was also causing + SSR hydration mismatches. + - **Menu**: Fix the context menu flashing at the top-left before positioning. Long-press (touch) context menus no + longer open stuck at `(0,0)`. + - **Number Input** + - Fix `api.setValue` throwing when you pass a number and `formatOptions` is set. + - Fix `Cmd`/`Ctrl` + arrow keys producing values off the `step` grid. + - **Slider**: Fix `Cmd`/`Ctrl` + arrow keys producing values off the `step` grid. + - **Tags Input**: Fix native form submit so `FormData` reflects the current tags. The hidden input used to keep its + initial value after you added, removed, or cleared tags. + - **Toast**: Fix a height flicker when expanding the stack in overlap mode. Heights are now measured without the + `scale` transform. + +- - **Color Picker**: Fix the channel input committing a partial value when you press `Enter` to confirm an IME + composition. + - **Date Input** + - Fix segment text lagging behind while you type over an already committed date. + - Fix in-progress edits being dropped while focus catches up after auto-advance. Fast typing and + `ArrowUp`/`ArrowDown`/`Home`/`End` now land on the segment you're actually editing. + - **Date Picker** + - Fix disabled and read-only pickers still reacting to cell clicks, the clear trigger, and presets. Read-only + pickers keep roving-focus navigation; disabled pickers drop out of the tab order. + - Fix `minView`, `maxView`, and `defaultView` being ignored when resolving the initial view, which was hardcoded to + day through year. + - Fix `defaultOpen` winning over `open`, so a controlled picker could open against its own prop. + - Fix `maxSelectedDates` not being enforced on month and year cells in `multiple` selection mode. + - Fix keyboard range selection drifting from pointer behavior. Picking a third date restarts the range, and the + hover preview updates for `Enter`, `Home`, `End`, and `PageUp`/`PageDown`. + - Fix reopening the calendar with only a start date restarting the range instead of resuming it. + - **Drawer**: Fix the backdrop flickering on a controlled close when the `open` setter is async. + - **Field**: Fix `Field.Textarea` with `autoresize` dispatching a synthetic `input` event when you set `value` + programmatically, which fed the value back into your framework and broke controlled state. + - **Focus Return**: Fix three focus-trap issues you'd hit with overlays. + - Closing an overlay no longer steals focus back from an element your app focused in the meantime, like a second + dialog opened right after closing the first. + - Closing a nested overlay, such as a popover inside a dialog, no longer throws when the outer container has no + connected focusable element at that moment. + - The focus ring now shows on the returned-to element after you close with `Escape`. + > Affects Dialog, Drawer, Popover, and anything else that traps focus. + - **Image Cropper**: Fix `getCroppedImage()` and `getCropData()` returning a different region from the one you see + after rotating or flipping the image. + - **Marquee**: Fix scroll speed depending on content width. The duration now comes from the content size and the + actual translation distance, so `speed` matches real pixel speed even when the content is narrower than the + viewport. + - **Popover**: Fix tabbing out of portalled content looping back into the content when the trigger was the last + tabbable element on the page. Focus now moves to the next tabbable element after the trigger. + - **Scroll Lock**: Fix the scroll lock targeting `` on layouts where `` is the real scroll container, + which meant nothing was locked while an overlay was open. + - **Signature Pad**: Fix controlled `paths` drifting out of sync because the in-progress stroke was appended to + `paths`. It now stays in `onDraw.currentPath` until the stroke ends. + - **Splitter** + - Fix collapsed panels sizing to `minSize` instead of `collapsedSize`. + - Fix keyboard resizing breaking when a resize trigger got focus while hovered. + - **Tour** + - Fix dismissing a tour from a step's `effect` skipping cleanup, which could miss firing the `completed` status. + - Fix a tooltip step's position resetting unexpectedly when the tour closed. + - Fix a step action with `action: "skip"` doing nothing when clicked. + - **Solid**: Fix a `value` of `null` being read as uncontrolled, so controlled components fell back to internal state. + - **Solid, Svelte**: Fix machine exit actions running when a component was disposed before the machine started. + - **Vue, Svelte**: Fix `defaultValue` being resolved before `value`, unlike React and Solid. + ## [5.22.1] - 2026-06-06 ### Fixed diff --git a/packages/svelte/package.json b/packages/svelte/package.json index fd6a27ef62..64f0d75b23 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -1,7 +1,7 @@ { "name": "@ark-ui/svelte", "type": "module", - "version": "5.22.1", + "version": "5.23.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 44bf830807..7f5c1cf905 100644 --- a/packages/vue/CHANGELOG.md +++ b/packages/vue/CHANGELOG.md @@ -1,5 +1,138 @@ # @ark-ui/vue +## [5.38.0] - 2026-08-01 + +### Added + +- - **Number Input**: Add `largeStep` and `smallStep` props for configurable keyboard stepping. Hold `Shift` for + `largeStep` (defaults to `10 * step`), `Alt` for `smallStep` (defaults to `step / 10`). The defaults match the + previous behavior. + ```jsx + + ``` + - **Slider**: Add `largeStep` prop, applied on `Shift` or `PageUp`/`PageDown` (defaults to `10 * step`). The default + matches the previous behavior. + +- - **Autofocus Control**: Add `data-autofocus` and `data-no-autofocus` to decide what gets focus when an overlay opens. + Mark chrome like the close button with `data-no-autofocus` to skip it, or mark the real target with + `data-autofocus`. + ```jsx + + Close + + + + ``` + Focus goes to `initialFocusEl`, then `[data-autofocus]`, then the first tabbable element without + `[data-no-autofocus]`, then the content root. + > Supported in Dialog and Drawer. + - **Focus Trap**: Add `persistentElements` to treat portalled content as part of the trap when it isn't reachable via + `aria-controls`/`aria-expanded`. Pass getters so the elements can be resolved lazily. + ```jsx + document.getElementById('toast-region')]} /> + ``` + - **Image Cropper**: `getCropData()` now returns the exact `corners` and `outputSize` of the crop in natural-image + pixels, so you can hand the region straight to a server-side cropper. + - **Image Cropper**: Add `maxSize` to `getCroppedImage()` to cap the output dimensions. The crop keeps its aspect + ratio and scales down to fit. + ```jsx + const blob = await imageCropper.getCroppedImage({ maxSize: { width: 512, height: 512 } }) + ``` + +### Fixed + +- Fixed Field input, textarea, and select to render outside `Field.Root` without crashing. + +- Fixed missing `v-model` emit wiring for `Drawer` (`open`, `snapPoint`), `Listbox` (`highlightedValue`), `Marquee` + (`paused`), `DateInput` (`placeholderValue`), and `triggerValue` on Dialog, Drawer, HoverCard, Menu, Popover, and + Tooltip. + +- Exposed the toast content generic on `createToaster` so `CreateToasterReturn` can type custom toast data. + +- Fixed Drawer `Root` and `RootProvider` not emitting `exitComplete` after the close animation. + +- Fixed `Drawer.Root` rejecting `null` for `snapPoint` and `defaultSnapPoint`. + +- Fixed `FileUpload.Root` ignoring the controlled `acceptedFiles` prop. + +- Fixed JsonTreeView `RootProvider` not forwarding root HTML props (such as `class` and `asChild`) to + `TreeView.RootProvider`. + +- Fixed Presence-based components (Dialog, Popover, Menu, Tooltip, etc.) leaking detached DOM nodes after each + open/close cycle when `lazyMount`/`unmountOnExit` is used. The machine's `node` and `styles` refs are now cleared when + the element unmounts. + +- Fixed `SignaturePad.Root` ignoring the controlled `paths` prop. + +- - **Date Input** + - Type dates using your locale's native numerals (Arabic-Indic `٠-٩`, Devanagari `०-९`), not just ASCII digits. + - Fix timezone-naive values (`CalendarDate`/`CalendarDateTime`) shifting by your local UTC offset when you pass a + custom `formatter` without a `timeZone`. A wall-clock value now round-trips unchanged. + - **Date Picker** + - Type dates using your locale's native numerals, not just ASCII digits. + - Reorder dates on blur in range selection, matching the other selection paths. + - Fix the day view briefly flashing when you close the picker from the month or year view. + - Fix `visibleRangeText` returning a stale value when multiple pickers share a visible range. This was also causing + SSR hydration mismatches. + - **Menu**: Fix the context menu flashing at the top-left before positioning. Long-press (touch) context menus no + longer open stuck at `(0,0)`. + - **Number Input** + - Fix `api.setValue` throwing when you pass a number and `formatOptions` is set. + - Fix `Cmd`/`Ctrl` + arrow keys producing values off the `step` grid. + - **Slider**: Fix `Cmd`/`Ctrl` + arrow keys producing values off the `step` grid. + - **Tags Input**: Fix native form submit so `FormData` reflects the current tags. The hidden input used to keep its + initial value after you added, removed, or cleared tags. + - **Toast**: Fix a height flicker when expanding the stack in overlap mode. Heights are now measured without the + `scale` transform. + +- - **Color Picker**: Fix the channel input committing a partial value when you press `Enter` to confirm an IME + composition. + - **Date Input** + - Fix segment text lagging behind while you type over an already committed date. + - Fix in-progress edits being dropped while focus catches up after auto-advance. Fast typing and + `ArrowUp`/`ArrowDown`/`Home`/`End` now land on the segment you're actually editing. + - **Date Picker** + - Fix disabled and read-only pickers still reacting to cell clicks, the clear trigger, and presets. Read-only + pickers keep roving-focus navigation; disabled pickers drop out of the tab order. + - Fix `minView`, `maxView`, and `defaultView` being ignored when resolving the initial view, which was hardcoded to + day through year. + - Fix `defaultOpen` winning over `open`, so a controlled picker could open against its own prop. + - Fix `maxSelectedDates` not being enforced on month and year cells in `multiple` selection mode. + - Fix keyboard range selection drifting from pointer behavior. Picking a third date restarts the range, and the + hover preview updates for `Enter`, `Home`, `End`, and `PageUp`/`PageDown`. + - Fix reopening the calendar with only a start date restarting the range instead of resuming it. + - **Drawer**: Fix the backdrop flickering on a controlled close when the `open` setter is async. + - **Field**: Fix `Field.Textarea` with `autoresize` dispatching a synthetic `input` event when you set `value` + programmatically, which fed the value back into your framework and broke controlled state. + - **Focus Return**: Fix three focus-trap issues you'd hit with overlays. + - Closing an overlay no longer steals focus back from an element your app focused in the meantime, like a second + dialog opened right after closing the first. + - Closing a nested overlay, such as a popover inside a dialog, no longer throws when the outer container has no + connected focusable element at that moment. + - The focus ring now shows on the returned-to element after you close with `Escape`. + > Affects Dialog, Drawer, Popover, and anything else that traps focus. + - **Image Cropper**: Fix `getCroppedImage()` and `getCropData()` returning a different region from the one you see + after rotating or flipping the image. + - **Marquee**: Fix scroll speed depending on content width. The duration now comes from the content size and the + actual translation distance, so `speed` matches real pixel speed even when the content is narrower than the + viewport. + - **Popover**: Fix tabbing out of portalled content looping back into the content when the trigger was the last + tabbable element on the page. Focus now moves to the next tabbable element after the trigger. + - **Scroll Lock**: Fix the scroll lock targeting `` on layouts where `` is the real scroll container, + which meant nothing was locked while an overlay was open. + - **Signature Pad**: Fix controlled `paths` drifting out of sync because the in-progress stroke was appended to + `paths`. It now stays in `onDraw.currentPath` until the stroke ends. + - **Splitter** + - Fix collapsed panels sizing to `minSize` instead of `collapsedSize`. + - Fix keyboard resizing breaking when a resize trigger got focus while hovered. + - **Tour** + - Fix dismissing a tour from a step's `effect` skipping cleanup, which could miss firing the `completed` status. + - Fix a tooltip step's position resetting unexpectedly when the tour closed. + - Fix a step action with `action: "skip"` doing nothing when clicked. + - **Solid**: Fix a `value` of `null` being read as uncontrolled, so controlled components fell back to internal state. + - **Solid, Svelte**: Fix machine exit actions running when a component was disposed before the machine started. + - **Vue, Svelte**: Fix `defaultValue` being resolved before `value`, unlike React and Solid. + ## [5.37.2] - 2026-06-08 ### Fixed diff --git a/packages/vue/package.json b/packages/vue/package.json index 042dcf7acc..485f2f4147 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -1,7 +1,7 @@ { "name": "@ark-ui/vue", "type": "module", - "version": "5.37.2", + "version": "5.38.0", "description": "A collection of unstyled, accessible UI components for Vue, utilizing state machines for seamless interaction.", "keywords": [ "accordion",