dark.ts 788 B

12345678910111213141516171819202122232425
  1. import { darkCssIsReady, loadDarkThemeCss } from 'vite-plugin-theme-vite3/es/client';
  2. import { addClass, hasClass, removeClass } from '@jeesite/core/utils/domUtils';
  3. import { isProdMode } from '@jeesite/core/utils/env';
  4. export async function updateDarkTheme(mode: string | null = 'light') {
  5. const htmlRoot = document.getElementById('htmlRoot');
  6. if (!htmlRoot) {
  7. return;
  8. }
  9. const hasDarkClass = hasClass(htmlRoot, 'dark');
  10. if (mode === 'dark') {
  11. if (isProdMode() && !darkCssIsReady) {
  12. await loadDarkThemeCss();
  13. }
  14. htmlRoot.setAttribute('data-theme', 'dark');
  15. if (!hasDarkClass) {
  16. addClass(htmlRoot, 'dark');
  17. }
  18. } else {
  19. htmlRoot.setAttribute('data-theme', 'light');
  20. if (hasDarkClass) {
  21. removeClass(htmlRoot, 'dark');
  22. }
  23. }
  24. }