Configuration Option
Constructor
class TenoxUI {
constructor({
property = {},
values = {},
classes = {},
aliases = {},
breakpoints = {},
variants = {},
safelist = [],
typeOrder = [],
tabSize = 2,
simple = false,
moxie = Moxie,
moxieOptions = {}
}) {}
}property
You can define your type or shorthands for TenoxUI to use here. Basic usage :
const css = new TenoxUI({
property: {
bg: 'background', // single css property
'my-var': '--my-var', // single css variable
size: ['width', 'height'] // multiple css properties
}
})
console.log(css.render(['bg-red', 'size-100px']))Output :
.bg-red {
background: red;
}
.size-100px {
width: 100px;
height: 100px;
}Learn more about writing your rules here.
values
You can add custom value alias for another CSS value inside this option. Example :
const css = new TenoxUI({
property: {
w: 'width'
},
values: {
full: '100%',
min: 'min-content'
}
})
console.log(css.render(['w-full', 'w-min']))Output :
.w-full {
width: 100%;
}
.w-min {
width: min-content;
}Learn more about writing your value alias here.
classes
Create mass and quick utility-classes with css property-based format inside classes option. Example :
const css = new TenoxUI({
classes: {
display: {
flex: 'flex',
iflex: 'inline-flex',
'flex-center': 'flex'
},
// you can stack properties under single class name
alignItems: { 'flex-center': 'center' },
justifyContent: { 'flex-center': 'center' }
}
})
console.log(css.render(['flex', 'flex-center']))Output :
.flex {
display: flex;
}
.flex-center {
display: flex;
align-items: center;
justify-content: center;
}aliases
You can create alias for multiple class name into single class instead using aliases. Example :
const css = new TenoxUI({
property: {
bg: 'background'
},
classes: {
display: {
flex: 'flex'
}
},
aliases: {
'my-box': 'flex bg-blue'
}
})
console.log(css.render(['my-box']))Output :
.my-box {
display: flex;
background: blue;
}breakpoints
You can add your breakpoints for creating different style across different screen size inside breakpoints option. Example :
const css = new TenoxUI({
property: {
bg: 'background'
},
breakpoints: {
sm: '35rem',
md: '48rem'
}
})
console.log(css.render(['bg-red', 'sm:bg-blue', 'max-sm:bg-yellow', 'min-md:bg-green']))Output :
.bg-red {
background: red;
}
@media (width >= 35rem) {
.sm\:bg-blue {
background: blue;
}
}
@media (width < 35rem) {
.max-sm\:bg-yellow {
background: yellow;
}
}
@media (width >= 48rem) {
.min-md\:bg-green {
background: green;
}
}variants
There's no default variant defined, but you can easily add new one inside variants field. Example :
const css = new TenoxUI({
property: {
bg: 'background'
},
variants: {
// basic variant
hover: '&:hover',
dark: '@media (prefers-color-scheme: dark)',
// custom variants
nth: ({ value }) => `value:&:nth-child(${value})`
}
})
console.log(css.render(['hover:bg-red', 'dark:bg-blue', 'nth-4:bg-blue']))Output :
.hover\:bg-red:hover {
background: red;
}
@media (prefers-color-scheme: dark) {
.dark\:bg-blue {
background: blue;
}
}
.nth-4\:bg-blue:nth-child(4) {
background: blue;
}Any & inside the variant will be replaced with input class name (e.g. &:hover => className:hover), while if there not a single one, it assume the variant will be nested (e.g. @media (...) => @media (...) { className }).
You can write custom variants with the same logic as property option because it uses same engine, so you can checkout how they can handle function property inside writing rules documentation. For more example, you can check out here.
safelist
List of class names to reserve. Example :
const css = new TenoxUI({
property: {
bg: 'background'
},
safelist: ['bg-red', 'bg-blue']
})
console.log(css.render())Output :
.bg-red {
background: red;
}
.bg-blue {
background: blue;
}typeOrder
Set order of the type, or setting which type should be prioritize first. Usage :
const css = new TenoxUI({
property: {
flex: 'display: flex',
bg: 'background',
m: 'margin'
},
classes: {
display: {
grid: 'grid'
}
},
typeOrder: ['m', 'flex', 'bg', 'grid']
})
console.log(css.render(['grid', 'bg-red', 'm-50px', 'flex']))Output :
.m-50px {
margin: 50px;
}
.flex {
display: flex;
}
.bg-red {
background: red;
}
.grid {
display: grid;
}tabSize
Determine how many tabs or spaces in the generated output. (default: 2)
simple
Enable simple mode, the output css won't be beautify. (default: false)
moxie & moxieOptions
Use custom tenoxui/moxie version, just pass it here.