# `PhoenixStorybook.Story.ComponentBehaviour`
[🔗](https://github.com/phenixdigital/phoenix_storybook/blob/v1.1.0/lib/phoenix_storybook/stories/story.ex#L139)

Behaviour implemented by any component story

# `aliases`

```elixir
@callback aliases() :: [atom()]
```

# `attributes`

```elixir
@callback attributes() :: [PhoenixStorybook.Stories.Attr.t()]
```

# `container`

```elixir
@callback container() :: atom() | {atom(), [{atom(), String.t()}]}
```

# `extra_sources`

```elixir
@callback extra_sources() :: [String.t()]
```

# `function`

```elixir
@callback function() :: function()
```

# `imports`

```elixir
@callback imports() :: [{atom(), [{atom(), integer()}]}]
```

# `layout`

```elixir
@callback layout() :: atom()
```

# `render_source`

```elixir
@callback render_source() :: atom()
```

# `slots`

```elixir
@callback slots() :: [PhoenixStorybook.Stories.Slot.t()]
```

# `template`

```elixir
@callback template() :: String.t()
```

# `unstripped_doc`

```elixir
@callback unstripped_doc() :: String.t() | [String.t()] | nil
```

# `variations`

```elixir
@callback variations() :: [
  PhoenixStorybook.Stories.Variation.t()
  | PhoenixStorybook.Stories.VariationGroup.t()
]
```

---

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