/*** Resolve a theme token key through its map while preserving raw values. */ type ResolvedToken = TValue extends keyof TMap ? TMap[TValue] : TValue; /*** Resolve a mapped theme token or return the supplied raw value unchanged. */ export function resolveToken< TMap extends Record, TValue extends string | number | undefined, >(map: TMap, value: TValue): ResolvedToken { if (value === undefined) return undefined as ResolvedToken; if (Object.prototype.hasOwnProperty.call(map, value)) { return map[value as keyof TMap] as ResolvedToken; } return value as ResolvedToken; }