# `MishkaCmsCore.Dashboard.Widgets.CmsStatus`
[🔗](https://github.com/mishka-group/mishka_cms_core/blob/v0.0.1/lib/mishka_cms_core/dashboard/widgets/cms_status.ex#L5)

Dashboard widget (a `dashboard:widgets` plugin): the operational pulse of the CMS. Reports the
public site's online state (`cms.offline`, read by `Settings.offline_by/1`: a tenant sees whether
its site is offline by its own switch or by the Global one, a master sees the Global switch and how
many sites are offline by their own), the week's compile throughput as a weekday
mini bar chart with a week-over-week trend (`Oban.Job` insert history), how many compile jobs are
pending, how many active sites are missing a CSS/JS bundle (`AssetsState`), and the runtime-job
health split (running/retrying/failed) — subsuming the standalone runtime-health widget. A master
watches every site; a tenant admin only their own site's jobs and bundle. Ships `default_hidden` —
opt-in via the widget library.

A bar's height is a percentage of the week's busiest day, computed per render, so it cannot be a
Tailwind utility — rules are generated from SOURCE TEXT, and a class assembled around a value that
exists only at render time gets no rule at all, leaving the bar with no height. The height rides an
inline `style` attribute, which is why the policy in
`MishkaCmsCore.Runtime.Plugs.SecurityHeaders` keeps `style-src-attr` permitted. A bar's COLOUR is a
different matter: it is one of three whole literals in `bar_color/1` — see
`MishkaCmsWeb.InterpolatedClassTest`.

# `error_return`

```elixir
@type error_return() ::
  {:error, [%{action: atom(), field: atom(), message: String.t()}]}
```

# `okey_return`

```elixir
@type okey_return() :: {:ok, struct() | map() | module() | [any()]}
```

# `child_spec`

Returns a specification to start this module under a supervisor.

See `Supervisor`.

# `config`

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

# `config`

```elixir
@spec config(atom()) :: any()
```

# `enable`

```elixir
@spec enable() :: okey_return() | error_return()
```

# `get`

```elixir
@spec get() :: keyword()
```

# `health_check`

```elixir
@spec health_check() :: :ok | {:degraded, term()} | {:error, term()}
```

Optional. See `c:MishkaInstaller.Event.Hook.health_check/0`. Override to report health.

# `load`

Loads this widget's data off the dashboard render (in a Task), scoped to the viewer.

# `on_dependency_error`

```elixir
@spec on_dependency_error(term()) :: term()
```

Optional. See `c:MishkaInstaller.Event.Hook.on_dependency_error/1`. Override to react.

# `register`

```elixir
@spec register() :: okey_return() | error_return()
```

# `render`

# `restart`

```elixir
@spec restart() :: okey_return() | error_return()
```

# `start`

```elixir
@spec start() :: okey_return() | error_return()
```

# `start_link`

# `stop`

```elixir
@spec stop() :: okey_return() | error_return()
```

# `unregister`

```elixir
@spec unregister() :: okey_return() | error_return()
```

# `widget`

```elixir
@spec widget() :: MishkaCmsCore.Dashboard.Widget.t()
```

This widget's descriptor.

---

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