- EmptyState: What a list, table or panel shows with nothing to show. The default variant invites the first record; filtered says the filters hide every record, so the list reads as narrowed rather than empty; error says the records did not load and offers to try again.
- Notice: An inline message beside the content it is about: saved, failed, heads-up, or a quiet neutral aside. Errors that just happened are read out at once; everything else is announced politely.
- ProgressBar: How far a task has gone: a bar that fills, with its label and value, or a moving bar while the share is unknown. Use UploadProgress for files on their way.
- Skeleton: A placeholder in the shape of content that is still loading. It pulses gently and holds still for people who reduce motion. Mark the loading region with aria-busy.
- Spinner: A spinning circle for a wait of unknown length, announced to screen readers as “Loading…” or its label. It turns only for people who allow motion.
- State screens: What a page or a region shows instead of its content: ErrorState when it failed, LoadingState while it loads, and FullPageMessage for a whole screen before the app’s frame exists.
- TableSkeleton: The first paint of a table whose rows are loading: the same frame, header, row height and column shapes, announced as loading. Once rows exist, keep them and dim them with DataTable’s isUpdating instead.
- Toast: A short message about something that just happened, called from anywhere with toast.success, toast.error, toast.info or toast.warning. Render one Toaster in the app.
Feedback
The feedback components of @arbol-ai/ui: EmptyState, Notice, ProgressBar, Skeleton, Spinner, State screens, TableSkeleton, Toast.