feat(editor): ExportModal + TimeTravelModal + InfoPanel merge + fixes

UI redesign matching prototype (Ordinis (3) dump):
- ExportModal: format (CSV/JSON/Excel/SQL) + scope (all/filtered/selected) +
  column toggles + encoding/delimiter + preview filename per redesign line
  1059-1092. CSV uses backend mutation, JSON client-side from filtered rows,
  Excel/SQL disabled (backend pending).
- TimeTravelModal: full-page compare СЕЙЧАС vs ТОЧКА ВО ВРЕМЕНИ + quick
  presets (сейчас/неделя/месяц/год/при создании) + step toggle версия/день
  + slider + tabs (Что изменилось / Записи на момент / Структура и поля) +
  "Открыть как readonly" CTA. Replaces inline TimeTravelPicker.
- InfoPanel ← используют merge: rich rows с field path + active records
  count + onClose policy chip (BLOCK/WARN/CASCADE). Inline
  DictionaryDependentsPanel above records table removed (one source of truth).
- Sidebar logo: match redesign/ui-kit.html .brand SVG (outer ring + inner
  faded ring + orbit dot offset right cx=22.5). ORDINIS Tektur tracking 0.22em
  + MDM smaller mute 0.32em.
- Bg neutralized: #fbf8ee Earth cream → #faf9f5 warm neutral default
  (per user preference, Earth cream still described in comment как opt-in).
- WorkflowBanner: Case 1 Live (approvalRequired=false) returns null —
  permanent "Опубликовано" banner = noise, status already visible в
  InfoPanel scope/version/updatedAt. Banner показывается только когда
  есть actionable state.

Critical bug fixes:
- fix(CascadeConfirmDialog): infinite render loop "Maximum update depth
  exceeded". useEffect had cascadeMut (TanStack Query mutation wrapper) в
  deps — wrapper identity changes every render → effect fires → reset() →
  store update → render → loop. Extract stable `reset` reference перед
  useEffect. Симптомы у user: создание/редактирование записи не работали.
- fix(semantic-release): add missing peer dep
  conventional-changelog-conventionalcommits (9.3.1). semantic-release 22+
  больше не bundles preset. Без неё release job падал с
  "Cannot find module 'conventional-changelog-conventionalcommits'".
This commit is contained in:
Zimin A.N.
2026-05-11 19:01:57 +03:00
parent e15a3916bf
commit 5a2220d779
10 changed files with 1109 additions and 83 deletions
@@ -185,22 +185,25 @@ function SidebarContent({
onClick={onNavigate}
title="ORDINIS MDM"
>
{/* Circle orbit icon — accent ring + dot center */}
{/* Brand orbit icon per redesign/ui-kit.html .brand SVG:
outer ring r=13 + inner faded ring r=6 + orbit dot offset right cx=22.5. */}
<svg
width="20"
height="20"
viewBox="0 0 20 20"
width="24"
height="24"
viewBox="0 0 32 32"
fill="none"
xmlns="http://www.w3.org/2000/svg"
aria-hidden
className="shrink-0"
className="shrink-0 text-accent"
>
<circle cx="10" cy="10" r="8.5" stroke="var(--color-accent)" strokeWidth="1.4" />
<circle cx="10" cy="10" r="2" fill="var(--color-accent)" />
<circle cx="16" cy="16" r="13" stroke="currentColor" strokeWidth="1.6" />
<circle cx="16" cy="16" r="6" stroke="currentColor" strokeWidth="1" opacity="0.45" />
<circle cx="22.5" cy="16" r="2.2" fill="currentColor" />
</svg>
{!collapsed && (
<span className="font-display text-base tracking-wider text-ink">
ORDINIS <span className="text-mute font-normal">MDM</span>
<span className="font-display text-[15px] font-semibold leading-none tracking-[0.22em] text-ink inline-flex items-baseline gap-1.5">
ORDINIS
<span className="text-mute font-normal tracking-[0.32em] text-[0.78em]">MDM</span>
</span>
)}
</Link>