Lets each user pick the site's style and color scheme, and applies the
choice to the document. A signed-in user's choice is one of their settings,
so it follows them across browsers; a visitor's stays in this browser. Until
either picks a style, the instance's default applies. App mounts it inside
AuthProvider, whose session holds the settings.
Provides ThemeContext. Each half of the theme goes through
useThemeChoice, which sets it on the root element as data-style or
data-color-scheme and mirrors it to localStorage, where an inline script
in index.html applies it before the first paint, so the page doesn't flash
another theme. The two must agree. When an account has no choice yet and
this browser has one, it is saved to the account, once per session.
Usage
import * as mod from "src/contexts/theme/ThemeProvider.tsx";