diff options
author | Zuul <zuul@review.opendev.org> | 2023-05-03 00:30:33 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2023-05-03 00:30:33 +0000 |
commit | 51194abf561de04972996199d825613a94cd3b2f (patch) | |
tree | ad759bc813af0bb716135251da1e54135748c276 /web/src/Misc.jsx | |
parent | bbdbe81790f4926e5e00085309589a2c52e5230b (diff) | |
parent | 59cd5de78baa31150958e6d0d6733407c0e95805 (diff) | |
download | zuul-51194abf561de04972996199d825613a94cd3b2f.tar.gz |
Merge "web: add dark mode and theme selection"
Diffstat (limited to 'web/src/Misc.jsx')
-rw-r--r-- | web/src/Misc.jsx | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/web/src/Misc.jsx b/web/src/Misc.jsx index dae5a84bf..1186f42d3 100644 --- a/web/src/Misc.jsx +++ b/web/src/Misc.jsx @@ -120,4 +120,30 @@ IconProperty.propTypes = { const ConditionalWrapper = ({ condition, wrapper, children }) => condition ? wrapper(children) : children -export { IconProperty, removeHash, ExternalLink, buildExternalLink, buildExternalTableLink, ConditionalWrapper } +function resolveDarkMode(theme) { + let darkMode = false + + if (theme === 'Auto') { + let matchMedia = window.matchMedia || function () { + return { + matches: false, + } + } + + darkMode = matchMedia('(prefers-color-scheme: dark)').matches + } else if (theme === 'Dark') { + darkMode = true + } + + return darkMode +} + +function setDarkMode(darkMode) { + if (darkMode) { + document.documentElement.classList.add('pf-theme-dark') + } else { + document.documentElement.classList.remove('pf-theme-dark') + } +} + +export { IconProperty, removeHash, ExternalLink, buildExternalLink, buildExternalTableLink, ConditionalWrapper, resolveDarkMode, setDarkMode } |