# `MishkaChelekom.Overrides`
[🔗](https://github.com/mishka-group/mishka_chelekom/blob/v0.0.9/lib/mishka_chelekom/overrides.ex#L1)

Centralized, Pyro-style **overrides** for component part classes (Layer 3, opt-in).

A project declares overrides in one place without editing generated component files:

    defmodule MyAppWeb.Overrides do
      use MishkaChelekom.Overrides

      override :button, :root, "rounded-full"
      override :dialog, :popup, "shadow-2xl ring-1 ring-black/5"
    end

Register override modules (first match wins — exactly Pyro's resolution order); the default
preset is conventionally appended last:

    config :mishka_chelekom, :overrides, [MyAppWeb.Overrides, MishkaChelekom.Presets.Default]

At render time, components compose `base ++ override ++ user_class` via `merge/4` so the
caller's class still wins (through `MishkaChelekom.CSS`). Generated components remain
zero-dependency; this engine is only used when a project opts into it.

# `class_for`

```elixir
@spec class_for(atom(), atom()) :: String.t() | nil
```

Resolve the override classes for `{component, part}` across the configured modules
(first non-nil wins), or `nil` if none.

# `configured`

The configured override modules, in resolution order.

# `merge`

```elixir
@spec merge(atom(), atom(), MishkaChelekom.CSS.input(), MishkaChelekom.CSS.input()) ::
  String.t()
```

Compose a part's final class string: component `base`, then the resolved override, then the
caller's `user` class — later wins via `MishkaChelekom.CSS.classes/1`.

# `override`
*macro* 

Declare an override for `{component, part}`.

---

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