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

Defines a stateless component.

## Example

    defmodule Button do
      use Surface.Component

      prop click, :event

      def render(assigns) do
        ~F"""
        <button class="button" :on-click={@click}>
          <#slot/>
        </button>
        """
      end
    end

> **Note**: Stateless components cannot handle Phoenix LiveView events.
If you need to handle them, please use a `Surface.LiveComponent` instead.

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

```elixir
@callback render(assigns :: Socket.assigns()) :: Phoenix.LiveView.Rendered.t()
```

---

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