From be970248686c0af7d8506cba8c64bf507419da3d Mon Sep 17 00:00:00 2001 From: Maze Winther Date: Sun, 22 Jun 2025 13:07:02 +0200 Subject: so much stuff??? --- apps/web/src/components/editor/media-panel.tsx | 133 ++++++++++++++++ apps/web/src/components/editor/preview-panel.tsx | 11 ++ .../web/src/components/editor/properties-panel.tsx | 100 ++++++++++++ apps/web/src/components/editor/timeline.tsx | 173 +++++++++++++++++++++ 4 files changed, 417 insertions(+) create mode 100644 apps/web/src/components/editor/media-panel.tsx create mode 100644 apps/web/src/components/editor/preview-panel.tsx create mode 100644 apps/web/src/components/editor/properties-panel.tsx create mode 100644 apps/web/src/components/editor/timeline.tsx (limited to 'apps/web/src/components/editor') diff --git a/apps/web/src/components/editor/media-panel.tsx b/apps/web/src/components/editor/media-panel.tsx new file mode 100644 index 00000000..1e5aa465 --- /dev/null +++ b/apps/web/src/components/editor/media-panel.tsx @@ -0,0 +1,133 @@ +"use client"; + +import { Button } from "../ui/button"; +import { AspectRatio } from "../ui/aspect-ratio"; +import { useMediaStore } from "@/stores/media-store"; +import { Plus, Image, Video, Music, Upload } from "lucide-react"; +import { useState, useRef } from "react"; + +export function MediaPanel() { + const { mediaItems, addMediaItem } = useMediaStore(); + const [isDragOver, setIsDragOver] = useState(false); + const dragCounterRef = useRef(0); + + const handleAddSampleMedia = () => { + // Just for testing - add a sample media item + addMediaItem({ + name: `Sample ${mediaItems.length + 1}`, + type: "image", + }); + }; + + const getMediaIcon = (type: string) => { + switch (type) { + case "video": + return