summaryrefslogtreecommitdiff
path: root/packages/cli/src/ui/components/ThemeDialog.tsx
diff options
context:
space:
mode:
authorJacob Richman <[email protected]>2025-04-24 11:36:34 -0700
committerGitHub <[email protected]>2025-04-24 11:36:34 -0700
commit5790a5d7cf85deda92bf2e58477558b4a4ebc726 (patch)
tree26bd2a9c15a93a8378168aedcbbf45da9c35a2d5 /packages/cli/src/ui/components/ThemeDialog.tsx
parentd8c0587346b759d7ca5e02651a6bfb7586f67a34 (diff)
Add a theme preview and update the theme when highlight changes. (#151)
Diffstat (limited to 'packages/cli/src/ui/components/ThemeDialog.tsx')
-rw-r--r--packages/cli/src/ui/components/ThemeDialog.tsx38
1 files changed, 37 insertions, 1 deletions
diff --git a/packages/cli/src/ui/components/ThemeDialog.tsx b/packages/cli/src/ui/components/ThemeDialog.tsx
index b3e4f063..62ede336 100644
--- a/packages/cli/src/ui/components/ThemeDialog.tsx
+++ b/packages/cli/src/ui/components/ThemeDialog.tsx
@@ -9,13 +9,21 @@ import { Box, Text } from 'ink';
import { Colors } from '../colors.js';
import { themeManager } from '../themes/theme-manager.js';
import { RadioButtonSelect } from './shared/RadioButtonSelect.js';
+import { DiffRenderer } from './messages/DiffRenderer.js';
+import { colorizeCode } from '../utils/CodeColorizer.js';
interface ThemeDialogProps {
/** Callback function when a theme is selected */
onSelect: (themeName: string) => void;
+
+ /** Callback function when a theme is highlighted */
+ onHighlight: (themeName: string) => void;
}
-export function ThemeDialog({ onSelect }: ThemeDialogProps): React.JSX.Element {
+export function ThemeDialog({
+ onSelect,
+ onHighlight,
+}: ThemeDialogProps): React.JSX.Element {
const themeItems = themeManager.getAvailableThemes().map((theme) => ({
label: theme.active ? `${theme.name} (Active)` : theme.name,
value: theme.name,
@@ -38,12 +46,40 @@ export function ThemeDialog({ onSelect }: ThemeDialogProps): React.JSX.Element {
items={themeItems}
initialIndex={initialIndex}
onSelect={onSelect}
+ onHighlight={onHighlight}
/>
<Box marginTop={1}>
<Text color={Colors.SubtleComment}>
(Use ↑/↓ arrows and Enter to select)
</Text>
</Box>
+
+ <Box marginTop={1} flexDirection="column">
+ <Text bold>Preview</Text>
+ <Box
+ borderStyle="single"
+ borderColor={Colors.SubtleComment}
+ padding={1}
+ flexDirection="column"
+ >
+ {colorizeCode(
+ `# Source code
+print("Hello, World!")
+`,
+ 'python',
+ )}
+ <Box marginTop={1} />
+ <DiffRenderer
+ diffContent={`--- a/old_file.txt
++++ b/new_file.txt
+@@ -1,4 +1,5 @@
+ This is a context line.
+-This line was deleted.
++This line was added.
+`}
+ />
+ </Box>
+ </Box>
</Box>
);
}