diff --git a/packages/docusaurus-theme-classic/src/theme/hooks/useTheme.ts b/packages/docusaurus-theme-classic/src/theme/hooks/useTheme.ts index b2a24c356c39..05a8fcff1cdf 100644 --- a/packages/docusaurus-theme-classic/src/theme/hooks/useTheme.ts +++ b/packages/docusaurus-theme-classic/src/theme/hooks/useTheme.ts @@ -14,21 +14,23 @@ import {useThemeConfig} from '@docusaurus/theme-common'; const themes = { light: 'light', dark: 'dark', -}; +} as const; + +type Themes = typeof themes[keyof typeof themes]; // Ensure to always return a valid theme even if input is invalid -const coerceToTheme = (theme) => { +const coerceToTheme = (theme?: string | null): Themes => { return theme === themes.dark ? themes.dark : themes.light; }; -const getInitialTheme = (defaultMode) => { +const getInitialTheme = (defaultMode: Themes | undefined): Themes => { if (!ExecutionEnvironment.canUseDOM) { return coerceToTheme(defaultMode); } return coerceToTheme(document.documentElement.getAttribute('data-theme')); }; -const storeTheme = (newTheme) => { +const storeTheme = (newTheme: Themes) => { try { localStorage.setItem('theme', coerceToTheme(newTheme)); } catch (err) {