diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/colors/Gradient.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/colors/Gradient.kt new file mode 100644 index 0000000000..342377d0b8 --- /dev/null +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/colors/Gradient.kt @@ -0,0 +1,44 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.libraries.designsystem.colors + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.ReadOnlyComposable +import androidx.compose.ui.graphics.Color +import io.element.android.compound.theme.ElementTheme + +@Composable +@ReadOnlyComposable +fun gradientActionColors(): List = listOf( + ElementTheme.colors.gradientActionStop1, + ElementTheme.colors.gradientActionStop2, + ElementTheme.colors.gradientActionStop3, + ElementTheme.colors.gradientActionStop4, +) + +@Composable +@ReadOnlyComposable +fun gradientSubtleColors(): List = listOf( + ElementTheme.colors.gradientSubtleStop1, + ElementTheme.colors.gradientSubtleStop2, + ElementTheme.colors.gradientSubtleStop3, + ElementTheme.colors.gradientSubtleStop4, + ElementTheme.colors.gradientSubtleStop5, + ElementTheme.colors.gradientSubtleStop6, +) + +@Composable +@ReadOnlyComposable +fun gradientInfoColors(): List = listOf( + ElementTheme.colors.gradientInfoStop1, + ElementTheme.colors.gradientInfoStop2, + ElementTheme.colors.gradientInfoStop3, + ElementTheme.colors.gradientInfoStop4, + ElementTheme.colors.gradientInfoStop5, + ElementTheme.colors.gradientInfoStop6, +) diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/button/SuperButton.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/button/SuperButton.kt index 932158f281..90dd64d59d 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/button/SuperButton.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/button/SuperButton.kt @@ -37,6 +37,7 @@ import androidx.compose.ui.graphics.Shape import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.unit.dp import io.element.android.compound.theme.ElementTheme +import io.element.android.libraries.designsystem.colors.gradientActionColors import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.LocalBuildMeta @@ -68,12 +69,7 @@ fun SuperButton( ElementTheme.colors.textActionAccent, ) } else { - listOf( - ElementTheme.colors.gradientActionStop1, - ElementTheme.colors.gradientActionStop2, - ElementTheme.colors.gradientActionStop3, - ElementTheme.colors.gradientActionStop4, - ) + gradientActionColors() } val shaderBrush = remember(colors) { diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/modifiers/Gradient.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/modifiers/Gradient.kt index 4de9312436..7b9ddfd447 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/modifiers/Gradient.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/modifiers/Gradient.kt @@ -18,6 +18,7 @@ import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp import io.element.android.compound.theme.ElementTheme +import io.element.android.libraries.designsystem.colors.gradientSubtleColors import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.LocalBuildMeta @@ -51,12 +52,10 @@ fun subtleColorStops( add(0.75f to ElementTheme.colors.bgCanvasDefault) add(1f to Color.Transparent) } else { - add(0f to ElementTheme.colors.gradientSubtleStop1) - add(1 / 5f to ElementTheme.colors.gradientSubtleStop2) - add(2 / 5f to ElementTheme.colors.gradientSubtleStop3) - add(3 / 5f to ElementTheme.colors.gradientSubtleStop4) - add(4 / 5f to ElementTheme.colors.gradientSubtleStop5) - add(1f to ElementTheme.colors.gradientSubtleStop6) + val colors = gradientSubtleColors() + colors.forEachIndexed { index, color -> + add(index.toFloat() / (colors.size - 1) to color) + } } }.toTypedArray() } diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/SendButton.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/SendButton.kt index 069247936f..4ee00e550d 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/SendButton.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/SendButton.kt @@ -23,6 +23,7 @@ import androidx.compose.ui.graphics.ShaderBrush import androidx.compose.ui.unit.dp import io.element.android.compound.theme.ElementTheme import io.element.android.compound.tokens.generated.CompoundIcons +import io.element.android.libraries.designsystem.colors.gradientActionColors import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.Icon @@ -89,12 +90,7 @@ private fun Modifier.buttonBackgroundModifier( canSendMessage: Boolean, ) = then( if (canSendMessage) { - val colors = listOf( - ElementTheme.colors.gradientActionStop1, - ElementTheme.colors.gradientActionStop2, - ElementTheme.colors.gradientActionStop3, - ElementTheme.colors.gradientActionStop4, - ) + val colors = gradientActionColors() Modifier.drawWithCache { val verticalGradientBrush = ShaderBrush( LinearGradientShader(