diff --git a/packages/studio/src/components/StudioGlobalDragOverlay.tsx b/packages/studio/src/components/StudioGlobalDragOverlay.tsx index ecd65cb614..00e562af33 100644 --- a/packages/studio/src/components/StudioGlobalDragOverlay.tsx +++ b/packages/studio/src/components/StudioGlobalDragOverlay.tsx @@ -17,9 +17,7 @@ export function StudioGlobalDragOverlay() { - - Drop files to import into project - + Drop to add at the playhead ); diff --git a/packages/studio/src/components/StudioRightPanel.tsx b/packages/studio/src/components/StudioRightPanel.tsx index c65fd3d0c4..652876c2bb 100644 --- a/packages/studio/src/components/StudioRightPanel.tsx +++ b/packages/studio/src/components/StudioRightPanel.tsx @@ -446,12 +446,14 @@ export function StudioRightPanel({ return ( <> + {/* Vertical resize divider: 3px visible seam, 8px pointer-capture zone via + the absolutely-positioned inner hit area. */}
handlePanelResizeStart("right", e)} onPointerMove={handlePanelResizeMove} @@ -465,10 +467,13 @@ export function StudioRightPanel({ setRightWidth(Math.max(160, Math.min(600, rightWidth + delta))); }} > -
+ {/* Expanded hit zone: 8px wide, centered on the 3px seam */} +
+ {/* Visible hairline */} +
{captionEditMode ? ( diff --git a/packages/studio/src/components/sidebar/BlocksTab.tsx b/packages/studio/src/components/sidebar/BlocksTab.tsx index c94807f1a6..6b4c27eec8 100644 --- a/packages/studio/src/components/sidebar/BlocksTab.tsx +++ b/packages/studio/src/components/sidebar/BlocksTab.tsx @@ -10,6 +10,7 @@ import { import { usePlayerStore } from "../../player"; import { formatTime } from "../../player/lib/time"; import { useStudioShellContext } from "../../contexts/StudioContext"; +import { TIMELINE_BLOCK_MIME } from "../../utils/timelineAssetDrop"; export interface BlockPreviewInfo { videoUrl?: string; posterUrl?: string; @@ -383,10 +384,16 @@ function BlockCard({ return (
{ + e.dataTransfer.effectAllowed = "copy"; + e.dataTransfer.setData(TIMELINE_BLOCK_MIME, JSON.stringify({ name })); + e.dataTransfer.setData("text/plain", name); + handleLeave(); // cancel the hover-preview timer so it doesn't fire mid-drag + }} onPointerEnter={handleEnter} onPointerLeave={handleLeave} > - {/* Thumbnail */}
{hovered && videoUrl ? (