Загрузка данных
package com.example.monika
import android.content.Intent
import android.net.Uri
import androidx.compose.foundation.*
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.*
import androidx.compose.foundation.shape.*
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.*
import androidx.compose.material3.*
import androidx.compose.runtime.*
import androidx.compose.ui.*
import androidx.compose.ui.draw.rotate
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalUriHandler
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.*
import kotlinx.coroutines.launch
@Composable
fun MonikaApp() {
val drawerState = rememberDrawerState(DrawerValue.Closed)
val rightDrawerState = rememberDrawerState(DrawerValue.Closed)
val scope = rememberCoroutineScope()
val uriHandler = LocalUriHandler.current
var showBottomSheet by remember { mutableStateOf(false) }
ModalNavigationDrawer(
drawerState = drawerState, // Левая шторка
drawerContent = {
ModalDrawerSheet {
Text("Поиск чатов", modifier = Modifier.padding(16.dp))
Text("Новый чат", modifier = Modifier.padding(16.dp).clickable { /* Твоя логика */ })
}
}
) {
ModalNavigationDrawer(
drawerState = rightDrawerState, // Правая шторка (настройки)
drawerContent = {
ModalDrawerSheet {
// Твой дизайн профиля
Column(Modifier.padding(16.dp)) {
Box(contentAlignment = Alignment.Center) {
// Кружок с полукругом
Surface(shape = CircleShape, color = Color.Gray, modifier = Modifier.size(80.dp)) {
Box(contentAlignment = Alignment.Center) {
Icon(Icons.Default.Person, null, Modifier.size(40.dp))
// Полукруг снизу
Box(Modifier.align(Alignment.BottomCenter).fillMaxWidth(0.6f).height(10.dp).background(Color.DarkGray))
}
}
Text("Скоро...", color = Color.Red, modifier = Modifier.rotate(45f))
}
Text("Профиль", fontWeight = FontWeight.Bold)
Text("Войти/Зарегистрироваться", fontSize = 12.sp)
}
HorizontalDivider()
Text("Смена темы", modifier = Modifier.padding(16.dp))
}
},
drawerState = rightDrawerState
) {
Scaffold(
topBar = {
Row(Modifier.fillMaxWidth().padding(16.dp), horizontalArrangement = Arrangement.SpaceBetween) {
Icon(Icons.Default.Menu, null, Modifier.clickable { scope.launch { drawerState.open() } })
Text("Monika", fontWeight = FontWeight.Bold)
Icon(Icons.Default.Settings, null, Modifier.clickable { scope.launch { rightDrawerState.open() } })
}
}
) { padding ->
Box(Modifier.fillMaxSize().padding(padding)) {
// Чат (Сообщения пользователя справа, Моники — слева)
// ... (здесь логика LazyColumn)
// Поле ввода
Surface(Modifier.fillMaxWidth().align(Alignment.BottomCenter).padding(8.dp)) {
Row {
IconButton(onClick = { showBottomSheet = true }) { Icon(Icons.Default.Add, null) }
// TextField...
}
}
// Шторка снизу (для плюсика)
if (showBottomSheet) {
Surface(Modifier.align(Alignment.BottomCenter).fillMaxWidth().height(200.dp), shape = RoundedCornerShape(topStart = 16.dp, topEnd = 16.dp)) {
Box {
Column {
Text("Сделать фото")
Text("Прикрепить фото")
Text("Прикрепить файл")
}
Text("Скоро....", color = Color.Red, modifier = Modifier.rotate(45f).align(Alignment.Center))
}
}
}
}
}
}
}
}