import * as React from "react" import { ExternalLinkIcon, FilmIcon, HeartIcon, ImageIcon, Trash2Icon, } from "@workspace/ui/components/icon" import { useTranslate } from "@workspace/i18n" import { Button } from "@workspace/ui/components/button" import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "@workspace/ui/components/dialog" import { Separator } from "@workspace/ui/components/separator" import { cn } from "@workspace/ui/lib/utils" import { mediaMessages } from "./messages" import type { MediaAsset } from "./types" import { formatMediaFileSize } from "./utils" export interface MediaDetailDialogProps { asset?: MediaAsset deletePending?: boolean favoritePending?: boolean open: boolean resolveUrl: (asset: MediaAsset) => string onDelete: (asset: MediaAsset) => void onFavorite: (asset: MediaAsset) => void onOpenChange: (open: boolean) => void } export function MediaDetailDialog({ asset, deletePending, favoritePending, open, resolveUrl, onDelete, onFavorite, onOpenChange, }: MediaDetailDialogProps) { const t = useTranslate() const [zoom, setZoom] = React.useState(1) const imageSource = asset?.kind === "image" ? resolveUrl(asset) : undefined React.useEffect(() => setZoom(1), [imageSource, open]) return ( ) } function MediaMetadata({ label, value, }: { label: string value: React.ReactNode }) { return (