Skip to content

About

OrbMotion is a Kotlin Multiplatform animation library for expressive AI and agent activity indicators, built with Compose Multiplatform for Android and iOS.

Topics

Resources

Stars

9 stars

Watchers

1 watching

Forks

Repository files navigation

Maven Central GitHub stars

OrbMotion

OrbMotion is a Kotlin Multiplatform animation library for expressive AI and agent activity indicators, built with Compose Multiplatform for Android and iOS.

It provides customizable animated orbs for AI assistants, agents, and interactive interfaces, with support for different states, sizes, speeds, and colors.

Build once with shared Compose UI and reuse the same animations across your Android and iOS applications.

Demo

orbs.mp4

Installation

OrbMotion is published to Maven Central.

For Kotlin Multiplatform projects, add the dependency to your commonMain source set:

With Version Catalog

```toml
[versions]
orbmotion = "1.0.1"

[libraries]
orbmotion = { module = "io.github.valentinerutto:orbmotion", version.ref = "orbmotion" }

kotlin {
    sourceSets {
        commonMain.dependencies {
            implementation(libs.orbmotion)
        }
    }
}

Without a Version Catalog

You can also add the dependency directly:

commonMain.dependencies {
    implementation("io.github.valentinerutto:orbmotion:1.0.1")
}

Supported Platforms

OrbMotion currently supports:

  • Android
  • iOS (iosArm64)
  • iOS Simulator (iosSimulatorArm64)

UI Preview of Supported OrbState values:

SEARCHING
COMPOSING
SOLVING
WEAVING
BREATHING
SHAPING
LISTENING
WORKING
CONNECTING

Usage

This library exposes a single public composable for consumers: AnimatedThinkingOrb. It internally drives animation timing so you don't need to manage elapsedSeconds yourself.

Basic example:

@Composable
fun ThinkingIndicator() {
    AnimatedThinkingOrb(
        state = OrbState.WEAVING,
        size = 120f,
        speed = 1f,
        color = Color.White
    )
}

Customization

AnimatedThinkingOrb can be customized using four main properties:

  • state — choose the animation state, e.g. OrbState.WEAVING
  • size — control the orb size
  • speed — adjust the animation speed
  • color — set the orb color

Orb Size

The orb size can be customized using the following options:

  • OrbSize.Large
  • OrbSize.Small
  • OrbSize.Custom(36.dp)
  • Any Float value, e.g. 120f

Credit & Attribution

OrbMotion is an unofficial Kotlin/Compose Multiplatform adaptation inspired by Thinking Orbs, originally created by Jakub Antalik.

The original Thinking Orbs is a dotted, canvas-based web animation library featuring expressive animation states.

OrbsMotion-kmp brings the core visual concept and animation ideas of Thinking Orbs to Kotlin and Compose Multiplatform, adapting the original Canvas-based approach to Compose's Canvas and DrawScope APIs.

The animations have also been independently adapted and modified for this implementation, including changes to animation behavior, timing, movement, and visual characteristics.

Original Project

Attribution

The original Thinking Orbs project and its original animation concepts are credited to Jakub Antalik.

Original project and animation concepts: © Jakub Antalik Kotlin/Compose Multiplatform adaptation and modifications: © Valentine Rutto

OrbsMotion-kmp is an independent, unofficial project and is not affiliated with, sponsored by, or endorsed by Jakub Antalik.

If you're looking for the original web implementation, please visit the Original Thinking Orbs project.

License

MIT © Valentine Rutto — see LICENSE.

The original Thinking Orbs project is MIT © Jakub Antalik. The original MIT license and required copyright notice are preserved in THIRD_PARTY_NOTICES.md.

About

OrbMotion is a Kotlin Multiplatform animation library for expressive AI and agent activity indicators, built with Compose Multiplatform for Android and iOS.

Topics

Resources

Stars

9 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages