# HUI CANON AUDIT Документ фиксирует аудит экранов и dropdown-механик NODE.DC после внедрения [HDESIGN-CODE.md](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/HDESIGN-CODE.md) и [HDROPDOWN-CANON.md](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/HDROPDOWN-CANON.md). Текущий активный техдолг по незавершенной миграции dropdown-layer: - [plane-src/docs/technical-debts/dropdown-standardization-debt.md](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/docs/technical-debts/dropdown-standardization-debt.md) Цель: - увидеть все экраны проекта в одном месте - отделить каноничные shared-dropdown от legacy-механик - понять, какие страницы уже близки к канону, а какие ещё живут на старом слое - перейти от точечных UI-фиксов к этапной стандартизации ## Текущий канон ### Каноничные dropdown-stack - `Selection dropdown` - `StateDropdown` - `PriorityDropdown` - `DateDropdown` - `MemberDropdown` - `Project / Module breadcrumb dropdown` - `Action dropdown` - [ActionDropdown](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/packages/ui/src/dropdowns/action-dropdown.tsx:109) - `Context menu` - допускается как secondary/right-click слой - не должен быть основным видимым dropdown у кнопки `...` ### Legacy-механика Основной legacy-слой, который ещё не вычищен: - [CustomMenu](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/packages/ui/src/dropdowns/custom-menu.tsx:61) Это не означает, что `CustomMenu` нужно удалить целиком прямо сейчас. Это означает: - новые action dropdown не должны строиться на нём по инерции - все пользовательски важные action-menu надо постепенно переводить на shared `ActionDropdown` - `CustomMenu` должен оставаться только там, где его subtree/submenu-поведение ещё реально нужно и пока не мигрировано ## Карта экранов проекта Ниже список page-route экранов под проектным shell: - `Главная проекта` - [page.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/page.tsx) - `Активные циклы` - [active-cycles/page.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/active-cycles/page.tsx) - `Аналитика` - [analytics/[tabId]/page.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/analytics/[tabId]/page.tsx) - `Browse` - [browse/[workItem]/page.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/browse/[workItem]/page.tsx) - `Черновики` - [drafts/page.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/drafts/page.tsx) - `Уведомления` - [notifications/page.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/notifications/page.tsx) - `Профиль / активность / профайл-вью` - [profile/[userId]/page.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/profile/[userId]/page.tsx) - [profile/[userId]/activity/page.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/profile/[userId]/activity/page.tsx) - [profile/[userId]/[profileViewId]/page.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/profile/[userId]/[profileViewId]/page.tsx) - `Стикеры` - [stickies/page.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/stickies/page.tsx) - `Workspace views` - [workspace-views/page.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/workspace-views/page.tsx) - [workspace-views/[globalViewId]/page.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/workspace-views/[globalViewId]/page.tsx) - `Список проектов` - [projects/(list)/page.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(list)/page.tsx) - `Архивы проекта` - [projects/(detail)/archives/page.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/archives/page.tsx) - `Внутренний контур / Issues` - [issues/(list)/page.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/issues/(list)/page.tsx) - [issues/(detail)/[issueId]/page.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/issues/(detail)/[issueId]/page.tsx) - `Внешние контуры` - [external-contours/page.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/external-contours/page.tsx) - `Предложения / Intake` - [intake/page.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/intake/page.tsx) - `Модули` - [modules/(list)/page.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(list)/page.tsx) - [modules/(detail)/[moduleId]/page.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(detail)/[moduleId]/page.tsx) - `Циклы` - [cycles/(list)/page.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/page.tsx) - [cycles/(detail)/[cycleId]/page.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(detail)/[cycleId]/page.tsx) - `Виды / Views` - [views/(list)/page.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(list)/page.tsx) - [views/(detail)/[viewId]/page.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(detail)/[viewId]/page.tsx) - `Страницы / Pages` - [pages/(list)/page.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(list)/page.tsx) - [pages/(detail)/[pageId]/page.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(detail)/[pageId]/page.tsx) - `Архивы issues` - [archives/issues/(list)/page.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/issues/(list)/page.tsx) - [archives/issues/(detail)/[archivedIssueId]/page.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/issues/(detail)/[archivedIssueId]/page.tsx) - `Архивы модулей` - [archives/modules/page.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/modules/page.tsx) - `Архивы циклов` - [archives/cycles/page.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/cycles/page.tsx) ## Статус по модулям относительно дизайн-канона ### Ближе всего к канону - `Внутренний контур / Issues` - это основной эталон для карточки, detail-pane, activity, properties и стандартных selection dropdown - но и здесь ещё остались legacy action-menu и точечные старые `CustomMenu` вокруг вторичных UI-мест - `Хлебные крошки project/module` - логика уже унифицирована и приведена к кликабельному dropdown-поведению ### Частично приведены, но ещё не завершены - `Внешние контуры` - основная верстка уже двинута к glass-канону - но action-menu и часть secondary popup ещё на legacy-слое - `Предложения / Intake` - detail-pane, список, фильтры и modal уже сильно приближены к канону - но внутри intake ещё остались локальные `CustomMenu` участки и sorting/menu-узлы - `Workspace / Sidebar / Project shell` - часть shell уже приведена, но sidebar-quick-actions и project/workspace action-menu ещё смешивают старый и новый подход ### Основной legacy-кластер - `Модули` - `Циклы` - `Views` - `Pages` - `Profile` - `Archives` - часть `Calendar / Spreadsheet / Relations / Attachments / Comments` Именно здесь сейчас больше всего старых `CustomMenu` и action-wrapper-ов. ## Оставшиеся legacy dropdown-механики Ниже список мест, которые ещё не переведены на канон без локальных menu-wrapper решений. ### P0. Главные action-menu рабочих сущностей Это самые важные экраны, потому что они формируют основной UX проекта. - `Issues layout common actions` - [layout-quick-actions.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/core/components/issues/layout-quick-actions.tsx:1) - `Modules quick actions` - [modules/quick-actions.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/core/components/modules/quick-actions.tsx:1) - `Cycles quick actions` - [cycles/quick-actions.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/core/components/cycles/quick-actions.tsx:1) - `Views quick actions` - [views/quick-actions.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/core/components/views/quick-actions.tsx:1) - `Pages actions` - [pages/dropdowns/actions.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/core/components/pages/dropdowns/actions.tsx:1) - `External contours actions menu` - [actions-menu.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/ce/components/projects/external-contours/actions-menu.tsx:1) Почему это legacy: - все эти места по сути решают одну задачу: показать список действий по кнопке `...` - часть из них ещё сидит на `CustomMenu` - часть визуально близка к канону, но не использует единый `ActionDropdown` Что нужно: - перевести их на `ActionDropdown` - оставить `ContextMenu` только как secondary/right-click слой, если он реально нужен ### P1. Action-menu внутри detail / relation / attachment / comments - `Comments quick actions` - [comments/quick-actions.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/core/components/comments/quick-actions.tsx:1) - `Issue detail parent` - [issue-detail/parent/root.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/core/components/issues/issue-detail/parent/root.tsx:1) - [issue-detail/parent/sibling-item.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/core/components/issues/issue-detail/parent/sibling-item.tsx:1) - `Issue detail links` - [issue-detail/links/link-item.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/core/components/issues/issue-detail/links/link-item.tsx:1) - `Relations list item` - [relations/issue-list-item.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/core/components/issues/relations/issue-list-item.tsx:1) - `Attachments` - [attachment-list-item.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/core/components/issues/attachment/attachment-list-item.tsx:1) - `Sub-issues / relations widgets` - [sub-issues/quick-action-button.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/core/components/issues/issue-detail-widgets/sub-issues/quick-action-button.tsx:1) - [relations/quick-action-button.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/core/components/issues/issue-detail-widgets/relations/quick-action-button.tsx:1) - [sub-issues/issues-list/list-item.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/core/components/issues/issue-detail-widgets/sub-issues/issues-list/list-item.tsx:1) Почему это важно: - это вторичный, но очень частый слой интерфейса - пользователь должен видеть те же surface, spacing и placement, что и на карточках задач ### P1. Legacy menus в list/group header и табличных видах - `Kanban group-by card` - [kanban/headers/group-by-card.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/core/components/issues/issue-layouts/kanban/headers/group-by-card.tsx:1) - `List group-by card` - [list/headers/group-by-card.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/core/components/issues/issue-layouts/list/headers/group-by-card.tsx:1) - `Spreadsheet header column` - [spreadsheet/columns/header-column.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/core/components/issues/issue-layouts/spreadsheet/columns/header-column.tsx:1) - `Calendar quick add issue actions` - [calendar/quick-add-issue-actions.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/core/components/issues/issue-layouts/calendar/quick-add-issue-actions.tsx:1) Что тут нужно: - унифицировать action-menu заголовков, фильтров и group controls - не смешивать `CustomMenu` со старой кнопочной геометрией там, где можно жить на общем action stack ### P1. Legacy sorting/order-by dropdown - `Project order-by` - [project/dropdowns/order-by.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/core/components/project/dropdowns/order-by.tsx:1) - `Modules order-by` - [modules/dropdowns/order-by.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/core/components/modules/dropdowns/order-by.tsx:1) - `Views order-by` - [views/filters/order-by.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/core/components/views/filters/order-by.tsx:1) - `Pages order-by` - [pages/list/order-by.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/core/components/pages/list/order-by.tsx:1) - `Inbox order-by` - [inbox-filter/sorting/order-by.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/core/components/inbox/inbox-filter/sorting/order-by.tsx:1) Это не quick-actions, но это тоже dropdown-узлы, которые стоит перевести на единый selection/sorting-канон, а не держать на разрозненном `CustomMenu`. ### P2. Mobile header legacy menus - `Profile mobile header` - [profile/[userId]/mobile-header.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/profile/[userId]/mobile-header.tsx:1) - `Modules mobile headers` - [modules/(detail)/mobile-header.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(detail)/mobile-header.tsx:1) - [modules/(list)/mobile-header.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(list)/mobile-header.tsx:1) - `Cycles mobile headers` - [cycles/(detail)/mobile-header.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(detail)/mobile-header.tsx:1) - [cycles/(list)/mobile-header.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/mobile-header.tsx:1) Это второй этап после desktop surface. ### P2. Workspace / navigation / utility legacy menus - `Project actions menu` - [project-actions-menu.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/core/components/navigation/project-actions-menu.tsx:1) - `Workspace sidebar project item` - [projects-list-item.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/core/components/workspace/sidebar/projects-list-item.tsx:1) - `Workspace views quick actions` - [workspace/views/quick-action.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/core/components/workspace/views/quick-action.tsx:1) - [workspace/views/default-view-quick-action.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/core/components/workspace/views/default-view-quick-action.tsx:1) - `Workspace / user / help / favorites` - [workspace-menu-header.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/core/components/workspace/sidebar/workspace-menu-header.tsx:1) - [user-menu-root.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/core/components/workspace/sidebar/user-menu-root.tsx:1) - [favorite-item-quick-action.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/core/components/workspace/sidebar/favorites/favorite-items/common/favorite-item-quick-action.tsx:1) Это уже не P0, но на общем ощущении системы они сказываются сильно. ## Экраны, которые ещё нужно перевести на канон по дизайну Ниже список экранов не только по dropdown, а вообще по UI-канону. ### 1. Внутренний контур Статус: - основной эталон по `board + detail-shell + cards + activity + properties` Осталось: - дочистить legacy action-menu вне основной карточки и detail-secondary слоёв - добить альтернативные view `list / calendar / gantt / spreadsheet` - добить group headers, spreadsheet header menus, calendar quick add - унифицировать secondary popup в relations, attachments, comments ### 2. Внешние контуры Статус: - cards и detail-shell близки к канону, но модуль ещё не закрыт полностью Осталось: - перевести [actions-menu.tsx](/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src/apps/web/ce/components/projects/external-contours/actions-menu.tsx:1) на тот же action-dropdown канон, если там ещё остались legacy-path - проверить дополнительное окно информации и related detail-surface ещё раз по glass/radius/button rules - сравнить все detail-row и popup с эталоном `Внутреннего контура` ### 3. Предложения / Intake Статус: - сильно продвинуты к канону Осталось: - добить все `CustomMenu` в create modal и sorting - полностью убрать остатки старого menu-wrapper поведения - пройти весь flow `список -> деталь -> создание -> фильтры -> сортировка` ещё раз на единый shell ### 4. Модули Статус: - legacy Осталось: - list/detail headers - quick actions - mobile headers - order-by/filter dropdown - сравнение карточек и action-bars с эталоном `Внутреннего контура` ### 5. Циклы Статус: - legacy Осталось: - quick actions - list/detail/mobile headers - archived cycles header / controls - приведение всех dropdown к канону `selection/action` ### 6. Views Статус: - legacy Осталось: - quick actions - order-by/filters - view list header - surface/spacing/popup alignment ### 7. Pages Статус: - legacy Осталось: - page list order-by - page actions dropdown - editor toolbar popup - detail/list header alignment ### 8. Archives Статус: - partial legacy Осталось: - архивы issues/modules/cycles привести к тем же header, filter, action-menu принципам - убрать разные локальные mobile/header menu-path ### 9. Workspace shell / sidebar / navigation Статус: - partial Осталось: - project/workspace/user/favorites menus - единая логика quick actions в sidebar - единый visual shell popup на всём workspace слое ### 10. Profile / Notifications / Active cycles / Analytics / Drafts / Browse / Stickies Статус: - требуется отдельный дизайн-аудит Это не значит, что там всё сломано. Это значит: - эти экраны пока не проходили такой же системный канонический прогон, как `Внутренний контур`, `Внешние контуры` и `Intake` - их надо отдельно сверить по dropdown, button, popup, glass shell, toolbar и spacing - отдельный приоритет внутри этого блока: - `Analytics overview` - `Workspace dashboard / Home` - `Drafts` - `Profile` - `Stickies` - `Browse / All issues / Workspace view` - `Settings` ## Общий список страниц, которые требуют полноценного UI-pass Порядок рекомендован по приоритету: 1. `Modules list/detail` 2. `Cycles list/detail` 3. `Views list/detail` 4. `Pages list/detail` 5. `Archives issues/modules/cycles` 6. `Workspace sidebar / project shell / navigation` 7. `Profile` 8. `Stickies` 9. `Analytics` 10. `Drafts` 11. `Browse` 12. `Notifications` 13. `Active cycles` ## Что именно значит "подбить к канону" Для каждого экрана нужно проверять не только dropdown. Чек-лист: - breadcrumb соответствует канону project/module dropdown - toolbar сидит на общем вертикальном ритме - filled CTA используют акцент + тёмный текст - secondary buttons без лишних outline - popup и modal имеют matte black glass shell - selection dropdown и action dropdown не смешаны по механике - `...` и соседние controls имеют совместимую геометрию - detail-pane и cards используют shared shell, а не локальную внешнюю заплатку - list item spacing и card spacing не выбиваются из эталона - create modal / edit modal используют shared modal-input and modal-editor canon - mobile header не живёт своей отдельной стилистикой без причины ## Предлагаемая этапность миграции ### Этап 1. Action-menu миграция P0 Перевести на `ActionDropdown`: - issues layout actions - modules quick actions - cycles quick actions - views quick actions - pages actions - external contours actions menu Результат: - основной каркас action-menu во всех сущностях будет стандартизирован ### Этап 2. Detail widgets и row actions Перевести: - comments - relations - links - attachments - sub-issues widgets Результат: - вторичный слой меню перестанет выбиваться из канона ### Этап 3. Sorting / order-by / filter popup Перевести: - project/modules/views/pages/inbox sorting - group headers - spreadsheet/calendar header menus Результат: - selection/sorting popup тоже уйдут с разрозненного legacy слоя ### Этап 4. Modules / Cycles / Views / Pages design pass Сделать полный UI-pass: - list - detail - mobile headers - empty states - cards - top-toolbar - modal ### Этап 5. Workspace / profile / utility screens Пройти: - workspace sidebar - user/project actions - profile - stickies - analytics - drafts - browse - notifications ## Главный вывод Сейчас проект уже не находится в состоянии "везде хаос". Уже есть рабочий канон: - breadcrumbs - action dropdown - selection dropdown - `Внутренний контур` как основной визуальный эталон - `Внешние контуры` и `Intake` как частично приведённые модули Но legacy слой ещё большой. Ключевая проблема не в одном баге dropdown. Ключевая проблема в том, что часть экранов уже живёт на shared-каноне, а часть всё ещё использует старые локальные `CustomMenu` и menu-wrapper решения. Значит, следующая правильная работа: - не лечить случайные оффсеты по одному - а поэтапно переводить оставшиеся экраны на общий dropdown и UI-канон