Skip to content

🎛️ Automatically generates UI which allows users to call any function (including composable ones) with any parameter values. Useful for building demo screens in playground apps of design systems

License

popovanton0/kira

Repository files navigation

Kira

Project Status: Suspended – Initial development has started, but there has not yet been a stable, usable release; work has been stopped for the time being but the author(s) intend on resuming work. Compatible with Compose — 1.2.0

Kira is an Android library that defines a Kotlin DSL (similar to androidx.preference) for creating UI that allows users to call any function (including @Composable ones) with any parameter values.

Kira also includes annotation-processor kira-processor that ✨automagically✨ generates UI for functions using the DSL.

Library is particularly useful for building demo screens for UI components in playground apps of various design systems.

Example

@Kira
@Composable
fun TextCard(
    text: String,
    isRed: Boolean,
    skill: Skill?,
    food: Food,
) = TODO()

Generated code (only a portion):

kira(TextCardScope()) {
    text = string(paramName = "text", defaultValue = "Lorem")
    isRed = boolean(paramName = "isRed", defaultValue = false)
    skill = nullableEnum(paramName = "skill", defaultValue = null)
    food = enum(paramName = "food")
    injector {
        TextCard(
            text = text.currentValue(),
            isRed = isRed.currentValue(),
            skill = skill.currentValue(),
            food = food.currentValue(),
        )
    }
}

Screenshot of the UI demo screen:

Horizontal ListItems present for each function argument that allow user to provide any value of the argument's type to the function's arguments

Horizontal ListItems present for each function argument that allow user to provide any value of the argument's type to the function's arguments

Demo Video

Kira — Early Demo on YouTube

Getting Started

Release

Add the following code to your project's root build.gradle file:

repositories {
    maven { url "https://jitpack.io" }
}

Next, add the dependency below to your module's build.gradle file:

dependencies {
    implementation "com.github.popovanton0:kira:LATEST_VERSION"
    ksp "com.github.popovanton0.kira:kira-processor:LATEST_VERSION"
}

Usage

Examples are in the source code .

Basic

TODO()

About

🎛️ Automatically generates UI which allows users to call any function (including composable ones) with any parameter values. Useful for building demo screens in playground apps of design systems

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages