| 226 | } |
| 227 | |
| 228 | function applyColorScheme( |
| 229 | theme: Theme, |
| 230 | colorScheme: string, |
| 231 | ): {resolvedTheme: Theme; resolvedColorScheme: string | undefined} { |
| 232 | if (!theme.colorSchemes) { |
| 233 | return { |
| 234 | resolvedTheme: theme, |
| 235 | resolvedColorScheme: undefined, |
| 236 | } |
| 237 | } |
| 238 | |
| 239 | if (!theme.colorSchemes[colorScheme]) { |
| 240 | // eslint-disable-next-line no-console |
| 241 | console.error(`\`${colorScheme}\` scheme not defined in \`theme.colorSchemes\``) |
| 242 | |
| 243 | // Apply the first defined color scheme |
| 244 | const defaultColorScheme = Object.keys(theme.colorSchemes)[0] |
| 245 | return { |
| 246 | resolvedTheme: deepmerge(theme, theme.colorSchemes[defaultColorScheme]), |
| 247 | resolvedColorScheme: defaultColorScheme, |
| 248 | } |
| 249 | } |
| 250 | |
| 251 | return { |
| 252 | resolvedTheme: deepmerge(theme, theme.colorSchemes[colorScheme]), |
| 253 | resolvedColorScheme: colorScheme, |
| 254 | } |
| 255 | } |
| 256 | |
| 257 | export default ThemeProvider |