Skip to content

Theme: модели QueryaWorkbenchTheme и QueryaEditorTheme #38

Description

@ZhuchkaTriplesix

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

  • QueryaTheme.darkDefault визуально эквивалентен текущему UI (screenshot/smoke)
  • Есть unit-тесты на lerp / copyWith / equality
  • Документирован маппинг VS Code keys → workbench tokens (таблица в комментарии или docs/theme-tokens.md)

Зависимости

Оценка

~2–3 дня

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestthemeTheming, colors, VS Code themes

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions