App.vue 1000 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. <script setup lang="ts">
  2. // This starter template is using Vue 3 <script setup> SFCs
  3. // Check out https://vuejs.org/api/sfc-script-setup.html#script-setup
  4. import {useSettingsStore} from '@/pinia'
  5. import {dark_mode} from '@/lib/theme'
  6. let media = window.matchMedia('(prefers-color-scheme: dark)')
  7. const callback = (media: { matches: any; }) => {
  8. const settings = useSettingsStore()
  9. if (settings.preference_theme === 'auto') {
  10. if (media.matches) {
  11. dark_mode(true)
  12. settings.set_theme('dark')
  13. } else {
  14. dark_mode(false)
  15. settings.set_theme('auto')
  16. }
  17. } else {
  18. dark_mode(settings.preference_theme === 'dark')
  19. }
  20. }
  21. callback(media)
  22. if (typeof media.addEventListener === 'function') {
  23. media.addEventListener('change', callback)
  24. } else if (typeof media.addListener === 'function') {
  25. media.addListener(callback)
  26. }
  27. </script>
  28. <template>
  29. <router-view/>
  30. </template>
  31. <style lang="less" scoped>
  32. </style>