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

A behaviour to provide additional information about the catalogue.

Optional for local catalogues. Usually required if you want to share
your components as a library.

# `config`
[🔗](https://github.com/surface-ui/surface/blob/v0.12.3/lib/surface/catalogue.ex#L27)

```elixir
@callback config() :: keyword()
```

Returns a keyword list of config options to be used by the catalogue tool.

Available options:

  * `head_css` - CSS related content to be added to the `<head>...</head>` section
    of each example or playground.

  * `head_js` - JS related content to be added to the `<head>...</head>` section
    of each example or playground.

  * `example` - A keyword list of options to be applied for all examples
    in the catalogue.

  * `playground` - A keyword list of options to be applied for all playgrounds
    in the catalogue.

# `load_asset`
[🔗](https://github.com/surface-ui/surface/blob/v0.12.3/lib/surface/catalogue.ex#L58)
*macro* 

Loads a text file as module attribute so you can inject its content directly
in `head_css` or `head_js` config options.

Useful to avoid depending on external css or js code. The path should be relative
to the caller's folder.

Available options:

  * `as` - the name of the module attribute to be generated.

---

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