Об этом проекте
MaterialKolor — это библиотека Compose Multiplatform для создания динамических цветовых палитр Material Design 3 на основе любого seed-цвета. Она поддерживает Android, iOS, JVM desktop и JavaScript/wasm и опубликована на Maven Central как com.materialkolor:material-kolor.
Основная идея взята из Google material-color-utilities, которая была только на Java; MaterialKolor портирует её на Kotlin Multiplatform и добавляет Compose-ориентированные помощники, вдохновлённые проектом m3color. Отдельный артефакт com.materialkolor:material-color-utilities предоставляет порт без зависимостей Compose.
Использование сосредоточено на dynamicColorScheme() и rememberDynamicColorScheme(), которые принимают seed-цвет и флаг тёмной/светлой темы и возвращают ColorScheme. Параметр PaletteStyle (например, Expressive) настраивает генерируемую палитру, а ColorSpec.SpecVersion.SPEC_2025 включает более новую спецификацию Material 3 Expressive; по умолчанию используется SPEC_2021. Два удобных composable оборачивают MaterialTheme: DynamicMaterialTheme, который может анимировать переходы между схемами, и DynamicMaterialExpressiveTheme, который по умолчанию использует стиль Expressive и SPEC_2025 для более ярких результатов.
Помимо генерации тем, библиотека включает утилиты для работы с цветом: harmonize() для согласования цвета с другим (с опциональным флагом matchSaturation), harmonizeWithPrimary(), lighten() и darken(), а также проверки температуры isWarm()/isCold(). Она также может извлекать подходящие seed-цвета из ImageBitmap через themeColors(), themeColor(), rememberThemeColors() и rememberThemeColor(), что полезно для темизации на основе аватаров или фоновых изображений, хотя в README отмечается, что это может быть медленно и лучше выполнять заранее.
Настройка осуществляется через Gradle — либо в общем исходном наборе для мультиплатформенных проектов, либо в файле сборки уровня приложения для проектов только на Android; приведён пример version catalog. Хостируемый конструктор на materialkolor.com демонстрирует библиотеку и может экспортировать код MaterialKolor или обычный Material 3; KDoc опубликован на docs.materialkolor.com. Модуль material-color-utilities лицензирован под Apache-2.0, остальная часть проекта — под MIT.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.