Files
Zern-BlackOut/app/src/main/java/com/wdtt/client/ui/AppSectionCard.kt
T
2026-05-26 22:48:52 +03:00

67 lines
2.2 KiB
Kotlin

package com.wdtt.client.ui
import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.ColumnScope
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.lerp
import androidx.compose.ui.graphics.luminance
import androidx.compose.ui.unit.dp
@Composable
private fun appSectionCardColor(): Color {
val colors = MaterialTheme.colorScheme
val isDark = colors.background.luminance() < 0.22f
return if (isDark) {
lerp(colors.surface, colors.surfaceVariant, 0.10f)
} else {
lerp(colors.surface, colors.surfaceVariant, 0.28f)
}
}
@Composable
private fun appSectionCardBorderColor(): Color {
val colors = MaterialTheme.colorScheme
val isDark = colors.background.luminance() < 0.22f
return if (isDark) {
colors.outlineVariant.copy(alpha = 0.26f)
} else {
colors.outlineVariant.copy(alpha = 0.24f)
}
}
@Composable
fun AppSectionCard(
modifier: Modifier = Modifier,
contentPadding: PaddingValues = PaddingValues(horizontal = 18.dp, vertical = 18.dp),
verticalArrangement: Arrangement.Vertical = Arrangement.spacedBy(16.dp),
content: @Composable ColumnScope.() -> Unit
) {
Surface(
shape = RoundedCornerShape(28.dp),
color = appSectionCardColor(),
contentColor = MaterialTheme.colorScheme.onSurface,
border = BorderStroke(1.dp, appSectionCardBorderColor()),
shadowElevation = 0.dp,
tonalElevation = 0.dp,
modifier = modifier.fillMaxWidth()
) {
Column(
modifier = Modifier
.fillMaxWidth()
.padding(contentPadding),
verticalArrangement = verticalArrangement,
content = content
)
}
}