1
1
package net.mullvad.mullvadvpn.lib.theme
2
2
3
3
import androidx.compose.foundation.shape.RoundedCornerShape
4
+ import androidx.compose.material.ripple.LocalRippleTheme
5
+ import androidx.compose.material.ripple.RippleAlpha
6
+ import androidx.compose.material.ripple.RippleTheme
7
+ import androidx.compose.material3.LocalContentColor
4
8
import androidx.compose.material3.MaterialTheme
5
9
import androidx.compose.material3.Shapes
6
10
import androidx.compose.material3.Typography
7
11
import androidx.compose.material3.darkColorScheme
8
12
import androidx.compose.runtime.Composable
9
13
import androidx.compose.runtime.CompositionLocalProvider
14
+ import androidx.compose.runtime.Immutable
10
15
import androidx.compose.runtime.remember
11
16
import androidx.compose.runtime.staticCompositionLocalOf
12
17
import androidx.compose.ui.graphics.Color
@@ -97,6 +102,21 @@ val Shapes =
97
102
val Dimens : Dimensions
98
103
@Composable get() = LocalAppDimens .current
99
104
105
+ private object StateTokens {
106
+ const val DraggedStateLayerOpacity = 0.16f // 0.16f (Material default)
107
+ const val FocusStateLayerOpacity = 0.24f // 0.12f (Material default)
108
+ const val HoverStateLayerOpacity = 0.08f // 0.08f (Material default)
109
+ const val PressedStateLayerOpacity = 0.12f // 0.12f (Material default)
110
+ }
111
+
112
+ private val rippleAlpha =
113
+ RippleAlpha (
114
+ pressedAlpha = StateTokens .PressedStateLayerOpacity ,
115
+ focusedAlpha = StateTokens .FocusStateLayerOpacity ,
116
+ draggedAlpha = StateTokens .DraggedStateLayerOpacity ,
117
+ hoveredAlpha = StateTokens .HoverStateLayerOpacity
118
+ )
119
+
100
120
@Composable
101
121
fun ProvideDimens (dimensions : Dimensions , content : @Composable () -> Unit ) {
102
122
val dimensionSet = remember { dimensions }
@@ -117,7 +137,16 @@ fun AppTheme(content: @Composable () -> Unit) {
117
137
colorScheme = colors,
118
138
shapes = Shapes ,
119
139
typography = typography,
120
- content = content
140
+ content = {
141
+ CompositionLocalProvider (LocalRippleTheme provides MullvadRippleTheme ) { content() }
142
+ }
121
143
)
122
144
}
123
145
}
146
+
147
+ @Immutable
148
+ object MullvadRippleTheme : RippleTheme {
149
+ @Composable override fun defaultColor () = LocalContentColor .current
150
+
151
+ @Composable override fun rippleAlpha () = rippleAlpha
152
+ }
0 commit comments