{"version":3,"file":"index.js","names":["c","_c","React","createContext","use","useCallback","useEffect","useState","useConfig","initialContext","autoMode","setTheme","theme","Context","setCookie","cname","cvalue","exdays","d","Date","setTime","getTime","expires","toUTCString","document","cookie","getTheme","cookieKey","themeFromCookies","window","split","find","row","startsWith","matchMedia","matches","documentElement","setAttribute","defaultTheme","ThemeProvider","t0","$","children","initialTheme","config","preselectedTheme","admin","cookiePrefix","setThemeState","setAutoMode","t1","t2","theme_0","t3","themeToSet","themeFromOS","t4","_jsx","value","useTheme"],"sources":["../../../src/providers/Theme/index.tsx"],"sourcesContent":["'use client'\nimport React, { createContext, use, useCallback, useEffect, useState } from 'react'\n\nimport { useConfig } from '../Config/index.js'\n\nexport type Theme = 'dark' | 'light'\n\nexport type ThemeContext = {\n autoMode: boolean\n setTheme: (theme: Theme) => void\n theme: Theme\n}\n\nconst initialContext: ThemeContext = {\n autoMode: true,\n setTheme: () => null,\n theme: 'light',\n}\n\nconst Context = createContext(initialContext)\n\nfunction setCookie(cname, cvalue, exdays) {\n const d = new Date()\n d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000)\n const expires = 'expires=' + d.toUTCString()\n document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/'\n}\n\nconst getTheme = (\n cookieKey,\n): {\n theme: Theme\n themeFromCookies: null | string\n} => {\n let theme: Theme\n\n const themeFromCookies = window.document.cookie\n .split('; ')\n .find((row) => row.startsWith(`${cookieKey}=`))\n ?.split('=')[1]\n\n if (themeFromCookies === 'light' || themeFromCookies === 'dark') {\n theme = themeFromCookies\n } else {\n theme =\n window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches\n ? 'dark'\n : 'light'\n }\n\n document.documentElement.setAttribute('data-theme', theme)\n\n return { theme, themeFromCookies }\n}\n\nexport const defaultTheme = 'light'\n\nexport const ThemeProvider: React.FC<{\n children?: React.ReactNode\n theme?: Theme\n}> = ({ children, theme: initialTheme }) => {\n const { config } = useConfig()\n\n const preselectedTheme = config.admin.theme\n const cookieKey = `${config.cookiePrefix || 'payload'}-theme`\n\n const [theme, setThemeState] = useState(initialTheme || defaultTheme)\n\n const [autoMode, setAutoMode] = useState()\n\n useEffect(() => {\n if (preselectedTheme !== 'all') {\n return\n }\n\n const { theme, themeFromCookies } = getTheme(cookieKey)\n setThemeState(theme)\n setAutoMode(!themeFromCookies)\n }, [preselectedTheme, cookieKey])\n\n const setTheme = useCallback(\n (themeToSet: 'auto' | Theme) => {\n if (themeToSet === 'light' || themeToSet === 'dark') {\n setThemeState(themeToSet)\n setAutoMode(false)\n setCookie(cookieKey, themeToSet, 365)\n document.documentElement.setAttribute('data-theme', themeToSet)\n } else if (themeToSet === 'auto') {\n // to delete the cookie, we set an expired date\n setCookie(cookieKey, themeToSet, -1)\n const themeFromOS =\n window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches\n ? 'dark'\n : 'light'\n document.documentElement.setAttribute('data-theme', themeFromOS)\n setAutoMode(true)\n setThemeState(themeFromOS)\n }\n },\n [cookieKey],\n )\n\n return {children}\n}\n\nexport const useTheme = (): ThemeContext => use(Context)\n"],"mappings":"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","ignoreList":[]}