import { useTranslation } from "react-i18next"; import { useNavigate } from "react-router-dom"; import { cn } from "@/lib/cn"; import type { WorldListItem, WorldStatus } from "@/types"; import { Button } from "@/components/ui/Button"; export interface WorldCardProps { world: WorldListItem; onDelete?: (world: WorldListItem) => void; className?: string; } const STATUS_BADGE: Record = { draft: "bg-warn/15 text-warn", building: "bg-accent/15 text-accent", ready: "bg-ok/15 text-ok", failed: "bg-err/15 text-err", archived: "bg-fg-dim/15 text-fg-muted", }; const STATUS_LABEL_KEY: Record = { draft: "worlds.status_draft", building: "worlds.status_building", ready: "worlds.status_ready", failed: "worlds.status_failed", archived: "worlds.status_archived", }; export function WorldCard({ world, onDelete, className }: WorldCardProps) { const { t } = useTranslation(); const navigate = useNavigate(); const isReady = world.status === "ready"; return (

{world.name}

{world.language}

{t(STATUS_LABEL_KEY[world.status])}

{world.description || "—"}

{t("worlds.player")}
{world.preview_player_name || "—"}
{t("worlds.current_time")}
{world.current_time || "—"}
{t("worlds.last_played")}
{world.last_played_at ? formatDate(world.last_played_at) : t("worlds.never_played")}
); } function formatDate(iso: string): string { try { const d = new Date(iso); return d.toLocaleString(); } catch { return iso; } }