import Button from '@/components/ui/Button'
import { SiteInfo, webuiPrefix } from '@/lib/constants'
import AppSettings from '@/components/AppSettings'
import { TabsList, TabsTrigger } from '@/components/ui/Tabs'
import { useSettingsStore } from '@/stores/settings'
import { useAuthStore } from '@/stores/state'
import { cn } from '@/lib/utils'
import { useTranslation } from 'react-i18next'
import { navigationService } from '@/services/navigation'
import { ZapIcon, GithubIcon, LogOutIcon } from 'lucide-react'
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/Tooltip'
import { WorkspaceSelector } from '@/components/WorkspaceSelector'
interface NavigationTabProps {
value: string
currentTab: string
children: React.ReactNode
}
function NavigationTab({ value, currentTab, children }: NavigationTabProps) {
return (
{children}
)
}
function TabsNavigation() {
const currentTab = useSettingsStore.use.currentTab()
const { t } = useTranslation()
return (
{t('header.documents')}
{t('header.knowledgeGraph')}
{t('header.retrieval')}
{t('header.api')}
)
}
export default function SiteHeader() {
const { t } = useTranslation()
const { isGuestMode, coreVersion, apiVersion, username, webuiTitle, webuiDescription } = useAuthStore()
const versionDisplay = (coreVersion && apiVersion)
? `${coreVersion}/${apiVersion}`
: null;
const handleLogout = () => {
navigationService.navigateToLogin();
}
return (
{/* First row: Title and other header items */}
{SiteInfo.name}
{webuiTitle && (
|
{webuiTitle}
{webuiDescription && (
{webuiDescription}
)}
)}
{isGuestMode && (
{t('login.guestMode', 'Guest Mode')}
)}
{/* Second row: Workspace selector */}
)
}