# @animxyz/core

> AnimXYZ is a composable animation library that makes your site shine

Latest version **0.6.7** (published 2026-07-15) · MIT license · 0 weekly downloads

## Install

```sh
npm install @animxyz/core
pnpm add @animxyz/core
yarn add @animxyz/core
bun add @animxyz/core
```

## Health

**Score 55/100 (C)** — status: active.

Positive: no vulnerabilities; recently updated; high maintenance score.

Warnings: low downloads; no types; no esm support; pre 1.0.

## Facts

| | |
|---|---|
| Version | 0.6.7 |
| Published | 2026-07-15 |
| First published | 2020-05-05 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 321.2 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 2499 |
| Author | Ingram Projects |
| Maintainers | milesingrams, mattaningram |
| Keywords | css, scss, animation, css-animations, composable-animations, css-framework, functional-css, animxyz |

## Links

- npm: https://www.npmjs.com/package/@animxyz/core
- Repository: https://github.com/ingram-projects/animxyz
- Homepage: https://animxyz.com
- Issues: https://github.com/ingram-projects/animxyz/issues
- npm.io page: https://npm.io/package/@animxyz/core

## Alternatives

- [style-dictionary](https://npm.io/package/style-dictionary.md) — 2.0M weekly downloads
- [postcss-merge-idents](https://npm.io/package/postcss-merge-idents.md) — 1.7M weekly downloads
- [@fontsource/noto-sans](https://npm.io/package/@fontsource/noto-sans.md) — 93.0K weekly downloads
- [uglifycss](https://npm.io/package/uglifycss.md) — 71.6K weekly downloads
- [mat4-interpolate](https://npm.io/package/mat4-interpolate.md) — 23.3K weekly downloads

## Recent versions

- 0.6.7 (latest) — 2026-07-15
- 0.6.6 — 2022-01-12
- 0.6.4 — 2021-06-30
- 0.6.3 — 2021-06-30
- 0.6.2 — 2021-06-29
- 0.6.0 — 2021-06-22
- 0.5.0 — 2021-02-16
- 0.4.0 — 2021-01-17
- 0.3.0 — 2020-12-31
- 0.1.2 — 2020-12-29
- 0.1.1 — 2020-12-15
- 0.1.0 — 2020-11-11
- 0.0.23 — 2020-10-16
- 0.0.22 — 2020-08-20
- 0.0.21 — 2020-05-25
- … 19 more at https://npm.io/package/@animxyz/core/versions

## README

# @animxyz/core

AnimXYZ is a composable animation library that makes your site shine.

See [animxyz.com](https://animxyz.com) for full documentation.

## Testing

Tests live in `test/` and run on the plain Node.js test runner (`node:test`,
no extra framework). From this package directory:

```sh
npm test
```

or from the repo root:

```sh
npm test -w @animxyz/core
# or
turbo run test
```

`turbo run test` builds this package first (the `test` task depends on
`^build` in `turbo.json`), so the snapshot and size-budget tests always run
against freshly built output.

What's covered:

- **Compile test** (`test/compile.test.js`) — `build.scss` compiles without
  errors, and without any Sass deprecation warnings (`build.scss` uses
  `@use`, not `@import`).
- **Mixin API tests** (`test/mixin-api.test.js`) — small fixture `.scss`
  files under `test/fixtures/` `@use` the source directly and invoke the
  public mixins/functions (`xyz-utility`, `xyz-var`, `xyz-set-all`,
  `xyz-animation`, `xyz-make-keyframes`), asserting they compile and spot
  checking emitted declarations. `test/fixtures/xyz-apply.scss` documents a
  **known bug** (tracked by work brief A2, `fix/xyz-apply`): the mixin
  currently always errors due to swapped constructor arguments. Once A2
  lands, flip that test from asserting the `@error` to asserting a
  successful compile. `test/fixtures/xyz-time-levels-override.scss` proves
  that `$xyz-duration-levels` / `$xyz-delay-levels` / `$xyz-stagger-levels`
  remain independently `!default`-overridable after being derived from the
  shared `$xyz-time-levels` map (work brief A3).
- **Snapshot test** (`test/snapshot.test.js`) — compiles `build.scss`
  (expanded), normalizes it (strips comments, collapses whitespace, reflows
  to one declaration per line for reviewable diffs), and compares it against
  the committed `test/__snapshots__/animxyz.css`. If you intentionally
  change compiled output, regenerate the snapshot with:

  ```sh
  npm run test:update-snapshot
  ```

  then review the resulting `git diff` and explain the change in your PR
  description — don't just regenerate and commit blindly.
- **Size budget** (`test/size-budget.test.js`) — asserts the gzipped size of
  `dist/animxyz.min.css` stays under a fixed byte budget (measured size +
  10% headroom). If a change intentionally grows the output, remeasure and
  update `BUDGET_BYTES` in that file with justification in the PR.

## Building from source

This package requires **Dart Sass** to compile `src/*.scss` (see `sass` in
`devDependencies`).

**Minimum Dart Sass version: 1.57.0.** The source uses `sass:string`'s
`string.split()`, which was added in Dart Sass 1.57. If you `@use` this
package's `src/*.scss` directly (rather than consuming the prebuilt
`dist/animxyz.css`), make sure your own Sass compiler is at least 1.57.

---
_Source: https://npm.io/package/@animxyz/core · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
