(A re-release of Foton Terminal)
This is a pre-release which means the package is in the early stages of development. Every new version is likely to introduce breaking changes as the core functionalities are still being developed.
Photon Terminal is a CLI formatting tool for web-developers that structures output in a similar way to React elements. Photon Terminal stands out because it lets you style CLI output with CSS-rules.
npm i -D photon-terminal
Elements are individual components that can be styled with rules similar to CSS.
import Photon from 'photon-terminal'
const greeting = new Photon.Element('p')
greeting.content = 'Hello World!'
greeting.print()
// Prints 'Hello World!' to the CLI
or
import Photon from 'photon-terminal'
const greeting = new Photon.Element({
tag: 'p',
content: 'Hello World!'
})
greeting.print()
// Prints 'Hello World!' to the CLI
import Photon from 'photon-terminal'
const classSuccess = new Photon.Style({
backgroundColor: 'green',
color: 'black',
margin: 2,
textDecoration: 'strong',
textTransform: 'uppercase',
}).rules
const status = new Photon.Element({
tag: 'p',
content: 'Passing'
})
status.style = classSuccess
status.print()
Sets the text background color.
backgroundColor: 'black' | 'blue' | 'cyan' | 'green' | 'magenta' | 'red' | 'white' | 'yellow'
Automatically sets paddingLeft
and paddingRight
to 1
. This can be prevented by setting padding values to 0
or 'none'
.
Sets the text color.
color: 'black' | 'blue' | 'cyan' | 'green' | 'magenta' | 'red' | 'white' | 'yellow'
Sets the spacing around the Element content.
margin: <number> | 'none'
Sets all sides to the same value. Set individual sides with:
marginBottom: <number> | 'none'
marginLeft: <number> | 'none'
marginRight: <number> | 'none'
marginTop: <number> | 'none'
Sets the spacing around the output text. Used with backgroundColor
to prevent text from touching the background walls.
paddingLeft: <number> | 'none'
paddingRight: <number> | 'none'
Sets the visual appearance of text.
textDecoration: 'italic' | 'strong' | 'underline'
Transforms the text output.
textTransform: 'capitalize' | 'lowercase' | 'uppercase'
Sets the total width of the output.
width: <number>
These are the planned upcoming features.
<div>
<h>
- represents a heading<ol>
<li>
<strong>
<table>
<tbody>
<td>
<th>
<thead>
<tr>
<ul>
<li>
align-items: 'center' | 'end' | 'start'
border-collapse: 'collapse' | 'separate'
border-color: <color>
border-style: 'dotted' | 'solid'
display: 'flex'
flex-direction: 'column' | 'row'
height: <number>
justify-content: 'center' | 'end' | 'space-around' | 'space-between' | 'space-evenly' | 'start'
list-style-type: 'disc' | 'circle' | 'none' | 'square'
text-align: 'center' | 'justify' | 'left' | 'right'