summaryrefslogtreecommitdiff
path: root/packages/cli/src/ui/components/Header.tsx
diff options
context:
space:
mode:
authorGal Zahavi <[email protected]>2025-08-07 15:55:53 -0700
committerGitHub <[email protected]>2025-08-07 22:55:53 +0000
commit4f2974dbfe36638915f1b08448d2563c64f88644 (patch)
tree3c895adaad2de5a9e1ac14495c78f1b06d6c7d8d /packages/cli/src/ui/components/Header.tsx
parent65e4b941ee96525895b5a11fcb95725817478775 (diff)
feat(ui): Improve UI layout adaptation for narrow terminals (#5651)
Co-authored-by: Jacob Richman <[email protected]>
Diffstat (limited to 'packages/cli/src/ui/components/Header.tsx')
-rw-r--r--packages/cli/src/ui/components/Header.tsx22
1 files changed, 15 insertions, 7 deletions
diff --git a/packages/cli/src/ui/components/Header.tsx b/packages/cli/src/ui/components/Header.tsx
index 4038e415..0894ad14 100644
--- a/packages/cli/src/ui/components/Header.tsx
+++ b/packages/cli/src/ui/components/Header.tsx
@@ -8,30 +8,34 @@ import React from 'react';
import { Box, Text } from 'ink';
import Gradient from 'ink-gradient';
import { Colors } from '../colors.js';
-import { shortAsciiLogo, longAsciiLogo } from './AsciiArt.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
- terminalWidth: number; // For responsive logo
version: string;
nightly: boolean;
}
export const Header: React.FC<HeaderProps> = ({
customAsciiArt,
- terminalWidth,
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 =
- terminalWidth >= widthOfLongLogo ? longAsciiLogo : shortAsciiLogo;
+ displayTitle = tinyAsciiLogo;
}
const artWidth = getAsciiArtWidth(displayTitle);
@@ -52,9 +56,13 @@ export const Header: React.FC<HeaderProps> = ({
)}
{nightly && (
<Box width="100%" flexDirection="row" justifyContent="flex-end">
- <Gradient colors={Colors.GradientColors}>
+ {Colors.GradientColors ? (
+ <Gradient colors={Colors.GradientColors}>
+ <Text>v{version}</Text>
+ </Gradient>
+ ) : (
<Text>v{version}</Text>
- </Gradient>
+ )}
</Box>
)}
</Box>