THEMES.md: несколько тем, цвета только из схемы (не числом в коде)
This commit is contained in:
@@ -223,7 +223,55 @@ clipboardManager.setText(AnnotatedString(segment.code))
|
||||
`SelectionContainer` вокруг сообщения — иначе текст не выделить, а для агента это
|
||||
нужно постоянно.
|
||||
|
||||
### 3.10. Сборка стилей текста
|
||||
### 3.10. Образец темы: ценный, но повторять НЕ всё
|
||||
|
||||
**Где:** `client-shared/src/main/kotlin/pw/binom/client/shared/ui/FolderTheme.kt`.
|
||||
|
||||
Там есть готовый образец, **очень близкий к тому, что нужно нам**:
|
||||
|
||||
```kotlin
|
||||
data class ClientTheme(
|
||||
val name: String,
|
||||
val colorScheme: ColorScheme,
|
||||
val folderIconColor: Color,
|
||||
val unreadBadgeColor: Color,
|
||||
// ...
|
||||
)
|
||||
|
||||
val DarkClientTheme = ClientTheme(
|
||||
name = "dark",
|
||||
colorScheme = darkColorScheme(
|
||||
primary = Color(0xFF6AB2F2), onPrimary = Color.White,
|
||||
surface = Color(0xFF1A1A2E), onSurface = Color(0xFFEBEBEB),
|
||||
background = Color(0xFF121218), onBackground = Color(0xFFE0E0E0),
|
||||
error = Color(0xFFCF6679),
|
||||
// ...
|
||||
),
|
||||
// ...
|
||||
)
|
||||
```
|
||||
|
||||
**Что тут ценно — и почти совпадает с нашим решением:**
|
||||
|
||||
- тема **уже описана отдельным объектом**, а не размазана по экранам;
|
||||
- в комментарии к коду прямо сказано: «Сейчас — одна тёмная тема; **в будущем —
|
||||
переключатель тем (светлая/тёмная)**». То есть к тому же и шли;
|
||||
- значения цветов объявлены **единым источником правды для всех платформ**
|
||||
(десктоп и Android) — ровно наш случай, десктоп как образец для Android;
|
||||
- кроме цветов схемы в теме есть **именованные значения для смыслов**
|
||||
(`unreadBadgeColor`, `folderIconColor`) — то, к чему мы и хотим прийти.
|
||||
|
||||
**Что повторять НЕ надо:** в остальном коде assistent цвета всё равно вписаны
|
||||
числами — **36 штук** (`Color(0xFF4CAF50)`, `Color(0xFFF131327)` и подобные) прямо
|
||||
в экранах. То есть theme есть, а половина цветов мимо неё. Плюс `folderIconColor`
|
||||
и подобные значения заданы как `Color(0xFF768C9E)` **внутри** объекта темы — это
|
||||
правильное место, но при второй теме их придётся задавать заново руками.
|
||||
|
||||
**Наш вывод:** берём **идею** (тема = объект, имена по смыслу, единый источник для
|
||||
платформ), но **делаем строже**: ни одного цвета числом вне самой схемы, все
|
||||
именованные значения — в теме, и всё проверяется на второй теме. Подробно — `THEMES.md`.
|
||||
|
||||
### 3.11. Сборка стилей текста
|
||||
|
||||
**Где:** там же, `MarkdownSegment.Text.toAnnotatedString`, строки ~341–377.
|
||||
|
||||
@@ -267,6 +315,9 @@ clipboardManager.setText(AnnotatedString(segment.code))
|
||||
(`sketches/004-settings-agents`).
|
||||
- **`ui/NewChatDialog.kt`** (616), **`ui/ParticipantsDialog.kt`** (223) — чужое.
|
||||
- **`ui/MessageBubble.kt`** (789) — пузырь сообщения; тянет `chat-common` и чужие модели.
|
||||
- **Цвета числами в экранах** — в assistent их 36 штук `Color(0xFF…)` прямо в
|
||||
`ChatScreen` и соседних файлах. Тема там есть, но обходится мимо. Нам нужны
|
||||
цвета строго из схемы, см. `THEMES.md`.
|
||||
- **Модули `chat-*`** (`chat-common`, `chat-client`, `chat-cache`, `chat-adapter`,
|
||||
`chat-server-client`) — чужая система чатов. У нас связь с агентом идёт через
|
||||
**`pw.binom.agentik:client`**, совсем другой протокол.
|
||||
|
||||
Reference in New Issue
Block a user