A surface that passed the static pass (spec/06 §3.4), and what rendering needs of it:
each cell's component module, validated settings and declarations, and each slot's
source, description, fields and request params; order is the cells in reading order.
Rendering takes only a validated surface, so nothing renders that hasn't passed.
Summary
Types
@type cell() :: %{ module: module(), settings: map(), declarations: Macaw.Component.Declarations.t(), slots: %{required(String.t()) => slot()} }
@type slot() :: %{ source: String.t(), description: Macaw.Data.Source.Description.t(), fields: map(), params: map() }
@type t() :: %Macaw.Surface.Validated{ cells: %{required(String.t()) => cell()}, order: [String.t()], surface: Macaw.Surface.t() }