/** * Merge `override` onto `base`, recursing into plain objects. * * `undefined` means "say nothing" and leaves the base value alone; `null` means * "clear it", so `{ image: null }` removes a default icon rather than being * ignored. There are no arrays anywhere in a theme, so a plain recursive merge * is enough. * * @template {Record} T * @param {T} base * @param {Record | undefined} override * @returns {T} */ export function mergeTheme>(base: T, override: Record | undefined): T; /** * Fill every gap in a user theme and narrow it to one device. * * @param {Theme | undefined} theme * @param {Device} device * @returns {ResolvedTheme} */ export function resolveTheme(theme: Theme | undefined, device: Device): ResolvedTheme; /** * The breakpoint a theme asks for, readable before the full resolve (the * device is not known until the breakpoint is). * * @param {Theme | undefined} theme * @returns {number} */ export function breakpointOf(theme: Theme | undefined): number; import type { Theme } from '../types.js'; import type { Device } from '../types.js'; import type { ResolvedTheme } from '../types.js';