Skip to content

nikoG4/AdaptiveKt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

71 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
AdaptiveKt

AdaptiveKt

Maven Central CI License Kotlin Compose Multiplatform Docs

Adaptive UI primitives for Compose Multiplatform.

AdaptiveKt is an alpha-stage Kotlin and Compose Multiplatform library for building responsive admin, productivity, and data-heavy interfaces from shared UI code. It focuses on the unglamorous but expensive parts of real app UI: layout breakpoints, dashboard shells, tables that become mobile cards, form sections, feedback states, navigation patterns, and reusable component defaults that look professional without requiring every call site to carry a wall of modifiers.

The project is published to Maven Central as 0.1.0-alpha01. It is usable for experimentation, demos, internal tools, and early integration feedback, but it is not a stable 1.0 API yet. APIs may change before beta/stable releases as the library hardens.

Why AdaptiveKt?

Compose Multiplatform makes it possible to share UI across platforms, but teams still need to solve responsive product UI patterns themselves. A simple admin screen often needs breakpoint rules, navigation mode changes, mobile-friendly data cards, clean action states, form layout decisions, empty/loading/error states, and consistent theme tokens.

AdaptiveKt exists to reduce that friction for Kotlin Multiplatform developers. Its direction is commonMain-first: shared primitives should work across Desktop/JVM, Android, Web/Wasm, and iOS where the underlying Compose Multiplatform tooling supports them.

This is not a replacement for Material, nor a claim to be a complete enterprise design system. AdaptiveKt is a focused toolkit for adaptive app patterns that can complement a product's own brand and component layer.

What It Includes

Module Purpose
adaptive-core Breakpoints, tokens, theme foundation, color schemes, typography, and state tokens.
adaptive-components Buttons, icon buttons, badges, avatars, thumbnails, chips, cards, surfaces, fields, menus, select, multi-select, carousel, and embedded functional icons.
adaptive-layout Responsive layout primitives such as AdaptiveContainer and AdaptiveGrid.
adaptive-feedback Empty, loading, and error state components.
adaptive-navigation Adaptive navigation scaffold, navigation modes, sidebar/rail/bottom navigation defaults, and navigation tree.
adaptive-forms Responsive form sections, field layout, validation messages, and actions.
adaptive-data Responsive data views that switch between desktop table layouts and compact mobile cards.

The repository also contains a docs-site and admin demo used to exercise the library visually. Those demo modules are not Maven artifacts.

Installation

AdaptiveKt is available from Maven Central.

repositories {
    google()
    mavenCentral()
}

dependencies {
    implementation("io.github.nikog4.adaptivekt:adaptive-components:0.1.0-alpha01")
}

Use only the modules your app needs:

dependencies {
    implementation("io.github.nikog4.adaptivekt:adaptive-core:0.1.0-alpha01")
    implementation("io.github.nikog4.adaptivekt:adaptive-components:0.1.0-alpha01")
    implementation("io.github.nikog4.adaptivekt:adaptive-layout:0.1.0-alpha01")
    implementation("io.github.nikog4.adaptivekt:adaptive-feedback:0.1.0-alpha01")
    implementation("io.github.nikog4.adaptivekt:adaptive-navigation:0.1.0-alpha01")
    implementation("io.github.nikog4.adaptivekt:adaptive-forms:0.1.0-alpha01")
    implementation("io.github.nikog4.adaptivekt:adaptive-data:0.1.0-alpha01")
}

Quick Start

import androidx.compose.runtime.Composable
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.text.BasicText
import androidx.compose.ui.unit.dp
import io.github.adaptivekt.components.AdaptiveButton
import io.github.adaptivekt.components.AdaptiveCard
import io.github.adaptivekt.core.AdaptiveTheme
import io.github.adaptivekt.layout.AdaptiveGrid

import io.github.adaptivekt.core.AdaptiveApp

@Composable
fun DashboardSummary() {
    AdaptiveApp {
        AdaptiveGrid(columns = 12) {
            item(span = 6) {
                AdaptiveCard {
                    Column(verticalArrangement = Arrangement.spacedBy(12.dp)) {
                        BasicText("Revenue")
                        BasicText("\$42,800")
                        AdaptiveButton(
                            text = "View report",
                            onClick = { /* navigate */ },
                        )
                    }
                }
            }

            item(span = 6) {
                AdaptiveCard {
                    BasicText("Open invoices")
                    BasicText("18")
                }
            }
        }
    }
}

