# `Macaw.Layers.Theme.Style`
[🔗](https://github.com/dcoai/macaw_layers/blob/v0.3.0/lib/macaw/layers/theme/style.ex#L1)

A style node as a fragment type (spec/04 §2.4, spec/02 §1): how the palette stacks one
style over another. The root is `:style`, and every key of it is a part,
`%{merge: :override, node: :part}`, so a part both nodes give as a map merges key by
key, the higher's word at each key, and anything else is the higher's. A part's own keys
are unknown to the type, each taken whole.

A list entry of the palette is `Macaw.Layers.Fragment.stack/2` of its layers, a left
fold. This type has no hooks; an adopter whose style grammar has its own rules gives a
style type with its own `normalize/4` and `under/3` through
`Macaw.Layers.Theme.Extension.style_type/0` (spec/04 §3.4), and the palette stacks with
it in `Macaw.Layers.Theme.style/2`, its list entries and its contracts alike.

    iex> Macaw.Layers.Fragment.stack(Macaw.Layers.Theme.Style, [
    ...>   %{stroke: %{type: :solid, width: 1.5}, opacity: 0.5},
    ...>   %{stroke: %{width: 3}}
    ...> ])
    %{stroke: %{type: :solid, width: 3}, opacity: 0.5}

---

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