bottombar: навигационная панель по дизайну «Новое меню»

Панель стала единой навигационной: слева назад (в Конференциях — чаты),
далее ярлыки-разделы Почта · Карточки · Конференции (активный подсвечен),
справа выдвижное меню. Профиль/Уведомления/Настройки/Создать убраны из
панели (Профиль/Уведомления/Настройки — в выдвижном меню; бейдж
уведомлений перенесён на кнопку меню).

Создание раньше вызывалось ТОЛЬКО из панели → чтобы не потерять:
- новый общий компонент F7CreateButton (зелёный круг «+»);
- добавлен в шапку Файлов (→ меню создания) и Контактов (→ добавить контакт).
Задачи/Поддержка уже имели свои кнопки; Почта — «+» в шапке.

F7BottomBarConfig упрощён (единый layout), F7MobileBottomBar получил
слоты SectionMail/SectionCards/SectionConferences + activeTabKey.
This commit is contained in:
b-dev-mobile
2026-07-08 15:26:24 +00:00
parent a30af98a8d
commit 89e32d2875
6 changed files with 126 additions and 120 deletions
@@ -48,6 +48,7 @@ import coil.compose.AsyncImage
import coil.request.ImageRequest
import ru.forbion.f7cloud.core.auth.AuthSession
import ru.forbion.f7cloud.core.designsystem.F7Colors
import ru.forbion.f7cloud.core.designsystem.F7CreateButton
import ru.forbion.f7cloud.core.designsystem.F7ModuleScreen
@Composable
@@ -76,11 +77,23 @@ fun ContactsScreen(
loading = state.loading && state.contacts.isEmpty(),
error = state.error,
) {
ContactsSearchBar(
serverUrl = session.serverUrl,
query = state.searchQuery,
onQueryChange = vm::setSearchQuery,
)
// Поиск + кнопка создания контакта (создание раньше вызывалось из нижней
// панели, теперь — из шапки, панель стала навигационной)
Row(
modifier = Modifier
.fillMaxWidth()
.padding(bottom = 8.dp),
horizontalArrangement = Arrangement.spacedBy(8.dp),
verticalAlignment = Alignment.CenterVertically,
) {
ContactsSearchBar(
serverUrl = session.serverUrl,
query = state.searchQuery,
onQueryChange = vm::setSearchQuery,
modifier = Modifier.weight(1f),
)
F7CreateButton(onClick = vm::openAddSheet, size = 40.dp)
}
if (state.syncing && state.contacts.isNotEmpty()) {
Text(
"Обновление…",
@@ -297,12 +310,11 @@ private fun ContactsSearchBar(
serverUrl: String,
query: String,
onQueryChange: (String) -> Unit,
modifier: Modifier = Modifier,
) {
val base = serverUrl.trimEnd('/')
Box(
modifier = Modifier
.fillMaxWidth()
.padding(bottom = 8.dp)
modifier = modifier
.height(40.dp)
.shadow(2.dp, RoundedCornerShape(100.dp), spotColor = Color(0xFFCBCBCB))
.clip(RoundedCornerShape(100.dp))