"use client"; import { Input } from "../ui/input"; import { Label } from "../ui/label"; import { Slider } from "../ui/slider"; import { ScrollArea } from "../ui/scroll-area"; import { Separator } from "../ui/separator"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "../ui/select"; import { useTimelineStore } from "@/stores/timeline-store"; import { useMediaStore } from "@/stores/media-store"; import { ImageTimelineTreatment } from "@/components/ui/image-timeline-treatment"; import { useState } from "react"; import { SpeedControl } from "./speed-control"; import type { BackgroundType } from "@/types/editor"; export function PropertiesPanel() { const { tracks } = useTimelineStore(); const { mediaItems } = useMediaStore(); const [backgroundType, setBackgroundType] = useState("blur"); const [backgroundColor, setBackgroundColor] = useState("#000000"); // Get the first video clip for preview (simplified) const firstVideoClip = tracks .flatMap((track) => track.clips) .find((clip) => { const mediaItem = mediaItems.find((item) => item.id === clip.mediaId); return mediaItem?.type === "video"; }); const firstVideoItem = firstVideoClip ? mediaItems.find((item) => item.id === firstVideoClip.mediaId) : null; const firstImageClip = tracks .flatMap((track) => track.clips) .find((clip) => { const mediaItem = mediaItems.find((item) => item.id === clip.mediaId); return mediaItem?.type === "image"; }); const firstImageItem = firstImageClip ? mediaItems.find((item) => item.id === firstImageClip.mediaId) : null; return (
{/* Image Treatment - only show if an image is selected */} {firstImageItem && ( <>

Image Treatment

{/* Preview */}
{/* Background Type */}
{/* Background Color - only show for color type */} {backgroundType === "color" && (
setBackgroundColor(e.target.value)} className="w-16 h-10 p-1" /> setBackgroundColor(e.target.value)} placeholder="#000000" className="flex-1" />
)}
)} {/* Video Controls - only show if a video is selected */} {firstVideoItem && ( <> )} {/* Transform */}

Transform

{/* Effects */}

Effects

{/* Timing */}

Timing

); }