import { useRef, useState } from "react"; import { CheckCircle, ImageIcon, Images, Link, Paperclip, Upload, Video, Music, FileVideo, } from "lucide-react"; import Image from "next/image"; import { Popover, PopoverContent, PopoverTrigger, } from "@/components/ui/popover"; import { Button } from "@/components/ui/button"; import { Project } from "@/types"; import Loading from "@/components/loading"; import { useUser } from "@/hooks/useUser"; import { useEditor } from "@/hooks/useEditor"; import { useAi } from "@/hooks/useAi"; import { useLoginModal } from "@/components/contexts/login-context"; export const getFileType = (url: string) => { const extension = url.split(".").pop()?.toLowerCase(); if (["jpg", "jpeg", "png", "gif", "webp", "svg"].includes(extension || "")) { return "image"; } else if (["mp4", "webm", "ogg", "avi", "mov"].includes(extension || "")) { return "video"; } else if (["mp3", "wav", "ogg", "aac", "m4a"].includes(extension || "")) { return "audio"; } return "unknown"; }; export const Uploader = ({ project }: { project: Project | undefined }) => { const { user } = useUser(); const { openLoginModal } = useLoginModal(); const { uploadFiles, isUploading, files, globalEditorLoading } = useEditor(); const { selectedFiles, setSelectedFiles, globalAiLoading } = useAi(); const [open, setOpen] = useState(false); const fileInputRef = useRef(null); const getFileIcon = (url: string) => { const fileType = getFileType(url); switch (fileType) { case "image": return ; case "video": return