@nex-ui/system
Version:
A lightweight and performant styling library based on Emotion, focusing on component architecture and developer experience.
47 lines (44 loc) • 1.48 kB
JavaScript
import { createScales } from './scales.mjs';
import { createAliases } from './aliases.mjs';
import { createBreakpoints } from './breakpoints.mjs';
import { createCssFn } from './css.mjs';
import { createNormalize } from './normalize.mjs';
import { createSelectors } from './selectors.mjs';
import { createTokens } from './tokens/createTokens.mjs';
import { createLayers } from './layers/createLayers.mjs';
const createSystem = (config)=>{
const { cssCascadeLayersDisabled = false, prefix = 'system', scales = {}, aliases = {}, breakpoints = {}, tokens = {}, semanticTokens = {}, selectors = {} } = config;
const layers = createLayers({
cssCascadeLayersDisabled,
prefix
});
const { getToken, getGlobalCssVars } = createTokens({
tokens,
semanticTokens,
prefix
});
const { getPropertiesByAlias, isAlias } = createAliases(aliases);
const { getCategoryByProperty } = createScales(scales);
const { getMediaSelectors } = createBreakpoints(breakpoints);
const { getCustomizedSelector } = createSelectors({
selectors,
getMediaSelectors
});
const normalize = createNormalize({
getCategoryByProperty,
getPropertiesByAlias,
getToken
});
const css = createCssFn({
normalize,
isAlias,
getCustomizedSelector
});
return {
css,
layers,
getToken,
getGlobalCssVars
};
};
export { createSystem };