Skip to content

Latest commit

Β 

History

41 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

JellyFab Logo

A physics-driven Floating Action Button menu for Compose Multiplatform.

Create beautiful, jelly-like floating action menus with natural spring animations using a single API across Android, iOS, Desktop, Web, and Wasm.

Designed for apps that value motion, playfulness, and polished interaction.

πŸ“– Featured on ProAndroidDev Β· Read the article

Maven Central CI API Documentation Kotlin Compose Multiplatform License

JellyFab Demo

🎯 Inspiration

Inspired by this beautiful Dribbble concept:

https://dribbble.com/shots/3908815-Floating-button


πŸ“Έ Demo

JellyFab provides the same smooth, physics-driven floating action menu across every Compose Multiplatform target.

Android iOS
Android Demo iOS Demo
Desktop Web
Desktop Demo Web Demo

πŸš€ Installation

JellyFab is available on Maven Central.

dependencies {
    implementation("io.github.iprashantpanwar:jellyfab:<latest-version>")
}

🧩 Quick Start

val state = rememberJellyFabState()

JellyFab(
    state = state,
    primaryItems = listOf(
        JellyFabItem(Icons.Default.Email) { },
        JellyFabItem(Icons.Default.Notifications) { },
        JellyFabItem(Icons.Default.Settings) { }
    ),
    secondaryItems = listOf(
        JellyFabItem(Icons.Default.Edit) { },
        JellyFabItem(Icons.Default.Share) { }
    )
)

πŸŽ› State

val state = rememberJellyFabState()

state.expanded = true
state.secondaryExpanded = true

βš™οΈ Customization

JellyFab exposes a configurable API allowing you to customize animation timing, spacing, colors, shadows, and motion.

Example:

JellyFab(
    config = JellyFabConfig(
        expandStagger = 0L,
        collapseStagger = 100L,
        bounceFactor = 0.18f,
        shadowOpacity = 0.55f
    )
)

🎨 Appearance

Customize

  • Colors
  • Icons
  • FAB sizes
  • Arc spacing
  • Shadow
  • Scrim
  • Motion

Example:

JellyFab(
    fabColor = Color(0xFFFF6F91),
    secondLayerFabColor = Color(0xFF6BA5FF),
    showScrim = true
)

πŸ— Architecture

Component Responsibility
JellyFab Main composable
JellyFabState Expansion state
JellyPhysics Spring animation engine
JellyBlob Jelly deformation renderer
JellyFabConfig Animation configuration

πŸ“š API Documentation

Browse the latest API documentation:

https://iprashantpanwar.github.io/JellyFab/


🀝 Contributing

Contributions are always welcome.

If you'd like to improve JellyFab:

  • Report bugs
  • Suggest features
  • Improve documentation
  • Submit pull requests

Please use the provided Issue and Pull Request templates.


πŸ›£ Roadmap

  • βœ… Compose Multiplatform migration
  • βœ… Android
  • βœ… iOS
  • βœ… Desktop
  • βœ… JavaScript
  • βœ… Wasm
  • ⏳ More layout options

❀️ Acknowledgements

Thanks to the Compose Multiplatform and Kotlin communities for making modern cross-platform UI development possible.


πŸ“„ License

JellyFab is licensed under the Apache License 2.0.

See the LICENSE file for details.

About

πŸͺΌ JellyFab – a delightful, spring-powered Floating Action Menu for Compose Multiplatform. Elastic blob, soft shadows, smooth arcs, all in pure Compose.

Topics

Resources

Security policy

Stars

57 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages