# `StatifierBlocks.ViewModel.PaletteGroup`
[🔗](https://github.com/riddler/statifier_blocks/blob/v0.44.1/lib/statifier_blocks/view_model.ex#L440)

One palette section: palette entries sharing `entry.group`, sorted by
`entry.order` then `entry.label` (ADR-0005 decision 10's grouping
rule).

An entry is a block type or a **recipe** (ADR-0005 clause 1C), and it
says which in `:kind`. `:name` is the name in whichever of the
palette's two maps it came from - the two are separate namespaces, so
the pair `{kind, name}` is what identifies an entry and `:name` alone
is not. A type entry also carries `:type_name`, unchanged, because a
type's name IS its `type_name`; a recipe carries no such key, having no
`type_name` at all.

# `entry`

```elixir
@type entry() :: %{
  :kind =&gt; kind(),
  :name =&gt; String.t(),
  :module =&gt; module(),
  :entry =&gt; StatifierBlocks.BlockType.palette_entry(),
  optional(:type_name) =&gt; StatifierBlocks.Block.type_name()
}
```

# `kind`

```elixir
@type kind() :: :type | :recipe
```

# `t`

```elixir
@type t() :: %StatifierBlocks.ViewModel.PaletteGroup{
  entries: [entry()],
  name: String.t()
}
```

---

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