Summary
Спроектировать и реализовать типизированные модели темы Querya: Workbench (UI) и Editor (код), на базе существующих QueryaColors / QueryaColorScheme.
Проблема
Сейчас цвета размазаны между:
lib/core/theme/querya_colors.dart — именованные константы (canvas, accentCyan, …)
lib/core/theme/querya_color_scheme.dart — shadcn ColorScheme (~20 семантических слотов)
- Десятки прямых обращений к
QueryaColors.* и Color(0xFF…) в feature-виджетах
Нет единого объекта «активная тема», нет editor-токенов (keyword, string, comment, …).
Предлагаемое решение
1. QueryaWorkbenchTheme (immutable)
Покрыть минимум для MVP workbench (расширяемо):
| Токен |
Назначение |
Текущий аналог |
canvas |
Фон приложения |
QueryaColors.canvas |
surface |
Карточки, панели |
QueryaColors.surface |
sidebarBackground |
Connections panel |
colorScheme.background / card |
editorBackground |
Фон SQL/JSON editor |
colorScheme.card |
borderSubtle |
Hairline borders |
QueryaColors.borderSubtle |
accent |
CTA, focus ring |
QueryaColors.accentCyan |
onAccent |
Текст на primary |
QueryaColors.onAccent |
mutedForeground |
Вторичный текст |
mutedLabel |
destructive |
Ошибки |
colorScheme.destructive |
success / warning |
Status bars |
hardcoded в mongo editor |
gitModified / gitUntracked |
Декорации дерева (опционально MVP) |
— |
Методы: copyWith, lerp (для будущей анимации), QueryaWorkbenchTheme.darkDefault / .lightDefault.
2. QueryaEditorTheme
| Токен |
Назначение |
background |
Фон редактора |
foreground |
Default text |
lineHighlight |
Активная строка |
selection |
Выделение |
comment, keyword, string, number, operator, function, type |
Syntax tokens |
fontFamily, fontSize |
Связь с QueryaTypography.mono |
3. QueryaTheme (aggregate)
class QueryaTheme {
final QueryaWorkbenchTheme workbench;
final QueryaEditorTheme editor;
final ColorScheme shadcnColorScheme; // built from workbench
}
Фабрика QueryaTheme.fromDefaults({Brightness brightness}) — маппинг из текущих констант без визуальных изменений.
Файлы
- Новый пакет/папка:
lib/core/theme/models/ или lib/core/theme/querya_theme.dart
- Рефакторинг:
app_theme.dart строит ThemeData из QueryaTheme
Acceptance criteria
Зависимости
Оценка
~2–3 дня
Summary
Спроектировать и реализовать типизированные модели темы Querya: Workbench (UI) и Editor (код), на базе существующих
QueryaColors/QueryaColorScheme.Проблема
Сейчас цвета размазаны между:
lib/core/theme/querya_colors.dart— именованные константы (canvas, accentCyan, …)lib/core/theme/querya_color_scheme.dart— shadcnColorScheme(~20 семантических слотов)QueryaColors.*иColor(0xFF…)в feature-виджетахНет единого объекта «активная тема», нет editor-токенов (keyword, string, comment, …).
Предлагаемое решение
1.
QueryaWorkbenchTheme(immutable)Покрыть минимум для MVP workbench (расширяемо):
canvasQueryaColors.canvassurfaceQueryaColors.surfacesidebarBackgroundcolorScheme.background/ cardeditorBackgroundcolorScheme.cardborderSubtleQueryaColors.borderSubtleaccentQueryaColors.accentCyanonAccentQueryaColors.onAccentmutedForegroundmutedLabeldestructivecolorScheme.destructivesuccess/warninggitModified/gitUntrackedМетоды:
copyWith,lerp(для будущей анимации),QueryaWorkbenchTheme.darkDefault/.lightDefault.2.
QueryaEditorThemebackgroundforegroundlineHighlightselectioncomment,keyword,string,number,operator,function,typefontFamily,fontSizeQueryaTypography.mono3.
QueryaTheme(aggregate)Фабрика
QueryaTheme.fromDefaults({Brightness brightness})— маппинг из текущих констант без визуальных изменений.Файлы
lib/core/theme/models/илиlib/core/theme/querya_theme.dartapp_theme.dartстроитThemeDataизQueryaThemeAcceptance criteria
QueryaTheme.darkDefaultвизуально эквивалентен текущему UI (screenshot/smoke)lerp/copyWith/ equalitydocs/theme-tokens.md)Зависимости
Оценка
~2–3 дня