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

One named slot: declared or raw, with its children and its own findings.

`outcome_key` is the container's `slot_outcome_key` declaration for
this slot, normalized (ADR-0005 decision 10, proposed 10f) - the config
key each child in this slot carries its outcome under, or `nil` when
the type declared none. It is here as well as on the children so that a
consumer can ask the question of the slot without walking into it.

`condition` is the **source text of the condition this slot is subject
to**: the parent type's own `:expression` config field keyed by this
slot's name, read through the `value_path` ADR-0002 decision 7 was
amended to carry. `nil` when the type declares no such field, when the
author has not written one yet, or when the value stored there is not a
non-empty string.

It is resolved here for the reason `Node.outcome` is: the rendering side
reads one string and never learns that `core.branch` is the type whose
arms are guarded. A host type that keys an `:expression` field by one of
its own slot names gets the same chip, and nothing here tests a type name
to decide it.

# `t`

```elixir
@type t() :: %StatifierBlocks.ViewModel.Slot{
  arity: StatifierBlocks.BlockType.slot_arity() | nil,
  children: [StatifierBlocks.ViewModel.Node.t()],
  condition: String.t() | nil,
  declared?: boolean(),
  findings: [StatifierBlocks.Finding.t()],
  label: String.t(),
  name: StatifierBlocks.Block.slot_name(),
  outcome_key: String.t() | nil,
  style: :primary | :secondary | :failure | :tray
}
```

---

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