You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Merge pull request #19 from tessel-la/feat-resizable_panels
feat: Add vertically resizable panels with draggable handle
Implemented a vertically split layout system allowing users to dynamically resize
the camera/3D visualization area and control pad area by dragging a handle between them.
Key Features:
- Draggable handle between top (camera/3D) and bottom (control pad) sections
- Smooth, real-time resizing with visual feedback on hover/drag
- Configurable minimum heights (20% each section) to prevent collapse
- Persistent panel sizes saved to localStorage
- Default 60/40 split ratio (camera:pad)
Mobile Optimizations:
- Full touch event support (touchstart, touchmove, touchend)
- Larger touch targets on mobile (20px vs 16px desktop)
- Fixed viewport height using 100dvh for proper mobile browser handling
- Prevented page scrolling and layout overflow issues
- Fixed bottom panel cutoff on mobile devices
Technical Implementation:
- Custom React hook `useResizablePanels` for reusable resize logic
- Fixed positioning to prevent unwanted scrolling
- Proper overflow handling throughout layout hierarchy
- Percentage-based height calculations with resize handle offset
Both sections always fill 100% of available vertical space, providing an
intuitive split-pane experience similar to docked windows.
0 commit comments