{"adoption": {"forks": 50, "observed_at": "2026-08-28T04:06:06.910917+00:00", "stars": 2036}, "canonical_url": "https://ross.abutalabs.com/products/morphicons", "card": {"archived": false, "artifact_type": "library", "description": "Any icon morphs into any other — universal morphing for stroke-based icons with spring physics. Zero dependencies, ~7 KB gzip.", "domain": ["frontend", "web-development", "graphics"], "enriched": true, "function": ["animation", "ui-components", "frontend-framework"], "health_score": 100, "homepage": "https://www.morphicons.com", "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["guillermolg00/morphicons"], "name": "guillermolg00/morphicons", "platform": ["browser", "cross-platform"], "pushed_at": "2026-08-24T22:08:21+00:00", "repo": "guillermolg00/morphicons", "stars": 2036, "tags": ["svg", "icons", "morphing", "spring-physics", "react", "vue", "svelte", "react-native", "astro", "web-component", "typescript", "zero-dependencies", "lucide", "tabler", "heroicons", "web-server", "nodejs"], "topics": ["animation", "icons", "morphing", "react", "svg", "typescript"], "urls": [], "use_cases": ["animate a menu icon morphing into a close icon on toggle", "morph between any two Lucide, Tabler, or Heroicons icons", "add spring-based icon transitions to a React or Vue app", "use animated icons in React Native with react-native-svg", "render morphing icons as a framework-agnostic web component", "build icon transition animations without hand-declaring rotation groups"], "what_it_is": "morphicons is a TypeScript library that morphs any stroke-based SVG icon into any other with spring physics, using closed-form 2D Procrustes alignment so rotations emerge automatically. It ships framework bindings for React, Vue, Svelte, React Native, Astro, and a custom element, with zero runtime dependencies and a ~6.5 KB gzipped core.", "when_to_avoid": ["you need to morph filled or complex multi-path icons rather than stroke-based ones", "you only need static icons with no animation", "you need color or fill interpolation, not just stroke path morphing", "your project requires CommonJS rather than ESM"], "when_to_choose": ["you need smooth icon-to-icon morph animations with spring physics", "you want a tiny, dependency-free animation library", "you use multiple stroke icon sets and want them to interoperate", "you want rotations computed automatically rather than configured by hand", "you need the same morphing behavior across React, Vue, Svelte, React Native, or plain JS"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/morphicons", "repo": "guillermolg00/morphicons", "role": "main", "score": 79}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:06.910917+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:59:19.544668+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ff237f05dab01022a2a730b2188dc28664bbacd5aaf516edbfb2388ac1ea904", "fetched_at": "2026-08-28T04:06:06.910917+00:00", "kind": "readme", "missing": false, "url": "https://github.com/guillermolg00/morphicons"}, {"content_hash": "326500726e5bc366cb28cc4e4980eca1b5f59943dcc937472e84c598ec008bda", "fetched_at": "2026-08-29T10:38:59.702902+00:00", "kind": "homepage", "missing": false, "url": "https://www.morphicons.com"}, {"content_hash": "47e50ce7748e863e834562ad9fc6d52850508bb77c028c2fc57d33dd84df7c24", "fetched_at": "2026-08-29T10:38:59.705559+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/morphicons"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:06.910917+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:59:19.544668+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ff237f05dab01022a2a730b2188dc28664bbacd5aaf516edbfb2388ac1ea904", "fetched_at": "2026-08-28T04:06:06.910917+00:00", "kind": "readme", "missing": false, "url": "https://github.com/guillermolg00/morphicons"}, {"content_hash": "326500726e5bc366cb28cc4e4980eca1b5f59943dcc937472e84c598ec008bda", "fetched_at": "2026-08-29T10:38:59.702902+00:00", "kind": "homepage", "missing": false, "url": "https://www.morphicons.com"}, {"content_hash": "47e50ce7748e863e834562ad9fc6d52850508bb77c028c2fc57d33dd84df7c24", "fetched_at": "2026-08-29T10:38:59.705559+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/morphicons"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:59:19.544668+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ff237f05dab01022a2a730b2188dc28664bbacd5aaf516edbfb2388ac1ea904", "fetched_at": "2026-08-28T04:06:06.910917+00:00", "kind": "readme", "missing": false, "url": "https://github.com/guillermolg00/morphicons"}, {"content_hash": "326500726e5bc366cb28cc4e4980eca1b5f59943dcc937472e84c598ec008bda", "fetched_at": "2026-08-29T10:38:59.702902+00:00", "kind": "homepage", "missing": false, "url": "https://www.morphicons.com"}, {"content_hash": "47e50ce7748e863e834562ad9fc6d52850508bb77c028c2fc57d33dd84df7c24", "fetched_at": "2026-08-29T10:38:59.705559+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/morphicons"}], "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:06:06.910917+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:06.910917+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:06.910917+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:59:19.544668+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ff237f05dab01022a2a730b2188dc28664bbacd5aaf516edbfb2388ac1ea904", "fetched_at": "2026-08-28T04:06:06.910917+00:00", "kind": "readme", "missing": false, "url": "https://github.com/guillermolg00/morphicons"}, {"content_hash": "326500726e5bc366cb28cc4e4980eca1b5f59943dcc937472e84c598ec008bda", "fetched_at": "2026-08-29T10:38:59.702902+00:00", "kind": "homepage", "missing": false, "url": "https://www.morphicons.com"}, {"content_hash": "47e50ce7748e863e834562ad9fc6d52850508bb77c028c2fc57d33dd84df7c24", "fetched_at": "2026-08-29T10:38:59.705559+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/morphicons"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:06.910917+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:06.910917+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:59:19.544668+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ff237f05dab01022a2a730b2188dc28664bbacd5aaf516edbfb2388ac1ea904", "fetched_at": "2026-08-28T04:06:06.910917+00:00", "kind": "readme", "missing": false, "url": "https://github.com/guillermolg00/morphicons"}, {"content_hash": "326500726e5bc366cb28cc4e4980eca1b5f59943dcc937472e84c598ec008bda", "fetched_at": "2026-08-29T10:38:59.702902+00:00", "kind": "homepage", "missing": false, "url": "https://www.morphicons.com"}, {"content_hash": "47e50ce7748e863e834562ad9fc6d52850508bb77c028c2fc57d33dd84df7c24", "fetched_at": "2026-08-29T10:38:59.705559+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/morphicons"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:06.910917+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:06.910917+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:06.910917+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:59:19.544668+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ff237f05dab01022a2a730b2188dc28664bbacd5aaf516edbfb2388ac1ea904", "fetched_at": "2026-08-28T04:06:06.910917+00:00", "kind": "readme", "missing": false, "url": "https://github.com/guillermolg00/morphicons"}, {"content_hash": "326500726e5bc366cb28cc4e4980eca1b5f59943dcc937472e84c598ec008bda", "fetched_at": "2026-08-29T10:38:59.702902+00:00", "kind": "homepage", "missing": false, "url": "https://www.morphicons.com"}, {"content_hash": "47e50ce7748e863e834562ad9fc6d52850508bb77c028c2fc57d33dd84df7c24", "fetched_at": "2026-08-29T10:38:59.705559+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/morphicons"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:06.910917+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:06.910917+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:59:19.544668+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ff237f05dab01022a2a730b2188dc28664bbacd5aaf516edbfb2388ac1ea904", "fetched_at": "2026-08-28T04:06:06.910917+00:00", "kind": "readme", "missing": false, "url": "https://github.com/guillermolg00/morphicons"}, {"content_hash": "326500726e5bc366cb28cc4e4980eca1b5f59943dcc937472e84c598ec008bda", "fetched_at": "2026-08-29T10:38:59.702902+00:00", "kind": "homepage", "missing": false, "url": "https://www.morphicons.com"}, {"content_hash": "47e50ce7748e863e834562ad9fc6d52850508bb77c028c2fc57d33dd84df7c24", "fetched_at": "2026-08-29T10:38:59.705559+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/morphicons"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:59:19.544668+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ff237f05dab01022a2a730b2188dc28664bbacd5aaf516edbfb2388ac1ea904", "fetched_at": "2026-08-28T04:06:06.910917+00:00", "kind": "readme", "missing": false, "url": "https://github.com/guillermolg00/morphicons"}, {"content_hash": "326500726e5bc366cb28cc4e4980eca1b5f59943dcc937472e84c598ec008bda", "fetched_at": "2026-08-29T10:38:59.702902+00:00", "kind": "homepage", "missing": false, "url": "https://www.morphicons.com"}, {"content_hash": "47e50ce7748e863e834562ad9fc6d52850508bb77c028c2fc57d33dd84df7c24", "fetched_at": "2026-08-29T10:38:59.705559+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/morphicons"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:59:19.544668+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ff237f05dab01022a2a730b2188dc28664bbacd5aaf516edbfb2388ac1ea904", "fetched_at": "2026-08-28T04:06:06.910917+00:00", "kind": "readme", "missing": false, "url": "https://github.com/guillermolg00/morphicons"}, {"content_hash": "326500726e5bc366cb28cc4e4980eca1b5f59943dcc937472e84c598ec008bda", "fetched_at": "2026-08-29T10:38:59.702902+00:00", "kind": "homepage", "missing": false, "url": "https://www.morphicons.com"}, {"content_hash": "47e50ce7748e863e834562ad9fc6d52850508bb77c028c2fc57d33dd84df7c24", "fetched_at": "2026-08-29T10:38:59.705559+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/morphicons"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:59:19.544668+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ff237f05dab01022a2a730b2188dc28664bbacd5aaf516edbfb2388ac1ea904", "fetched_at": "2026-08-28T04:06:06.910917+00:00", "kind": "readme", "missing": false, "url": "https://github.com/guillermolg00/morphicons"}, {"content_hash": "326500726e5bc366cb28cc4e4980eca1b5f59943dcc937472e84c598ec008bda", "fetched_at": "2026-08-29T10:38:59.702902+00:00", "kind": "homepage", "missing": false, "url": "https://www.morphicons.com"}, {"content_hash": "47e50ce7748e863e834562ad9fc6d52850508bb77c028c2fc57d33dd84df7c24", "fetched_at": "2026-08-29T10:38:59.705559+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/morphicons"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 2, "rhythm": 97}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["young"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 32, "days_push": 9, "days_rel": 20, "gap_med": 0.5, "n_releases_24m": 11}, "score": 79, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}