diff --git a/packages/sfc-playground/index.html b/packages/sfc-playground/index.html
index 26431e134..29e8d6e97 100644
--- a/packages/sfc-playground/index.html
+++ b/packages/sfc-playground/index.html
@@ -8,14 +8,14 @@
Vue SFC Playground
diff --git a/packages/sfc-playground/package.json b/packages/sfc-playground/package.json
index b6bfb9b79..76e6a014e 100644
--- a/packages/sfc-playground/package.json
+++ b/packages/sfc-playground/package.json
@@ -12,7 +12,7 @@
"vite": "^4.3.9"
},
"dependencies": {
- "@vue/repl": "^2.3.0",
+ "@vue/repl": "^2.4.0",
"file-saver": "^2.0.5",
"jszip": "^3.6.0",
"vue": "workspace:*"
diff --git a/packages/sfc-playground/src/App.vue b/packages/sfc-playground/src/App.vue
index 3c850fec4..f9b77f47e 100644
--- a/packages/sfc-playground/src/App.vue
+++ b/packages/sfc-playground/src/App.vue
@@ -2,7 +2,7 @@
import Header from './Header.vue'
import { Repl, ReplStore, SFCOptions } from '@vue/repl'
import Monaco from '@vue/repl/monaco-editor'
-import { ref, watchEffect } from 'vue'
+import { ref, watchEffect, onMounted } from 'vue'
const setVH = () => {
document.documentElement.style.setProperty('--vh', window.innerHeight + `px`)
@@ -72,6 +72,15 @@ function toggleSSR() {
useSSRMode.value = !useSSRMode.value
store.setFiles(store.getFiles())
}
+
+const theme = ref('dark')
+function toggleTheme(isDark: boolean) {
+ theme.value = isDark ? 'dark' : 'light'
+}
+onMounted(() => {
+ const cls = document.documentElement.classList
+ toggleTheme(cls.contains('dark'))
+})
@@ -79,10 +88,12 @@ function toggleSSR() {
:store="store"
:dev="useDevMode"
:ssr="useSSRMode"
+ @toggle-theme="toggleTheme"
@toggle-dev="toggleDevMode"
@toggle-ssr="toggleSSR"
/>
import { downloadProject } from './download/download'
import { ref, onMounted } from 'vue'
-// import Sun from './icons/Sun.vue'
-// import Moon from './icons/Moon.vue'
+import Sun from './icons/Sun.vue'
+import Moon from './icons/Moon.vue'
import Share from './icons/Share.vue'
import Download from './icons/Download.vue'
import GitHub from './icons/GitHub.vue'
@@ -51,14 +51,16 @@ async function copyLink(e: MouseEvent) {
alert('Sharable URL has been copied to clipboard.')
}
-// function toggleDark() {
-// const cls = document.documentElement.classList
-// cls.toggle('dark')
-// localStorage.setItem(
-// 'vue-sfc-playground-prefer-dark',
-// String(cls.contains('dark'))
-// )
-// }
+const emit = defineEmits(['toggle-theme', 'toggle-ssr','toggle-dev'])
+ function toggleDark() {
+ const cls = document.documentElement.classList
+ cls.toggle('dark')
+ localStorage.setItem(
+ 'vue-sfc-playground-prefer-dark',
+ String(cls.contains('dark'))
+ )
+ emit('toggle-theme', cls.contains('dark'))
+ }
onMounted(async () => {
window.addEventListener('click', () => {
@@ -145,10 +147,10 @@ async function fetchVersions(): Promise {
>
{{ ssr ? 'SSR ON' : 'SSR OFF' }}
-
+
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 48566b54e..d6c6b95d9 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -333,8 +333,8 @@ importers:
packages/sfc-playground:
dependencies:
'@vue/repl':
- specifier: ^2.3.0
- version: 2.3.0
+ specifier: ^2.4.0
+ version: 2.4.0
file-saver:
specifier: ^2.0.5
version: 2.0.5
@@ -1513,8 +1513,8 @@ packages:
engines: {node: '>= 0.12.0'}
dev: true
- /@vue/repl@2.3.0:
- resolution: {integrity: sha512-b5unP309uGABwgvfahFEGoDe7AzuvEioO7/AwuebywwA0oKSzOW1bR2sJq4fj0wHCL6/bthremJkrtNTCKFJbA==}
+ /@vue/repl@2.4.0:
+ resolution: {integrity: sha512-vXXEysYTCZdJo3kECwKDTxd6GI3F9RzJ3dkslY6fpdGn7q+aCizLqcWiEnWaeBjbqOh31rMsPPUxhhC3jhaiXQ==}
dev: false
/@zeit/schemas@2.6.0: