"use client";
import { ScrollArea } from "../ui/scroll-area";
import { Button } from "../ui/button";
import {
Scissors,
ArrowLeftToLine,
ArrowRightToLine,
Trash2,
Snowflake,
Copy,
SplitSquareHorizontal,
} from "lucide-react";
import {
Tooltip,
TooltipContent,
TooltipTrigger,
TooltipProvider,
} from "../ui/tooltip";
import { useTimelineStore, type TimelineTrack } from "@/stores/timeline-store";
export function Timeline() {
const { tracks, addTrack } = useTimelineStore();
return (
{/* Toolbar */}
Split clip (S)
Split and keep left (A)
Split and keep right (D)
Separate audio (E)
Duplicate clip (Ctrl+D)
Freeze frame (F)
Delete clip (Delete)
{/* Tracks Area */}
{/* Time Markers */}
{Array.from({ length: 16 }).map((_, i) => (
{i}s
))}
{/* Timeline Tracks */}
{tracks.length === 0 ? (
No tracks in timeline
Add a video or audio track to get started
) : (
{tracks.map((track) => (
))}
)}
);
}
function TimelineTrackComponent({ track }: { track: TimelineTrack }) {
const getTrackColor = (type: string) => {
switch (type) {
case "video":
return "bg-blue-500/20 border-blue-500/30";
case "audio":
return "bg-green-500/20 border-green-500/30";
case "effects":
return "bg-purple-500/20 border-purple-500/30";
default:
return "bg-gray-500/20 border-gray-500/30";
}
};
return (
{track.name}
{track.clips.length === 0 ? (
Drop media here
) : (
{track.clips.length} clip{track.clips.length !== 1 ? "s" : ""}
)}
);
}