NuxtN
Nuxt2y ago
6 replies
abd

tailwind dark mode reactive logo

i am trying to build a pattern where based on the dark mode setting the logo srcset will change.

using nuxt in universal mode

<template>
    <NuxtImg fetchpriority="high" decoding="async" style="color: transparent"  :srcset="srcset"
        :alt="alt" :class="imgClass" />
</template>

<script setup>
const { alt, imgClass, height, width } = defineProps({
    alt: String,
    imgClass: String,
    height: String,
    width: String,
})

// Define reactive state for dark mode
const isDarkMode = ref(false);

// Define image source sets
const srcSet = {
  src: "/images/logo.png",
  srcset: "/images/logo.png, /images/logo-2x.png 2x, /images/logo-3x.png 3x",
};

const darkSrcSet = {
  src: "/images/logo-dark.png",
  srcset: "/images/logo-dark.png, /images/logo-dark-2x.png 2x, /images/logo-dark-3x.png 3x",
};

// Update dark mode state on mount
onMounted(() => {
  // Check dark mode preference
  isDarkMode.value = window.matchMedia("(prefers-color-scheme: dark)").matches;
});

// Compute the srcset attribute based on the color scheme
const srcset = computed(() => {
  const set = isDarkMode.value ? darkSrcSet : srcSet;
  return set.srcset;
});
</script>
Was this page helpful?