import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Label } from "@/components/ui/label"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { AlertCircle, Edit, Loader2, Plus, Save, Trash2 } from "lucide-react"; import { SpeciesDetails, TimelineEvent } from "@/lib/api"; import { formatDate } from "@/lib/utils"; import { useTimelineEventCrud } from "@/hooks/useTimelineEventCrud"; import { useQuery } from "@tanstack/react-query"; import { getTimelineEvents } from "@/lib/api"; type TimelineTabProps = { species: SpeciesDetails; }; export function TimelineTab({ species }: TimelineTabProps) { const { data: timelineEvents, isLoading: timelineLoading } = useQuery({ queryKey: ["timelineEvents", species.id], queryFn: () => getTimelineEvents(species.id), }); const { isEditingTimelineEvent, isAddingTimelineEvent, timelineEventForm, operationStatus, handleTimelineEventFormChange, handleEditTimelineEvent, handleAddTimelineEvent, handleSaveTimelineEvent, handleDeleteTimelineEvent, handleCancelTimelineEvent } = useTimelineEventCrud(species.id); return ( Conservation Timeline Historical conservation and trade events {/* Operation status messages */} {operationStatus.error && (

Error

{operationStatus.error}

)} {operationStatus.success && (

Operation completed successfully.

)} {/* Timeline event form */} {(isAddingTimelineEvent || isEditingTimelineEvent) && (

{isAddingTimelineEvent ? "Add New Timeline Event" : "Edit Timeline Event"}

{ handleTimelineEventFormChange("event_date", e.target.value); // Also update the year based on the date const year = new Date(e.target.value).getFullYear(); handleTimelineEventFormChange("year", year); }} className="w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background" />
handleTimelineEventFormChange("title", e.target.value)} className="w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background" placeholder="Event title" />