net.zagart.design:ui — Compose Multiplatform UI components, themes, and design tokens
| Module | Artifact | Targets |
|---|---|---|
:ui | net.zagart.design:ui | Android, iOS, Desktop |
commonMain.dependencies {
implementation("net.zagart.design:ui:1.6.15")
}
import net.zagart.design.ui.DesignTheme
import net.zagart.design.ui.Settings
import net.zagart.design.ui.theme.Theme
import net.zagart.design.ui.components.*
import net.zagart.design.ui.components.button.Button
import net.zagart.design.ui.components.listitem.ListItem
import net.zagart.design.ui.components.listitem.SwitchListItem
val settings = Settings(
isDark = true,
animateTransitions = true,
theme = Theme.Indigo
)
DesignTheme(settings = settings) {
Column {
TopAppBar(title = "Settings")
TextField(value = text, onValueChange = { text = it }, label = "Name")
ListItem(label = "Notifications", onClick = { })
SwitchListItem(label = "Dark mode", checked = isDark, onCheckedChange = { isDark = it })
Button("Save", onClick = { })
}
}
| Feature | Details |
|---|---|
| Theme system | DesignTheme wrapping Material3 with 3 color schemes (Indigo, CyanDeep, OliveGold), runtime Settings (dark mode, animations, nav bar type), and LocalScreenConfiguration |
| Design tokens | Spacing scale (spacings.x1–x16, base 4dp), dimensions (dimens.iconSize), Material3 color roles, typography, and shapes |
| Navigation components | TopAppBar, NavigationBar (adaptive bottom/side rail), FloatingNavigationBar (pill-shaped) |
| Input & selection | TextField, SearchBar, MoneyInput, SmartStringField, SegmentedButtonRow, Chip, RichChip |
| List & media | ListItem (with RadioButton/Switch variants), MediaListCard, MediaTile, Selector, VerticalList |
| Visual & layout | AsyncImage (Coil with shimmer), Gradient, LiveBorderBox, ProgressBar, AdaptiveLayout, Filler, BackHandler |
| Icon system | 199 named Icon enum values with stable id strings; composable resolves to Material ImageVector (filled/outlined) |
| Extensions & utilities | Composable spacers, String.parseBold() for AnnotatedString, WindowInsets helpers, CornerBasedShape clipping, SystemBarsSetup / ImmersiveModeSetup |
version in ui/build.gradle.kts./gradlew :ui:publishAllPublicationsToLocalRepositorygit tag v1.0.0 && git push origin v1.0.0