Modules
HAWK_EX Dashboard — LiveView developer tools for HAWK_EX.
The full audit log browser. Paginated, searchable (by action), sortable
table of every HawkEx.Audit entry, with actor, resource, and timestamp
columns.
Plans and active subscriptions. Lists every HawkEx.Billing.Plan and a
paginated, searchable, sortable table of HawkEx.Billing.Subscription
records. Clicking an account id opens a detail drawer for that
subscription, addressable via the ?modal=<id> query param so it can be
linked to directly (e.g. from the command palette).
The ⌘K / Ctrl+K command palette, mounted once inside the dashboard's
shared app layout so it's available from every page. A debounced search
(2+ characters) fans out to
HawkEx.Billing.search_subscriptions/2, HawkEx.Audit.search/2, and
HawkEx.CSV.search_exports/2, showing up to 4 results from each.
A read-only snapshot of the current HawkEx.Config — repo, account
schema, PubSub, Oban, and CSV storage adapter — useful for confirming a
deployment is wired up as expected. Never raises: unconfigured values
render as "Not set".
A single label/value row for the read-only configuration listing on the
Configuration page (HawkExDashboard.ConfigLive). Rendered inside a <dl>
as a <dt>/<dd> pair.
CSV export job status. Paginated, searchable table of
HawkEx.CSV.Export records, with a download link for any export whose
status is "completed" (served by the dashboard's own download
controller).
Placeholder shown in place of a table or panel when a data load has
finished but returned nothing — an icon, a short title, and a supporting
message. Used by HawkExDashboard.Table for its empty-results state.
The plan x feature entitlement matrix, sourced from
HawkEx.Entitlements.matrix/0. Renders one column per active plan and
one row per feature, with boolean- and limit-aware cell rendering.
Placeholder shown in place of a table or panel when a data load fails.
Renders the error message alongside a "Retry" button that emits the
"table_retry" event, handled by the HawkExDashboard.PaginatedSearch
handle_event/3 clause injected into the parent LiveView.
A live-updating feed of HawkEx.Events broadcasts (subscription, audit,
and CSV export events) received over the host application's configured
PubSub. Supports pausing the feed — buffering a "N new" count without
rendering — and filtering by event name prefix (subscription, csv,
audit, or all).
Shared formatting helpers for displaying data across dashboard pages.
Shared imports/aliases for all HawkExDashboard LiveViews and
function components. Use this instead of use Phoenix.Component
directly, so CoreComponents (icon/1, etc.) and Nav are always
available without per-file imports.
The dashboard's landing page. Shows a paginated, searchable, sortable
table of recent activity pulled from HawkEx.Audit.recent/1 — the same
audit log that backs HawkExDashboard.AuditLive, trimmed down here as an
at-a-glance feed.
The page-level <h1> heading used at the top of every dashboard screen.
Shared pagination + search behavior for LiveViews using the HawkExDashboard.Table component with URL-backed page/search state.
A compact summary card for a single HawkEx.Billing.Plan — display name,
status badge, and trial length. Used in the plan list at the top of the
Billing page (HawkExDashboard.BillingLive).
Router integration for HAWK_EX Dashboard.
Shared table shell per design spec §5 — search, sort, pagination, loading/empty/error states. All state (search query, current page, sort column) is owned by the parent LiveView and passed in as assigns; this component only renders and emits events.
Renders a single entitlement on the Usage page
(HawkExDashboard.UsageLive). Dispatches on feature.feature_type to
show a boolean "included" badge, a numeric/unlimited plan limit, or a
plain fallback for any other feature type.
Per-account usage lookup. Lists distinct account ids with an active or
trialing subscription, and shows the selected account's current plan and
entitlement values via HawkEx.Entitlements.for_account/1.