oc-theme-preload.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. ;(function () {
  2. var key = "opencode-theme-id"
  3. var themeId = localStorage.getItem(key) || "oc-2"
  4. if (themeId === "oc-1") {
  5. themeId = "oc-2"
  6. localStorage.setItem(key, themeId)
  7. localStorage.removeItem("opencode-theme-css-light")
  8. localStorage.removeItem("opencode-theme-css-dark")
  9. }
  10. var scheme = localStorage.getItem("opencode-color-scheme") || "system"
  11. var isDark = scheme === "dark" || (scheme === "system" && matchMedia("(prefers-color-scheme: dark)").matches)
  12. var mode = isDark ? "dark" : "light"
  13. document.documentElement.dataset.theme = themeId
  14. document.documentElement.dataset.colorScheme = mode
  15. document.documentElement.style.backgroundColor = isDark ? "#080808" : "#fafafa"
  16. // Update theme-color meta tag to match app color scheme
  17. var metas = document.querySelectorAll("meta[name='theme-color']")
  18. if (metas.length > 0) metas[0].setAttribute("content", isDark ? "#080808" : "#fafafa")
  19. if (themeId === "oc-2") return
  20. var css = localStorage.getItem("opencode-theme-css-" + mode)
  21. if (css) {
  22. var style = document.createElement("style")
  23. style.id = "oc-theme-preload"
  24. style.textContent =
  25. ":root{color-scheme:" +
  26. mode +
  27. ";--text-mix-blend-mode:" +
  28. (isDark ? "plus-lighter" : "multiply") +
  29. ";" +
  30. css +
  31. "}"
  32. document.head.appendChild(style)
  33. }
  34. })()