/** * @license * Copyright 2025 Google LLC * SPDX-License-Identifier: Apache-2.0 */ import React from 'react'; import { Box, Text } from 'ink'; import Gradient from 'ink-gradient'; import { Colors } from '../colors.js'; import { shortAsciiLogo, longAsciiLogo, tinyAsciiLogo } from './AsciiArt.js'; import { getAsciiArtWidth } from '../utils/textUtils.js'; import { useTerminalSize } from '../hooks/useTerminalSize.js'; interface HeaderProps { customAsciiArt?: string; // For user-defined ASCII art version: string; nightly: boolean; } export const Header: React.FC = ({ customAsciiArt, version, nightly, }) => { const { columns: terminalWidth } = useTerminalSize(); let displayTitle; const widthOfLongLogo = getAsciiArtWidth(longAsciiLogo); const widthOfShortLogo = getAsciiArtWidth(shortAsciiLogo); if (customAsciiArt) { displayTitle = customAsciiArt; } else if (terminalWidth >= widthOfLongLogo) { displayTitle = longAsciiLogo; } else if (terminalWidth >= widthOfShortLogo) { displayTitle = shortAsciiLogo; } else { displayTitle = tinyAsciiLogo; } const artWidth = getAsciiArtWidth(displayTitle); return ( {Colors.GradientColors ? ( {displayTitle} ) : ( {displayTitle} )} {nightly && ( {Colors.GradientColors ? ( v{version} ) : ( v{version} )} )} ); };