"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 element for preview (simplified) const firstVideoElement = tracks .flatMap((track) => track.elements) .find((element) => { if (element.type !== "media") return false; const mediaItem = mediaItems.find((item) => item.id === element.mediaId); return mediaItem?.type === "video"; }); const firstVideoItem = firstVideoElement && firstVideoElement.type === "media" ? mediaItems.find((item) => item.id === firstVideoElement.mediaId) : null; const firstImageElement = tracks .flatMap((track) => track.elements) .find((element) => { if (element.type !== "media") return false; const mediaItem = mediaItems.find((item) => item.id === element.mediaId); return mediaItem?.type === "image"; }); const firstImageItem = firstImageElement && firstImageElement.type === "media" ? mediaItems.find((item) => item.id === firstImageElement.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

); }