Remove unnecessary Box wrapping.

This commit is contained in:
Benoit Marty
2024-04-15 13:42:37 +02:00
parent 81f32b36b8
commit 62e25fa996
2 changed files with 93 additions and 97 deletions

View File

@@ -59,56 +59,54 @@ fun GradientFloatingActionButton(
shape: Shape = RoundedCornerShape(25),
content: @Composable () -> Unit,
) {
Box {
val linearShaderBrush = remember {
object : ShaderBrush() {
override fun createShader(size: Size): Shader {
return LinearGradientShader(
from = Offset(size.width, size.height),
to = Offset(size.width, 0f),
colors = listOf(
LightColorTokens.colorBlue900,
LightColorTokens.colorGreen700,
),
)
}
val linearShaderBrush = remember {
object : ShaderBrush() {
override fun createShader(size: Size): Shader {
return LinearGradientShader(
from = Offset(size.width, size.height),
to = Offset(size.width, 0f),
colors = listOf(
LightColorTokens.colorBlue900,
LightColorTokens.colorGreen700,
),
)
}
}
val radialShaderBrush = remember {
object : ShaderBrush() {
override fun createShader(size: Size): Shader {
return RadialGradientShader(
center = size.center,
radius = size.width / 2,
colors = listOf(
LightColorTokens.colorGreen700,
LightColorTokens.colorBlue900,
)
}
val radialShaderBrush = remember {
object : ShaderBrush() {
override fun createShader(size: Size): Shader {
return RadialGradientShader(
center = size.center,
radius = size.width / 2,
colors = listOf(
LightColorTokens.colorGreen700,
LightColorTokens.colorBlue900,
)
}
)
}
}
}
Box(
modifier = modifier
.minimumInteractiveComponentSize()
.graphicsLayer(shape = shape, clip = false)
.clip(shape)
.drawBehind {
drawRect(brush = radialShaderBrush, alpha = 0.4f)
drawRect(brush = linearShaderBrush)
}
.clickable(
enabled = true,
onClick = onClick,
interactionSource = remember { MutableInteractionSource() },
indication = rememberRipple(color = Color.White)
),
contentAlignment = Alignment.Center
) {
CompositionLocalProvider(LocalContentColor provides Color.White) {
content()
Box(
modifier = modifier
.minimumInteractiveComponentSize()
.graphicsLayer(shape = shape, clip = false)
.clip(shape)
.drawBehind {
drawRect(brush = radialShaderBrush, alpha = 0.4f)
drawRect(brush = linearShaderBrush)
}
.clickable(
enabled = true,
onClick = onClick,
interactionSource = remember { MutableInteractionSource() },
indication = rememberRipple(color = Color.White)
),
contentAlignment = Alignment.Center
) {
CompositionLocalProvider(LocalContentColor provides Color.White) {
content()
}
}
}

View File

@@ -71,66 +71,64 @@ fun SuperButton(
ButtonSize.Small -> PaddingValues(horizontal = 16.dp, vertical = 5.dp)
}
}
Box {
val isLightTheme = ElementTheme.isLightTheme
val colors = remember(isLightTheme) {
if (isLightTheme) {
listOf(
LightColorTokens.colorBlue900,
LightColorTokens.colorGreen1100,
)
} else {
listOf(
DarkColorTokens.colorBlue900,
DarkColorTokens.colorGreen1100,
)
}
}
val shaderBrush = remember(colors) {
object : ShaderBrush() {
override fun createShader(size: Size): Shader {
return LinearGradientShader(
from = Offset(0f, size.height),
to = Offset(size.width, 0f),
colors = colors,
)
}
}
}
val border = if (enabled) {
BorderStroke(1.dp, shaderBrush)
val isLightTheme = ElementTheme.isLightTheme
val colors = remember(isLightTheme) {
if (isLightTheme) {
listOf(
LightColorTokens.colorBlue900,
LightColorTokens.colorGreen1100,
)
} else {
BorderStroke(1.dp, ElementTheme.colors.borderDisabled)
listOf(
DarkColorTokens.colorBlue900,
DarkColorTokens.colorGreen1100,
)
}
val backgroundColor = ElementTheme.colors.bgCanvasDefault
Box(
modifier = modifier
.minimumInteractiveComponentSize()
.graphicsLayer(shape = shape, clip = false)
.clip(shape)
.border(border, shape)
.drawBehind {
drawRect(backgroundColor)
drawRect(brush = shaderBrush, alpha = 0.04f)
}
.clickable(
enabled = enabled,
onClick = onClick,
interactionSource = remember { MutableInteractionSource() },
indication = rememberRipple()
}
val shaderBrush = remember(colors) {
object : ShaderBrush() {
override fun createShader(size: Size): Shader {
return LinearGradientShader(
from = Offset(0f, size.height),
to = Offset(size.width, 0f),
colors = colors,
)
.padding(contentPadding),
contentAlignment = Alignment.Center
) {
CompositionLocalProvider(
LocalContentColor provides if (enabled) ElementTheme.colors.textPrimary else ElementTheme.colors.textDisabled,
LocalTextStyle provides ElementTheme.typography.fontBodyLgMedium,
) {
content()
}
}
}
val border = if (enabled) {
BorderStroke(1.dp, shaderBrush)
} else {
BorderStroke(1.dp, ElementTheme.colors.borderDisabled)
}
val backgroundColor = ElementTheme.colors.bgCanvasDefault
Box(
modifier = modifier
.minimumInteractiveComponentSize()
.graphicsLayer(shape = shape, clip = false)
.clip(shape)
.border(border, shape)
.drawBehind {
drawRect(backgroundColor)
drawRect(brush = shaderBrush, alpha = 0.04f)
}
.clickable(
enabled = enabled,
onClick = onClick,
interactionSource = remember { MutableInteractionSource() },
indication = rememberRipple()
)
.padding(contentPadding),
contentAlignment = Alignment.Center
) {
CompositionLocalProvider(
LocalContentColor provides if (enabled) ElementTheme.colors.textPrimary else ElementTheme.colors.textDisabled,
LocalTextStyle provides ElementTheme.typography.fontBodyLgMedium,
) {
content()
}
}
}
@PreviewsDayNight