primevue-mirror/apps/showcase/doc/theming/styled/DarkModeDoc.vue

57 lines
2.0 KiB
Vue
Raw Normal View History

<template>
<DocSectionText v-bind="$attrs">
2024-03-31 13:58:07 +00:00
<p>
PrimeVue uses the <i>system</i> as the default <i>darkModeSelector</i> in theme configuration. If you have a dark mode switch in your application, set the <i>darkModeSelector</i> to the selector you utilize such as <i>.my-app-dark</i> so
that PrimeVue can fit in seamlessly with your light-dark toggle.
</p>
<DocSectionCode :code="code1" hideToggleCode importCode hideStackBlitz />
<p>
2024-07-25 07:21:54 +00:00
Following is a very basic example implementation of a dark mode switch, you may extend it further by involving <i>prefers-color-scheme</i> to retrieve it from the system initially and use <i>localStorage</i> to make it stateful. See this
2024-03-31 13:58:07 +00:00
<a href="https://dev.to/abbeyperini/dark-mode-toggle-and-prefers-color-scheme-4f3m" target="_blank" rel="noopener noreferrer">article</a> for more information.
</p>
<DocSectionCode :code="code2" hideToggleCode hideStackBlitz />
<DocSectionCode :code="code3" hideToggleCode importCode hideStackBlitz />
2024-07-25 07:21:54 +00:00
<p>In case you prefer to use dark mode all the time, apply the <i>darkModeSelector</i> initially and never change it.</p>
</DocSectionText>
</template>
<script>
export default {
data() {
return {
2024-03-31 13:58:07 +00:00
code1: {
basic: `
2024-03-31 13:58:07 +00:00
import PrimeVue from 'primevue/config';
2024-06-11 12:21:12 +00:00
import Aura from '@primevue/themes/aura';
2024-03-31 13:58:07 +00:00
const app = createApp(App);
app.use(PrimeVue, {
// Default theme configuration
theme: {
preset: Aura,
options: {
darkModeSelector: '.my-app-dark',
2024-03-31 13:58:07 +00:00
}
}
});
`
},
code2: {
basic: `
<Button label="Toggle Color Scheme" @click="toggleColorScheme()" />
`
},
code3: {
basic: `
const toggleColorScheme() {
2024-06-25 16:18:32 +00:00
const element = document.querySelector('html');
element.classList.toggle('my-app-dark');
}
`
}
};
}
};
</script>