vp-theme-toggler.vue 810 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <script setup lang="ts">
  2. import DarkIcon from '../icons/dark.vue'
  3. import LightIcon from '../icons/light.vue'
  4. import VPSwitch from './vp-switch.vue'
  5. </script>
  6. <template>
  7. <VPSwitch>
  8. <ElIcon :size="13">
  9. <DarkIcon class="dark-icon" />
  10. <LightIcon class="light-icon" />
  11. </ElIcon>
  12. </VPSwitch>
  13. </template>
  14. <style lang="scss" scoped>
  15. .el-icon {
  16. cursor: pointer;
  17. }
  18. .dark-icon,
  19. .light-icon {
  20. transition: color var(--el-transition-duration), opacity var(--el-transition-duration);
  21. }
  22. .light-icon {
  23. opacity: 1;
  24. position: absolute;
  25. top: 0;
  26. left: 0;
  27. }
  28. .dark-icon {
  29. opacity: 0;
  30. position: absolute;
  31. top: 0;
  32. left: 0;
  33. }
  34. @at-root .dark {
  35. .dark-icon {
  36. opacity: 1;
  37. }
  38. .light-icon {
  39. opacity: 0;
  40. }
  41. }
  42. </style>