Presentational function components + their render-only helpers for the
dashboard builder — extracted verbatim from Web.BuilderLive (review #4) so
the LiveView keeps the mount/event/refresh logic and this module owns the
~900 lines of HEEx. BuilderLive imports this module, so its render/1
resolves <.grid> / <.catalog_drawer> / <.settings_modal> here.
No behavior change: the moved helpers call Lattice.to_int/2 / Lattice.clamp/3
directly (BuilderLive keeps its own to_i/1, an unrelated event-param
rounder for live drag/resize payloads — not a Lattice wrapper — avoiding a
mutual import).
Summary
Functions
Attributes
catalog(:list) (required)
Attributes
dashboard(:map) (required)scope(:any) (required)
Attributes
dashboard(:map) (required)scope(:any) (required)active_layout(:string) (required)renaming_layout(:string) - Defaults tonil.show_grid_lines(:boolean) (required)
Attributes
dashboard(:map) (required)scope(:any) (required)active_layout(:string) (required)show_grid_lines(:boolean) (required)empty(:boolean) - Defaults tofalse.
Attributes
active_layout(:string) (required)renaming_layout(:string) - Defaults tonil.dashboard(:map) (required)show_grid_lines(:boolean) (required)
Attributes
field(:map) (required)value(:any) (required)
Attributes
instance(:map) (required)mode(:string) (required)active_layout(:string) (required)grid_placement(:map) - Defaults tonil.cols(:integer) (required)max_rows(:integer) (required)
Attributes
inst(:map) (required)scope(:any) (required)placement(:map) - Defaults tonil.
Attributes
inst(:map) (required)scope(:any) (required)mode(:string) (required)placement(:map) - Defaults tonil.active_layout(:string) - Defaults tonil.cols(:integer) - Defaults tonil.