English
Contributing
The repository is https://github.com/astryx-vue/astryx-vue. Use GitHub Issues. The license is MIT.
Local development needs Node.js ^22.18.0, ^24.11.0, or >=26, and pnpm >=11.21.0. The root package.json engines field is the source of those ranges.
sh
pnpm install
pnpm checkpnpm check runs the package-boundary check, the export sync check, lint, typecheck, tests, the build, and publint on the published packages. A component or theme change is done when that command passes.
packages/core/src/index.ts, composables/index.ts, styles.css, and neutral.css are generated by pnpm sync. The file headers say not to edit them by hand. After adding an export or a style entry, run pnpm sync and commit the generated result.
packages/core/locales/*.json is the upstream Astryx catalog, vendored as data. Do not hand-copy it into messages.ts. Extra locales go through loadAstryxCatalog. The internationalization guide explains how.
Docs:
sh
pnpm devpnpm docs:build builds the site only. Component sidebar groups come from each demo's meta.ts. Guide and theme pages should leave that grouping alone.
Releases use Changesets. The steps are in RELEASING.md. A docs-only change does not need a changeset. Changesets keep the two package versions in one group.
The upstream React implementation is a reference. APIs committed here stay on Vue props, events, slots, and composables. Do not add React or StyleX as a dependency of the public packages.
How close to upstream
The goal is pixel-level parity: apart from being implemented in Vue instead of React, styles, layout, interactions, and copy should match upstream. React and Vue differ only at the implementation layer; a user should not be able to tell the two libraries apart.
packages/core/locales/*.json follows the latest upstream. Re-vendor with node scripts/vendor-astryx-locales.mjs. With no argument it takes the newest commit on upstream main; the commit actually used is recorded in SOURCE.json next to the catalogs.
Comparison shots
Any change to a component, style, or interaction must include comparison shots in the pull request: upstream Astryx on the left, astryx-vue on the right, covering at least desktop and a 390px viewport, each in light and dark.
Reviewers judge the change by those shots and the resulting behaviour, not by reading every line of the diff. The shots are part of the submission, not optional. Docs-only, CI, and internal refactors do not need them.