AgendaCard

 avatar
unknown
kotlin
3 years ago
3.5 kB
4
Indexable
package com.example.jimpitinuicompose

import androidx.compose.foundation.Image
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.Card
import androidx.compose.material.Surface
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import coil.compose.rememberImagePainter
import com.example.jimpitinuicompose.ui.theme.BlackTransparent
import com.example.jimpitinuicompose.ui.theme.poppins


@Composable
fun AgendaCard(
    item: Agenda
) {
    Card(
        shape = RoundedCornerShape(10.dp),
        elevation = 0.dp,
        modifier = Modifier
            .fillMaxWidth()
            .height(220.dp)
    ) {
        Box {
            Image(
                painter = rememberImagePainter(item.image),
                contentDescription = item.title,
                contentScale = ContentScale.Crop,
                modifier = Modifier.fillMaxSize()
            )
            Column(
                verticalArrangement = Arrangement.SpaceBetween,
                modifier = Modifier
                    .fillMaxSize()
                    .padding(horizontal = 15.dp)
            ) {
                DifficultySurface(item.category)
                ShortInfoSurface(
                    title = item.title,
                    time = item.time,
                    date = item.date
                )
            }
        }
    }
}

@Composable
fun DifficultySurface(level: String) {
    Surface(
        shape = CircleShape,
        color = Color.Gray.copy(0.7f),
        modifier = Modifier
            .widthIn(20.dp, 100.dp)
            .padding(top = 10.dp)
    ) {
        Text(
            text = level,
            maxLines = 1,
            overflow = TextOverflow.Ellipsis,
            color = Color.White,
            fontFamily = poppins,
            fontSize = 12.sp,
            fontWeight = FontWeight.Medium,
            modifier = Modifier.padding(vertical = 2.dp, horizontal = 10.dp)
        )
    }
}

@Composable
fun ShortInfoSurface(
    title: String,
    date: String,
    time: String
) {
    Surface(
        color = BlackTransparent.copy(0.9f),
        shape = RoundedCornerShape(10.dp),
        modifier = Modifier
            .fillMaxWidth()
            .padding(bottom = 10.dp)
    ) {
        Column(modifier = Modifier.padding(vertical = 10.dp, horizontal = 15.dp)) {
            Text(
                text = title,
                maxLines = 2,
                overflow = TextOverflow.Ellipsis,
                color = Color.White,
                fontSize = 14.sp,
                fontFamily = poppins,
                fontWeight = FontWeight.Medium
            )
            Spacer(modifier = Modifier.height(10.dp))
            Text(
                text = "$date | $time",
                color = Color.Gray,
                fontSize = 14.sp,
                fontFamily = poppins
            )
        }
    }
}