Skip to content

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

@ZhuchkaTriplesix

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
    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions