diff --git a/docs/COMPONENTS.md b/docs/COMPONENTS.md index b19e20f..3bcbd58 100644 --- a/docs/COMPONENTS.md +++ b/docs/COMPONENTS.md @@ -160,6 +160,8 @@ ConfirmationModal оборачивает Window и защищает async-confir `SplitPane` — контролируемая раскладка двух синхронных представлений с общей регулируемой границей. Приложение передаёт содержимое обеих панелей, процент primary-панели и callback изменения; дизайн-система владеет pointer capture, ограничениями размеров, focus-state и доступностью `role="separator"`. +Локальные toolbar и overlay каждого viewport являются содержимым соответствующей панели. Их нельзя позиционировать от общего workspace или вычислять по cursor/event-эвристике вложенного renderer. Если renderer хранит свою раскладку, приложение передаёт ему тот же controlled процент из `SplitPane`, чтобы renderer и локальный UI использовали одну геометрию. + Вертикальная граница меняется мышью или клавишами `←/→`, горизонтальная — `↑/↓`; `Home/End` переходят к разрешённым границам, а `Shift` ускоряет клавиатурный шаг. Доля сохраняется при resize контейнера. Минимальные проценты обеих панелей применяются одинаково к pointer и keyboard interaction. Разделитель является структурной границей между двумя рабочими представлениями и не создаёт декоративную рамку вокруг контента. При `resizable={false}` панели сохраняют ту же стабильную DOM-композицию, а separator полностью отсутствует в визуальном слое и accessibility tree; это позволяет приложению сворачивать одну из панелей без remount тяжёлого renderer. diff --git a/registry/components.json b/registry/components.json index 2fbc949..b29c2f5 100644 --- a/registry/components.json +++ b/registry/components.json @@ -249,7 +249,8 @@ "rules": [ "The application owns the controlled primary percentage and panel content; the component owns separator interaction and accessibility.", "Minimum primary and secondary percentages clamp both pointer and keyboard changes.", - "The separator is a necessary structural divider, never a decorative perimeter border." + "The separator is a necessary structural divider, never a decorative perimeter border.", + "Viewport-local toolbars belong to their SplitPane panel, and embedded renderers receive the same controlled percentage instead of exposing cursor or pointer-position heuristics." ] }, {