프로젝트 소개
MaterialKolor는 모든 시드 색상에서 동적 Material Design 3 색상 팔레트를 구축하기 위한 Compose Multiplatform 라이브러리입니다. Android, iOS, JVM 데스크톱, JavaScript/wasm을 대상으로 하며, Maven Central에 com.materialkolor:material-kolor로 게시되어 있습니다.
핵심 아이디어는 Java 전용이었던 Google의 material-color-utilities에서 비롯되었습니다. MaterialKolor는 이를 Kotlin Multiplatform으로 포팅하고 m3color 프로젝트에서 영감을 받은 Compose 지향 헬퍼를 추가합니다. 별도의 아티팩트인 com.materialkolor:material-color-utilities는 Compose 의존성 없이 포팅을 노출합니다.
사용법은 시드 색상과 다크/라이트 플래그를 받아 ColorScheme을 반환하는 dynamicColorScheme()과 rememberDynamicColorScheme()을 중심으로 합니다. PaletteStyle 매개변수(예: Expressive)가 생성된 팔레트를 조정하며, ColorSpec.SpecVersion.SPEC_2025는 더 새로운 Material 3 Expressive 색상 사양을 활성화합니다. 기본값은 SPEC_2021입니다. 두 가지 편의 컴포저블이 MaterialTheme을 감쌉니다. DynamicMaterialTheme은 체계 간 애니메이션을 지원하고, DynamicMaterialExpressiveTheme은 더 생동감 있는 결과를 위해 Expressive 팔레트 스타일과 SPEC_2025를 기본으로 사용합니다.
테마 생성 외에도 라이브러리는 색상 유틸리티를 제공합니다. harmonize()는 한 색상을 다른 색상에 맞추고(선택적 matchSaturation 플래그 포함), harmonizeWithPrimary(), lighten() 및 darken(), 그리고 isWarm()/isCold() 온도 검사를 제공합니다. 또한 themeColors(), themeColor(), rememberThemeColors() 및 rememberThemeColor()를 통해 ImageBitmap에서 적합한 시드 색상을 도출할 수 있어 프로필 사진이나 배경 이미지로 테마를 구성하는 데 유용하지만, README는 이것이 느릴 수 있으며 미리 수행하는 것이 가장 좋다고 언급합니다.
설정은 Gradle을 통해 이루어지며, 멀티플랫폼 프로젝트의 경우 공통 소스 세트에, Android 전용 프로젝트의 경우 앱 수준 빌드 파일에 추가하며, 버전 카탈로그 예제가 제공됩니다. 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.