/** * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ import React, {useState, useRef, memo} from 'react'; import {useThemeConfig} from '@docusaurus/theme-common'; import useIsBrowser from '@docusaurus/useIsBrowser'; import clsx from 'clsx'; import './styles.css'; import styles from './styles.module.css'; import DarkIcon from "./icon_night.svg" import LightIcon from "./icon_day.svg" const Dark = ({icon, style}) => ( ); const Light = ({icon, style}) => ( ); // Based on react-toggle (https://github.com/aaronshaf/react-toggle/). const Toggle = memo( ({className, icons, checked: defaultChecked, disabled, onChange}) => { const [checked, setChecked] = useState(defaultChecked); const [focused, setFocused] = useState(false); const inputRef = useRef(null); return (
{/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */}
inputRef.current?.click()}>
{icons.checked}
{icons.unchecked}
setChecked(!checked)} onFocus={() => setFocused(true)} onBlur={() => setFocused(false)} onKeyDown={(e) => { if (e.key === 'Enter') { inputRef.current?.click(); } }} />
); }, ); export default function (props) { const { colorMode: { switchConfig: {darkIcon, darkIconStyle, lightIcon, lightIconStyle}, }, } = useThemeConfig(); const isBrowser = useIsBrowser(); return ( , unchecked: , }} {...props} /> ); }