import type { Particle } from '@/api/types'; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from '@/components/ui/card'; import { FileIcon, HelpCircleIcon, ScrollTextIcon, BookOpenIcon, } from 'lucide-react'; import { useNetwork } from '@/hooks/use-networks'; import { resolveHumanDisplay } from '@/lib/humans'; const TYPE_META: Record = { quest: { icon: ScrollTextIcon, label: 'Quest' }, paper: { icon: BookOpenIcon, label: 'Paper' }, file: { icon: FileIcon, label: 'File' }, }; interface FallbackParticleViewProps { particle: Particle; networkId: string; } export function FallbackParticleView({ particle, networkId, }: FallbackParticleViewProps) { const network = useNetwork(networkId); const creator = resolveHumanDisplay( particle.created_by_human_id, network?.humans, ); const meta = TYPE_META[particle.type] ?? { icon: HelpCircleIcon, label: particle.type, }; const Icon = meta.icon; const title = (() => { switch (particle.type) { case 'quest': return particle.properties.title; case 'paper': return particle.properties.title; case 'file': return particle.properties.filename; case 'folder': return particle.properties.name; default: return null; } })(); return (
{meta.label} {title && {title}}

From {creator.displayName}

); }