import { defaultTheme } from './theme.mjs'; function isPlainObject(value) { if (typeof value !== 'object' || value === null) return false; let proto = value; while (Object.getPrototypeOf(proto) !== null) { proto = Object.getPrototypeOf(proto); } return Object.getPrototypeOf(value) === proto; } function deepMerge(...objects) { const output = {}; for (const obj of objects) { for (const [key, value] of Object.entries(obj)) { const prevValue = output[key]; output[key] = isPlainObject(prevValue) && isPlainObject(value) ? deepMerge(prevValue, value) : value; } } return output; } export function makeTheme(...themes) { const themesToMerge = [ defaultTheme, ...themes.filter((theme) => theme != null), ]; return deepMerge(...themesToMerge); }