Packages
mob
0.7.3
0.7.20
0.7.19
0.7.18
0.7.17
0.7.16
0.7.15
0.7.14
0.7.13
0.7.12
0.7.11
0.7.10
0.7.9
0.7.8
0.7.7
0.7.6
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.26
0.6.25
0.6.24
0.6.23
0.6.22
0.6.21
0.6.20
0.6.19
0.6.18
0.6.17
0.6.16
0.6.15
0.6.14
0.6.13
0.6.12
0.6.11
0.6.10
0.6.9
0.6.8
0.6.7
0.6.6
0.6.5
0.6.2
0.6.1
0.6.0
0.5.18
0.5.17
0.5.16
0.5.15
0.5.14
0.5.11
0.5.10
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.0
0.3.10
0.3.9
0.3.8
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.0
0.1.0
BEAM-on-device mobile framework for Elixir
Current section
Files
Jump to
Current section
Files
lib/mob/theme/adaptive.ex
defmodule Mob.Theme.Adaptive do
@moduledoc """
Theme that follows the OS-level light / dark setting.
At call time `theme/0` reads `Mob.Theme.color_scheme/0` and returns
`Mob.Theme.Light.theme/0` or `Mob.Theme.Dark.theme/0`. Built for
outdoor working users — sun-readable in daytime, eye-friendly at night.
## Usage
defmodule MyApp do
use Mob.App, theme: Mob.Theme.Adaptive
end
## Reactive switching
`Mob.Theme.set/1` snapshots the theme at call time, so toggling the OS
appearance after the app has started does not auto-update the rendered
theme. To re-evaluate, call `Mob.Theme.set(Mob.Theme.Adaptive)` again
(e.g. in response to a foreground / lifecycle event, or after a planned
`:color_scheme_changed` device event in a future version).
"""
@doc "Returns the Light or Dark theme struct based on the current OS appearance."
@spec theme() :: Mob.Theme.t()
def theme do
case Mob.Theme.color_scheme() do
:dark -> Mob.Theme.Dark.theme()
_ -> Mob.Theme.Light.theme()
end
end
end