design(menu): шторка и нижняя панель 1:1 по живому forbion

Косяк: оба меню расходились с боевым forbion (_header.css).
Шторка (.app-menu--mobile): убраны скругление верха и ручка-хендл
(в живом их нет), высота — по контенту почти на весь экран (была
½ экрана), нижний отступ 90 под панель, сетка 3 кол. с gap 8 (было 20),
фон #FBFBFB. Иконки-glass теперь ЛОКАЛЬНЫЕ (assets/menu/, офлайн);
Уведомления/Настройки — фирменные mobile-*-glass вместо Material-иконок
в круге.
Нижняя панель (.header__mobile-bottom): фикс. пилюля 328×61, паддинг 3,
кнопки 55 с фоном #FBFBFB и рамкой #E6E6E6 (была градиентная), раскладка
space-between; ВОЗВРАЩЕНА подсветка активного — текущий раздел и открытый
бургер красятся полупрозрачным зелёным градиентом 104° (как в forbion).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
b-dev-mobile
2026-07-10 05:22:23 +00:00
parent 92e0e9690b
commit 7f95b07666
21 changed files with 668 additions and 79 deletions
@@ -1,10 +1,10 @@
package ru.forbion.f7cloud.mobile.ui
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Notifications
import androidx.compose.material.icons.filled.Settings
import ru.forbion.f7cloud.core.designsystem.F7AppMenuItem
// Иконки-glass шторки — локальные (assets/menu/, из живой темы forbion): офлайн + точные.
private fun glass(name: String): String = "file:///android_asset/menu/$name"
enum class AppTab(
val title: String,
val headerIconPath: String,
@@ -59,7 +59,7 @@ fun appMenuItems(
val core = coreAppMenuEntries.map { entry ->
F7AppMenuItem(
label = entry.label,
iconUrl = "$base/themes/forbion/images/header/${entry.iconPath}",
iconUrl = glass(entry.iconPath),
selected = entry.tab == active,
externalUrl = entry.webPath?.let { "$base$it" },
)
@@ -72,19 +72,17 @@ fun appMenuItems(
externalUrl = site.openUrl,
)
}
// Нативные пункты по дизайну — действия обрабатываются в AppScaffold по label
// Нативные пункты — тоже glass-иконки живой темы (mobile-*-glass), действия по label в AppScaffold
val native = listOf(
F7AppMenuItem(
label = "Уведомления",
iconUrl = "",
iconUrl = glass("mobile-notifications-glass.svg"),
selected = false,
localIcon = Icons.Filled.Notifications,
),
F7AppMenuItem(
label = "Настройки",
iconUrl = "",
iconUrl = glass("mobile-settings-glass.svg"),
selected = false,
localIcon = Icons.Filled.Settings,
),
)
return core + external + native