Skip to content
Merged
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
8 changes: 8 additions & 0 deletions .changeset/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Changesets

Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
with multi-package repos, or single-package repos to help you version and publish your code. You can
find the full documentation for it [in the main repo](https://github.com/changesets/changesets)

We have a quick list of common questions to get you started engaging with this project in
[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md)
10 changes: 10 additions & 0 deletions .changeset/carousel-fixes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
"@ark-ui/react": patch
"@ark-ui/solid": patch
"@ark-ui/svelte": patch
"@ark-ui/vue": patch
---

**Carousel**: Fixed controlled carousel inside dialog jumping or skipping pages. Fixed navigation inside CSS-transformed
containers (e.g., dialogs with open/close animations). Fixed scroll position drifting when container layout shifts (e.g.,
scrollbar removal).
18 changes: 18 additions & 0 deletions .changeset/changelog-format.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/** @type {import("@changesets/types").ChangelogFunctions} */
const changelogFunctions = {
getReleaseLine: async (changeset, _type) => {
const lines = changeset.summary
.split('\n')
.map((l) => l.trimEnd())
.filter(Boolean)

const [firstLine, ...rest] = lines
return `\n- ${firstLine}\n${rest.map((l) => ` ${l}`).join('\n')}`.trimEnd()
},

getDependencyReleaseLine: async () => {
return ''
},
}

module.exports = { default: changelogFunctions }
8 changes: 8 additions & 0 deletions .changeset/color-picker-fix.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
"@ark-ui/react": patch
"@ark-ui/solid": patch
"@ark-ui/svelte": patch
"@ark-ui/vue": patch
---

**Color Picker**: Fixed vertical slider orientation not preserved on pointer updates.
11 changes: 11 additions & 0 deletions .changeset/config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"$schema": "https://unpkg.com/@changesets/config@3.1.1/schema.json",
"changelog": "./changelog-format.cjs",
"commit": false,
"fixed": [],
"linked": [],
"access": "public",
"baseBranch": "main",
"updateInternalDependencies": "patch",
"ignore": ["@ark-ui/next-js", "@ark-ui/nuxt", "@ark-ui/solid-start", "svelte-kit", "@ark-ui/scripts"]
}
8 changes: 8 additions & 0 deletions .changeset/date-input-focus.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
"@ark-ui/react": patch
"@ark-ui/solid": patch
"@ark-ui/svelte": patch
"@ark-ui/vue": patch
---

**Date Input**: Improved focus management.
10 changes: 10 additions & 0 deletions .changeset/field-item-component.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
'@ark-ui/react': minor
'@ark-ui/solid': minor
'@ark-ui/svelte': minor
'@ark-ui/vue': minor
---

**Field**: Added `Field.Item` component and `target` prop on `Field.Root` for multi-control fields (e.g., currency
select + amount input). Use `Field.Item` with a `value` to scope controls, and `target` to specify which item the label
should focus when clicked.
11 changes: 11 additions & 0 deletions .changeset/floating-panel-fixes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
"@ark-ui/react": patch
"@ark-ui/solid": patch
"@ark-ui/svelte": patch
"@ark-ui/vue": patch
---

**Floating Panel**: Fixed `open` taking precedence over `defaultOpen` during initialization. Fixed `setPosition` and
`setSize` to work independently of drag/resize state. Fixed maximize/minimize restore reverting to `(0, 0)` in
controlled mode. Fixed `Maximum update depth exceeded` when content uses `ResizeObserver` (React). Fixed Escape during
drag/resize to cancel and revert to original position/size.
36 changes: 36 additions & 0 deletions .changeset/format-changelogs.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
const fs = require('node:fs')
const path = require('node:path')

const PACKAGES_DIR = path.resolve(__dirname, '..', 'packages')

const SECTION_MAP = {
'Major Changes': 'Changed',
'Minor Changes': 'Added',
'Patch Changes': 'Fixed',
}

const SEMVER_HEADING_RE =
/## (\d+\.\d+\.\d+(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?)\n/g

const CHANGESET_SECTION_HEADING_RE = /### (Major|Minor|Patch) Changes\n/g

function formatChangelog(content) {
const date = new Date().toISOString().split('T')[0]
return content
.replace(SEMVER_HEADING_RE, (_, version) => `## [${version}] - ${date}\n`)
.replace(CHANGESET_SECTION_HEADING_RE, (_, type) => `### ${SECTION_MAP[`${type} Changes`]}\n`)
}

const packages = fs.readdirSync(PACKAGES_DIR).filter((dir) => {
const changelogPath = path.join(PACKAGES_DIR, dir, 'CHANGELOG.md')
return fs.existsSync(changelogPath)
})

