From abdfaa8fcc2da6fba8bab6d73f43498e4f77f5a5 Mon Sep 17 00:00:00 2001 From: "Zimin A.N." Date: Mon, 11 May 2026 17:49:57 +0300 Subject: [PATCH] fix(ui): 3 user-reported issues MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1) MODAL OFF-SCREEN (Schema/AOI/Confirm dialogs) DialogContent had `inset-0 w-full h-full` + `min-[880px]:inset-auto` конфликтовал — inset-0 winning по CSS specificity, modal приклеивался к левому краю viewport вместо центра. User screenshot показал Schema edit выходящим за левую границу экрана. Fix: remove inset-0 fullscreen pattern. Use simple centered modal — left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 + w-[95vw] max-h-[95vh] overflow-y-auto. На mobile <880px max-w из size variant даёт ширину 95vw (natural fit). На desktop max-w ограничивает до 440/560/720/880/920px. 2) LOGO 'ORDINIS MDM' С CIRCLE ICON (per redesign prototype) Sidebar logo: 'ORDINIS' → circle icon (accent orbit ring + dot) + 'ORDINIS' bold + 'MDM' mute subtitle (Tektur). SVG inline — нет external dep. Collapsed mode: только circle icon, no text (uses Tektur ORDINIS dropped). 3) TIMELINE BUTTON LABEL InfoPanel button 'Time-travel…' → 'Таймлайн' (per user feedback). Behaviour не меняется — клик открывает picker. Inline таймлайн visualization отложен (большой refactor, нужен product decision). Verified: - Dialog modal центрируется на десктоп - Logo рендерится с svg + text - Tests: 116 pass --- .../src/components/editor/EditorInfoPanel.tsx | 2 +- .../src/components/layout/Sidebar.tsx | 27 +++++++++++++++---- ordinis-admin-ui/src/ui/components/dialog.tsx | 10 +++---- 3 files changed, 28 insertions(+), 11 deletions(-) diff --git a/ordinis-admin-ui/src/components/editor/EditorInfoPanel.tsx b/ordinis-admin-ui/src/components/editor/EditorInfoPanel.tsx index 664808a..132f747 100644 --- a/ordinis-admin-ui/src/components/editor/EditorInfoPanel.tsx +++ b/ordinis-admin-ui/src/components/editor/EditorInfoPanel.tsx @@ -90,7 +90,7 @@ export function EditorInfoPanel({ detail, recordCount, actions }: EditorInfoPane )} > - {t('timeTravel.button', { defaultValue: 'Time-travel…' })} + {t('timeTravel.timeline', { defaultValue: 'Таймлайн' })} )} {actions.onAoi && ( diff --git a/ordinis-admin-ui/src/components/layout/Sidebar.tsx b/ordinis-admin-ui/src/components/layout/Sidebar.tsx index 99f4ca2..a031af1 100644 --- a/ordinis-admin-ui/src/components/layout/Sidebar.tsx +++ b/ordinis-admin-ui/src/components/layout/Sidebar.tsx @@ -172,20 +172,37 @@ function SidebarContent({ const { t } = useTranslation() return ( <> - {/* Logo block */} + {/* Logo block per redesign prototype: circle (accent) + ORDINIS + MDM mute */}
- {collapsed ? 'O' : 'ORDINIS'} + {/* Circle orbit icon — accent ring + dot center */} + + + + + {!collapsed && ( + + ORDINIS MDM + + )}
diff --git a/ordinis-admin-ui/src/ui/components/dialog.tsx b/ordinis-admin-ui/src/ui/components/dialog.tsx index 2acb25d..9d2d578 100644 --- a/ordinis-admin-ui/src/ui/components/dialog.tsx +++ b/ordinis-admin-ui/src/ui/components/dialog.tsx @@ -76,11 +76,11 @@ export const DialogContent = React.forwardRef< ref={ref} className={cn( 'fixed z-50 grid gap-4 border border-line bg-surface p-6 shadow-2xl duration-200', - // Mobile <880px (per handoff): fullscreen 100vw × 100dvh, no corners, - // no centered transform. Editor body становится single-column natively. - 'inset-0 w-full h-full', - // Desktop ≥880px: centered modal с rounded corners + max-w из SIZE_CLASSES. - 'min-[880px]:left-1/2 min-[880px]:top-1/2 min-[880px]:inset-auto min-[880px]:h-auto min-[880px]:w-full min-[880px]:-translate-x-1/2 min-[880px]:-translate-y-1/2 min-[880px]:rounded-lg', + // Centered modal — left/top 50% + translate. В <880px mode пользуем + // max-width 95vw чтобы modal не упирался в edges (вместо fullscreen + // inset-0 который конфликтовал с left-1/2 → modal off-screen). + 'left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2', + 'w-[95vw] max-h-[95vh] overflow-y-auto rounded-lg', 'data-[state=open]:animate-in data-[state=closed]:animate-out', 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0', 'data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',