beathers
Version:
Beather is a lightweight SCSS library that serves as a comprehensive design system for your projects. It offers a structured and consistent approach to manage colors, fonts, and other design related variables, making it easier to maintain a cohesive visua
28 lines (27 loc) • 1.42 kB
JavaScript
export function DeepMerge(defaults, configs) {
if (!configs)
return defaults;
const { colors: tColors, roles: tRoles, settings: tSettings, typography: tTypography, glass: tGlass, } = defaults ?? {};
const { colors: sColors, roles: sRoles, settings: sSettings, typography: sTypography, glass: sGlass, } = configs ?? {};
const colors = { ...tColors, ...sColors };
const roles = { ...tRoles, ...sRoles };
const settings = {
...tSettings,
...sSettings,
...(tSettings?.breakpoints ||
(sSettings?.breakpoints && { breakpoints: { ...tSettings?.breakpoints, ...sSettings?.breakpoints } })),
...(tSettings?.wrappers ||
(sSettings?.wrappers && { wrappers: { ...tSettings?.wrappers, ...sSettings?.wrappers } })),
...(tSettings?.guttersValues ||
(sSettings?.guttersValues && { guttersValues: { ...tSettings?.guttersValues, ...sSettings?.guttersValues } })),
};
const typography = {
...tTypography,
...sTypography,
...(tTypography?.fontSizes ||
(sTypography?.fontSizes && { fontSizes: { ...tTypography?.fontSizes, ...sTypography?.fontSizes } })),
...(tTypography?.fonts || (sTypography?.fonts && { fonts: { ...tTypography?.fonts, ...sTypography?.fonts } })),
};
const glass = { ...tGlass, ...sGlass };
return { colors, roles, settings, typography, glass };
}