Owns the light / dark / system choice: persists it, follows the OS while on system, tracks the
key across tabs, and writes the resolved value to data-theme on <html>, which is what
@bootnodedev/canton-theme keys its dark values on. Renders no DOM of its own.
The attribute lands before the tree below it paints, but not before the page background; that
flash is accepted, and architecture.md has the reasoning. Client-only, because it reads the OS
preference while picking its initial state, so a server render throws.
Owns the light / dark / system choice: persists it, follows the OS while on
system, tracks the key across tabs, and writes the resolved value todata-themeon<html>, which is what@bootnodedev/canton-themekeys its dark values on. Renders no DOM of its own.The attribute lands before the tree below it paints, but not before the page background; that flash is accepted, and
architecture.mdhas the reasoning. Client-only, because it reads the OS preference while picking its initial state, so a server render throws.