Founding price: $35, then $79.99 after 23:59 UTC on 4 November, then $79.99
Get ProOne wrapper for loading skeletons, empty, filtered-empty, error with retry, offline and no-access states, plus a small async hook.
This item has no props to tune. Use the lens above to change theme, density, direction and more.
The first request fails and the retry succeeds. The retry button stays busy until run settles, and only the latest request can update the view.
| Prop | Type | Default | Description |
|---|---|---|---|
status | "loading" | "empty" | "error" | "success" | "offline" | "forbidden" | - | Which state to show. success renders children. |
skeleton | "list" | "table" | "cards" | "detail" | "list" | Skeleton layout while loading. |
skeletonCount | number | preset | Rows or cards in the skeleton. |
minLoadingMs | number | 400 | Shortest time loading stays up, so fast responses don't flash. |
empty | StateViewMessage | - | Icon, title, description and actions for the empty state. |
filtered | boolean | false | Show the "No matching results" version of the empty state. |
onClearFilters | () => void | - | Adds "Clear filters" to the filtered empty state. |
error | unknown | - | Its message becomes the error description. |
errorDetails | ReactNode | - | Technical detail in a "Technical details" disclosure. |
errorMessage | StateViewMessage | - | Copy overrides for the error state. |
onRetry | () => unknown | - | Shows "Try again" on error and offline. A promise keeps it busy. |
offline | StateViewMessage | - | Copy overrides for the offline state. |
forbidden | StateViewMessage | - | Copy overrides for the no-access state. |
loadingLabel | string | "Loading…" | Announced while loading. |
StateViewMessage is { icon?, title?, description?, action?, secondaryAction? }, and an action is { label, onClick?, href? }.
Runs fn on mount and whenever deps change. Pass run to onRetry.
StateSkeleton is exported too, if you want a skeleton preset on its own.
aria-busy="true" and a polite status region announces the loading label. Skeletons are hidden from assistive technology.section labelled by its heading, so screen reader users can tell which state they landed in.aria-busy while the retry runs, and its label changes to "Retrying…".