Refactor Root layout theme and fonts. Encapsulate functions into separate files. Fix default theme handling when cookie is not set by fall-backing to the selected theme mode. (#103)

This commit is contained in:
Giancarlo Buomprisco
2025-01-04 16:07:12 +08:00
committed by GitHub
parent b8e1bf3c18
commit 5a4bbb1716
3 changed files with 50 additions and 32 deletions

View File

@@ -0,0 +1,16 @@
import { cookies } from 'next/headers';
type Theme = 'light' | 'dark' | 'system';
/**
* @name getRootTheme
* @description Get the root theme from the cookies or default theme.
* @returns The root theme.
*/
export async function getRootTheme() {
const cookiesStore = await cookies();
const themeCookie = cookiesStore.get('theme')?.value as Theme
return themeCookie ?? process.env.NEXT_PUBLIC_DEFAULT_THEME_MODE ?? 'light';
}