URL da API HTTP do DiceBear (avatares gerados a partir de uma seed).
Funções puras; o componente é FrappeUIPhx.Components.DiceBearAvatar. A API
devolve o mesmo avatar para a mesma style + seed + opções, então o servidor
só monta a URL — nada é gerado nem guardado aqui. Não há biblioteca oficial para
Elixir; as opções são esta API (URL em <img>) ou a mesma API hospedada por você.
Privacidade
A seed vai na URL para quem hospeda a API. Não use e-mail, CPF ou nome completo;
use seed/1 (id opaco).
Uso comercial, limites e licenças
A API pública (https://api.dicebear.com/10.x) é gratuita para uso não
comercial, sem garantia de disponibilidade e com limite por segundo (SVG 50,
raster 10; excedido: HTTP 429). Em produção/comercial, hospede a sua
(guia, imagem Docker
dicebear/api) e configure:
config :frappe_ui_phx, dice_bear_base_url: "https://avatars.meuapp.com/10.x"Cada estilo tem a licença do seu criador (CC BY 4.0 exige atribuição, CC0, MIT...); confira em https://www.dicebear.com/licenses/ antes de publicar.
Determinismo
A seed passa por um hash (FNV-1a) que inicia um gerador pseudoaleatório
(Mulberry32): a mesma style + seed + opções dá sempre o mesmo avatar. Não é
criptográfico: serve para avatar estável, nunca para derivar segredo.
Opções
opts vira a query string. Comuns: flip (none|horizontal|vertical|both),
rotate, scale, borderRadius (0 a 50), size, translateX/translateY,
backgroundColor (lista de hex), backgroundColorFill; cada estilo tem as suas
(hairVariant, ...). idRandomization, fontFamily, fontWeight e title só
funcionam em instância própria. Raster (png, jpg, webp, avif) vai até 256 px
na API pública. options/1 converte e valida as opções do núcleo em snake_case
(border_radius: 50) para os parâmetros da API.
Receita "avatar placeholder"
Para quem ainda não enviou foto, gere o avatar de uma seed estável (id do usuário,
seed/1) ou, no estilo initials, das iniciais do nome (initials/1). O componente
DiceBearAvatar já faz a troca no servidor (image presente = foto real).
Summary
Functions
URL base configurada (:dice_bear_base_url) ou a API pública do DiceBear.
Formatos de imagem aceitos (json devolve metadados, não imagem).
Iniciais de um nome (até duas letras maiúsculas): "Ana Souza" -> "AS",
"ana" -> "A", sem letras -> nil. Para style="initials" na receita de placeholder.
Opções do núcleo em snake_case -> parâmetros da API, validadas nos intervalos da
documentação (flip, rotate -360..360, scale 0..10, border_radius 0..50,
translate_x/translate_y -1000..1000, background_color (hex, com ou sem #; texto
ou lista), background_color_fill, background_color_angle, tags). Chave
desconhecida ou valor fora do contrato falha alto.
Seed opaca e estável para um identificador (id, e-mail...): 16 hex do SHA-256. Evita colocar dados pessoais na URL.
Estilos oficiais conhecidos (DiceBear 10.x), para documentação e seletores.
URL do avatar. opts são os parâmetros da API (listas viram a,b); config
aceita format: (svg padrão) e base_url: (troca o servidor).
Functions
@spec base_url() :: String.t()
URL base configurada (:dice_bear_base_url) ou a API pública do DiceBear.
@spec formats() :: [String.t()]
Formatos de imagem aceitos (json devolve metadados, não imagem).
Iniciais de um nome (até duas letras maiúsculas): "Ana Souza" -> "AS",
"ana" -> "A", sem letras -> nil. Para style="initials" na receita de placeholder.
Opções do núcleo em snake_case -> parâmetros da API, validadas nos intervalos da
documentação (flip, rotate -360..360, scale 0..10, border_radius 0..50,
translate_x/translate_y -1000..1000, background_color (hex, com ou sem #; texto
ou lista), background_color_fill, background_color_angle, tags). Chave
desconhecida ou valor fora do contrato falha alto.
iex> FrappeUIPhx.DiceBear.options(border_radius: 50, background_color: ["#b6e3f4"])
%{"backgroundColor" => ["b6e3f4"], "borderRadius" => 50}
Seed opaca e estável para um identificador (id, e-mail...): 16 hex do SHA-256. Evita colocar dados pessoais na URL.
@spec styles() :: [String.t()]
Estilos oficiais conhecidos (DiceBear 10.x), para documentação e seletores.
URL do avatar. opts são os parâmetros da API (listas viram a,b); config
aceita format: (svg padrão) e base_url: (troca o servidor).
O estilo só precisa ter um nome bem formado (thumbs, pixel-art): a lista muda
entre versões e em instâncias próprias, então um estilo novo não é recusado aqui
(se não existir, o servidor responde 404).
iex> FrappeUIPhx.DiceBear.url("thumbs", "ana", %{backgroundColor: ["b6e3f4"], flip: "horizontal"})
"https://api.dicebear.com/10.x/thumbs/svg?backgroundColor=b6e3f4&flip=horizontal&seed=ana"