import { Calendar, FileText, Info, LucideIcon, Maximize2, Type } from 'lucide-react'; import { Box } from './Box'; import { Icon } from './Icon'; import { Text } from './Text'; export interface MediaMetaItem { label: string; value: string | number; icon?: LucideIcon; } export interface MediaMetaPanelProps { title?: string; items: MediaMetaItem[]; className?: string; } export function MediaMetaPanel({ title = 'Asset Details', items, className = '', }: MediaMetaPanelProps) { return ( {title} {items.map((item, index) => ( {item.icon && } {item.label} {item.value} ))} ); } // Helper to map common media metadata export const mapMediaMetadata = (metadata: { filename?: string; size?: number; dimensions?: string; contentType?: string; createdAt?: string | Date; }): MediaMetaItem[] => { const items: MediaMetaItem[] = []; if (metadata.filename) { items.push({ label: 'Filename', value: metadata.filename, icon: FileText }); } if (metadata.size) { items.push({ label: 'Size', value: `${Math.round(metadata.size / 1024)} KB`, icon: Maximize2 }); } if (metadata.dimensions) { items.push({ label: 'Dimensions', value: metadata.dimensions, icon: Maximize2 }); } if (metadata.contentType) { items.push({ label: 'Type', value: metadata.contentType, icon: Type }); } if (metadata.createdAt) { const date = typeof metadata.createdAt === 'string' ? new Date(metadata.createdAt) : metadata.createdAt; items.push({ label: 'Created', value: date.toLocaleDateString(), icon: Calendar }); } return items; };