| name | cometchat-android-v6-compose-theming |
| description | CometChat Android UIKit v6 Jetpack Compose theming — CometChatTheme, CompositionLocal color schemes, typography, shapes, and dark mode |
| license | MIT |
| compatibility | Android 9.0+ (API 28); Kotlin 1.9+; com.cometchat:chatuikit-compose-android:6.x |
| metadata | {"author":"CometChat","version":"3.0.0","tags":"cometchat, android, compose, theming, colors, typography, dark-mode"} |
Ground truth: com.cometchat:chatuikit-{compose,kotlin}-android:6.x (+ calls-sdk-android:5.x) — resolved AAR (javap) + ui-kit/android/v6. Official docs: https://www.cometchat.com/docs/ui-kit/android/v6/overview · Docs MCP: claude mcp add --transport http cometchat-docs https://www.cometchat.com/docs/mcp (or fetch the URL directly without MCP). Verify symbols against the installed package/source before relying on them.
Companion skills: cometchat-android-v6-kotlin-theming (Views equivalent), cometchat-android-v6-compose-components, cometchat-android-v6-compose-customization
Purpose
Apply and customize the CometChat theme in Jetpack Compose — color schemes, typography, shapes, dark mode, and per-component style overrides using the CompositionLocal-based theme system.
Use this skill when
- Wrapping CometChat components in
CometChatTheme {}
- Changing the primary color or color scheme
- Implementing dark mode support
- Customizing typography or shapes
- Accessing theme tokens in custom composables
Do not use this skill when
- Working with Kotlin Views theming (use
cometchat-android-v6-kotlin-theming)
- Customizing bubble rendering (use
cometchat-android-v6-compose-customization)
1. CometChatTheme Wrapper
All CometChat Compose components must be wrapped in CometChatTheme {}:
import com.cometchat.uikit.compose.theme.CometChatTheme
setContent {
CometChatTheme {
CometChatConversations()
}
}
CometChatTheme is a composable that provides theme values via CompositionLocalProvider:
LocalColorScheme → CometChatColorScheme
LocalTypography → CometChatTypography
LocalShapes → Shapes
2. Color Scheme
2.1 Default Light/Dark Schemes
import com.cometchat.uikit.compose.theme.*
CometChatTheme(colorScheme = lightColorScheme()) {
}
CometChatTheme(colorScheme = darkColorScheme()) {
}
CometChatTheme(
colorScheme = if (isSystemInDarkTheme()) darkColorScheme() else lightColorScheme()
) {
}
2.2 Custom Primary Color
CometChatTheme(
colorScheme = lightColorScheme(primary = Color(0xFF6851D6))
) {
}
2.3 CometChatColorScheme Token Reference
The CometChatColorScheme class contains these token groups:
Primary Colors:
primary — Main brand color
Extended Primary (auto-generated from primary):
extendedPrimaryColor50 through extendedPrimaryColor900 — 10 shades blended with white (light) or black (dark)
Neutral Colors:
neutralColor50 through neutralColor900 — 10 neutral shades
Alert Colors:
infoColor, successColor, warningColor, errorColor, messageReadColor
Background Colors:
backgroundColor1 (lightest) through backgroundColor4 (darkest)
Stroke/Border Colors:
strokeColorDefault, strokeColorLight, strokeColorDark, strokeColorHighlight
- Aliases:
borderColorLight, borderColorDefault, borderColorDark, borderColorHighlight
Text Colors:
textColorPrimary, textColorSecondary, textColorTertiary, textColorDisabled, textColorWhite, textColorHighlight
Icon Tint Colors:
iconTintPrimary, iconTintSecondary, iconTintTertiary, iconTintWhite, iconTintHighlight
Button Colors:
primaryButtonBackgroundColor, primaryButtonIconTint, primaryButtonTextColor
secondaryButtonBackgroundColor, secondaryButtonIconTint, secondaryButtonTextColor
linkButtonColor, fabButtonBackgroundColor, fabButtonIconTint, whiteButtonPressed
Static Colors:
2.4 Fully Custom Color Scheme
val customScheme = lightColorScheme(
primary = Color(0xFF6851D6),
neutralColor50 = Color(0xFFFAFAFA),
neutralColor900 = Color(0xFF141414),
errorColor = Color(0xFFFF3B30),
successColor = Color(0xFF34C759),
)
CometChatTheme(colorScheme = customScheme) {
}
3. Typography
val style: TextStyle = CometChatTheme.typography.heading1Bold
val bodyStyle: TextStyle = CometChatTheme.typography.bodyRegular
val titleStyle: TextStyle = CometChatTheme.typography.titleRegular
Custom typography:
CometChatTheme(
typography = CometChatTypography()
) {
}
4. Shapes
val shapes: Shapes = CometChatTheme.shapes
CometChatTheme(
shapes = Shapes()
) {
}
5. Accessing Theme in Custom Composables
@Composable
fun MyCustomView() {
val colors = CometChatTheme.colorScheme
val typography = CometChatTheme.typography
Text(
text = "Hello",
color = colors.textColorPrimary,
style = typography.bodyRegular
)
Box(
modifier = Modifier.background(colors.backgroundColor1)
)
}
6. Extended Primary Color Generation
Extended primary colors are auto-generated by blending the primary color with white (light mode) or black (dark mode):
You can override individual extended colors:
lightColorScheme(
primary = Color(0xFF6851D6),
extendedPrimaryColor500 = Color(0xFF9B8AE0)
)
Localization
To translate the UI, switch the active language, or override individual strings, route to the dedicated cometchat-i18n skill — the canonical cross-family localization reference. Android uses CometChatLocalize.setLocale(context, Language.Code.<lang>) / getLocale(context) (a separate method, not an init object — unlike web/RN). cometchat-i18n covers bundled languages, custom translations, and RTL. Docs: https://www.cometchat.com/docs/ui-kit/android/localize
Sound Manager — custom notification & call sounds
Sounds are a behavioral customization — driven by CometChatSoundManager, an instance class that needs a Context. The UI Kit plays the built-in cues automatically; use this to override a cue with your own raw resource. V6 package (NOT the V5 com.cometchat.chatuikit.* path):
import com.cometchat.uikit.core.resources.soundmanager.CometChatSoundManager
import com.cometchat.uikit.core.resources.soundmanager.Sound
val soundManager = CometChatSoundManager(context)
soundManager.play(Sound.INCOMING_CALL)
soundManager.play(Sound.INCOMING_MESSAGE, R.raw.my_ping)
soundManager.pause()
Hard rules
- ALWAYS wrap CometChat Compose components in
CometChatTheme {} — components will crash or look wrong without it
- NEVER use Material
MaterialTheme tokens inside CometChat components — use CometChatTheme.colorScheme / .typography / .shapes
CometChatTheme does NOT extend MaterialTheme — they are separate theme systems
- When overriding just the primary color, extended primary colors auto-regenerate — you don't need to set all 10 shades
lightColorScheme() and darkColorScheme() are factory functions, not data class constructors — use named parameters to override specific tokens