Skip to content

Overview

Carbon Compose is an implementation of the Carbon Design System built using Kotlin Multiplatform (KMP) and Compose Multiplatform. This versatile framework is available for the following platforms:

  • Android
  • iOS
  • Desktop (Windows, Linux, macOS)
  • Web (Wasm) (Coming soon)

Motivations

In evaluating the landscape of open-source design systems for mobile applications, it's evident that there are limited options — primarily Material Design for Android and Cupertino for iOS. Introducing more diversity into the developer community can foster creativity and innovation.

This led to the decision to implement the Carbon Design System. Renowned for its simplicity and consistency, Carbon is an excellent choice for user interfaces that prioritize functionality over aesthetics, such as dashboards, admin panels, and Human-Machine Interfaces (HMI). In contrast, Material Design may be overly focused on visual elements for such applications.

The journey began with Jetpack Compose, and as the project expanded, adopting Compose Multiplatform became a natural progression. This evolution has culminated in the project becoming open-source, allowing the wider community to benefit from and contribute to its development.

Project status

This project is currently a work in progress, with new components and features being implemented as development continues and new versions are released. The project is currently in its major version 0. Once it includes at least as many components as those documented on the official Carbon Design System website, version 1.0.0 will be released. As the Carbon Design System continues to evolve under the guidance of IBM's design teams, this Compose Multiplatform adaptation will be updated accordingly over time.

Component Availability Matrix

List of the currently supported components:

Components Android 🤖 iOS  Desktop 🖥️ wasmJs 🌐
Accordion
AI label
Breadcrumb
Button
Checkbox
Code snippet
Contained list
Content switcher
Data table
Date picker
Dropdown
File uploader
Form
Inline loading
Link
List
Loading
Menu
Menu buttons
Modal
Multi-Select
Notification
Number input
Pagination
Popover
Progress bar
Progress indicator
Radio button
Search
Select
Slider
Structured list
Tabs
Tags
Text input
Tile
Toggle
Toggletip
Treeview
UI shell