diff --git a/components/ui/charts/ChartDisplay.vue b/components/ui/charts/ChartDisplay.vue index 84c24f3ab5..2067002745 100644 --- a/components/ui/charts/ChartDisplay.vue +++ b/components/ui/charts/ChartDisplay.vue @@ -160,7 +160,7 @@
- useState('cosmetics', () => { - const cosmetics = useCookie('cosmetics', { - maxAge: 60 * 60 * 24 * 365 * 10, - sameSite: 'lax', - secure: true, - httpOnly: false, - path: '/', - }) - - if (!cosmetics.value) { - cosmetics.value = { - searchLayout: false, - projectLayout: false, - advancedRendering: true, - externalLinksNewTab: true, - notUsingBlockers: false, - hideModrinthAppPromos: false, - preferredDarkTheme: 'dark', - searchDisplayMode: { - mod: 'list', - plugin: 'list', - resourcepack: 'gallery', - modpack: 'list', - shader: 'gallery', - datapack: 'list', - user: 'list', - collection: 'list', - }, - hideStagingBanner: false, - } - } - - return cosmetics.value - }) - -export const saveCosmetics = () => { - const cosmetics = useCosmetics() - - console.log('SAVING COSMETICS:') - console.log(cosmetics) - - const cosmeticsCookie = useCookie('cosmetics', { - maxAge: 60 * 60 * 24 * 365 * 10, - sameSite: 'lax', - secure: true, - httpOnly: false, - path: '/', - }) - - cosmeticsCookie.value = cosmetics.value -} diff --git a/composables/cosmetics.ts b/composables/cosmetics.ts new file mode 100644 index 0000000000..554ee96610 --- /dev/null +++ b/composables/cosmetics.ts @@ -0,0 +1,3 @@ +export function useCosmetics() { + return useNuxtApp().$cosmetics +} diff --git a/composables/theme.js b/composables/theme.js deleted file mode 100644 index eac074cb7b..0000000000 --- a/composables/theme.js +++ /dev/null @@ -1,58 +0,0 @@ -export const useTheme = () => - useState('theme', () => { - const colorMode = useCookie('color-mode', { - maxAge: 60 * 60 * 24 * 365 * 10, - sameSite: 'lax', - secure: true, - httpOnly: false, - path: '/', - }) - - if (!colorMode.value) { - colorMode.value = { - value: 'dark', - preference: 'system', - } - } - - if (colorMode.value.preference !== 'system') { - colorMode.value.value = colorMode.value.preference - } - - return colorMode.value - }) - -export const updateTheme = (value, updatePreference = false) => { - const theme = useTheme() - const cosmetics = useCosmetics() - - const themeCookie = useCookie('color-mode', { - maxAge: 60 * 60 * 24 * 365 * 10, - sameSite: 'lax', - secure: true, - httpOnly: false, - path: '/', - }) - - if (value === 'system') { - theme.value.preference = 'system' - - const colorSchemeQueryList = window.matchMedia('(prefers-color-scheme: light)') - if (colorSchemeQueryList.matches) { - theme.value.value = 'light' - } else { - theme.value.value = cosmetics.value.preferredDarkTheme - } - } else { - theme.value.value = value - if (updatePreference) theme.value.preference = value - } - - if (process.client) { - document.documentElement.className = `${theme.value.value}-mode` - } - - themeCookie.value = theme.value -} - -export const DARK_THEMES = ['dark', 'oled', 'retro'] diff --git a/composables/theme.ts b/composables/theme.ts new file mode 100644 index 0000000000..d303b25857 --- /dev/null +++ b/composables/theme.ts @@ -0,0 +1,3 @@ +export function useTheme() { + return useNuxtApp().$theme +} diff --git a/layouts/default.vue b/layouts/default.vue index 4a7532a188..a20dedc836 100644 --- a/layouts/default.vue +++ b/layouts/default.vue @@ -62,7 +62,7 @@ :title="formatMessage(messages.changeTheme)" @click="changeTheme" > -