# `MishkaCmsCoreWeb.Templates.NotificationCard`
[🔗](https://github.com/mishka-group/mishka_cms_core/blob/v0.0.1/lib/mishka_cms_core_web/templates/notification_card.ex#L5)

A MishkaGervaz custom table template: the inbox at `/admin/dashboard/notifications`, rendered as one
card of full-width rows (checkbox, severity tile, title/body/time, per-row actions) rather than a
table — backed by Gervaz, so filters, selection, bulk actions, pagination and realtime come from the
resource DSL rather than from this module.

A template owns the WHOLE table, so the chrome is here too: the filter bar (`render_filters/1`), the
select-all + bulk toolbar (`render_selection_toolbar/1`) and the footer (`render_pagination/1`). Each
is generic — it walks `static.filters` / `static.bulk_actions` and never names a specific filter — so
the resource stays the single source of truth. Row content comes from each column's `render` in
`MishkaCmsCore.Notify.Notification`, mapped here by position: 0 icon, 1 title, 2 body, 3+ footer.

It lives in `mishka_cms_core` (not blog) because the bell is core and core cannot depend on an
extension.

See `MishkaCmsCore.Notify` and `MishkaCmsCoreWeb.Live.Admin.Dashboard.Notification.Index`.

# `render_bulk_actions`

# `render_empty`

# `render_error`

# `render_filters`

The filter bar: every `:text` filter becomes a grow-to-fill search box, every `:select` a labelled
dropdown. Names and the `phx-change="filter"` form are Gervaz's contract — only the look is ours.

# `render_header`

# `render_loading`

# `render_pagination`

The footer: how far into the feed we are on the left, load-more + per-page on the right.

Gervaz's own `Shared.render_pagination/1` hardcodes the button's look, so its two controls are
driven straight from here instead — same `load_more` / `change_page_size` events, our classes.

# `render_template_switcher`

---

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