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"
>
-
+
diff --git a/pages/auth/sign-in.vue b/pages/auth/sign-in.vue
index f03d0e9cb7..64a459941d 100644
--- a/pages/auth/sign-in.vue
+++ b/pages/auth/sign-in.vue
@@ -85,7 +85,7 @@
ref="turnstile"
v-model="token"
class="turnstile"
- :options="{ theme: $colorMode.value === 'light' ? 'light' : 'dark' }"
+ :options="{ theme: $theme.active === 'light' ? 'light' : 'dark' }"
/>