@henteko/kumiki
Version:
A video generation tool that creates videos from JSON configurations
81 lines • 3.69 kB
JavaScript
import { Box, Text, Spacer } from 'ink';
import { Spinner, ProgressBar, Alert, Badge } from '@inkjs/ui';
import * as React from 'react';
export const StatusMessage = ({ type, message, details }) => {
const typeColors = {
info: 'blue',
error: 'red',
success: 'green',
warning: 'yellow',
};
return (React.createElement(Box, { flexDirection: "column" },
React.createElement(Box, null,
React.createElement(Badge, { color: typeColors[type] }, type.toUpperCase()),
React.createElement(Text, null,
" ",
message)),
details && (React.createElement(Box, { marginLeft: 2, flexDirection: "column" }, Object.entries(details).map(([key, value]) => (React.createElement(Text, { key: key, dimColor: true },
key,
": ",
JSON.stringify(value))))))));
};
export const ProcessingScene = ({ current, total, sceneId, sceneType, }) => {
return (React.createElement(Box, null,
React.createElement(Spinner, null),
React.createElement(Text, null,
" Processing scene ",
current,
"/",
total,
": "),
React.createElement(Badge, { color: "blue" }, sceneType),
React.createElement(Text, null,
" ",
sceneId)));
};
export const GenerateProgress = ({ progress, phase }) => {
const phaseMessages = {
rendering: 'Rendering scenes',
encoding: 'Encoding video',
complete: 'Complete',
};
return (React.createElement(Box, { flexDirection: "column" },
React.createElement(Box, null,
React.createElement(Text, null, phaseMessages[phase]),
React.createElement(Spacer, null),
React.createElement(Text, null,
Math.round(progress),
"%")),
React.createElement(Box, { marginTop: 1 },
React.createElement(ProgressBar, { value: progress }))));
};
export const ValidationResult = ({ valid, errors }) => {
if (valid) {
return React.createElement(Alert, { variant: "success" }, `✅ Validation successful!`);
}
return (React.createElement(Box, { flexDirection: "column" },
React.createElement(Alert, { variant: "error" }, `❌ Validation failed!`),
errors && errors.length > 0 && (React.createElement(Box, { marginTop: 1, flexDirection: "column" }, errors.map((error, index) => (React.createElement(Text, { key: index },
React.createElement(Text, { color: "red" }, " \u2022 "),
React.createElement(Text, { dimColor: true },
error.path,
": "),
React.createElement(Text, null, error.message))))))));
};
export const PreviewSummary = ({ results, outputDir }) => {
return (React.createElement(Box, { flexDirection: "column" },
React.createElement(Alert, { variant: "success" }, `🎉 Preview generation completed!`),
React.createElement(Box, { marginTop: 1 },
React.createElement(Text, null,
"Output directory: ",
outputDir)),
React.createElement(Box, { marginTop: 1, flexDirection: "column" },
React.createElement(Text, { bold: true }, "Generated previews:"),
results.map(({ sceneId, outputPath }) => (React.createElement(Text, { key: sceneId },
React.createElement(Text, { color: "green" }, " \u2022 "),
React.createElement(Text, null,
sceneId,
": "),
React.createElement(Text, { dimColor: true }, outputPath)))))));
};
//# sourceMappingURL=components.js.map