Select-style components expose controlled state:

var status by remember { mutableStateOf<String?>(null) }

AdaptiveSelect(
    options = listOf("Open", "Pending", "Closed"),
    selectedOption = status,
    onSelectedOptionChange = { status = it },
    optionLabel = { it },
    label = "Status",
    searchable = true,
    clearable = true,
)

Platform Support

Platform Status
Desktop/JVM Library and admin demo build/run on JVM.
Android Library targets are enabled and built through the Android target.
Web/Wasm Library targets and demo/docs distributions are enabled.
iOS Library targets are declared; final iOS validation depends on macOS and Compose Multiplatform/iOS tooling maturity.

AdaptiveKt is designed for Compose Multiplatform commonMain usage. Platform-specific screenshot tooling, Robot/AWT capture helpers, and demo image loading stay outside the library modules.

Documentation

Examples

  • admin-demo: responsive admin dashboard demo for Desktop and Web/Wasm.
  • ai-workspace-demo: complex SaaS/internal-tool showcase demonstrating advanced list/detail patterns, chat workspaces, prompt libraries, and form configurations.
  • ecommerce-demo: complete frontend storefront demonstrating product grids, checkout, and layout primitives.
  • docs-site: public Compose Multiplatform/Wasm documentation site and component catalog.

Demo Gallery / Live Site: You can view the interactive demo gallery at the AdaptiveKt GitHub Pages site.

How to run core validation:

.\gradlew.bat build
.\gradlew.bat :adaptive-core:jvmTest
.\gradlew.bat :adaptive-layout:jvmTest
.\gradlew.bat :adaptive-navigation:jvmTest

How to run ecommerce-demo:

.\gradlew.bat :examples:ecommerce-demo:desktopRun
.\gradlew.bat -p examples/ecommerce-demo wasmJsBrowserDevelopmentRun

How to run ai-workspace-demo:

.\gradlew.bat -p examples/ai-workspace-demo desktopRun
.\gradlew.bat -p examples/ai-workspace-demo wasmJsBrowserDevelopmentRun

How to prepare Pages locally: The GitHub Pages deployment merges Wasm distributions across modules into a single site-dist envelope. To build and stage this locally without committing the binary artifacts (which are git-ignored):

.\tools\prepare-pages-site.ps1

Project Status

Current published version: 0.1.0-alpha01.

AdaptiveKt is alpha software. The current focus is to validate the API surface, improve documentation and examples, harden accessibility and keyboard/focus behavior, expand visual regression coverage, and gather feedback before stabilizing a beta API.

Why This Matters For The Kotlin Ecosystem

Kotlin Multiplatform adoption improves when developers can see credible paths for real user interfaces, not only small samples. AdaptiveKt targets a practical gap: shared responsive UI patterns for dashboards, internal tools, data workflows, and product admin screens.

The project can help:

  • Kotlin Multiplatform developers prototype and ship shared UI faster.
  • Compose Multiplatform adopters evaluate desktop, Android, Web/Wasm, and iOS UI from one codebase.
  • Students, indie developers, and small teams learn commonMain-first UI architecture.
  • Internal tool builders avoid rebuilding the same admin patterns from scratch.

Roadmap

Short-term alpha hardening:

  • Stabilize core public APIs and document migration rules.
  • Improve accessibility, keyboard navigation, focus, and pointer behavior.
  • Expand visual regression and screenshot testing across Desktop and Web/Wasm.
  • Add richer examples for admin, productivity, and ecommerce-style workflows.
  • Validate iOS artifacts and demos on macOS.
  • Continue theme/token work for light and dark modes.
  • Build a contributor feedback loop through issues, templates, and documented governance.

See ROADMAP.md for the longer plan.

Contributing

Contributions, bug reports, docs improvements, and API feedback are welcome. Start with CONTRIBUTING.md, and please keep changes commonMain-first unless a platform-specific boundary is intentional and documented.

Security

See SECURITY.md for supported versions and private vulnerability reporting guidance.

Code Of Conduct

AdaptiveKt follows a contributor code of conduct. See CODE_OF_CONDUCT.md.

License

AdaptiveKt is licensed under the Apache License 2.0. See LICENSE.

About

Adaptive UI primitives and app patterns for Compose Multiplatform.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors