App Colour
Encapsulates light and dark mode colours. If dark colour isn't provided, defaults to light in dark mode.
Access the correct colours for current app state using the current property.
Dev note: using isSystemInDarkMode()
is an expensive operation, so we should do it once at top level and pass the resulting theme as composition local. This will also let us handle the scenarios where a user has selected always light/dark theme.
This class is 'open' only so we could extend it for the Unspecified data object.