# `MishkaGervaz.Form.Entities.Submit`
[🔗](https://github.com/mishka-group/mishka_gervaz/blob/v0.0.1-alpha.3/lib/mishka_gervaz/form/entities/submit.ex#L62)

Submit / cancel button block — the singleton entity that owns the
three button sub-entities (`create`, `update`, `cancel`), the `ui`
styling sub-entity, and the `position` field (`:top`, `:bottom`, or
`:both`).

When no `submit` block is declared on a resource, all three buttons
fall back to the domain defaults (see
`MishkaGervaz.Form.Dsl.DomainDefaults`). When a `submit` block exists
but defines no buttons, no buttons render — declaring an empty submit
is a deliberate "render nothing" signal. Partial blocks inherit
per-button: missing buttons fall back to the domain, present ones
override.

## Example

    submit do
      create label: "Create Post"
      update label: "Save Post"
      cancel label: "Discard"
      position :bottom

      ui do
        submit_class "bg-blue-600 text-white"
        cancel_class "bg-gray-200"
        wrapper_class "flex gap-4"
      end
    end

See `MishkaGervaz.Form.Dsl.Submit` for the DSL entity declaration,
`MishkaGervaz.Form.Entities.Submit.Button` for per-button options,
and `MishkaGervaz.Form.Entities.Submit.Ui` for shared button styling.

# `t`

```elixir
@type t() :: %MishkaGervaz.Form.Entities.Submit{
  __spark_metadata__: map() | nil,
  cancel: MishkaGervaz.Form.Entities.Submit.Button.t() | nil,
  create: MishkaGervaz.Form.Entities.Submit.Button.t() | nil,
  position: :top | :bottom | :both,
  ui: MishkaGervaz.Form.Entities.Submit.Ui.t() | nil,
  update: MishkaGervaz.Form.Entities.Submit.Button.t() | nil
}
```

# `transform`

Transform the submit after DSL compilation.

Extracts nested entities from list wrappers.

---

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