UNPKG

@henteko/kumiki

Version:

A video generation tool that creates videos from JSON configurations

81 lines 3.69 kB
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