Код IT Загрузка примера кода…

Plain text part-01.jsx
import { useEffect, useState } from 'react';

const STORAGE_KEY = 'app-theme-dark';

export function ThemeSwitch() {
  const [dark, setDark] = useState(() => localStorage.getItem(STORAGE_KEY) === '1');

  useEffect(() => {
    document.documentElement.classList.toggle('theme-dark', dark);
    localStorage.setItem(STORAGE_KEY, dark ? '1' : '0');
  }, [dark]);

  return (
    <label className="switch switch--theme">
      <input
        type="checkbox"
        className="switch__input"
        role="switch"
        checked={dark}
        onChange={(e) => setDark(e.target.checked)}
        aria-labelledby="theme-switch-label"
      />
      <span className="switch-track" aria-hidden="true" />
      <span id="theme-switch-label" className="switch__label">
        {dark ? 'Тёмная тема' : 'Светлая тема'}
      </span>
    </label>
  );
}
import { useEffect, useState } from 'react';

const STORAGE_KEY = 'app-theme-dark';

export function ThemeSwitch() {
  const [dark, setDark] = useState(() => localStorage.getItem(STORAGE_KEY) === '1');

  useEffect(() => {
    document.documentElement.classList.toggle('theme-dark', dark);
    localStorage.setItem(STORAGE_KEY, dark ? '1' : '0');
  }, [dark]);

  return (
    <label className="switch switch--theme">
      <input
        type="checkbox"
        className="switch__input"
        role="switch"
        checked={dark}
        onChange={(e) => setDark(e.target.checked)}
        aria-labelledby="theme-switch-label"
      />
      <span className="switch-track" aria-hidden="true" />
      <span id="theme-switch-label" className="switch__label">
        {dark ? 'Тёмная тема' : 'Светлая тема'}
      </span>
    </label>
  );
}