{
  "schemaVersion": 1,
  "type": "resource",
  "id": "motion-primitives",
  "evaluation": {
    "reviewedOn": "2026-10-19",
    "status": "checked",
    "modes": [
      "http",
      "browser",
      "source-review"
    ],
    "summary": "The public demo opens a dialog and closes it with Escape. The documentation gap is resolved; local integration, dependency safety and comprehensive accessibility remain untested.",
    "reportUrl": "/design-evaluations/resource-motion-primitives.json",
    "identity": {
      "target": "https://motion-primitives.com/",
      "version": "Unversioned public page observed 2026-10-19",
      "integrity": "SHA-256 95f092f909856db76014bbca882ebcc1cea8d8e884ef86c954959ed52ea7544d of one initial HTML response (71246 bytes). This does not fingerprint the entire application or its dependencies."
    },
    "environment": [
      "Windows; Chrome 155.0.8059.82 headless via Playwright, fresh isolated contexts with a 1365 × 900 viewport.",
      "Reduced motion requested. GET/HEAD requests allowed; other methods and WebSocket connections blocked.",
      "No owner browser profile, account, credentials, purchase, upload, private fixture or service write."
    ],
    "tests": [
      {
        "name": "Public documentation",
        "mode": "browser",
        "method": "Open the site and confirm the linked official repository.",
        "result": "pass",
        "observation": "HTTP 200 and interactive component demos rendered."
      },
      {
        "name": "Dialog interaction",
        "mode": "browser",
        "method": "Open the public dialog, wait for animation, press Escape and wait for exit.",
        "result": "pass",
        "observation": "Visible dialog count changed from 1 to 0."
      },
      {
        "name": "Application integration",
        "mode": "browser",
        "method": "Install or copy the component into a project.",
        "result": "not-run",
        "observation": "This lane tested the publisher's hosted demo, not a pinned local dependency fixture."
      }
    ],
    "security": {
      "scope": "Public demo navigation, request destinations and official repository description; no dependency audit.",
      "findings": [
        {
          "level": "info",
          "basis": "observed",
          "title": "Demo media comes from several origins",
          "detail": "The initial demo loaded image/media assets from Pinterest, Spotify and Cosmos-related hosts alongside analytics scripts. That is a property of the hosted example, not proof that copied components make the same requests."
        },
        {
          "level": "caution",
          "basis": "advice",
          "title": "Audit the component you actually adopt",
          "detail": "Inspect imports, dependencies and any remote assets in the selected component. Validate focus handling and reduced-motion behavior inside your own application."
        }
      ],
      "limits": [
        "Passive public-page observations and the stated bounded sample only; no exploitation, authenticated authorization, backend, retention or comprehensive dependency audit.",
        "Request blocking changes application behavior; no secure/safe certification is implied."
      ]
    },
    "practicalCaveats": [
      "Wait for exit animations when checking dialog state; the initial immediate count was premature and the delayed check resolved it.",
      "A hosted-demo pass does not establish library-wide keyboard or screen-reader behavior."
    ],
    "limits": [
      "No package installation, lockfile audit, local build, performance benchmark or full accessibility test.",
      "Only one dialog sample was asserted; other components were not validated."
    ],
    "sources": [
      {
        "label": "Public component demos",
        "url": "https://motion-primitives.com/"
      },
      {
        "label": "Official repository",
        "url": "https://github.com/ibelick/motion-primitives"
      }
    ]
  }
}
