2025-09-06 01:39:02 -04:00
|
|
|
/**
|
|
|
|
|
* @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';
|
2026-02-03 16:51:21 -05:00
|
|
|
import { UserIdentity } from './UserIdentity.js';
|
2025-09-06 01:39:02 -04:00
|
|
|
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';
|
2025-11-20 13:57:06 -08:00
|
|
|
import { useBanner } from '../hooks/useBanner.js';
|
2026-01-22 15:46:18 -05:00
|
|
|
import { useTips } from '../hooks/useTips.js';
|
2025-09-06 01:39:02 -04:00
|
|
|
|
|
|
|
|
interface AppHeaderProps {
|
|
|
|
|
version: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export const AppHeader = ({ version }: AppHeaderProps) => {
|
|
|
|
|
const settings = useSettings();
|
|
|
|
|
const config = useConfig();
|
2026-01-26 15:23:54 -08:00
|
|
|
const { nightly, terminalWidth, bannerData, bannerVisible } = useUIState();
|
2025-11-18 12:01:16 -05:00
|
|
|
|
2025-11-20 13:57:06 -08:00
|
|
|
const { bannerText } = useBanner(bannerData, config);
|
2026-01-22 15:46:18 -05:00
|
|
|
const { showTips } = useTips();
|
2025-09-08 16:41:39 +00:00
|
|
|
|
2025-09-06 01:39:02 -04:00
|
|
|
return (
|
|
|
|
|
<Box flexDirection="column">
|
2026-01-15 09:26:10 -08:00
|
|
|
{!(settings.merged.ui.hideBanner || config.getScreenReader()) && (
|
2025-11-18 12:01:16 -05:00
|
|
|
<>
|
|
|
|
|
<Header version={version} nightly={nightly} />
|
2025-11-20 08:52:15 -08:00
|
|
|
{bannerVisible && bannerText && (
|
2025-11-18 12:01:16 -05:00
|
|
|
<Banner
|
2026-01-26 15:23:54 -08:00
|
|
|
width={terminalWidth}
|
2025-11-20 08:52:15 -08:00
|
|
|
bannerText={bannerText}
|
2025-11-20 13:57:06 -08:00
|
|
|
isWarning={bannerData.warningText !== ''}
|
2025-11-18 12:01:16 -05:00
|
|
|
/>
|
|
|
|
|
)}
|
|
|
|
|
</>
|
2025-09-06 01:39:02 -04:00
|
|
|
)}
|
2026-02-03 16:51:21 -05:00
|
|
|
{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} />}
|
2025-09-06 01:39:02 -04:00
|
|
|
</Box>
|
|
|
|
|
);
|
|
|
|
|
};
|