codeplot
Version:
Interactive CLI tool for feature planning and ADR generation using Gemini 2.5 Pro
70 lines (63 loc) • 2.8 kB
JSX
import React from 'react';
import { Box, Text } from 'ink';
const InitializationView = ({ statusMessage, repomixSummary, aiAnalysis, isStreamingAnalysis, streamingAnalysis }) => {
return (
<Box flexDirection="column" padding={1}>
{/* Header */}
<Box borderStyle="single" padding={1}>
<Text color="blue" bold>📊 Codeplot</Text>
<Text color="gray"> - AI-powered feature planning</Text>
</Box>
{/* Status Message */}
<Box padding={1}>
<Text color="yellow">🔄 {statusMessage}</Text>
</Box>
{/* Repomix Summary */}
{repomixSummary && (
<Box flexDirection="column" marginY={1}>
<Box borderStyle="single" borderColor="cyan" paddingX={1}>
<Text color="cyan" bold>📦 Repomix Summary</Text>
</Box>
<Box paddingX={1} paddingY={1}>
<Box flexDirection="column">
<Text color="gray">Files processed: <Text color="white">{repomixSummary.fileCount.toLocaleString()}</Text></Text>
<Text color="gray">Total lines: <Text color="white">{repomixSummary.totalLines.toLocaleString()}</Text></Text>
<Text color="gray">Content size: <Text color="white">{repomixSummary.sizeKB} KB</Text></Text>
<Text color="gray">Estimated tokens: <Text color="white">{repomixSummary.estimatedTokens.toLocaleString()}</Text></Text>
{repomixSummary.sampleFiles.length > 0 && (
<Box flexDirection="column" marginTop={1}>
<Text color="gray">Sample files:</Text>
{repomixSummary.sampleFiles.map((file, index) => (
<Text key={index} color="gray"> • <Text color="white">{file}</Text></Text>
))}
{repomixSummary.hasMoreFiles && (
<Text color="gray"> ... and <Text color="white">{repomixSummary.remainingCount}</Text> more files</Text>
)}
</Box>
)}
</Box>
</Box>
</Box>
)}
{/* AI Analysis */}
{(aiAnalysis || isStreamingAnalysis) && (
<Box flexDirection="column" marginY={1}>
<Box borderStyle="single" borderColor="blue" paddingX={1}>
<Text color="blue" bold>🤖 AI Analysis</Text>
</Box>
<Box paddingX={1} paddingY={1}>
{isStreamingAnalysis ? (
<Box flexDirection="column">
<Text wrap="wrap">{streamingAnalysis}</Text>
{streamingAnalysis && <Text color="yellow">▋</Text>}
</Box>
) : (
<Text wrap="wrap">{aiAnalysis}</Text>
)}
</Box>
</Box>
)}
</Box>
);
};
export default InitializationView;