# `MishkaGervaz.Form.Web.State.Static`
[🔗](https://github.com/mishka-group/mishka_gervaz/blob/v0.0.1-alpha.3/lib/mishka_gervaz/form/web/state.ex#L89)

Static form configuration that never changes after initialization.

Held on `MishkaGervaz.Form.Web.State`'s `:static` field as a separate
struct so LiveView can skip re-rendering nodes that depend only on
it — the reference stays identical across every dynamic update,
enabling O(1) equality comparison.

Populated once by `MishkaGervaz.Form.Web.State.Default.init/3`. See
the parent module `MishkaGervaz.Form.Web.State` for the dynamic
counterpart.

# `t`

```elixir
@type t() :: %MishkaGervaz.Form.Web.State.Static{
  access: module(),
  config: map(),
  debounce: integer() | nil,
  features: [atom()],
  fields: [map()],
  footer: map() | nil,
  groups: [map()],
  header: map() | nil,
  hooks: map(),
  id: String.t(),
  layout_columns: 1 | 2 | 3 | 4,
  layout_mode: :standard | :wizard | :tabs,
  layout_navigation: :sequential | :free,
  notices: [map()],
  preloads: [atom()],
  resource: module(),
  source: map() | nil,
  steps: [map()],
  stream_name: atom(),
  submit: map(),
  template: module(),
  theme: map() | nil,
  ui_adapter: module(),
  ui_adapter_opts: keyword(),
  uploads: [map()]
}
```

---

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