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 { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from "@/components/ui/tooltip"; import { cn } from "@/lib/utils"; interface ThreadHeaderProps { title: string; onToggleSidebar: () => void; theme: "light" | "dark"; onToggleTheme: () => void; hideSidebarToggleForHostChrome?: boolean; hostChromeTitleInset?: boolean; hideThemeButton?: boolean; minimal?: boolean; promptNavigatorAction?: ReactNode; sessionInfoAction?: ReactNode; temporaryChatEnabled?: boolean; temporaryChatDisabled?: boolean; onTemporaryChatEnabledChange?: (enabled: boolean) => void; } export function ThreadHeader({ title, onToggleSidebar, theme, onToggleTheme, hideSidebarToggleForHostChrome = false, hostChromeTitleInset = false, hideThemeButton = false, minimal = false, promptNavigatorAction, sessionInfoAction, temporaryChatEnabled = false, temporaryChatDisabled = false, onTemporaryChatEnabledChange, }: ThreadHeaderProps) { const { t } = useTranslation(); return (
{!minimal ? (
{title}
) : null}
{sessionInfoAction} {promptNavigatorAction} {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 ( ); }