Components

Presentational webhook UI: tables, charts, forms, panels. Props in, nothing fetched inside, every field aligned with the library types.

Components are purely presentational: they render what you pass them and call back on interaction. Field names line up with @repost/portal-js types, so hook results flow straight in, but any data of the same shape works, including your own fixtures in tests and Storybook.

pnpm dlx shadcn@latest add @repost/delivery-history-table
import { DeliveryHistoryTable } from "@/components/delivery-history-table";
 
<DeliveryHistoryTable rows={rows} onRowClick={openDetail} selectedRowId={selectedId} />

The components

ComponentRenders
@repost/delivery-history-tableDelivery history: one row per attempt with time, event type, endpoint, status badge, latency.
@repost/delivery-attempts-panelOne delivery's attempt timeline with response bodies.
@repost/webhook-metrics-cardsDeliveries / success rate / failures with sparklines.
@repost/deliveries-histogram-chartThe stacked delivered/failed histogram.
@repost/endpoints-listEndpoints with status, DLQ badges, and row actions.
@repost/endpoint-formThe endpoint create/edit form with client-side validation.
@repost/dlq-panelDead-lettered deliveries with a replay affordance.
@repost/event-catalog-browserGrouped event types with schema-derived sample payloads.

Primitives

The pieces underneath install the same way and are resolved automatically as dependencies: data-table (grid layout, column sizing/visibility, skeleton loading), chart (themed Recharts wrapper), sparkline-area-chart, delta, status-code-badge, status-indicator, badge, button, input, label, skeleton.

Shared structural types (webhook-types) and deterministic demo data (webhook-fixtures) are registry items too: the same fixtures power the previews and the components' own tests.

Theming

Everything is styled with CVA over standard shadcn tokens (background, muted, primary, ...) plus status tokens (--status-success, --status-error, --status-warning, --status-info) that the CLI injects into your CSS on install with light and dark values. Override tokens to rebrand globally, or edit the installed source for anything structural.

Live previews and API reference

Every component has its own page on repost.sh with an interactive preview, the demo source, its full props table, and the code the CLI copies into your project: