var uiSettingsJSON = window.localStorage.getItem('uiSettings') || '{}'; var uiSettings = {}; try { uiSettings = JSON.parse(uiSettingsJSON) || {}; } catch (error) { window.console.log(error); } var useBrowserColorScheme = window.localStorage.getItem('useBrowserColorScheme') === 'true' || false; var browserDarkMode = uiSettings['theme:darkMode'] || {}; var browserThemeVersion = uiSettings['theme:version'] || {}; var rawDarkMode = typeof browserDarkMode.userValue !== 'boolean' ? false : browserDarkMode.userValue; var rawThemeVersion = browserThemeVersion.userValue || 'v9' if (false) { if (useBrowserColorScheme && window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches !== rawDarkMode) { uiSettings['theme:darkMode'] = window.matchMedia('(prefers-color-scheme: dark)').matches; window.localStorage.setItem('uiSettings', JSON.stringify(uiSettings)); rawDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches; } } else { window.localStorage.removeItem('uiSettings'); window.localStorage.removeItem('useBrowserColorScheme'); rawDarkMode = false; rawThemeVersion = 'v9'; } var themeSources = {"v7":{"light":{"euiColorDarkShade":"#69707D","euiColorFullShade":"#000","euiColorLightestShade":"#F5F7FA","euiColorPrimary":"#006BB4","euiHeaderBackgroundColor":"#FFF"},"dark":{"euiColorDarkShade":"#98A2B3","euiColorFullShade":"#FFF","euiColorLightestShade":"#25262E","euiColorPrimary":"#1BA9F5","euiHeaderBackgroundColor":"#1D1E24"}},"v8":{"light":{"euiColorDarkShade":"#5A6875","euiColorFullShade":"#0A1219","euiColorLightestShade":"#E3E5E8","euiColorPrimary":"#07827E","euiHeaderBackgroundColor":"#F0F2F4"},"dark":{"euiColorDarkShade":"#8D98A3","euiColorFullShade":"#FCFEFF","euiColorLightestShade":"#101B25","euiColorPrimary":"#159D8D","euiHeaderBackgroundColor":"#172430"}},"v9":{"light":{"euiColorDarkShade":"#5A6875","euiColorFullShade":"#0A1219","euiColorLightestShade":"#E3E5E8","euiColorPrimary":"#0268BC","euiHeaderBackgroundColor":"#F0F2F4"},"dark":{"euiColorDarkShade":"#959BA2","euiColorFullShade":"#FCFEFF","euiColorLightestShade":"#19222B","euiColorPrimary":"#0097D1","euiHeaderBackgroundColor":"#02020E"}}}; var themeVersionValueMap = {"v7":"v7","Next (preview)":"v8","v9 (preview)":"v9","v8":"v8","v9":"v9"}; // TODO: source of truth for mapping should be elsewhere var darkMode = rawDarkMode ? 'dark' : 'light'; var resolvedThemeVersion = themeVersionValueMap[rawThemeVersion]; var themeVersion = themeSources[resolvedThemeVersion] ? resolvedThemeVersion : 'v8'; window.__osdThemeTag__ = themeVersion + darkMode; var themeDefinition = themeSources[themeVersion][darkMode]; var stylesheetTarget = document.querySelector('head meta[name="add-styles-here"]'); var themeColorDom = document.createElement('meta'); themeColorDom.name = 'theme-color'; themeColorDom.content = themeDefinition.euiHeaderBackgroundColor; document.head.insertBefore(themeColorDom, stylesheetTarget); var nonceMetaTag = document.querySelector('meta[name="csp-nonce"]'); var nonce = nonceMetaTag ? nonceMetaTag.getAttribute('content') : null; var themedStylesDom = document.createElement('style'); if (nonce) { themedStylesDom.nonce = nonce; } themedStylesDom.innerHTML = ` :root { color-scheme: ${darkMode}; } .${darkMode}Only { display: unset; } .osdWelcomeView { background-color: ${themeDefinition.euiHeaderBackgroundColor}; } .osdWelcomeTitle { color: ${themeDefinition.euiColorFullShade}; } .osdWelcomeText { color: ${themeDefinition.euiColorDarkShade}; } .osdProgress { background-color: ${themeDefinition.euiColorLightestShade}; } .osdProgress:before { background-color: ${themeDefinition.euiColorPrimary}; } ` document.head.insertBefore(themedStylesDom, stylesheetTarget); var fontTexts = {"v7":"Inter UI","v8":"Source Sans 3","v9":"Rubik"}; var fontCodes = {"v7":"Roboto Mono","v8":"Source Code Pro","v9":"Source Code Pro"}; var fontText = fontTexts[themeVersion]; var fontCode = fontCodes[themeVersion]; var fontTarget = document.querySelector('head meta[name="add-fonts-here"]'); var themedFontDom = document.createElement('style'); if (nonce) { themedFontDom.nonce = nonce; } themedFontDom.innerHTML = ` :root { --font-text: "${fontText}", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; --font-code: "${fontCode}", Consolas, Menlo, Courier, monospace; --oui-font-family: var(--font-text); --oui-code-font-family: var(--font-code); } code, pre, kbd, samp { font-family: var(--font-code); } html, input, textarea, select, button { font-family: var(--font-text); } `; document.head.insertBefore(themedFontDom, fontTarget);