Создаешь разные классы (is-red, is-green и т.д), накидываешь их на корневой элемент html при клике на кнопку темы В стилях прописываешь что-то типа такого:
.is-red body {
background-color: red;
}
.is-green body {
background-color: green;
}
И так для всего, что меняет внешний вид в зависимости от темы.
Сохранять выбор темы можно в куки и считывать при загрузки страницы.