import { Menu, MessageCircleDashed, Moon, Sun } from "lucide-react"; import { type ReactNode } from "react"; import { useTranslation } from "react-i18next"; import { Button } from "@/components/ui/button"; import { SessionHandleLabel } from "@/components/SessionHandleLabel"; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from "@/components/ui/tooltip"; import { cn } from "@/lib/utils"; import type { SessionHandle } from "@/lib/types"; interface ThreadHeaderProps { title: string; handle?: SessionHandle | null; onToggleSidebar: () => void; theme: "light" | "dark"; onToggleTheme: () => void; hideSidebarToggleForHostChrome?: boolean; hideSidebarToggle?: boolean; hostChromeTitleInset?: boolean; hideThemeButton?: boolean; hideTitle?: boolean; actions?: ReactNode; minimal?: boolean; promptNavigatorAction?: ReactNode; sessionInfoAction?: ReactNode; temporaryChatEnabled?: boolean; temporaryChatDisabled?: boolean; onTemporaryChatEnabledChange?: (enabled: boolean) => void; } export function ThreadHeader({ title, handle = null, onToggleSidebar, theme, onToggleTheme, hideSidebarToggleForHostChrome = false, hideSidebarToggle = false, hostChromeTitleInset = false, hideThemeButton = false, hideTitle = false, actions, minimal = false, promptNavigatorAction, sessionInfoAction, temporaryChatEnabled = false, temporaryChatDisabled = false, onTemporaryChatEnabledChange, }: ThreadHeaderProps) { const { t } = useTranslation(); return (
{!hideSidebarToggle ? ( ) : null} {!minimal && !hideTitle ? (
{title}
) : null} {handle ? ( @{handle.name} ) : null}
{sessionInfoAction} {promptNavigatorAction} {actions} {onTemporaryChatEnabledChange ? (
{t("temporaryChat.title")}
{t("temporaryChat.retention")}
{t("temporaryChat.expiration")}
{t("temporaryChat.externalEffects")}
) : null} {!hideThemeButton ? ( ) : null}
{!minimal ? (
) : null}
); } function ThemeButton({ theme, onToggleTheme, label, className, }: { theme: "light" | "dark"; onToggleTheme: () => void; label: string; className?: string; }) { return ( ); }