pages/assets/js/theme.js
Viraj Thakkar 77b60dc395
Theme and responsiveness fixes (#509)
* Dark themed cards

* Responsiveness fixes

* added dark stylesheet option

* highlight theme toggle

* added highlight function

* added highlight themes to assets/css

* offline highlight implementation

* Fixes for masonry

* Revert "added highlight themes to assets/css"

This reverts commit ee7cb7675671430697f3a38bd5a56405179e6dd9.

* Update `code syntax highlighting` to use jsdelivr CDN

* Project card responsiveness fixes

* added personal website to readme

veedata.github.io

* Reverted responsiveness chnages

* Minor adjustments

Co-authored-by: rohandebsarkar <rohandebsarkar@gmail.com>
Co-authored-by: Maruan Al-Shedivat <maruan@genesistherapeutics.ai>
2022-02-19 20:46:45 -05:00

64 lines
1.6 KiB
JavaScript

// Has to be in the head tag, otherwise a flicker effect will occur.
let toggleTheme = (theme) => {
if (theme == "dark") {
setTheme("light");
} else {
setTheme("dark");
}
}
let setTheme = (theme) => {
transTheme();
setHighlight(theme);
if (theme) {
document.documentElement.setAttribute("data-theme", theme);
}
else {
document.documentElement.removeAttribute("data-theme");
}
localStorage.setItem("theme", theme);
// Updates the background of medium-zoom overlay.
if (typeof medium_zoom !== 'undefined') {
medium_zoom.update({
background: getComputedStyle(document.documentElement)
.getPropertyValue('--global-bg-color') + 'ee', // + 'ee' for trasparency.
})
}
};
let setHighlight = (theme) => {
if (theme == "dark") {
document.getElementById("highlight_theme_light").media = "none";
document.getElementById("highlight_theme_dark").media = "";
} else {
document.getElementById("highlight_theme_dark").media = "none";
document.getElementById("highlight_theme_light").media = "";
}
}
let transTheme = () => {
document.documentElement.classList.add("transition");
window.setTimeout(() => {
document.documentElement.classList.remove("transition");
}, 500)
}
let initTheme = (theme) => {
if (theme == null) {
const userPref = window.matchMedia;
if (userPref && userPref('(prefers-color-scheme: dark)').matches) {
theme = 'dark';
}
}
setTheme(theme);
}
initTheme(localStorage.getItem("theme"));