{"adoption": {"forks": 318, "observed_at": "2026-08-28T04:07:06.795512+00:00", "stars": 2647}, "canonical_url": "https://ross.abutalabs.com/products/fabulousfilter", "card": {"archived": false, "artifact_type": "library", "description": "Android library to animate Floating Action Button to Bottom Sheet Dialog and vice-versa", "domain": ["mobile-development", "frontend", "web-design"], "enriched": true, "function": ["animation", "ui-components", "mobile-framework"], "health_score": 20, "homepage": null, "language": "Java", "license": "Apache-2.0", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["Krupen/FabulousFilter"], "name": "Krupen/FabulousFilter", "platform": ["jvm"], "pushed_at": "2023-09-07T10:31:41+00:00", "repo": "Krupen/FabulousFilter", "stars": 2647, "tags": ["floating-action-button", "bottom-sheet", "material-design", "fab-animation", "android-ui", "android", "mobile"], "topics": ["floating-action-button", "bottomsheet", "bottomsheetdialog", "bottomsheetbehavior", "floatingactionbutton", "java", "library", "morph", "expand", "animation", "animate", "fab", "filter", "dialog"], "urls": [], "use_cases": ["animate fab to bottom sheet dialog in android", "morph floating action button into filter panel", "material design filter interface for android app", "expandable bottom sheet triggered by fab", "android fab bottomsheet animation library"], "what_it_is": "An Android library that animates a FloatingActionButton morphing into a BottomSheetDialog and back. It implements the MaterialUp filter-concept UI pattern for Android apps.", "when_to_avoid": ["you build in Kotlin with Jetpack Compose and want modern declarative animations", "you need a general-purpose bottom sheet library rather than FAB-to-sheet morphing", "you require actively maintained dependencies and recent Android SDK support"], "when_to_choose": ["you want the MaterialUp filter-concept animation between a FAB and a bottom sheet", "your Android app uses Java and supports API 15+", "you need a ready-made, customizable morph animation with configurable duration, interpolator, and peek height"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/fabulousfilter", "repo": "Krupen/FabulousFilter", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:06.795512+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:18:56.663418+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d08d1c9e34dd91d44c8dfebc37e8a11473ca1b0c1f40cd2fb9b5ef527fa3649b", "fetched_at": "2026-08-28T04:07:06.795512+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Krupen/FabulousFilter"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:06.795512+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:18:56.663418+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d08d1c9e34dd91d44c8dfebc37e8a11473ca1b0c1f40cd2fb9b5ef527fa3649b", "fetched_at": "2026-08-28T04:07:06.795512+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Krupen/FabulousFilter"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:18:56.663418+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d08d1c9e34dd91d44c8dfebc37e8a11473ca1b0c1f40cd2fb9b5ef527fa3649b", "fetched_at": "2026-08-28T04:07:06.795512+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Krupen/FabulousFilter"}], "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:07:06.795512+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:06.795512+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:06.795512+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:18:56.663418+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d08d1c9e34dd91d44c8dfebc37e8a11473ca1b0c1f40cd2fb9b5ef527fa3649b", "fetched_at": "2026-08-28T04:07:06.795512+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Krupen/FabulousFilter"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:06.795512+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:06.795512+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:18:56.663418+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d08d1c9e34dd91d44c8dfebc37e8a11473ca1b0c1f40cd2fb9b5ef527fa3649b", "fetched_at": "2026-08-28T04:07:06.795512+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Krupen/FabulousFilter"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:06.795512+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:06.795512+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:06.795512+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:18:56.663418+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d08d1c9e34dd91d44c8dfebc37e8a11473ca1b0c1f40cd2fb9b5ef527fa3649b", "fetched_at": "2026-08-28T04:07:06.795512+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Krupen/FabulousFilter"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:06.795512+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:06.795512+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:18:56.663418+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d08d1c9e34dd91d44c8dfebc37e8a11473ca1b0c1f40cd2fb9b5ef527fa3649b", "fetched_at": "2026-08-28T04:07:06.795512+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Krupen/FabulousFilter"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:18:56.663418+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d08d1c9e34dd91d44c8dfebc37e8a11473ca1b0c1f40cd2fb9b5ef527fa3649b", "fetched_at": "2026-08-28T04:07:06.795512+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Krupen/FabulousFilter"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:18:56.663418+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d08d1c9e34dd91d44c8dfebc37e8a11473ca1b0c1f40cd2fb9b5ef527fa3649b", "fetched_at": "2026-08-28T04:07:06.795512+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Krupen/FabulousFilter"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:18:56.663418+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d08d1c9e34dd91d44c8dfebc37e8a11473ca1b0c1f40cd2fb9b5ef527fa3649b", "fetched_at": "2026-08-28T04:07:06.795512+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Krupen/FabulousFilter"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3355, "days_push": 1091, "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}}