import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Calendar, Tag, Building2, MapPin } from 'lucide-react'; import { Badge } from '@/components/ui/badge'; import { FlexibleDateDisplay } from '@/components/ui/flexible-date-display'; import type { TimelineSubmissionData } from '@/types/timeline'; import { useEffect, useState } from 'react'; import { supabase } from '@/lib/supabaseClient'; interface TimelineEventPreviewProps { data: TimelineSubmissionData; } export function TimelineEventPreview({ data }: TimelineEventPreviewProps) { const [entityName, setEntityName] = useState(null); useEffect(() => { if (!data?.entity_id || !data?.entity_type) return; const fetchEntityName = async () => { const table = data.entity_type === 'park' ? 'parks' : 'rides'; const { data: entity } = await supabase .from(table) .select('name') .eq('id', data.entity_id) .single(); setEntityName(entity?.name || null); }; fetchEntityName(); }, [data?.entity_id, data?.entity_type]); const formatEventType = (type: string) => { return type.replace(/_/g, ' ').replace(/\b\w/g, (l) => l.toUpperCase()); }; const getEventTypeColor = (type: string) => { const colors: Record = { opening: 'bg-green-600', closure: 'bg-red-600', reopening: 'bg-blue-600', renovation: 'bg-purple-600', expansion: 'bg-indigo-600', acquisition: 'bg-amber-600', name_change: 'bg-cyan-600', operator_change: 'bg-orange-600', owner_change: 'bg-orange-600', location_change: 'bg-pink-600', status_change: 'bg-yellow-600', milestone: 'bg-emerald-600', }; return colors[type] || 'bg-gray-600'; }; return ( {data.title}
{formatEventType(data.event_type)} {data.entity_type}
{entityName && (
Entity: {entityName}
)}
Event Date:

Precision: {data.event_date_precision}

{(data.from_value || data.to_value) && (
Change: {data.from_value || '—'} → {data.to_value || '—'}
)} {(data.from_entity_id || data.to_entity_id) && (
Related entities: {data.from_entity_id ? 'From entity' : ''} {data.to_entity_id ? 'To entity' : ''}
)} {(data.from_location_id || data.to_location_id) && (
Location change involved
)} {data.description && (
Description:

{data.description}

)}
); }