1
0
mirror of synced 2025-12-21 10:57:10 -05:00
Files
docs/components/lib/getThemeProps.ts
Mike Surowiec 85b48a3795 Rename hooks/lib files to .ts (#20488)
* rename hooks to .ts

* rename lib files to ts
2021-07-26 14:37:21 +00:00

43 lines
1.2 KiB
TypeScript

export const defaultCSSThemeProps = {
colorMode: 'auto', // light, dark, auto
nightScheme: 'dark',
dayScheme: 'light',
}
export const defaultThemeProps = {
colorMode: 'auto', // day, night, auto
nightScheme: 'dark',
dayScheme: 'light',
}
const cssColorModeToJs: Record<string, string> = {
auto: 'auto',
light: 'day',
dark: 'night',
}
export const getThemeProps = (req: any, mode?: 'css') => {
let cookieValue: {
color_mode?: 'auto' | 'light' | 'dark'
dark_theme?: { name: string }
light_theme?: { name: string }
} = {}
const defaultProps = mode === 'css' ? defaultCSSThemeProps : defaultThemeProps
if (req.cookies?.color_mode) {
try {
cookieValue = JSON.parse(decodeURIComponent(req.cookies.color_mode))
} catch {
// do nothing
}
}
return {
// the cookie uses primer/css color_mode, sometimes we need to convert that to a primer/components compatible version
colorMode:
(mode === 'css' ? cookieValue.color_mode : cssColorModeToJs[cookieValue.color_mode || '']) ||
defaultProps.colorMode,
nightScheme: cookieValue.dark_theme?.name || defaultProps.nightScheme,
dayScheme: cookieValue.light_theme?.name || defaultProps.dayScheme,
}
}