@primer/primitives
Version:
Typography, spacing, and color primitives for Primer design system
26 lines (25 loc) • 1.84 kB
JavaScript
import { transformTokens } from './utilities/transformTokens.js';
import { asArray } from '../utilities/asArray.js';
export const themeOverrides = {
name: 'themeOverrides',
preprocessor: (dictionary, config) => {
var _a, _b, _c, _d, _e, _f;
const extensionProp = ((_b = (_a = config.options) === null || _a === void 0 ? void 0 : _a.themeOverrides) === null || _b === void 0 ? void 0 : _b.extensionProp) || 'org.primer.overrides';
const valueProp = ((_d = (_c = config.options) === null || _c === void 0 ? void 0 : _c.themeOverrides) === null || _d === void 0 ? void 0 : _d.valueProp) || '$value';
const [currentTheme, fallbackTheme] = asArray((_f = (_e = config.options) === null || _e === void 0 ? void 0 : _e.themeOverrides) === null || _f === void 0 ? void 0 : _f.theme);
const tokens = transformTokens(dictionary, token => {
var _a, _b, _c, _d, _e;
// return early if no theme value is set
if (!currentTheme ||
!((_a = token.$extensions) === null || _a === void 0 ? void 0 : _a[extensionProp]) ||
(!((_b = token.$extensions) === null || _b === void 0 ? void 0 : _b[extensionProp][currentTheme]) && !((_c = token.$extensions) === null || _c === void 0 ? void 0 : _c[extensionProp][fallbackTheme]))) {
return token;
}
// get override
const override = ((_d = token.$extensions) === null || _d === void 0 ? void 0 : _d[extensionProp][currentTheme]) || ((_e = token.$extensions) === null || _e === void 0 ? void 0 : _e[extensionProp][fallbackTheme]);
// token an theme value exist
return Object.assign(Object.assign({}, token), (typeof override === 'object' ? override : { [valueProp]: override }));
});
return tokens;
},
};