diff --git a/apps/web/src/components/editor/timeline/timeline-tracks-area.tsx b/apps/web/src/components/editor/timeline/timeline-tracks-area.tsx index 7de6df04..48b47df1 100644 --- a/apps/web/src/components/editor/timeline/timeline-tracks-area.tsx +++ b/apps/web/src/components/editor/timeline/timeline-tracks-area.tsx @@ -1,10 +1,10 @@ import { Fragment } from "react"; import { Plus } from "lucide-react"; import { - ContextMenu, - ContextMenuContent, - ContextMenuItem, - ContextMenuTrigger, + ContextMenu, + ContextMenuContent, + ContextMenuItem, + ContextMenuTrigger, } from "../../ui/context-menu"; import { useTimelineStore } from "@/stores/timeline-store"; import { TimelineTrackContent } from "../timeline-track"; @@ -14,76 +14,76 @@ import type { TimelineTrack } from "@/types/timeline"; import type { SnapPoint } from "@/hooks/use-timeline-snapping"; export interface TimelineTracksAreaProps { - tracks: TimelineTrack[]; - zoomLevel: number; - handleSnapPointChange: (snapPoint: SnapPoint | null) => void; - clearSelectedElements: () => void; + tracks: TimelineTrack[]; + zoomLevel: number; + handleSnapPointChange: (snapPoint: SnapPoint | null) => void; + clearSelectedElements: () => void; } export function TimelineTracksArea({ - tracks, - zoomLevel, - handleSnapPointChange, - clearSelectedElements, + tracks, + zoomLevel, + handleSnapPointChange, + clearSelectedElements, }: TimelineTracksAreaProps) { - const { addTrack, toggleTrackMute } = useTimelineStore(); + const { addTrack, toggleTrackMute } = useTimelineStore(); - return ( - <> - {/* Track Rows */} - {tracks.map((track, index) => ( - - {/* Left Column (Sticky Track Labels) */} -
-
- -
- {track.muted && ( - Muted - )} -
+ return ( + <> + {/* Track Rows */} + {tracks.map((track, index) => ( + + {/* Left Column (Sticky Track Labels) */} +
+
+ +
+ {track.muted && ( + Muted + )} +
- {/* Scrollable Track Content */} - - -
{ - // If clicking empty area (not on a element), deselect all elements - if (!(e.target as HTMLElement).closest(".timeline-element")) { - clearSelectedElements(); - } - }} - > - -
-
- - toggleTrackMute(track.id)}> - {track.muted ? "Unmute Track" : "Mute Track"} - - Track settings (soon) - -
-
- ))} - {/* Add Track Button - spans full width */} -
addTrack("media")} - className="col-span-1 sticky left-0 w-full flex items-center border-b border-muted bg-card hover:bg-card/50 transition-colors cursor-pointer z-[100]" - style={{ height: `${getTrackHeight("media")}px` }} - > -
- -
-
- - ); + {/* Scrollable Track Content */} + + +
{ + // If clicking empty area (not on a element), deselect all elements + if (!(e.target as HTMLElement).closest(".timeline-element")) { + clearSelectedElements(); + } + }} + > + +
+
+ + toggleTrackMute(track.id)}> + {track.muted ? "Unmute Track" : "Mute Track"} + + Track settings (soon) + +
+
+ ))} + {/* Add Track Button - spans full width */} +
addTrack("media")} + className="col-span-1 sticky left-0 w-full flex items-center border-b border-muted bg-card hover:bg-card/50 transition-colors cursor-pointer z-[100]" + style={{ height: `${getTrackHeight("media")}px` }} + > +
+ +
+
+ + ); }