UNPKG

@pandabox/utils

Version:

A bunch of utilities

70 lines (66 loc) 1.85 kB
// src/assign-inline-vars.ts import { traverse } from "@pandacss/shared"; import "@pandacss/types"; // src/css-var.ts import { cssVar as createVar } from "@pandacss/shared"; var cssVarRef = (value, fallback) => `var(--${value}${fallback ? ", " + fallback : ""})`; var cssVarName = (value) => `--${value}`; var createCssVar = (value, options = {}) => createVar(value, options); function defineCssVars(scope, keys, options) { const vars = {}; for (const key of keys) { if (Array.isArray(key)) { const [name, fallback] = key; vars[name] = cssVar.create(`${scope}-${name}`, { ...options, fallback }); continue; } vars[key] = cssVar.create(`${scope}-${key}`); } return vars; } var cssVar = { /** * ⚠️ doesn't handle prefixing/hashing, instead use `cssVar.create` for that */ ref: cssVarRef, /** * ⚠️ doesn't handle prefixing/hashing, instead use `cssVar.create` for that */ name: cssVarName, create: createCssVar, scope: defineCssVars }; // src/assign-inline-vars.ts var assignInlineVars = (userVars, options) => { const vars = {}; for (const [category, tokens] of Object.entries(userVars ?? {})) { traverse( tokens, ({ value, path }) => { if (typeof value === "string" || typeof value === "number") { const cssVarRef2 = cssVar.create(category + "-" + path, options).var; vars[cssVarRef2] = value; } }, { separator: options?.separator ?? "-" } ); } return vars; }; // src/wrap-value.ts var wrapValue = (obj) => { const newObj = {}; for (const key in obj) { if (typeof obj[key] === "object" && !Array.isArray(obj[key])) { newObj[key] = wrapValue(obj[key]); } else { newObj[key] = { value: obj[key] }; } } return newObj; }; export { assignInlineVars, cssVar, wrapValue };