# `PhoenixKitCatalogue.Web.TableConfig`
[🔗](https://github.com/BeamLabEU/phoenix_kit_catalogue/blob/v0.18.0/lib/phoenix_kit_catalogue/web/table_config.ex#L1)

Column metadata for the catalogue admin tables, keyed by scope
(`:catalogues`, `:suppliers`, `:manufacturers`). Pure data — cell and
card rendering live in the LiveView. Labels are zero-arity fns so they
resolve in the request's current locale.

# `column`

```elixir
@type column() :: %{
  id: String.t(),
  label: (-&gt; String.t()),
  default?: boolean(),
  managed?: boolean(),
  sortable?: boolean(),
  sort_key: (map() -&gt; term()) | nil,
  align: :left | :right,
  filterable?: boolean(),
  filter_type: :enum | nil
}
```

# `scope`

```elixir
@type scope() ::
  :catalogues
  | :suppliers
  | :manufacturers
  | :attribute_groups
  | :detail_items
  | :detail_categories
```

# `column_map`

```elixir
@spec column_map(scope()) :: %{required(String.t()) =&gt; column()}
```

# `columns`

```elixir
@spec columns(scope()) :: [column()]
```

# `default_columns`

```elixir
@spec default_columns(scope()) :: [String.t()]
```

# `default_sort`

```elixir
@spec default_sort(scope()) :: {String.t(), :asc | :desc}
```

# `managed_columns`

```elixir
@spec managed_columns(scope()) :: [column()]
```

# `sortable_visible`

```elixir
@spec sortable_visible(scope(), [String.t()]) :: [column()]
```

# `validate_columns`

```elixir
@spec validate_columns(scope(), [String.t()]) :: [String.t()]
```

---

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