easeul

Installation

Import the layer once and declare the layer order before Tailwind. Getting that order wrong is the single most common failure.

Import the layer

Once, globally. Everything easeful ships lives inside @layer easeful, so your own unlayered CSS always wins without a specificity fight.

css
@layer easeful, theme, base, components, utilities;
@import "easeful";
@import "tailwindcss";

Declare the layer order first

This is the single most common failure, and it fails quietly: the attribute is present, the CSS is loaded, and nothing animates. The @layer line has to come before any @import when Tailwind v4 is present. A layer's position is fixed by where it is first named, so if Tailwind names its layers first, easeful lands after them and loses.

Activate the types

Add easeful/types to the types array in your tsconfig.json. Without it data-motion accepts any string and a misspelt preset name is silent.

json
{
  "compilerOptions": {
    "types": ["easeful/types"]
  }
}