Об этом проекте

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.