beam-cli
Version:
A beautifully simple CLI for running Lighthouse audits on a statically generated (SSG) website
28 lines (27 loc) • 1.2 kB
JavaScript
import React, { useState } from 'react';
import { Text, Box, useInput, useApp, render } from 'ink';
import { delay } from '../../utils/delay.js';
import { Explorer } from '../explorer/explorer.js';
import { Header } from './header.js';
import { HelpBox } from './help.js';
export const App = ({ results }) => {
const [showHelp, setShowHelp] = useState(false);
const [quitting, setQuitting] = useState(false);
const { exit } = useApp();
useInput(async (input, key) => {
if (input === 'q' || key.escape) {
setQuitting(true);
await delay(1);
exit();
}
if (input === 'h') {
setShowHelp(!showHelp);
}
});
if (quitting)
return React.createElement(Text, null, " \uD83D\uDC4B Good-bye");
return (React.createElement(Box, { paddingX: 1, paddingBottom: 1, flexDirection: 'column' },
React.createElement(Header, { helpVisible: showHelp, title: 'Results Explorer' }),
showHelp ? React.createElement(HelpBox, null) : React.createElement(Explorer, { results: results })));
};
export const startApp = ({ results }) => render(React.createElement(App, { results: results }), {});