{"adoption": {"forks": 173, "observed_at": "2026-08-28T04:08:14.818719+00:00", "stars": 3693}, "canonical_url": "https://ross.abutalabs.com/products/sal", "card": {"archived": false, "artifact_type": "library", "description": "🚀 Performance focused, lightweight scroll animation library 🚀", "domain": ["frontend", "web-development"], "enriched": true, "function": ["animation", "ui-components"], "health_score": 20, "homepage": "https://mciastek.github.io/sal/", "language": "HTML", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["mciastek/sal"], "name": "mciastek/sal", "platform": ["browser"], "pushed_at": "2023-01-07T04:11:22+00:00", "repo": "mciastek/sal", "stars": 3693, "tags": ["scroll-animation", "intersection-observer", "vanilla-javascript", "lightweight", "zero-dependencies", "javascript"], "topics": [], "urls": [], "use_cases": ["animate elements on scroll", "add fade or slide effects when elements enter the viewport", "lightweight scroll reveal animations without jQuery", "performant scroll-triggered animations using Intersection Observer", "add entrance animations to a landing page", "customize animation duration, delay, and easing via data attributes"], "what_it_is": "Sal (Scroll Animation Library) is a lightweight, dependency-free JavaScript library for animating elements as they scroll into the viewport. It uses the Intersection Observer API for high performance and is configured via simple data attributes in HTML.", "when_to_avoid": ["you need advanced scroll-linked or parallax animations, not just entrance reveals", "you must support very old browsers without Intersection Observer and don't want a polyfill", "you want a full-featured animation engine like GSAP with timelines and keyframes", "you need actively developed software with frequent updates"], "when_to_choose": ["you need a tiny (<3 kb), zero-dependency scroll animation solution", "you want simple declarative setup with data attributes", "performance matters and you want to leverage Intersection Observer", "you only need basic fade, slide, zoom, and flip entrance animations"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/sal", "repo": "mciastek/sal", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:14.818719+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:31:06.418053+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4a5a4a2d9c85607e9b46402f5c42b39c09852bf0eadde36cb180eb37febf9d4f", "fetched_at": "2026-08-28T04:08:14.818719+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mciastek/sal"}, {"content_hash": "c4b12348574ee08f591c22965684d8427f1718f643bd6a94e7c6060d68613a11", "fetched_at": "2026-08-29T09:24:45.628718+00:00", "kind": "homepage", "missing": false, "url": "https://mciastek.github.io/sal/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:14.818719+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:31:06.418053+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4a5a4a2d9c85607e9b46402f5c42b39c09852bf0eadde36cb180eb37febf9d4f", "fetched_at": "2026-08-28T04:08:14.818719+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mciastek/sal"}, {"content_hash": "c4b12348574ee08f591c22965684d8427f1718f643bd6a94e7c6060d68613a11", "fetched_at": "2026-08-29T09:24:45.628718+00:00", "kind": "homepage", "missing": false, "url": "https://mciastek.github.io/sal/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:31:06.418053+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4a5a4a2d9c85607e9b46402f5c42b39c09852bf0eadde36cb180eb37febf9d4f", "fetched_at": "2026-08-28T04:08:14.818719+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mciastek/sal"}, {"content_hash": "c4b12348574ee08f591c22965684d8427f1718f643bd6a94e7c6060d68613a11", "fetched_at": "2026-08-29T09:24:45.628718+00:00", "kind": "homepage", "missing": false, "url": "https://mciastek.github.io/sal/"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:08:14.818719+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:14.818719+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:14.818719+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:31:06.418053+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4a5a4a2d9c85607e9b46402f5c42b39c09852bf0eadde36cb180eb37febf9d4f", "fetched_at": "2026-08-28T04:08:14.818719+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mciastek/sal"}, {"content_hash": "c4b12348574ee08f591c22965684d8427f1718f643bd6a94e7c6060d68613a11", "fetched_at": "2026-08-29T09:24:45.628718+00:00", "kind": "homepage", "missing": false, "url": "https://mciastek.github.io/sal/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:14.818719+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:14.818719+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:31:06.418053+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4a5a4a2d9c85607e9b46402f5c42b39c09852bf0eadde36cb180eb37febf9d4f", "fetched_at": "2026-08-28T04:08:14.818719+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mciastek/sal"}, {"content_hash": "c4b12348574ee08f591c22965684d8427f1718f643bd6a94e7c6060d68613a11", "fetched_at": "2026-08-29T09:24:45.628718+00:00", "kind": "homepage", "missing": false, "url": "https://mciastek.github.io/sal/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:14.818719+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:14.818719+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:14.818719+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:31:06.418053+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4a5a4a2d9c85607e9b46402f5c42b39c09852bf0eadde36cb180eb37febf9d4f", "fetched_at": "2026-08-28T04:08:14.818719+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mciastek/sal"}, {"content_hash": "c4b12348574ee08f591c22965684d8427f1718f643bd6a94e7c6060d68613a11", "fetched_at": "2026-08-29T09:24:45.628718+00:00", "kind": "homepage", "missing": false, "url": "https://mciastek.github.io/sal/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:14.818719+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:14.818719+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:31:06.418053+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4a5a4a2d9c85607e9b46402f5c42b39c09852bf0eadde36cb180eb37febf9d4f", "fetched_at": "2026-08-28T04:08:14.818719+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mciastek/sal"}, {"content_hash": "c4b12348574ee08f591c22965684d8427f1718f643bd6a94e7c6060d68613a11", "fetched_at": "2026-08-29T09:24:45.628718+00:00", "kind": "homepage", "missing": false, "url": "https://mciastek.github.io/sal/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:31:06.418053+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4a5a4a2d9c85607e9b46402f5c42b39c09852bf0eadde36cb180eb37febf9d4f", "fetched_at": "2026-08-28T04:08:14.818719+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mciastek/sal"}, {"content_hash": "c4b12348574ee08f591c22965684d8427f1718f643bd6a94e7c6060d68613a11", "fetched_at": "2026-08-29T09:24:45.628718+00:00", "kind": "homepage", "missing": false, "url": "https://mciastek.github.io/sal/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:31:06.418053+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4a5a4a2d9c85607e9b46402f5c42b39c09852bf0eadde36cb180eb37febf9d4f", "fetched_at": "2026-08-28T04:08:14.818719+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mciastek/sal"}, {"content_hash": "c4b12348574ee08f591c22965684d8427f1718f643bd6a94e7c6060d68613a11", "fetched_at": "2026-08-29T09:24:45.628718+00:00", "kind": "homepage", "missing": false, "url": "https://mciastek.github.io/sal/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:31:06.418053+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4a5a4a2d9c85607e9b46402f5c42b39c09852bf0eadde36cb180eb37febf9d4f", "fetched_at": "2026-08-28T04:08:14.818719+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mciastek/sal"}, {"content_hash": "c4b12348574ee08f591c22965684d8427f1718f643bd6a94e7c6060d68613a11", "fetched_at": "2026-08-29T09:24:45.628718+00:00", "kind": "homepage", "missing": false, "url": "https://mciastek.github.io/sal/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3262, "days_push": 1334, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}