Expresso.Palette.Builtin (expresso v0.1.0)

Copy Markdown View Source

Holds the built-in themes, each one adjusted to the minimums of Expresso.Palette

assets/themes/ holds the base16 schemes of the Tinted Theming project, unchanged, and assets/themes/LICENSE gives their license. This module reads each file when it compiles, and Expresso.Palette.adjust/1 changes the lightness of each color that fails a minimum. The name of a theme is the name of its file, such as :catppuccin_mocha for catppuccin-mocha.yaml.

A theme is built in only when no color of its adjusted roles moves more than 0.4 in the lightness of OKLab, which is two fifths of the way from black to white. A larger change gives a color that the reader does not know as a color of the scheme. The compile stops for a file that needs a larger change. The comments of a dark scheme need the largest change, because most schemes give them a low contrast. A comment has little chroma, so it stays a gray of the scheme. docs/reference/theme-option.md lists the themes, and the schemes that this limit leaves out.

The theme :default is the theme of Expresso. It has black text on white, and its code colors come from the Tango style of Makeup. Tango gives base0C and base0E the same blue, so base0C is the cyan of the Tango palette. The roles binder and argument of a β-reduction thus have different colors.

Summary

Functions

Return the adjusted palette of a built-in theme

Return the largest change of lightness that a built-in theme may need

Return the names of the built-in themes, in alphabetical order

Functions

fetch!(name)

@spec fetch!(atom()) :: Expresso.Palette.t()

Return the adjusted palette of a built-in theme

iex> Expresso.Palette.Builtin.fetch!(:dracula).name
"Dracula"

limit()

@spec limit() :: float()

Return the largest change of lightness that a built-in theme may need

names()

@spec names() :: [atom()]

Return the names of the built-in themes, in alphabetical order