Контекст
Продолжение #87 / PR #88: базовый QueryaDropdown на MenuAnchor внедрён. Следующий шаг — единая дизайн-система для триггеров и панелей меню, чтобы интерфейс ощущался дорогим и проработанным в рамках clean, dark UI (спокойный контраст, выверенные отступы).
Точка входа в код: lib/shared/widgets/querya_dropdown.dart
Цель
Привести все выпадающие списки (dropdowns) и кнопки их вызова (triggers) к единому визуальному стандарту на всех экранах. Консистентность размеров, типографики, отступов и hover-анимаций — премиальность десктопного UI.
Единые метрики и токены (Design System)
Зафиксировать константы в общих стилях (предпочтительно рядом с QueryaDropdown или в lib/core/theme/ / shared tokens), значения по умолчанию:
| Элемент UI |
Свойство |
Значение |
| Trigger |
Height |
32.0 |
| Trigger |
Padding |
horizontal: 12.0, vertical: 8.0 |
| Menu panel |
Shadow |
мягкая тень (blurRadius: 8.0, color: Colors.black26 или токен) |
| Menu panel |
Offset от trigger |
Y: 4.0 |
| Menu item |
Height |
28.0 |
| Menu item |
Padding |
horizontal: 8.0, vertical: 4.0 |
| Typography |
Font size |
13.0 или 14.0 |
| Border radius |
Panel + items |
6.0 |
Цвета, hover и selected — через Theme.of(context).colorScheme (shadcn): muted, accent, popover, border, foreground.
Требования к анатомии компонентов
Trigger
Menu items
Панель меню
Зоны покрытия рефакторинга
Применить стандарт через обновление QueryaDropdown (и при необходимости тонких обёрток), затем проверить/подтянуть:
| Зона |
Путь |
| Новое подключение |
lib/features/connections/ — селектор драйвера (PostgreSQL, MySQL, Redis, MongoDB) |
| Workspaces |
lib/features/postgresql/, mysql/ и др. — лимит строк, текущая БД/схема |
| Глобальные настройки |
lib/features/settings/ — тема (Light/Dark/System), пресеты, таймауты, max rows |
Acceptance criteria
Вне scope (отдельные issues)
- Замена
ContextMenu / MenuButton в connections panel и menubar
- Тема «Cyberpunk» как отдельный пресет (в ТЗ упомянута — только если пресет уже есть в roadmap)
Связанные issues
Контекст
Продолжение #87 / PR #88: базовый
QueryaDropdownнаMenuAnchorвнедрён. Следующий шаг — единая дизайн-система для триггеров и панелей меню, чтобы интерфейс ощущался дорогим и проработанным в рамках clean, dark UI (спокойный контраст, выверенные отступы).Точка входа в код:
lib/shared/widgets/querya_dropdown.dartЦель
Привести все выпадающие списки (dropdowns) и кнопки их вызова (triggers) к единому визуальному стандарту на всех экранах. Консистентность размеров, типографики, отступов и hover-анимаций — премиальность десктопного UI.
Единые метрики и токены (Design System)
Зафиксировать константы в общих стилях (предпочтительно рядом с
QueryaDropdownили вlib/core/theme// shared tokens), значения по умолчанию:32.0horizontal: 12.0,vertical: 8.0blurRadius: 8.0,color: Colors.black26или токен)Y: 4.028.0horizontal: 8.0,vertical: 4.013.0или14.06.0Цвета, hover и selected — через
Theme.of(context).colorScheme(shadcn):muted,accent,popover,border,foreground.Требования к анатомии компонентов
Trigger
SizedBox(width: 8)MainAxisAlignment.spaceBetweenили эквивалент)Menu items
muted/accent; курсорSystemMouseCursors.clickcheck) слева или жирное начертание — активная опция видна сразуПанель меню
alignmentOffsetстрого(0, 4)под triggermaxHeight≈300.0, внутренний скролл со аккуратным scrollbar6.0, мягкая теньЗоны покрытия рефакторинга
Применить стандарт через обновление
QueryaDropdown(и при необходимости тонких обёрток), затем проверить/подтянуть:lib/features/connections/— селектор драйвера (PostgreSQL, MySQL, Redis, MongoDB)lib/features/postgresql/,mysql/и др. — лимит строк, текущая БД/схемаlib/features/settings/— тема (Light/Dark/System), пресеты, таймауты, max rowsAcceptance criteria
QueryaDropdowntest/shared/querya_dropdown_test.dart)flutter analyzeиflutter testзелёныеВне scope (отдельные issues)
ContextMenu/MenuButtonв connections panel и menubarСвязанные issues