primevue-mirror/components/lib/themes/helpers/t.js

67 lines
2.2 KiB
JavaScript

import { SharedUtils } from 'primevue/themes';
import Theme from 'primevue/themes/config';
export const $t = (theme = {}) => {
let { preset: _preset, options: _options } = theme;
return {
preset(value) {
_preset = _preset ? SharedUtils.object.mergeKeys(_preset, value) : value;
return this;
},
options(value) {
_options = _options ? { ..._options, ...value } : value;
return this;
},
// features
primaryPalette(primary) {
const { semantic } = _preset || {};
_preset = { ..._preset, semantic: { ...semantic, primary } };
return this;
},
surfacePalette(surface) {
const { semantic } = _preset || {};
const lightSurface = surface?.hasOwnProperty('light') ? surface?.light : surface;
const darkSurface = surface?.hasOwnProperty('dark') ? surface?.dark : surface;
const newColorScheme = {
colorScheme: {
light: { ...semantic?.colorScheme?.light, ...(!!lightSurface && { surface: lightSurface }) },
dark: { ...semantic?.colorScheme?.dark, ...(!!darkSurface && { surface: darkSurface }) }
}
};
_preset = { ..._preset, semantic: { ...semantic, ...newColorScheme } };
return this;
},
// actions
define({ useDefaultPreset = false, useDefaultOptions = false } = {}) {
return {
preset: useDefaultPreset ? Theme.getPreset() : _preset,
options: useDefaultOptions ? Theme.getOptions() : _options
};
},
update({ mergePresets = true, mergeOptions = true } = {}) {
const newTheme = {
preset: mergePresets ? SharedUtils.object.mergeKeys(Theme.getPreset(), _preset) : _preset,
options: mergeOptions ? { ...Theme.getOptions(), ..._options } : _options
};
Theme.setTheme(newTheme);
return newTheme;
},
use(options) {
const newTheme = this.define(options);
Theme.setTheme(newTheme);
return newTheme;
}
};
};