# `Surface.MacroComponent`
[🔗](https://github.com/surface-ui/surface/blob/v0.12.3/lib/surface/macro_component.ex#L1)

A low-level component which is responsible for translating its own
content at compile time.

# `expand`
[🔗](https://github.com/surface-ui/surface/blob/v0.12.3/lib/surface/macro_component.ex#L14)

```elixir
@callback expand(
  attributes :: [Surface.AST.Attribute.t()],
  content :: binary(),
  meta :: Surface.AST.Meta.t()
) :: Surface.AST.t() | [Surface.AST.t()]
```

This function is called to expand a macro component into a
set of Surface.AST nodes.

# `eval_static_props!`
[🔗](https://github.com/surface-ui/surface/blob/v0.12.3/lib/surface/macro_component.ex#L35)

Evaluates the values of the static properties of a macro component.

Usually called inside `translate/2` in order to retrieve the
properties' values at compile-time.

---

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