Не используйте кучу JS для тёмной и светлой темы. useMedia() и т. п. приводят к тому, что сайт вспыхнет белым при загрузке JS.

Делайте переключение темы в CSS через спец. медиа-выражение. А чтобы работал переключатель, возьмите этот PostCSS-плагин.

github.com/postcss/postcss-dar

Я как раз выпустил новую версию 0.8, где классы для JS-переключателя добавляются с :where().

:where() имеет нулевую специфичность и плагин теперь не меняет специфичность селекторов.