# `MishkaGervaz.Domain.Info.Form`
[🔗](https://github.com/mishka-group/mishka_gervaz/blob/v0.0.1-alpha.3/lib/mishka_gervaz/_domain/info/form.ex#L1)

Form-specific introspection for domains using `MishkaGervaz.Domain`.

## Usage

    # Get the inherited form defaults
    defaults = MishkaGervaz.Domain.Info.Form.defaults(MyDomain)

    # Get default form UI adapter
    adapter = MishkaGervaz.Domain.Info.Form.ui_adapter(MyDomain)

    # Get default form actions
    actions = MishkaGervaz.Domain.Info.Form.actions(MyDomain)

# `actions`

```elixir
@spec actions(module()) :: map() | nil
```

Get the form actions config.

# `actor_key`

```elixir
@spec actor_key(module()) :: atom()
```

Get the actor key.

# `config`

```elixir
@spec config(module()) :: map() | nil
```

Get the full domain configuration.

# `defaults`

```elixir
@spec defaults(module()) :: map()
```

Get the inherited form defaults for a domain.

These settings are inherited by all resources in the domain.

# `features`

```elixir
@spec features(module()) :: :all | [atom()] | nil
```

Get the form features.

# `layout`

```elixir
@spec layout(module()) :: map() | nil
```

Get the form layout config.

# `master_check`

```elixir
@spec master_check(module()) :: (any() -&gt; boolean()) | nil
```

Get the master_check function.

# `mishka_gervaz_form`

```elixir
@spec mishka_gervaz_form(dsl_or_extended :: module() | map()) :: [struct()]
```

mishka_gervaz.form DSL entities

# `mishka_gervaz_form_actions_create`

```elixir
@spec mishka_gervaz_form_actions_create(dsl_or_extended :: module() | map()) ::
  {:ok, atom() | {atom(), atom()}} | :error
```

Default create action. Atom (used for both master and tenant) or tuple `{master_action, tenant_action}`. Inherited by all form resources in the domain.

# `mishka_gervaz_form_actions_create!`

```elixir
@spec mishka_gervaz_form_actions_create!(dsl_or_extended :: module() | map()) ::
  (atom() | {atom(), atom()}) | no_return()
```

Default create action. Atom (used for both master and tenant) or tuple `{master_action, tenant_action}`. Inherited by all form resources in the domain.

# `mishka_gervaz_form_actions_options`

```elixir
@spec mishka_gervaz_form_actions_options(dsl_or_extended :: module() | map()) :: %{
  required(atom()) =&gt; any()
}
```

mishka_gervaz.form.actions DSL options

Returns a map containing the and any configured or default values.

# `mishka_gervaz_form_actions_read`

```elixir
@spec mishka_gervaz_form_actions_read(dsl_or_extended :: module() | map()) ::
  {:ok, atom() | {atom(), atom()}} | :error
```

Default read/get action. Atom or tuple `{master_action, tenant_action}`. Inherited by all form resources in the domain.

# `mishka_gervaz_form_actions_read!`

```elixir
@spec mishka_gervaz_form_actions_read!(dsl_or_extended :: module() | map()) ::
  (atom() | {atom(), atom()}) | no_return()
```

Default read/get action. Atom or tuple `{master_action, tenant_action}`. Inherited by all form resources in the domain.

# `mishka_gervaz_form_actions_update`

```elixir
@spec mishka_gervaz_form_actions_update(dsl_or_extended :: module() | map()) ::
  {:ok, atom() | {atom(), atom()}} | :error
```

Default update action. Atom or tuple `{master_action, tenant_action}`. Inherited by all form resources in the domain.

# `mishka_gervaz_form_actions_update!`

```elixir
@spec mishka_gervaz_form_actions_update!(dsl_or_extended :: module() | map()) ::
  (atom() | {atom(), atom()}) | no_return()
```

Default update action. Atom or tuple `{master_action, tenant_action}`. Inherited by all form resources in the domain.

# `mishka_gervaz_form_actor_key`

```elixir
@spec mishka_gervaz_form_actor_key(dsl_or_extended :: module() | map()) ::
  {:ok, atom()} | :error
```

Default assign key for current user.

# `mishka_gervaz_form_actor_key!`

```elixir
@spec mishka_gervaz_form_actor_key!(dsl_or_extended :: module() | map()) ::
  atom() | no_return()
```

Default assign key for current user.

# `mishka_gervaz_form_features`

```elixir
@spec mishka_gervaz_form_features(dsl_or_extended :: module() | map()) ::
  {:ok,
   :all
   | [:inline_errors | :autosave | :wizard | :groups | :uploads | :validation]}
  | :error
```

Default features to enable for forms.

# `mishka_gervaz_form_features!`

```elixir
@spec mishka_gervaz_form_features!(dsl_or_extended :: module() | map()) ::
  (:all
   | [:inline_errors | :autosave | :wizard | :groups | :uploads | :validation])
  | no_return()
```

Default features to enable for forms.

# `mishka_gervaz_form_layout_columns`

```elixir
@spec mishka_gervaz_form_layout_columns(dsl_or_extended :: module() | map()) ::
  {:ok, pos_integer()} | :error
```

Default number of form columns.

# `mishka_gervaz_form_layout_columns!`

```elixir
@spec mishka_gervaz_form_layout_columns!(dsl_or_extended :: module() | map()) ::
  pos_integer() | no_return()
```

Default number of form columns.

# `mishka_gervaz_form_layout_navigation`

```elixir
@spec mishka_gervaz_form_layout_navigation(dsl_or_extended :: module() | map()) ::
  {:ok, :free | :sequential} | :error
```

Default wizard navigation mode.

# `mishka_gervaz_form_layout_navigation!`

```elixir
@spec mishka_gervaz_form_layout_navigation!(dsl_or_extended :: module() | map()) ::
  (:free | :sequential) | no_return()
```

Default wizard navigation mode.

# `mishka_gervaz_form_layout_options`

```elixir
@spec mishka_gervaz_form_layout_options(dsl_or_extended :: module() | map()) :: %{
  required(atom()) =&gt; any()
}
```

mishka_gervaz.form.layout DSL options

Returns a map containing the and any configured or default values.

# `mishka_gervaz_form_layout_persistence`

```elixir
@spec mishka_gervaz_form_layout_persistence(dsl_or_extended :: module() | map()) ::
  {:ok, :client_token | :ets | :none} | :error
```

Default wizard step persistence.

# `mishka_gervaz_form_layout_persistence!`

```elixir
@spec mishka_gervaz_form_layout_persistence!(dsl_or_extended :: module() | map()) ::
  (:client_token | :ets | :none) | no_return()
```

Default wizard step persistence.

# `mishka_gervaz_form_layout_responsive`

```elixir
@spec mishka_gervaz_form_layout_responsive(dsl_or_extended :: module() | map()) ::
  {:ok, boolean()} | :error
```

Default responsive layout behaviour.

# `mishka_gervaz_form_layout_responsive!`

```elixir
@spec mishka_gervaz_form_layout_responsive!(dsl_or_extended :: module() | map()) ::
  boolean() | no_return()
```

Default responsive layout behaviour.

# `mishka_gervaz_form_master_check`

```elixir
@spec mishka_gervaz_form_master_check(dsl_or_extended :: module() | map()) ::
  {:ok, (any() -&gt; any())} | :error
```

Default function to check if user is master. `fn user -> boolean`.

# `mishka_gervaz_form_master_check!`

```elixir
@spec mishka_gervaz_form_master_check!(dsl_or_extended :: module() | map()) ::
  (any() -&gt; any()) | no_return()
```

Default function to check if user is master. `fn user -> boolean`.

# `mishka_gervaz_form_options`

```elixir
@spec mishka_gervaz_form_options(dsl_or_extended :: module() | map()) :: %{
  required(atom()) =&gt; any()
}
```

mishka_gervaz.form DSL options

Returns a map containing the and any configured or default values.

# `mishka_gervaz_form_template`

```elixir
@spec mishka_gervaz_form_template(dsl_or_extended :: module() | map()) ::
  {:ok, atom()} | :error
```

Default template module for form layout.

# `mishka_gervaz_form_template!`

```elixir
@spec mishka_gervaz_form_template!(dsl_or_extended :: module() | map()) ::
  atom() | no_return()
```

Default template module for form layout.

# `mishka_gervaz_form_theme_error_class`

```elixir
@spec mishka_gervaz_form_theme_error_class(dsl_or_extended :: module() | map()) ::
  {:ok, String.t()} | :error
```

Default error message CSS classes.

# `mishka_gervaz_form_theme_error_class!`

```elixir
@spec mishka_gervaz_form_theme_error_class!(dsl_or_extended :: module() | map()) ::
  String.t() | no_return()
```

Default error message CSS classes.

# `mishka_gervaz_form_theme_extra`

```elixir
@spec mishka_gervaz_form_theme_extra(dsl_or_extended :: module() | map()) ::
  {:ok, map()} | :error
```

Default extra theme options.

# `mishka_gervaz_form_theme_extra!`

```elixir
@spec mishka_gervaz_form_theme_extra!(dsl_or_extended :: module() | map()) ::
  map() | no_return()
```

Default extra theme options.

# `mishka_gervaz_form_theme_field_class`

```elixir
@spec mishka_gervaz_form_theme_field_class(dsl_or_extended :: module() | map()) ::
  {:ok, String.t()} | :error
```

Default field CSS classes.

# `mishka_gervaz_form_theme_field_class!`

```elixir
@spec mishka_gervaz_form_theme_field_class!(dsl_or_extended :: module() | map()) ::
  String.t() | no_return()
```

Default field CSS classes.

# `mishka_gervaz_form_theme_form_class`

```elixir
@spec mishka_gervaz_form_theme_form_class(dsl_or_extended :: module() | map()) ::
  {:ok, String.t()} | :error
```

Default form CSS classes.

# `mishka_gervaz_form_theme_form_class!`

```elixir
@spec mishka_gervaz_form_theme_form_class!(dsl_or_extended :: module() | map()) ::
  String.t() | no_return()
```

Default form CSS classes.

# `mishka_gervaz_form_theme_label_class`

```elixir
@spec mishka_gervaz_form_theme_label_class(dsl_or_extended :: module() | map()) ::
  {:ok, String.t()} | :error
```

Default label CSS classes.

# `mishka_gervaz_form_theme_label_class!`

```elixir
@spec mishka_gervaz_form_theme_label_class!(dsl_or_extended :: module() | map()) ::
  String.t() | no_return()
```

Default label CSS classes.

# `mishka_gervaz_form_theme_options`

```elixir
@spec mishka_gervaz_form_theme_options(dsl_or_extended :: module() | map()) :: %{
  required(atom()) =&gt; any()
}
```

mishka_gervaz.form.theme DSL options

Returns a map containing the and any configured or default values.

# `mishka_gervaz_form_ui_adapter`

```elixir
@spec mishka_gervaz_form_ui_adapter(dsl_or_extended :: module() | map()) ::
  {:ok, atom()} | :error
```

Default form UI adapter module.

# `mishka_gervaz_form_ui_adapter!`

```elixir
@spec mishka_gervaz_form_ui_adapter!(dsl_or_extended :: module() | map()) ::
  atom() | no_return()
```

Default form UI adapter module.

# `mishka_gervaz_form_ui_adapter_opts`

```elixir
@spec mishka_gervaz_form_ui_adapter_opts(dsl_or_extended :: module() | map()) ::
  {:ok, keyword()} | :error
```

Default form UI adapter options.

# `mishka_gervaz_form_ui_adapter_opts!`

```elixir
@spec mishka_gervaz_form_ui_adapter_opts!(dsl_or_extended :: module() | map()) ::
  keyword() | no_return()
```

Default form UI adapter options.

# `mishka_gervaz_navigation`

```elixir
@spec mishka_gervaz_navigation(dsl_or_extended :: module() | map()) :: [struct()]
```

mishka_gervaz.navigation DSL entities

# `mishka_gervaz_table`

```elixir
@spec mishka_gervaz_table(dsl_or_extended :: module() | map()) :: [struct()]
```

mishka_gervaz.table DSL entities

# `mishka_gervaz_table_actions_destroy`

```elixir
@spec mishka_gervaz_table_actions_destroy(dsl_or_extended :: module() | map()) ::
  {:ok, atom() | {atom(), atom()}} | :error
```

Default destroy action. Atom or tuple `{master_action, tenant_action}`. Inherited by all resources in the domain.

# `mishka_gervaz_table_actions_destroy!`

```elixir
@spec mishka_gervaz_table_actions_destroy!(dsl_or_extended :: module() | map()) ::
  (atom() | {atom(), atom()}) | no_return()
```

Default destroy action. Atom or tuple `{master_action, tenant_action}`. Inherited by all resources in the domain.

# `mishka_gervaz_table_actions_get`

```elixir
@spec mishka_gervaz_table_actions_get(dsl_or_extended :: module() | map()) ::
  {:ok, atom() | {atom(), atom()}} | :error
```

Default get action. Atom or tuple `{master_action, tenant_action}`. Inherited by all resources in the domain.

# `mishka_gervaz_table_actions_get!`

```elixir
@spec mishka_gervaz_table_actions_get!(dsl_or_extended :: module() | map()) ::
  (atom() | {atom(), atom()}) | no_return()
```

Default get action. Atom or tuple `{master_action, tenant_action}`. Inherited by all resources in the domain.

# `mishka_gervaz_table_actions_options`

```elixir
@spec mishka_gervaz_table_actions_options(dsl_or_extended :: module() | map()) :: %{
  required(atom()) =&gt; any()
}
```

mishka_gervaz.table.actions DSL options

Returns a map containing the and any configured or default values.

# `mishka_gervaz_table_actions_read`

```elixir
@spec mishka_gervaz_table_actions_read(dsl_or_extended :: module() | map()) ::
  {:ok, atom() | {atom(), atom()}} | :error
```

Default read action. Atom (used for both master and tenant) or tuple `{master_action, tenant_action}`. Inherited by all resources in the domain.

# `mishka_gervaz_table_actions_read!`

```elixir
@spec mishka_gervaz_table_actions_read!(dsl_or_extended :: module() | map()) ::
  (atom() | {atom(), atom()}) | no_return()
```

Default read action. Atom (used for both master and tenant) or tuple `{master_action, tenant_action}`. Inherited by all resources in the domain.

# `mishka_gervaz_table_actor_key`

```elixir
@spec mishka_gervaz_table_actor_key(dsl_or_extended :: module() | map()) ::
  {:ok, atom()} | :error
```

Default assign key for current user.

# `mishka_gervaz_table_actor_key!`

```elixir
@spec mishka_gervaz_table_actor_key!(dsl_or_extended :: module() | map()) ::
  atom() | no_return()
```

Default assign key for current user.

# `mishka_gervaz_table_archive_destroy_action`

```elixir
@spec mishka_gervaz_table_archive_destroy_action(dsl_or_extended :: module() | map()) ::
  {:ok, atom() | {atom(), atom()}} | :error
```

Default permanent destroy action.

# `mishka_gervaz_table_archive_destroy_action!`

```elixir
@spec mishka_gervaz_table_archive_destroy_action!(dsl_or_extended :: module() | map()) ::
  (atom() | {atom(), atom()}) | no_return()
```

Default permanent destroy action.

# `mishka_gervaz_table_archive_enabled`

```elixir
@spec mishka_gervaz_table_archive_enabled(dsl_or_extended :: module() | map()) ::
  {:ok, boolean()} | :error
```

Default for whether archive support is enabled at the domain level. Resources still need `AshArchival.Resource` in their extensions for archive to apply.

# `mishka_gervaz_table_archive_enabled!`

```elixir
@spec mishka_gervaz_table_archive_enabled!(dsl_or_extended :: module() | map()) ::
  boolean() | no_return()
```

Default for whether archive support is enabled at the domain level. Resources still need `AshArchival.Resource` in their extensions for archive to apply.

# `mishka_gervaz_table_archive_get_action`

```elixir
@spec mishka_gervaz_table_archive_get_action(dsl_or_extended :: module() | map()) ::
  {:ok, atom() | {atom(), atom()}} | :error
```

Default get archived action.

# `mishka_gervaz_table_archive_get_action!`

```elixir
@spec mishka_gervaz_table_archive_get_action!(dsl_or_extended :: module() | map()) ::
  (atom() | {atom(), atom()}) | no_return()
```

Default get archived action.

# `mishka_gervaz_table_archive_options`

```elixir
@spec mishka_gervaz_table_archive_options(dsl_or_extended :: module() | map()) :: %{
  required(atom()) =&gt; any()
}
```

mishka_gervaz.table.archive DSL options

Returns a map containing the and any configured or default values.

# `mishka_gervaz_table_archive_read_action`

```elixir
@spec mishka_gervaz_table_archive_read_action(dsl_or_extended :: module() | map()) ::
  {:ok, atom() | {atom(), atom()}} | :error
```

Default read archived action. Single atom or tuple `{master_action, tenant_action}`.

# `mishka_gervaz_table_archive_read_action!`

```elixir
@spec mishka_gervaz_table_archive_read_action!(dsl_or_extended :: module() | map()) ::
  (atom() | {atom(), atom()}) | no_return()
```

Default read archived action. Single atom or tuple `{master_action, tenant_action}`.

# `mishka_gervaz_table_archive_restore_action`

```elixir
@spec mishka_gervaz_table_archive_restore_action(dsl_or_extended :: module() | map()) ::
  {:ok, atom() | {atom(), atom()}} | :error
```

Default restore action.

# `mishka_gervaz_table_archive_restore_action!`

```elixir
@spec mishka_gervaz_table_archive_restore_action!(dsl_or_extended :: module() | map()) ::
  (atom() | {atom(), atom()}) | no_return()
```

Default restore action.

# `mishka_gervaz_table_archive_restricted`

```elixir
@spec mishka_gervaz_table_archive_restricted(dsl_or_extended :: module() | map()) ::
  {:ok, boolean()} | :error
```

Default for restricting archive UI to master users only.

# `mishka_gervaz_table_archive_restricted!`

```elixir
@spec mishka_gervaz_table_archive_restricted!(dsl_or_extended :: module() | map()) ::
  boolean() | no_return()
```

Default for restricting archive UI to master users only.

# `mishka_gervaz_table_archive_visible`

```elixir
@spec mishka_gervaz_table_archive_visible(dsl_or_extended :: module() | map()) ::
  {:ok, boolean() | tuple()} | :error
```

Default archive toggle visibility. Boolean or `fn state -> boolean end`.

# `mishka_gervaz_table_archive_visible!`

```elixir
@spec mishka_gervaz_table_archive_visible!(dsl_or_extended :: module() | map()) ::
  (boolean() | tuple()) | no_return()
```

Default archive toggle visibility. Boolean or `fn state -> boolean end`.

# `mishka_gervaz_table_master_check`

```elixir
@spec mishka_gervaz_table_master_check(dsl_or_extended :: module() | map()) ::
  {:ok, (any() -&gt; any())} | :error
```

Default function to check if user is master. `fn user -> boolean`.

# `mishka_gervaz_table_master_check!`

```elixir
@spec mishka_gervaz_table_master_check!(dsl_or_extended :: module() | map()) ::
  (any() -&gt; any()) | no_return()
```

Default function to check if user is master. `fn user -> boolean`.

# `mishka_gervaz_table_options`

```elixir
@spec mishka_gervaz_table_options(dsl_or_extended :: module() | map()) :: %{
  required(atom()) =&gt; any()
}
```

mishka_gervaz.table DSL options

Returns a map containing the and any configured or default values.

# `mishka_gervaz_table_realtime_enabled`

```elixir
@spec mishka_gervaz_table_realtime_enabled(dsl_or_extended :: module() | map()) ::
  {:ok, boolean()} | :error
```

Default realtime enabled. When realtime section is defined, enabled is true by default.

# `mishka_gervaz_table_realtime_enabled!`

```elixir
@spec mishka_gervaz_table_realtime_enabled!(dsl_or_extended :: module() | map()) ::
  boolean() | no_return()
```

Default realtime enabled. When realtime section is defined, enabled is true by default.

# `mishka_gervaz_table_realtime_options`

```elixir
@spec mishka_gervaz_table_realtime_options(dsl_or_extended :: module() | map()) :: %{
  required(atom()) =&gt; any()
}
```

mishka_gervaz.table.realtime DSL options

Returns a map containing the and any configured or default values.

# `mishka_gervaz_table_realtime_pubsub`

```elixir
@spec mishka_gervaz_table_realtime_pubsub(dsl_or_extended :: module() | map()) ::
  {:ok, atom()} | :error
```

Default PubSub module.

# `mishka_gervaz_table_realtime_pubsub!`

```elixir
@spec mishka_gervaz_table_realtime_pubsub!(dsl_or_extended :: module() | map()) ::
  atom() | no_return()
```

Default PubSub module.

# `mishka_gervaz_table_refresh_enabled`

```elixir
@spec mishka_gervaz_table_refresh_enabled(dsl_or_extended :: module() | map()) ::
  {:ok, boolean()} | :error
```

Enable auto-refresh. When refresh section is defined, enabled is true by default.

# `mishka_gervaz_table_refresh_enabled!`

```elixir
@spec mishka_gervaz_table_refresh_enabled!(dsl_or_extended :: module() | map()) ::
  boolean() | no_return()
```

Enable auto-refresh. When refresh section is defined, enabled is true by default.

# `mishka_gervaz_table_refresh_interval`

```elixir
@spec mishka_gervaz_table_refresh_interval(dsl_or_extended :: module() | map()) ::
  {:ok, pos_integer()} | :error
```

Refresh interval in milliseconds. Default: 30 seconds.

# `mishka_gervaz_table_refresh_interval!`

```elixir
@spec mishka_gervaz_table_refresh_interval!(dsl_or_extended :: module() | map()) ::
  pos_integer() | no_return()
```

Refresh interval in milliseconds. Default: 30 seconds.

# `mishka_gervaz_table_refresh_options`

```elixir
@spec mishka_gervaz_table_refresh_options(dsl_or_extended :: module() | map()) :: %{
  required(atom()) =&gt; any()
}
```

mishka_gervaz.table.refresh DSL options

Returns a map containing the and any configured or default values.

# `mishka_gervaz_table_refresh_pause_on_blur`

```elixir
@spec mishka_gervaz_table_refresh_pause_on_blur(dsl_or_extended :: module() | map()) ::
  {:ok, boolean()} | :error
```

Pause auto-refresh when browser tab/window loses focus.

# `mishka_gervaz_table_refresh_pause_on_blur!`

```elixir
@spec mishka_gervaz_table_refresh_pause_on_blur!(dsl_or_extended :: module() | map()) ::
  boolean() | no_return()
```

Pause auto-refresh when browser tab/window loses focus.

# `mishka_gervaz_table_refresh_pause_on_interaction`

```elixir
@spec mishka_gervaz_table_refresh_pause_on_interaction(
  dsl_or_extended :: module() | map()
) ::
  {:ok, boolean()} | :error
```

Pause auto-refresh when user is interacting (filtering, selecting, etc.).

# `mishka_gervaz_table_refresh_pause_on_interaction!`

```elixir
@spec mishka_gervaz_table_refresh_pause_on_interaction!(
  dsl_or_extended :: module() | map()
) ::
  boolean() | no_return()
```

Pause auto-refresh when user is interacting (filtering, selecting, etc.).

# `mishka_gervaz_table_refresh_show_indicator`

```elixir
@spec mishka_gervaz_table_refresh_show_indicator(dsl_or_extended :: module() | map()) ::
  {:ok, boolean()} | :error
```

Show a visual indicator when auto-refresh is active.

# `mishka_gervaz_table_refresh_show_indicator!`

```elixir
@spec mishka_gervaz_table_refresh_show_indicator!(dsl_or_extended :: module() | map()) ::
  boolean() | no_return()
```

Show a visual indicator when auto-refresh is active.

# `mishka_gervaz_table_theme_border_class`

```elixir
@spec mishka_gervaz_table_theme_border_class(dsl_or_extended :: module() | map()) ::
  {:ok, String.t()} | :error
```

Default border CSS classes.

# `mishka_gervaz_table_theme_border_class!`

```elixir
@spec mishka_gervaz_table_theme_border_class!(dsl_or_extended :: module() | map()) ::
  String.t() | no_return()
```

Default border CSS classes.

# `mishka_gervaz_table_theme_extra`

```elixir
@spec mishka_gervaz_table_theme_extra(dsl_or_extended :: module() | map()) ::
  {:ok, map()} | :error
```

Default extra theme options.

# `mishka_gervaz_table_theme_extra!`

```elixir
@spec mishka_gervaz_table_theme_extra!(dsl_or_extended :: module() | map()) ::
  map() | no_return()
```

Default extra theme options.

# `mishka_gervaz_table_theme_header_class`

```elixir
@spec mishka_gervaz_table_theme_header_class(dsl_or_extended :: module() | map()) ::
  {:ok, String.t()} | :error
```

Default header CSS classes.

# `mishka_gervaz_table_theme_header_class!`

```elixir
@spec mishka_gervaz_table_theme_header_class!(dsl_or_extended :: module() | map()) ::
  String.t() | no_return()
```

Default header CSS classes.

# `mishka_gervaz_table_theme_options`

```elixir
@spec mishka_gervaz_table_theme_options(dsl_or_extended :: module() | map()) :: %{
  required(atom()) =&gt; any()
}
```

mishka_gervaz.table.theme DSL options

Returns a map containing the and any configured or default values.

# `mishka_gervaz_table_theme_row_class`

```elixir
@spec mishka_gervaz_table_theme_row_class(dsl_or_extended :: module() | map()) ::
  {:ok, String.t()} | :error
```

Default row CSS classes.

# `mishka_gervaz_table_theme_row_class!`

```elixir
@spec mishka_gervaz_table_theme_row_class!(dsl_or_extended :: module() | map()) ::
  String.t() | no_return()
```

Default row CSS classes.

# `mishka_gervaz_table_ui_adapter`

```elixir
@spec mishka_gervaz_table_ui_adapter(dsl_or_extended :: module() | map()) ::
  {:ok, atom()} | :error
```

Default UI adapter module.

# `mishka_gervaz_table_ui_adapter!`

```elixir
@spec mishka_gervaz_table_ui_adapter!(dsl_or_extended :: module() | map()) ::
  atom() | no_return()
```

Default UI adapter module.

# `mishka_gervaz_table_ui_adapter_opts`

```elixir
@spec mishka_gervaz_table_ui_adapter_opts(dsl_or_extended :: module() | map()) ::
  {:ok, keyword()} | :error
```

Default UI adapter options.

# `mishka_gervaz_table_ui_adapter_opts!`

```elixir
@spec mishka_gervaz_table_ui_adapter_opts!(dsl_or_extended :: module() | map()) ::
  keyword() | no_return()
```

Default UI adapter options.

# `mishka_gervaz_table_url_sync_enabled`

```elixir
@spec mishka_gervaz_table_url_sync_enabled(dsl_or_extended :: module() | map()) ::
  {:ok, boolean()} | :error
```

Enable URL state synchronization. When url_sync section is defined, enabled is true by default.

# `mishka_gervaz_table_url_sync_enabled!`

```elixir
@spec mishka_gervaz_table_url_sync_enabled!(dsl_or_extended :: module() | map()) ::
  boolean() | no_return()
```

Enable URL state synchronization. When url_sync section is defined, enabled is true by default.

# `mishka_gervaz_table_url_sync_mode`

```elixir
@spec mishka_gervaz_table_url_sync_mode(dsl_or_extended :: module() | map()) ::
  {:ok, :bidirectional | :read_only} | :error
```

URL sync mode:
- `:read_only` - Only read from URL on initial load (default)
- `:bidirectional` - Sync URL when filters/sort/page change

# `mishka_gervaz_table_url_sync_mode!`

```elixir
@spec mishka_gervaz_table_url_sync_mode!(dsl_or_extended :: module() | map()) ::
  (:bidirectional | :read_only) | no_return()
```

URL sync mode:
- `:read_only` - Only read from URL on initial load (default)
- `:bidirectional` - Sync URL when filters/sort/page change

# `mishka_gervaz_table_url_sync_options`

```elixir
@spec mishka_gervaz_table_url_sync_options(dsl_or_extended :: module() | map()) :: %{
  required(atom()) =&gt; any()
}
```

mishka_gervaz.table.url_sync DSL options

Returns a map containing the and any configured or default values.

# `mishka_gervaz_table_url_sync_params`

```elixir
@spec mishka_gervaz_table_url_sync_params(dsl_or_extended :: module() | map()) ::
  {:ok, [:template | :search | :page_size | :page | :sort | :filters]} | :error
```

Which state to sync to URL params.

# `mishka_gervaz_table_url_sync_params!`

```elixir
@spec mishka_gervaz_table_url_sync_params!(dsl_or_extended :: module() | map()) ::
  [:template | :search | :page_size | :page | :sort | :filters] | no_return()
```

Which state to sync to URL params.

# `mishka_gervaz_table_url_sync_prefix`

```elixir
@spec mishka_gervaz_table_url_sync_prefix(dsl_or_extended :: module() | map()) ::
  {:ok, String.t()} | :error
```

Prefix for URL params to avoid conflicts.

# `mishka_gervaz_table_url_sync_prefix!`

```elixir
@spec mishka_gervaz_table_url_sync_prefix!(dsl_or_extended :: module() | map()) ::
  String.t() | no_return()
```

Prefix for URL params to avoid conflicts.

# `submit`

```elixir
@spec submit(module()) :: map() | nil
```

Get the form submit config.

# `template`

```elixir
@spec template(module()) :: module() | nil
```

Get the form template.

# `theme`

```elixir
@spec theme(module()) :: map() | nil
```

Get the form theme config.

# `ui_adapter`

```elixir
@spec ui_adapter(module()) :: module() | nil
```

Get the form UI adapter.

# `ui_adapter_opts`

```elixir
@spec ui_adapter_opts(module()) :: keyword()
```

Get the form UI adapter options.

---

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