UNPKG

@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
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 };