# `MingaEditor.Shell.Layout`
[🔗](https://github.com/jsmestad/minga/blob/main/lib/minga_editor/shell/layout.ex#L1)

Behaviour: how a shell computes spatial layout for the current state.

Carved out of `MingaEditor.Shell` so a shell that only contributes
layout (e.g., a hypothetical pane-only test fixture) can implement
this contract alone without the full shell surface.

# `compute_layout`

```elixir
@callback compute_layout(editor_state :: term()) :: MingaEditor.Layout.t()
```

Returns a layout struct with named rectangles for each UI region.
The shell decides what regions exist (tab bar, modeline, file tree,
editor panes, agent panel, bottom panel, etc.).

---

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