vp-theme-toggler.vue 754 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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),
  21. opacity var(--el-transition-duration);
  22. }
  23. .light-icon {
  24. opacity: 1;
  25. position: absolute;
  26. top: 0;
  27. left: 0;
  28. }
  29. .dark-icon {
  30. opacity: 0;
  31. position: absolute;
  32. top: 0;
  33. left: 0;
  34. }
  35. @at-root .dark {
  36. .dark-icon {
  37. opacity: 1;
  38. }
  39. .light-icon {
  40. opacity: 0;
  41. }
  42. }
  43. </style>