An opinionated design system for Compose Multiplatform.
Installation
Published on Maven Central:
implementation("glass.yasan.kepko:component:<version>")
implementation("glass.yasan.kepko:foundation:<version>")
Usage
Wrap your app content with KepkoTheme:
| Code | Preview |
|---|---|
KepkoTheme {
Text("Hello, Kepko!")
TextPill(
text = "Yasan Glass",
containerColor = KepkoTheme.colors.information,
)
} |
![]() |
Components
| Light | Dark |
|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
See the full list of components here.
Color Palettes
| Name | Color Palette |
|---|---|
| Light | ![]() |
| Dark | ![]() |
| Black (AMOLED) | ![]() |
| Solarized Light | ![]() |
| Solarized Dark | ![]() |
| Catppuccin Latte | ![]() |
| Catppuccin Frappé | ![]() |
| Catppuccin Macchiato | ![]() |
| Catppuccin Mocha | ![]() |
| Gruvbox Light | ![]() |
| Gruvbox Dark | ![]() |
Persistence
An optional module that automatically persists and restores theme preferences across the app launches.
implementation("glass.yasan.kepko:persistence:<version>")
Use PersistentKepkoTheme instead of KepkoTheme to automatically persist and restore theme preferences:
@OptIn(ExperimentalKepkoApi::class)
PersistentKepkoTheme {
// your app content
}
To let users change the persisted theme setting, use PersistentPreferenceThemeScreen:
PersistentPreferenceThemeScreen(
onBackClick = { /* navigate back */ },
)
PersistentPreferenceThemeScreen lets users pick between system-based or manual theme selection. In system mode, separate light and dark style pickers are shown:

PersistentKepkoTheme provides the following CompositionLocal values inside its content:
-
LocalKepkoColorPalette: the currently activeColorPalette -
LocalKepkoPersistenceManager: thePersistenceManagerinstance for direct access to persistence state
Sample Project
Explore Kepko in a real project with the included sample project.


























