Skip to content

Commit cf0b053

Browse files
committed
Update StreamDesign to support color scale inversion and customizable default colors.
1 parent 6649811 commit cf0b053

2 files changed

Lines changed: 39 additions & 6 deletions

File tree

stream-chat-android-compose/api/stream-chat-android-compose.api

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6225,6 +6225,7 @@ public final class io/getstream/chat/android/compose/ui/theme/StreamDesign$Color
62256225
public final fun getS800-0d7_KjU ()J
62266226
public final fun getS900-0d7_KjU ()J
62276227
public fun hashCode ()I
6228+
public final fun inverted ()Lio/getstream/chat/android/compose/ui/theme/StreamDesign$ColorScale;
62286229
public fun toString ()Ljava/lang/String;
62296230
}
62306231

@@ -6374,8 +6375,10 @@ public final class io/getstream/chat/android/compose/ui/theme/StreamDesign$Color
63746375
}
63756376

63766377
public final class io/getstream/chat/android/compose/ui/theme/StreamDesign$Colors$Companion {
6377-
public final fun default ()Lio/getstream/chat/android/compose/ui/theme/StreamDesign$Colors;
6378-
public final fun defaultDark ()Lio/getstream/chat/android/compose/ui/theme/StreamDesign$Colors;
6378+
public final fun default (Lio/getstream/chat/android/compose/ui/theme/StreamDesign$ColorScale;Lio/getstream/chat/android/compose/ui/theme/StreamDesign$ChromeScale;)Lio/getstream/chat/android/compose/ui/theme/StreamDesign$Colors;
6379+
public static synthetic fun default$default (Lio/getstream/chat/android/compose/ui/theme/StreamDesign$Colors$Companion;Lio/getstream/chat/android/compose/ui/theme/StreamDesign$ColorScale;Lio/getstream/chat/android/compose/ui/theme/StreamDesign$ChromeScale;ILjava/lang/Object;)Lio/getstream/chat/android/compose/ui/theme/StreamDesign$Colors;
6380+
public final fun defaultDark (Lio/getstream/chat/android/compose/ui/theme/StreamDesign$ColorScale;Lio/getstream/chat/android/compose/ui/theme/StreamDesign$ChromeScale;)Lio/getstream/chat/android/compose/ui/theme/StreamDesign$Colors;
6381+
public static synthetic fun defaultDark$default (Lio/getstream/chat/android/compose/ui/theme/StreamDesign$Colors$Companion;Lio/getstream/chat/android/compose/ui/theme/StreamDesign$ColorScale;Lio/getstream/chat/android/compose/ui/theme/StreamDesign$ChromeScale;ILjava/lang/Object;)Lio/getstream/chat/android/compose/ui/theme/StreamDesign$Colors;
63796382
}
63806383

63816384
public final class io/getstream/chat/android/compose/ui/theme/StreamDesign$Typography {

stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/theme/StreamDesign.kt

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ import androidx.compose.ui.graphics.Color
2323
import androidx.compose.ui.graphics.lerp
2424
import androidx.compose.ui.text.TextStyle
2525
import androidx.compose.ui.text.font.FontFamily
26+
import io.getstream.chat.android.compose.ui.theme.StreamDesign.Colors.Companion.default
27+
import io.getstream.chat.android.compose.ui.theme.StreamDesign.Colors.Companion.defaultDark
2628

2729
/**
2830
* The Stream Chat Design System namespace.
@@ -44,8 +46,8 @@ import androidx.compose.ui.text.font.FontFamily
4446
public object StreamDesign {
4547

4648
/**
47-
* Contains all the colors in our palette. Each color is used for various things and can be
48-
* changed to customize the app design style.
49+
* Semantic color tokens for theming Chat SDK components.
50+
* Customize via [default] / [defaultDark] factory parameters or [copy].
4951
*
5052
* Parameters are organized by domain:
5153
* scales → accent → text → background → border → avatar → skeleton → component exceptions.
@@ -62,7 +64,7 @@ public object StreamDesign {
6264
* @param textTertiary Lowest priority text.
6365
* @param textDisabled Disabled text.
6466
* @param textOnAccent Text on dark or accent backgrounds.
65-
* @param textInverse Text on dark or accent backgrounds.
67+
* @param textInverse Text on inverse backgrounds.
6668
* @param textLink Hyperlinks and inline actions.
6769
* @param backgroundCoreElevation0 Flat surfaces.
6870
* @param backgroundCoreElevation1 Slightly elevated surfaces.
@@ -616,7 +618,7 @@ public object StreamDesign {
616618
*
617619
* Re-brand the entire Chat UI from a single color:
618620
* ```
619-
* val purple = StreamDesign.ColorScale.from(Color(0xFF6200EE))
621+
* val purple = StreamDesign.ColorScale.from(brandColor = Color(0xFF6200EE))
620622
* ChatTheme(colors = StreamDesign.Colors.default(brand = purple))
621623
* ```
622624
*
@@ -659,6 +661,27 @@ public object StreamDesign {
659661
public val s800: Color,
660662
public val s900: Color,
661663
) {
664+
665+
/**
666+
* Returns a new scale with the stops mirrored around the center.
667+
*
668+
* `s50` ↔ `s900`, `s100` ↔ `s800`, etc., while `s400` stays in place.
669+
* Use this to create a dark-theme counterpart from a light brand ramp.
670+
*/
671+
public fun inverted(): ColorScale = ColorScale(
672+
s50 = s900,
673+
s100 = s800,
674+
s150 = s700,
675+
s200 = s600,
676+
s300 = s500,
677+
s400 = s400,
678+
s500 = s300,
679+
s600 = s200,
680+
s700 = s150,
681+
s800 = s100,
682+
s900 = s50,
683+
)
684+
662685
public companion object {
663686
/**
664687
* Default brand scale for light themes.
@@ -709,6 +732,13 @@ public object StreamDesign {
709732
* This is an approximation intended for quick re-branding.
710733
* For pixel-perfect results, provide an explicit [ColorScale].
711734
*
735+
* Use [inverted] to obtain the dark-theme counterpart:
736+
* ```
737+
* val purple = ColorScale.from(brandColor = Color(0xFF6200EE))
738+
* val light = Colors.default(brand = purple)
739+
* val dark = Colors.defaultDark(brand = purple.inverted())
740+
* ```
741+
*
712742
* @param brandColor The core brand color (maps to [s500]).
713743
*/
714744
public fun from(brandColor: Color): ColorScale = ColorScale(

0 commit comments

Comments
 (0)