From b99015fa99dcfb9b396b5134448cce207ffcb398 Mon Sep 17 00:00:00 2001 From: OTKUSteyler <90369564+OTKUSteyler@users.noreply.github.com> Date: Sat, 22 Nov 2025 08:40:57 +0100 Subject: [PATCH] Add files via upload --- .../components/ContributorListItem.kt.txt | 96 +++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 app/src/main/kotlin/com/aliucord/manager/ui/screens/about/components/ContributorListItem.kt.txt diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/screens/about/components/ContributorListItem.kt.txt b/app/src/main/kotlin/com/aliucord/manager/ui/screens/about/components/ContributorListItem.kt.txt new file mode 100644 index 0000000..3ffd0e6 --- /dev/null +++ b/app/src/main/kotlin/com/aliucord/manager/ui/screens/about/components/ContributorListItem.kt.txt @@ -0,0 +1,96 @@ +package com.aliucord.manager.ui.screens.about.components + +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material3.* +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.platform.LocalUriHandler +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import coil3.compose.SubcomposeAsyncImage +import com.aliucord.manager.network.models.Developer +import com.valentinilk.shimmer.shimmer + +@Composable +fun ContributorListItem( + contributor: Developer, + isLast: Boolean = false, + modifier: Modifier = Modifier +) { + val uriHandler = LocalUriHandler.current + + Column(modifier = modifier.fillMaxWidth()) { + Row( + verticalAlignment = Alignment.CenterVertically, + modifier = Modifier + .fillMaxWidth() + .clickable( + onClick = { uriHandler.openUri("https://github.com/${contributor.username}") } + ) + .padding(horizontal = 24.dp, vertical = 16.dp) + ) { + SubcomposeAsyncImage( + model = contributor.avatarUrl, + contentDescription = contributor.username, + contentScale = ContentScale.Crop, + loading = { + Surface( + color = MaterialTheme.colorScheme.surfaceVariant, + modifier = Modifier + .size(56.dp) + .clip(CircleShape) + .shimmer() + ) {} + }, + error = { + Surface( + color = MaterialTheme.colorScheme.surfaceVariant, + modifier = Modifier + .size(56.dp) + .clip(CircleShape) + ) {} + }, + modifier = Modifier + .size(56.dp) + .clip(CircleShape) + ) + + Spacer(modifier = Modifier.width(20.dp)) + + Column( + modifier = Modifier.weight(1f) + ) { + Text( + text = contributor.username, + style = MaterialTheme.typography.titleMedium, + color = MaterialTheme.colorScheme.onSurface, + maxLines = 1, + overflow = TextOverflow.Ellipsis + ) + + Spacer(modifier = Modifier.height(4.dp)) + + contributor.role?.let { role -> + Text( + text = role, + style = MaterialTheme.typography.bodyMedium, + color = MaterialTheme.colorScheme.onSurfaceVariant + ) + } + } + } + + if (!isLast) { + Divider( + color = MaterialTheme.colorScheme.outline.copy(alpha = 0.1f), + thickness = 1.dp, + modifier = Modifier.padding(start = 100.dp, end = 24.dp) + ) + } + } +}