import type { ReactNode } from "react"; import { Link } from "react-router"; import { useTranslation } from "react-i18next"; import { IconButton } from "@trails-cool/ui"; import { ParticipantAvatars } from "~/components/ParticipantAvatars"; import type { Participant } from "~/lib/use-participants"; interface TopbarProps { participants: Participant[]; onRenameLocal?: (name: string) => void; connected: boolean; sessionShortId: string; canUndo: boolean; canRedo: boolean; onUndo: () => void; onRedo: () => void; computing?: boolean; /** App-specific interactive slot (profile selector). */ profileSlot?: ReactNode; /** Right-aligned action slot (save-to-journal, export). */ actions?: ReactNode; } const UndoIcon = () => ( ); const RedoIcon = () => ( ); export function Topbar({ participants, onRenameLocal, connected, sessionShortId, canUndo, canRedo, onUndo, onRedo, computing = false, profileSlot, actions, }: TopbarProps) { const { t } = useTranslation("planner"); return (
{t("title")}
{profileSlot}
{actions} {computing && ( {t("computingRoute")} )} {connected ? t("connected") : t("connecting")} ยท {sessionShortId}
); }