[![official project](http://jb.gg/badges/official.svg)](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub) [![Latest release](https://img.shields.io/github/v/release/JetBrains/compose-jb?color=brightgreen&label=latest%20release)](https://github.com/JetBrains/compose-jb/releases/latest) [![Latest build](https://img.shields.io/github/v/release/JetBrains/compose-jb?color=orange&include_prereleases&label=latest%20build)](https://github.com/JetBrains/compose-jb/releases) # Compose Multiplatform, by JetBrains ![](artwork/readme/apps.png) Compose Kotlin UI framework port for desktop platforms (macOS, Linux, Windows) and Web, components outside of the core [Compose repository](https://android.googlesource.com/platform/frameworks/support). Preview functionality (check your application UI without building/running it) for desktop platforms is available via [IDEA plugin](https://plugins.jetbrains.com/plugin/16541-compose-multiplatform-ide-support). ## Tutorials ### Compose for Desktop * [Getting started](tutorials/Getting_Started) * [Image and icon manipulations](tutorials/Image_And_Icons_Manipulations) * [Mouse events and hover](tutorials/Mouse_Events) * [Scrolling and scrollbars](tutorials/Desktop_Components#scrollbars) * [Tooltips](tutorials/Desktop_Components#tooltips) * [Context Menu](tutorials/Context_Menu/README.md) * [Top level windows management](tutorials/Window_API_new) * [Menu, tray, notifications](tutorials/Tray_Notifications_MenuBar_new) * [Keyboard support](tutorials/Keyboard) * [Tab focus navigation](tutorials/Tab_Navigation) * [Swing interoperability](tutorials/Swing_Integration) * [Navigation](tutorials/Navigation) * [Accessibility](https://github.com/JetBrains/compose-jb/tree/master/tutorials/Accessibility) * [Building a native distribution](tutorials/Native_distributions_and_local_execution) Also, see [Foundation](https://developer.android.com/jetpack/compose/documentation#core) and [Design](https://developer.android.com/jetpack/compose/documentation#design) docs from Google. They were originally written for Android, but most of information applies to Compose for Desktop as well. ### Compose for Web HTML * [Getting started](tutorials/Web/Getting_Started) * [Building web UI](tutorials/Web/Building_UI) * [Handling Events](tutorials/Web/Events_Handling) * [Controlled and Uncontrolled inputs](tutorials/Web/Controlled_Uncontrolled_Inputs) * [Style DSL](tutorials/Web/Style_Dsl) * [Using test-utils](tutorials/Web/Using_Test_Utils) ### Jetpack Compose for Android Compose Multiplatform uses Jetpack Compose developed by Google when you target Android platform. See more info about it [here](tutorials/Development_for_Android). [The docs](https://developer.android.com/jetpack/compose/documentation) published by Google are great and decribe how to develop on Compose for Android. Note that when you use Compose Multiplatform, you setup your project differently. You can create a multiplatform project with Android support via IDEA Project Wizard, or by copying [multiplatform template](https://github.com/JetBrains/compose-jb/tree/master/templates/multiplatform-template). In `androidMain` source set you can use almost all information from the docs, and in `commonMain` source set you can use information from Foundation and Design sections. ### Experimental targets The other targets (iOS, Compose for Web Canvas) are experimental and under development. Use them at your own risk. ## Examples * [codeviewer](examples/codeviewer) - File Browser and Code Viewer application for Android and Desktop * [imageviewer](examples/imageviewer) - Image Viewer application for Android and Desktop * [issues](examples/issues) - GitHub issue tracker with an adaptive UI and ktor-client * [Falling Balls](examples/falling-balls) - Simple game * [notepad](examples/notepad) - Notepad, using the new experimental Composable Window API * [todoapp](examples/todoapp) - TODO items tracker with persistence and multiple screens, written with external navigation library * [todoapp-lite](examples/todoapp-lite) - A simplified version of [todoapp](examples/todoapp), fully based on Compose * [widgets gallery](examples/widgets-gallery) - Gallery of standard widgets * [IDEA plugin](examples/intellij-plugin) - Plugin for IDEA using Compose for Desktop * [compose-bird](examples/web-compose-bird) - A flappy bird clone using Compose for Web * [web-landing](examples/web-landing) - A landing page built using Compose for Web (HTML composable api) * [compose-web-with-react](examples/web-with-react) - Using compose-in-react and react-in-compose * [compose-web-in-js](examples/web-compose-in-js) - Using Html based composables in js ## Other ## * [artwork](artwork) - design artifacts * [benchmarks](benchmarks) - collection of benchmarks * [compose](compose) - composite build of [Compose Multiplatform sources](https://github.com/JetBrains/androidx) * [ci](ci) - Continuous Integration helpers * [gradle-plugins](gradle-plugins) - a plugin, simplifying usage of Compose Multiplatform with Gradle * [templates](templates) - new application templates * [components](components) - custom components of Compose Multiplatform * [Split Pane](components/SplitPane) * [experimental](experimental) - experimental components and examples * [examples](experimental/examples) - examples that use new experimental functionality * [cef](experimental/cef) - CEF integration in Jetpack Compose (somewhat outdated) * [Video Player](experimental/components/VideoPlayer) * [LWJGL integration](experimental/lwjgl-integration) - An example showing how to integrate Compose with [LWJGL](https://www.lwjgl.org) * [CLI example](experimental/build_from_cli) - An example showing how to build Compose without Gradle ## Versions ## * [The latest stable release](https://github.com/JetBrains/compose-jb/releases/latest) * [The latest dev release](https://github.com/JetBrains/compose-jb/releases) * [Compatibility and versioning overview](VERSIONING.md) * [Changelog](CHANGELOG.md)