Theming
Your book should look and feel your own, so ElmBook provides a few ways you can customize it's theme.
Custom Header
You can choose a different logo, title and subtitle for your book:
Header with custom logo
main : Book x
main =
book "Custom Title"
|> withThemeOptions
[ ElmBook.ThemeOptions.subtitle "Custom Subtitle",
, ElmBook.ThemeOptions.logo (img [ src "/mycompanylogo.png" ] [])
]
|> withChapters []
Or you can go full custom and provide your own thing:
Custom header
main : Book x
main =
book "Custom Header"
|> withThemeOptions
[ ElmBook.ThemeOptions.header myCustomHeader
]
|> withChapters []
myCustomHeader : Html msg
myCustomHeader =
...
Custom Colors
I mean… we all love Elm's light blue but maybe it doesn't fit your book. Don't fret, you can customize a lot of what you're seeing.
Theme Builder
main : Book x
main =
book "CustomHeader"
|> withThemeOptions
[ ElmBook.ThemeOptions.background "slategray"
, ElmBook.ThemeOptions.accent "white"
]
|> withChapters []
Dark Mode
Are you goth? Do you like the dark arts? Then tell your book so and it will always start already in dark mode:
main : Book x
main =
book "Goth Book"
|> withThemeOptions
[ ElmBook.ThemeOptions.darkMode
]
|> withChapters []
Don't worry… the light-theme losers can turn it off quite easily.
Roadmap
The state of our dark mode setup right now is not that great. It's more like a book thing than a "per user" setting since we can't persist what the user selected using pure elm.
There is a plan to also enable custom fonts soon. Other than that, I believe changes will be less customizable and will focus more on a better UX for all ElmBooks.
Things like ready-to-be-used components like Placeholders, Design Tokens Catalogue, etc, should be handled by separate packages.