cometchat-android-v6-compose-theming
CometChat Android UIKit v6 Jetpack Compose theming — CometChatTheme, CompositionLocal color schemes, typography, shapes, and dark mode
What it does
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 {
// CometChat components go here
CometChatConversations()
}
}
CometChatTheme is a composable that provides theme values via CompositionLocalProvider:
LocalColorScheme→CometChatColorSchemeLocalTypography→CometChatTypographyLocalShapes→Shapes
2. Color Scheme
2.1 Default Light/Dark Schemes
import com.cometchat.uikit.compose.theme.*
// Light mode (default)
CometChatTheme(colorScheme = lightColorScheme()) {
// ...
}
// Dark mode
CometChatTheme(colorScheme = darkColorScheme()) {
// ...
}
// Auto based on system setting
CometChatTheme(
colorScheme = if (isSystemInDarkTheme()) darkColorScheme() else lightColorScheme()
) {
// ...
}
2.2 Custom Primary Color
CometChatTheme(
colorScheme = lightColorScheme(primary = Color(0xFF6851D6))
) {
// All extended primary colors (50-900) auto-generate from the primary
}
2.3 CometChatColorScheme Token Reference
The CometChatColorScheme class contains these token groups:
Primary Colors:
primary— Main brand color
Extended Primary (auto-generated from primary):
extendedPrimaryColor50throughextendedPrimaryColor900— 10 shades blended with white (light) or black (dark)
Neutral Colors:
neutralColor50throughneutralColor900— 10 neutral shades
Alert Colors:
infoColor,successColor,warningColor,errorColor,messageReadColor
Background Colors:
backgroundColor1(lightest) throughbackgroundColor4(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,primaryButtonTextColorsecondaryButtonBackgroundColor,secondaryButtonIconTint,secondaryButtonTextColorlinkButtonColor,fabButtonBackgroundColor,fabButtonIconTint,whiteButtonPressed
Static Colors:
colorWhite,colorBlack
2.4 Fully Custom Color Scheme
val customScheme = lightColorScheme(
primary = Color(0xFF6851D6),
neutralColor50 = Color(0xFFFAFAFA),
neutralColor900 = Color(0xFF141414),
errorColor = Color(0xFFFF3B30),
successColor = Color(0xFF34C759),
// ... override any token
)
CometChatTheme(colorScheme = customScheme) {
// ...
}
3. Typography
// Access typography in composables
val style: TextStyle = CometChatTheme.typography.heading1Bold
val bodyStyle: TextStyle = CometChatTheme.typography.bodyRegular
val titleStyle: TextStyle = CometChatTheme.typography.titleRegular
Custom typography:
CometChatTheme(
typography = CometChatTypography(/* custom TextStyles */)
) {
// ...
}
4. Shapes
// Access shapes
val shapes: Shapes = CometChatTheme.shapes
// Custom shapes
CometChatTheme(
shapes = Shapes(/* custom corner radii */)
) {
// ...
}
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):
// Light mode: primary blended with white at various percentages
// extendedPrimaryColor50 = blend(primary, white, 0.96) // lightest
// extendedPrimaryColor500 = blend(primary, white, 0.44) // mid
// extendedPrimaryColor900 = blend(primary, black, 0.08) // darkest
// Dark mode: primary blended with black at various percentages
// extendedPrimaryColor50 = blend(primary, black, 0.80) // lightest
// extendedPrimaryColor900 = blend(primary, white, 0.11) // lightest in dark
You can override individual extended colors:
lightColorScheme(
primary = Color(0xFF6851D6),
extendedPrimaryColor500 = Color(0xFF9B8AE0) // manual override
)
Hard rules
- ALWAYS wrap CometChat Compose components in
CometChatTheme {}— components will crash or look wrong without it - NEVER use Material
MaterialThemetokens inside CometChat components — useCometChatTheme.colorScheme/.typography/.shapes CometChatThemedoes NOT extendMaterialTheme— 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()anddarkColorScheme()are factory functions, not data class constructors — use named parameters to override specific tokens
Capabilities
Install
Quality
deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 27 github stars · SKILL.md body (6,142 chars)