app.html 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8" />
  5. <link rel="icon" href="%sveltekit.assets%/favicon.png" />
  6. <link rel="manifest" href="%sveltekit.assets%/manifest.json" />
  7. <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
  8. <meta name="robots" content="noindex,nofollow" />
  9. <script>
  10. // On page load or when changing themes, best to add inline in `head` to avoid FOUC
  11. (() => {
  12. if (localStorage?.theme && localStorage?.theme.includes('oled')) {
  13. document.documentElement.style.setProperty('--color-gray-900', '#000000');
  14. document.documentElement.style.setProperty('--color-gray-950', '#000000');
  15. document.documentElement.classList.add('dark');
  16. } else if (
  17. localStorage.theme === 'light' ||
  18. (!('theme' in localStorage) && window.matchMedia('(prefers-color-scheme: light)').matches)
  19. ) {
  20. document.documentElement.classList.add('light');
  21. } else if (localStorage.theme && localStorage.theme !== 'system') {
  22. localStorage.theme.split(' ').forEach((e) => {
  23. document.documentElement.classList.add(e);
  24. });
  25. } else if (localStorage.theme && localStorage.theme === 'system') {
  26. systemTheme = window.matchMedia('(prefers-color-scheme: dark)').matches;
  27. document.documentElement.classList.add(systemTheme ? 'dark' : 'light');
  28. } else {
  29. document.documentElement.classList.add('dark');
  30. }
  31. window.matchMedia('(prefers-color-scheme: dark)').addListener((e) => {
  32. if (localStorage.theme === 'system') {
  33. if (e.matches) {
  34. document.documentElement.classList.add('dark');
  35. document.documentElement.classList.remove('light');
  36. } else {
  37. document.documentElement.classList.add('light');
  38. document.documentElement.classList.remove('dark');
  39. }
  40. }
  41. });
  42. })();
  43. </script>
  44. %sveltekit.head%
  45. </head>
  46. <body data-sveltekit-preload-data="hover">
  47. <div style="display: contents">%sveltekit.body%</div>
  48. </body>
  49. </html>