# `DocShell.Presentation.Renderer.Context`
[🔗](https://github.com/futhr/doc_shell/blob/v2.0.0/lib/doc_shell/presentation/renderer/context.ex#L1)

Carries inert site context into one renderer call.

It supplies the already validated navigation tree, search contract, logical
asset URLs, locale, current route, and source cohort identity. It deliberately
has no request, user, session, socket, authorization callback, or application
process. Hosted adapters keep those concerns outside the portable renderer
boundary and pass only this stable view to shared components.

`artifact_assets` contains only selected artifact bytes, indexed by logical
name as JSON records with `media_type` and original `base64`. Renderers can
check their format and raw digest without reading files or fetching URLs.
The exporter bounds inputs before this encoding; renderer chrome retains its
existing URL map in `assets`.

# `t`

```elixir
@type t() :: %DocShell.Presentation.Renderer.Context{
  artifact_assets: %{
    required(String.t()) =&gt; %{required(String.t()) =&gt; String.t()}
  },
  assets: %{required(String.t()) =&gt; String.t()},
  base_path: String.t(),
  canonical_origin: String.t() | nil,
  cohort_digest: String.t(),
  current_route: String.t(),
  locale: String.t(),
  navigation: [DocShell.Presentation.NavigationItem.t()],
  presentation: DocShell.Presentation.Settings.t(),
  search: map(),
  site_title: String.t()
}
```

Renderer context without session, policy or executable callbacks.

---

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