for (const pkg of packages) {
const changelogPath = path.join(PACKAGES_DIR, pkg, 'CHANGELOG.md')
const content = fs.readFileSync(changelogPath, 'utf-8')
const formatted = formatChangelog(content)
if (formatted !== content) {
fs.writeFileSync(changelogPath, formatted)
}
}
9 changes: 9 additions & 0 deletions .changeset/interaction-hooks.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
"@ark-ui/react": minor
"@ark-ui/solid": minor
"@ark-ui/svelte": minor
"@ark-ui/vue": minor
---

**Interaction**: Added `useInteractionModality` and `useFocusVisible` hooks for tracking user input method (keyboard,
pointer, virtual) and conditionally showing focus rings.
10 changes: 10 additions & 0 deletions .changeset/listbox-keyboard-priority.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
"@ark-ui/react": minor
"@ark-ui/solid": minor
"@ark-ui/svelte": minor
"@ark-ui/vue": minor
---

**Listbox**: Added `keyboardPriority` to input props to control whether key handling prioritizes text editing or list
navigation for `Home`/`End` and horizontal arrows in grid collections. Added `highlightFirst`, `highlightLast`,
`highlightNext`, and `highlightPrevious` to the API for programmatic highlight navigation.
6 changes: 6 additions & 0 deletions .changeset/mcp-stdout-fix.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'@ark-ui/mcp': patch
---

Fixed MCP server startup error in Google Antigravity and other MCP clients by using `console.error`
instead of `console.info` for startup messages, preventing stdout pollution of the MCP protocol.
8 changes: 8 additions & 0 deletions .changeset/menu-aria-fix.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
"@ark-ui/react": patch
"@ark-ui/solid": patch
"@ark-ui/svelte": patch
"@ark-ui/vue": patch
---

**Menu**: Fixed trigger to keep `aria-expanded="false"` when closed.
8 changes: 8 additions & 0 deletions .changeset/pin-input-fix.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
"@ark-ui/react": patch
"@ark-ui/solid": patch
"@ark-ui/svelte": patch
"@ark-ui/vue": patch
---

**Pin Input**: Fixed crash when typing the same character in a completed pin input.
8 changes: 8 additions & 0 deletions .changeset/radio-tabs-indicator-fix.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
"@ark-ui/react": patch
"@ark-ui/solid": patch
"@ark-ui/svelte": patch
"@ark-ui/vue": patch
---

**Radio Group, Tabs**: Fixed indicator only animating on value change, not on initial render or resize.
8 changes: 8 additions & 0 deletions .changeset/tags-input-allow-duplicates.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
"@ark-ui/react": minor
"@ark-ui/solid": minor
"@ark-ui/svelte": minor
"@ark-ui/vue": minor
---

**Tags Input**: Added `allowDuplicates` prop to allow duplicate tags.
9 changes: 9 additions & 0 deletions .changeset/translations-prop.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
"@ark-ui/react": minor
"@ark-ui/solid": minor
"@ark-ui/svelte": minor
"@ark-ui/vue": minor
---

**Clipboard, Navigation Menu, Popover, Select, Timer, Tree View**: Added `translations` prop for localizing hardcoded
accessibility labels.
21 changes: 21 additions & 0 deletions .claude/docs/development.md
Original file line number Diff line number Diff line change
Expand Up @@ -436,3 +436,24 @@ bun run web build
# Generate content (Velite)
bun run web prepare
```

## Releases

Versioning and npm publishing use [Changesets](https://github.com/changesets/changesets).

**Contributors:** After a user-facing change, add a changeset from the repo root:

```bash
bun changeset
```

Commit the generated file under `.changeset/` with your PR.

**Maintainers:** Pushes to `main` run `.github/workflows/release.yml`. The Changesets GitHub Action either opens a
**Version packages** PR (when there are `.changeset/*.md` files to consume) or **publishes to npm** when `main` already
contains version bumps and those versions are not yet on the registry. If everything is already published, the job does
nothing. The workflow runs `bun run version`, which applies `changeset version` and reformats package `CHANGELOG.md`
files via `.changeset/format-changelogs.cjs` (semver headings, including pre-releases and build metadata).

The repository needs an **`NPM_TOKEN`** secret (use an npm **automation** or granular token so CI can publish under 2FA)
with permission to publish the `@ark-ui/*` packages.
39 changes: 39 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: Release

on:
push:
branches:
- main

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}

jobs:
release:
name: Release
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
id-token: write
steps:
- name: Checkout branch
uses: actions/checkout@v6

- name: Install
uses: ./.github/composite-actions/install

- name: Build packages
run: bun run build

- name: Create Release Pull Request or Publish
id: changesets
uses: changesets/action@v1
with:
version: bun run version
publish: bun changeset publish
title: "chore: release packages"
commit: "chore: release packages"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
Loading
Loading