templates2.Base.Nuxt/app/components/ThemeToggle.vue
w4c-templates a7a56fd5e0
Some checks failed
CI / quality (push) Has been cancelled
chore(template): publish Base.Nuxt
2026-10-11 23:23:38 +03:00

28 lines
706 B
Vue

<script setup lang="ts">
const isDark = ref(false);
onMounted(() => {
isDark.value = document.documentElement.classList.contains('dark');
});
function toggle() {
isDark.value = !isDark.value;
document.documentElement.classList.toggle('dark', isDark.value);
try {
localStorage.setItem('theme', isDark.value ? 'dark' : 'light');
} catch {
/* ignore */
}
}
</script>
<template>
<button
type="button"
class="btn-secondary"
:aria-label="isDark ? 'Switch to light theme' : 'Switch to dark theme'"
@click="toggle"
>
<span aria-hidden>{{ isDark ? '☾' : '☀' }}</span>
<span class="hidden sm:inline">{{ isDark ? 'Dark' : 'Light' }}</span>
</button>
</template>