import Moon from '@components/atoms/icons/moon'; import Sun from '@components/atoms/icons/sun'; import Toggle, { type ToggleChoices, type ToggleProps, } from '@components/molecules/forms/toggle'; import { useTheme } from 'next-themes'; import { FC } from 'react'; import { useIntl } from 'react-intl'; export type ThemeToggleProps = Pick< ToggleProps, 'className' | 'labelClassName' >; /** * ThemeToggle component * * Render a Toggle component to set theme. */ const ThemeToggle: FC = ({ ...props }) => { const intl = useIntl(); const { resolvedTheme, setTheme } = useTheme(); const isDarkTheme = resolvedTheme === 'dark'; /** * Update the theme. */ const updateTheme = () => { setTheme(isDarkTheme ? 'light' : 'dark'); }; const themeLabel = intl.formatMessage({ defaultMessage: 'Theme:', description: 'ThemeToggle: theme label', id: 'suXOBu', }); const lightThemeLabel = intl.formatMessage({ defaultMessage: 'Light theme', description: 'ThemeToggle: light theme label', id: 'Ygea7s', }); const darkThemeLabel = intl.formatMessage({ defaultMessage: 'Dark theme', description: 'ThemeToggle: dark theme label', id: '2QwvtS', }); const themeChoices: ToggleChoices = { left: , right: , }; return ( ); }; export default ThemeToggle; graphql/comments.mutation.ts?h=v2.0.0&id=baac7d6eeaf522ff5faa28906cb1200e60a19c07'>treecommitdiffstats
blob: f52c7e9fc0b015ff69963fb3e34e8d9b3d7ad490 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30