Files
gemini-cli/packages/cli/src/ui/components/AppHeader.tsx

52 lines
1.5 KiB
TypeScript
Raw Normal View History

/**
* @license
* Copyright 2025 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
import { Box } from 'ink';
import { Header } from './Header.js';
import { Tips } from './Tips.js';
import { UserIdentity } from './UserIdentity.js';
import { useSettings } from '../contexts/SettingsContext.js';
import { useConfig } from '../contexts/ConfigContext.js';
import { useUIState } from '../contexts/UIStateContext.js';
2025-11-20 08:52:15 -08:00
import { Banner } from './Banner.js';
import { useBanner } from '../hooks/useBanner.js';
2026-01-22 15:46:18 -05:00
import { useTips } from '../hooks/useTips.js';
interface AppHeaderProps {
version: string;
}
export const AppHeader = ({ version }: AppHeaderProps) => {
const settings = useSettings();
const config = useConfig();
const { nightly, terminalWidth, bannerData, bannerVisible } = useUIState();
const { bannerText } = useBanner(bannerData, config);
2026-01-22 15:46:18 -05:00
const { showTips } = useTips();
return (
<Box flexDirection="column">
{!(settings.merged.ui.hideBanner || config.getScreenReader()) && (
<>
<Header version={version} nightly={nightly} />
2025-11-20 08:52:15 -08:00
{bannerVisible && bannerText && (
<Banner
width={terminalWidth}
2025-11-20 08:52:15 -08:00
bannerText={bannerText}
isWarning={bannerData.warningText !== ''}
/>
)}
</>
)}
{settings.merged.ui.showUserIdentity !== false && (
<UserIdentity config={config} />
)}
2026-01-22 15:46:18 -05:00
{!(settings.merged.ui.hideTips || config.getScreenReader()) &&
showTips && <Tips config={config} />}
</Box>
);
};