Static table configuration that never changes after initialization.
Stored as a separate struct so LiveView can skip re-rendering when only dynamic state changes. The reference to this struct stays the same across all state updates, enabling O(1) equality comparison.
Summary
Types
@type t() :: %MishkaGervaz.Table.Web.State.Static{ bulk_actions: [map()], columns: [map()], config: map(), features: [atom()], filter_groups: [map()], filter_mode: atom(), filters: [map()], footer: map() | nil, header: map() | nil, hooks: map(), id: String.t(), max_page_size: pos_integer() | nil, notices: [map()], page_size: pos_integer() | nil, page_size_options: [pos_integer()] | nil, pagination_ui: struct(), resource: module(), row_action_dropdowns: [map()], row_actions: [map()], row_actions_layout: map() | nil, sort_field_map: %{required(atom()) => [atom()]}, sortable_columns: [atom()], stream_name: atom(), switchable_templates: [module()], template_options: keyword(), theme: map() | nil, ui_adapter: module(), ui_adapter_opts: keyword(), url_sync_config: map() | nil }