|
1 | 1 | 'use client'
|
2 | 2 | import React, { createContext, useCallback, useContext, useEffect, useState } from 'react'
|
3 | 3 |
|
| 4 | +import { useConfig } from '../Config/index.js' |
| 5 | + |
4 | 6 | export type Theme = 'dark' | 'light'
|
5 | 7 |
|
6 | 8 | export type ThemeContext = {
|
@@ -55,20 +57,26 @@ export const defaultTheme = 'light'
|
55 | 57 |
|
56 | 58 | export const ThemeProvider: React.FC<{
|
57 | 59 | children?: React.ReactNode
|
58 |
| - cookiePrefix?: string |
59 | 60 | theme?: Theme
|
60 |
| -}> = ({ children, cookiePrefix, theme: initialTheme }) => { |
61 |
| - const cookieKey = `${cookiePrefix || 'payload'}-theme` |
| 61 | +}> = ({ children, theme: initialTheme }) => { |
| 62 | + const { config } = useConfig() |
| 63 | + |
| 64 | + const preselectedTheme = config.admin.theme |
| 65 | + const cookieKey = `${config.cookiePrefix || 'payload'}-theme` |
62 | 66 |
|
63 | 67 | const [theme, setThemeState] = useState<Theme>(initialTheme || defaultTheme)
|
64 | 68 |
|
65 | 69 | const [autoMode, setAutoMode] = useState<boolean>()
|
66 | 70 |
|
67 | 71 | useEffect(() => {
|
| 72 | + if (preselectedTheme !== 'all') { |
| 73 | + return |
| 74 | + } |
| 75 | + |
68 | 76 | const { theme, themeFromCookies } = getTheme(cookieKey)
|
69 | 77 | setThemeState(theme)
|
70 | 78 | setAutoMode(!themeFromCookies)
|
71 |
| - }, [cookieKey]) |
| 79 | + }, [preselectedTheme, cookieKey]) |
72 | 80 |
|
73 | 81 | const setTheme = useCallback(
|
74 | 82 | (themeToSet: 'auto' | Theme) => {
|
|
0 commit comments