(theme: Theme)
| 66 | * @returns The same `theme` object, unmodified. |
| 67 | */ |
| 68 | export function createTheme(theme: Theme): Theme { |
| 69 | if (typeof process !== "undefined" && process.env?.["NODE_ENV"] !== "production") { |
| 70 | const knownKeys = Object.keys(defaultLightTheme); |
| 71 | for (const key of Object.keys(theme)) { |
| 72 | if (knownKeys.includes(key) || _warnedKeys.has(key)) continue; |
| 73 | _warnedKeys.add(key); |
| 74 | |
| 75 | let suggestion = ""; |
| 76 | let bestDist = Infinity; |
| 77 | for (const known of knownKeys) { |
| 78 | const dist = levenshteinDistance(key, known); |
| 79 | if (dist < bestDist) { |
| 80 | bestDist = dist; |
| 81 | suggestion = known; |
| 82 | } |
| 83 | } |
| 84 | const hint = bestDist <= 3 ? ` Did you mean "${suggestion}"?` : ""; |
| 85 | console.warn(`[OpenUI] Unknown theme key "${key}".${hint}`); |
| 86 | } |
| 87 | } |
| 88 | return theme; |
| 89 | } |
no test coverage detected