Docs hub's desktop sidebar is now drag-resizable. Mobile path is
unchanged — still uses the FolderTreeSidebar Sheet drawer.
- Extracted `FolderTreeBody` from `folder-tree-sidebar.tsx` so the
same tree renders inside the mobile Sheet AND the desktop panel
without forking the component.
- `FolderTreeSidebar` is now mobile-only (just the Sheet trigger);
documents-hub composes the desktop layout itself.
- `<ResizablePanelGroup autoSaveId="documents-hub-split">` persists
the user's chosen split width via localStorage automatically.
Min 14% / max 40% defends against starvation.
- shadcn-style `<Resizable*>` primitives in `src/components/ui/`
match the rest of the UI kit; uses react-resizable-panels v3
(the v4 release renamed exports to `Group`/`Separator` and broke
the shadcn convention — pinned v3 for now).
Verified: tsc clean, vitest 1315/1315, next build green.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>