Justin for KMP

A Compose Multiplatform component library driven by Figma M3 Expressive tokens

Browse the components, their props, and code snippets. Targets Android (API 24+) and iOS (16.0+). Same token vocabulary as the Svelte library — switch platforms without learning a new system.

Install

Justin is currently consumed via a Gradle project reference. Maven publishing is wired but the artifact is not yet pushed to a public feed.

// settings.gradle.kts
include(":justinShared")
project(":justinShared").projectDir = file("../path/to/justin/packages/kmp/shared")

// composeApp/build.gradle.kts
commonMain.dependencies {
    implementation(project(":justinShared"))
}

Usage

Wrap your composable tree in AppTheme once at the root. Every Justin composable then picks up tokens, typography and light/dark mode automatically.

import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.runtime.Composable
import com.davidhorn.justin.theme.AppTheme
import com.davidhorn.justin.components.button.DhButton

@Composable
fun App() {
    AppTheme(darkTheme = isSystemInDarkTheme()) {
        DhButton(text = "Save", onClick = { /* ... */ })
    }
}

Components