From 8a0a2523ca50eabe1e0701ac049e2e5c7f61791a Mon Sep 17 00:00:00 2001 From: Miguel Solorio Date: Thu, 5 Jun 2025 14:35:47 -0700 Subject: Allow themes to theme the UI (#769) --- packages/cli/src/ui/components/AboutBox.tsx | 2 +- packages/cli/src/ui/components/AutoAcceptIndicator.tsx | 2 +- packages/cli/src/ui/components/ConsoleSummaryDisplay.tsx | 2 +- packages/cli/src/ui/components/ContextSummaryDisplay.tsx | 2 +- packages/cli/src/ui/components/DetailedMessagesDisplay.tsx | 9 ++++----- packages/cli/src/ui/components/Footer.tsx | 14 +++++--------- packages/cli/src/ui/components/Help.tsx | 4 ++-- packages/cli/src/ui/components/InputPrompt.tsx | 2 +- packages/cli/src/ui/components/LoadingIndicator.tsx | 2 +- packages/cli/src/ui/components/MemoryUsageDisplay.tsx | 10 +++------- packages/cli/src/ui/components/ShellModeIndicator.tsx | 2 +- packages/cli/src/ui/components/SuggestionsDisplay.tsx | 2 +- packages/cli/src/ui/components/ThemeDialog.tsx | 11 ++++++----- packages/cli/src/ui/components/messages/DiffRenderer.tsx | 8 ++++---- .../cli/src/ui/components/messages/ToolGroupMessage.tsx | 2 +- packages/cli/src/ui/components/messages/ToolMessage.tsx | 6 +++--- .../cli/src/ui/components/shared/RadioButtonSelect.tsx | 4 +--- 17 files changed, 37 insertions(+), 47 deletions(-) (limited to 'packages/cli/src/ui/components') diff --git a/packages/cli/src/ui/components/AboutBox.tsx b/packages/cli/src/ui/components/AboutBox.tsx index 472bf979..0744beff 100644 --- a/packages/cli/src/ui/components/AboutBox.tsx +++ b/packages/cli/src/ui/components/AboutBox.tsx @@ -24,7 +24,7 @@ export const AboutBox: React.FC = ({ }) => ( = ({ {textContent} - {subText && {subText}} + {subText && {subText}} ); diff --git a/packages/cli/src/ui/components/ConsoleSummaryDisplay.tsx b/packages/cli/src/ui/components/ConsoleSummaryDisplay.tsx index fba536d2..6012b565 100644 --- a/packages/cli/src/ui/components/ConsoleSummaryDisplay.tsx +++ b/packages/cli/src/ui/components/ConsoleSummaryDisplay.tsx @@ -27,7 +27,7 @@ export const ConsoleSummaryDisplay: React.FC = ({ {errorCount > 0 && ( {errorIcon} {errorCount} error{errorCount > 1 ? 's' : ''}{' '} - (ctrl+O for details) + (ctrl+O for details) )} diff --git a/packages/cli/src/ui/components/ContextSummaryDisplay.tsx b/packages/cli/src/ui/components/ContextSummaryDisplay.tsx index 3cfb4d8d..b42785a2 100644 --- a/packages/cli/src/ui/components/ContextSummaryDisplay.tsx +++ b/packages/cli/src/ui/components/ContextSummaryDisplay.tsx @@ -47,5 +47,5 @@ export const ContextSummaryDisplay: React.FC = ({ summaryText += mcpText; } - return {summaryText}; + return {summaryText}; }; diff --git a/packages/cli/src/ui/components/DetailedMessagesDisplay.tsx b/packages/cli/src/ui/components/DetailedMessagesDisplay.tsx index cd3f37bb..c2ecb803 100644 --- a/packages/cli/src/ui/components/DetailedMessagesDisplay.tsx +++ b/packages/cli/src/ui/components/DetailedMessagesDisplay.tsx @@ -27,13 +27,12 @@ export const DetailedMessagesDisplay: React.FC< flexDirection="column" marginTop={1} borderStyle="round" - borderColor={Colors.SubtleComment} + borderColor={Colors.Gray} paddingX={1} > - Debug Console{' '} - (ctrl+O to close) + Debug Console (ctrl+O to close) {messages.map((msg, index) => { @@ -50,7 +49,7 @@ export const DetailedMessagesDisplay: React.FC< icon = '\u2716'; // Heavy multiplication x (✖) break; case 'debug': - textColor = Colors.SubtleComment; // Or Colors.Gray + textColor = Colors.Gray; // Or Colors.Gray icon = '\u1F50D'; // Left-pointing magnifying glass (????) break; case 'log': @@ -65,7 +64,7 @@ export const DetailedMessagesDisplay: React.FC< {msg.content} {msg.count && msg.count > 1 && ( - (x{msg.count}) + (x{msg.count}) )} diff --git a/packages/cli/src/ui/components/Footer.tsx b/packages/cli/src/ui/components/Footer.tsx index 46d669b7..ea83a031 100644 --- a/packages/cli/src/ui/components/Footer.tsx +++ b/packages/cli/src/ui/components/Footer.tsx @@ -40,9 +40,7 @@ export const Footer: React.FC = ({ {shortenPath(tildeifyPath(targetDir), 70)} - {branchName && ( - ({branchName}*) - )} + {branchName && ({branchName}*)} {debugMode && ( @@ -65,13 +63,11 @@ export const Footer: React.FC = ({ ) : process.env.SANDBOX === 'sandbox-exec' ? ( sandbox-exec{' '} - - ({process.env.SEATBELT_PROFILE}) - + ({process.env.SEATBELT_PROFILE}) ) : ( - no sandbox (see README) + no sandbox (see README) )} @@ -81,7 +77,7 @@ export const Footer: React.FC = ({ {model} {corgiMode && ( - | + | @@ -91,7 +87,7 @@ export const Footer: React.FC = ({ )} {!showErrorDetails && errorCount > 0 && ( - | + | )} diff --git a/packages/cli/src/ui/components/Help.tsx b/packages/cli/src/ui/components/Help.tsx index 74d03573..92e94a8a 100644 --- a/packages/cli/src/ui/components/Help.tsx +++ b/packages/cli/src/ui/components/Help.tsx @@ -31,7 +31,7 @@ export const Help: React.FC = ({ commands }) => ( {commands .filter((command) => command.description) .map((command: SlashCommand) => ( - + {' '} /{command.name} @@ -39,7 +39,7 @@ export const Help: React.FC = ({ commands }) => ( {command.description && ' - ' + command.description} ))} - + {' '} !{' '} diff --git a/packages/cli/src/ui/components/InputPrompt.tsx b/packages/cli/src/ui/components/InputPrompt.tsx index 7e4c8c8b..4d71e612 100644 --- a/packages/cli/src/ui/components/InputPrompt.tsx +++ b/packages/cli/src/ui/components/InputPrompt.tsx @@ -349,7 +349,7 @@ export const InputPrompt: React.FC = ({ {buffer.text.length === 0 && placeholder ? ( - {placeholder} + {placeholder} ) : ( linesToRender.map((lineText, visualIdxInRenderedSet) => { const cursorVisualRow = cursorVisualRowAbsolute - scrollVisualRow; diff --git a/packages/cli/src/ui/components/LoadingIndicator.tsx b/packages/cli/src/ui/components/LoadingIndicator.tsx index 6ff4dac8..61b74b89 100644 --- a/packages/cli/src/ui/components/LoadingIndicator.tsx +++ b/packages/cli/src/ui/components/LoadingIndicator.tsx @@ -40,7 +40,7 @@ export const LoadingIndicator: React.FC = ({ {currentLoadingPhrase && ( {currentLoadingPhrase} )} - + {streamingState === StreamingState.WaitingForConfirmation ? '' : ` (esc to cancel, ${elapsedTime}s)`} diff --git a/packages/cli/src/ui/components/MemoryUsageDisplay.tsx b/packages/cli/src/ui/components/MemoryUsageDisplay.tsx index 5d9a7c49..d768445c 100644 --- a/packages/cli/src/ui/components/MemoryUsageDisplay.tsx +++ b/packages/cli/src/ui/components/MemoryUsageDisplay.tsx @@ -12,18 +12,14 @@ import { formatMemoryUsage } from '../utils/formatters.js'; export const MemoryUsageDisplay: React.FC = () => { const [memoryUsage, setMemoryUsage] = useState(''); - const [memoryUsageColor, setMemoryUsageColor] = useState( - Colors.SubtleComment, - ); + const [memoryUsageColor, setMemoryUsageColor] = useState(Colors.Gray); useEffect(() => { const updateMemory = () => { const usage = process.memoryUsage().rss; setMemoryUsage(formatMemoryUsage(usage)); setMemoryUsageColor( - usage >= 2 * 1024 * 1024 * 1024 - ? Colors.AccentRed - : Colors.SubtleComment, + usage >= 2 * 1024 * 1024 * 1024 ? Colors.AccentRed : Colors.Gray, ); }; const intervalId = setInterval(updateMemory, 2000); @@ -33,7 +29,7 @@ export const MemoryUsageDisplay: React.FC = () => { return ( - | + | {memoryUsage} ); diff --git a/packages/cli/src/ui/components/ShellModeIndicator.tsx b/packages/cli/src/ui/components/ShellModeIndicator.tsx index 612af1a6..f5b11b24 100644 --- a/packages/cli/src/ui/components/ShellModeIndicator.tsx +++ b/packages/cli/src/ui/components/ShellModeIndicator.tsx @@ -12,7 +12,7 @@ export const ShellModeIndicator: React.FC = () => ( shell mode enabled - (esc to disable) + (esc to disable) ); diff --git a/packages/cli/src/ui/components/SuggestionsDisplay.tsx b/packages/cli/src/ui/components/SuggestionsDisplay.tsx index fb8005f6..0620665f 100644 --- a/packages/cli/src/ui/components/SuggestionsDisplay.tsx +++ b/packages/cli/src/ui/components/SuggestionsDisplay.tsx @@ -57,7 +57,7 @@ export function SuggestionsDisplay({ {visibleSuggestions.map((suggestion, index) => { const originalIndex = startIndex + index; const isActive = originalIndex === activeIndex; - const textColor = isActive ? Colors.AccentPurple : Colors.SubtleComment; + const textColor = isActive ? Colors.AccentPurple : Colors.Gray; return ( diff --git a/packages/cli/src/ui/components/ThemeDialog.tsx b/packages/cli/src/ui/components/ThemeDialog.tsx index 81a34ff4..eeccee4c 100644 --- a/packages/cli/src/ui/components/ThemeDialog.tsx +++ b/packages/cli/src/ui/components/ThemeDialog.tsx @@ -97,7 +97,7 @@ export function ThemeDialog({ return ( {focusedSection === 'theme' ? '> ' : ' '}Select Theme{' '} - {otherScopeModifiedMessage} + {otherScopeModifiedMessage} - + (Use Enter to select, Tab to change focus) @@ -143,12 +143,13 @@ export function ThemeDialog({ Preview {colorizeCode( - `def fibonacci(n): + `# function +def fibonacci(n): a, b = 0, 1 for _ in range(n): a, b = b, a + b diff --git a/packages/cli/src/ui/components/messages/DiffRenderer.tsx b/packages/cli/src/ui/components/messages/DiffRenderer.tsx index 1a4c69c0..0b35e32d 100644 --- a/packages/cli/src/ui/components/messages/DiffRenderer.tsx +++ b/packages/cli/src/ui/components/messages/DiffRenderer.tsx @@ -107,7 +107,7 @@ export const DiffRenderer: React.FC = ({ if (parsedLines.length === 0) { return ( - + No changes detected. ); @@ -162,7 +162,7 @@ const renderDiffContent = ( if (displayableLines.length === 0) { return ( - + No changes detected. ); @@ -217,7 +217,7 @@ const renderDiffContent = ( borderRight={false} borderLeft={false} borderStyle="double" - borderColor={Colors.SubtleComment} + borderColor={Colors.Gray} >, ); } @@ -260,7 +260,7 @@ const renderDiffContent = ( acc.push( - {gutterNumStr.padEnd(4)} + {gutterNumStr.padEnd(4)} {prefixSymbol}{' '} diff --git a/packages/cli/src/ui/components/messages/ToolGroupMessage.tsx b/packages/cli/src/ui/components/messages/ToolGroupMessage.tsx index 280b4321..71e6a59b 100644 --- a/packages/cli/src/ui/components/messages/ToolGroupMessage.tsx +++ b/packages/cli/src/ui/components/messages/ToolGroupMessage.tsx @@ -25,7 +25,7 @@ export const ToolGroupMessage: React.FC = ({ const hasPending = !toolCalls.every( (t) => t.status === ToolCallStatus.Success, ); - const borderColor = hasPending ? Colors.AccentYellow : Colors.SubtleComment; + const borderColor = hasPending ? Colors.AccentYellow : Colors.Gray; const staticHeight = /* border */ 2 + /* marginBottom */ 1; diff --git a/packages/cli/src/ui/components/messages/ToolMessage.tsx b/packages/cli/src/ui/components/messages/ToolMessage.tsx index 0cb5a101..3883d361 100644 --- a/packages/cli/src/ui/components/messages/ToolMessage.tsx +++ b/packages/cli/src/ui/components/messages/ToolMessage.tsx @@ -72,7 +72,7 @@ export const ToolMessage: React.FC = ({ {hiddenLines > 0 && ( - + ... first {hiddenLines} line{hiddenLines === 1 ? '' : 's'}{' '} hidden ... @@ -162,7 +162,7 @@ const ToolInfo: React.FC = ({ case 'medium': return Colors.Foreground; case 'low': - return Colors.SubtleComment; + return Colors.Gray; default: { const exhaustiveCheck: never = emphasis; return exhaustiveCheck; @@ -178,7 +178,7 @@ const ToolInfo: React.FC = ({ {name} {' '} - {description} + {description} ); diff --git a/packages/cli/src/ui/components/shared/RadioButtonSelect.tsx b/packages/cli/src/ui/components/shared/RadioButtonSelect.tsx index 5cd25c7c..22b5cecd 100644 --- a/packages/cli/src/ui/components/shared/RadioButtonSelect.tsx +++ b/packages/cli/src/ui/components/shared/RadioButtonSelect.tsx @@ -111,9 +111,7 @@ export function RadioButtonSelect({ return ( {itemWithThemeProps.themeNameDisplay}{' '} - - {itemWithThemeProps.themeTypeDisplay} - + {itemWithThemeProps.themeTypeDisplay} ); } -- cgit v1.2.3