# `FrappeUIPhx.Icons`
[🔗](https://github.com/moacirbishopcamata/frappe_ui_phx/blob/v0.3.1/lib/frappe_ui_phx/icons.ex#L1)

Catálogo de ícones Lucide: nomes, tags, aliases (nomes antigos) e busca.

Os dados vêm de `priv/icons.json`, gerado por `mix icons.sync` a partir do
`lucide-static` fixado, e são lidos em tempo de compilação. O desenho de cada
ícone é renderizado por `FrappeUIPhx.Icons.Svg` (componente `<.icon>`) ou pelos
atalhos `FrappeUIPhx.Icons.Lucide` (`<Lucide.plus />`).

Um nome terminado em `-filled` (ex.: `"star-filled"`) é o mesmo ícone com
preenchimento; um prefixo `lucide-` é aceito e ignorado.

# `icon`

```elixir
@type icon() :: %{name: String.t(), tags: [String.t()], aliases: [String.t()]}
```

# `function_name`

```elixir
@spec function_name(String.t()) :: atom()
```

Nome da função de `FrappeUIPhx.Icons.Lucide` para o ícone `name`:
`"circle-alert"` -> `:circle_alert`; nome que começa com dígito ganha o prefixo `i_`.

# `get`

```elixir
@spec get(String.t()) :: icon() | nil
```

Metadados de um ícone por nome atual, alias ou `-filled`; `nil` se não existir.

# `names`

```elixir
@spec names() :: [String.t()]
```

Nomes atuais de todos os ícones, em ordem alfabética.

# `resolve`

```elixir
@spec resolve(String.t()) :: {:ok, String.t(), boolean()} | :error
```

Resolve um nome para `{:ok, nome_atual, preenchido?}` ou `:error`.

# `search`

```elixir
@spec search(String.t()) :: [icon()]
```

Busca por nome, alias ou tag (sem diferenciar caixa nem acentos). Ordem: nome
exato, prefixo do nome, nome contém, alias, tag. Termo vazio devolve todos.

# `suggestions`

```elixir
@spec suggestions(String.t(), pos_integer()) :: [String.t()]
```

Até `limit` nomes parecidos com `name` (para mensagens de erro).

# `version`

```elixir
@spec version() :: String.t()
```

Versão do Lucide de onde o catálogo foi gerado.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
