Packages
A direct port of boringdesigners/boring-avatars to elixir, with no dependencies
Current section
Files
Jump to
Current section
Files
lib/boring_avatars.ex
defmodule BoringAvatars do
@moduledoc """
Direct port of [boring-avatars](https://github.com/boringdesigners/boring-avatars) to Elixir.
Generates SVG avatars based on a given name and a color palette.
## Usage
iex> BoringAvatars.beam(name: "Maria")
Options can be passed as a keyword list or as a `%BoringAvatars.Props{}` struct.
See `BoringAvatars.Props` for all available options.
"""
@doc """
Callback to implement for a custom avatar variant.
Receives a `%BoringAvatars.Props{}` struct or a keyword list of options
and should return `iodata()` representing the generated SVG.
"""
@callback avatar(%BoringAvatars.Props{} | keyword()) :: iodata()
@doc "Generates a Bauhaus variant avatar."
defdelegate bauhaus(props \\ []), to: BoringAvatars.Variant.Bauhaus, as: :avatar
@doc "Generates a Beam variant avatar."
defdelegate beam(props \\ []), to: BoringAvatars.Variant.Beam, as: :avatar
@doc "Generates a Marble variant avatar."
defdelegate marble(props \\ []), to: BoringAvatars.Variant.Marble, as: :avatar
@doc "Generates a Pixel variant avatar."
defdelegate pixel(props \\ []), to: BoringAvatars.Variant.Pixel, as: :avatar
@doc "Generates a Ring variant avatar."
defdelegate ring(props \\ []), to: BoringAvatars.Variant.Ring, as: :avatar
@doc "Generates a Sunset variant avatar."
defdelegate sunset(props \\ []), to: BoringAvatars.Variant.Sunset, as: :avatar
end