Tables with clear actions
Define useful columns, filtering, selection, and a readable mobile presentation.
Jan Arvin Mito · Version 1.0.0 · Updated
Decisions to make
- User task
purpose - Name the person, the task they need to finish, and the observable outcome. Keep one primary task.
- Primary action
primaryAction - Specify the action label, when it is available, what it changes, and how success is confirmed.
- Loading
loading - Describe what stays visible during a request, how progress is communicated, and how repeated actions are prevented.
- Empty state
empty - Distinguish a first visit, no results, and unavailable data where relevant. Give a useful next step.
- Error and recovery
error - State where errors appear, which input is preserved, and how someone retries or recovers without repeating completed work.
- Keyboard and focus
keyboard - Define native controls, tab order, focus visibility, focus after updates, and any Escape or arrow-key behavior.
- Labels and feedback
accessibility - Name controls and errors clearly, describe screen-reader announcements, and keep meaning available without relying only on color.
- Narrow and wide layouts
responsive - Describe how content reflows at 320px, what remains visible, and the maximum reading width on wide screens. Do not shrink text to make it fit.
- Completion
success - Specify the visible result, whether focus moves, and how the user continues or undoes the action when supported.
- Columns and row actions
columns - Specify column labels, formatting, alignment, priority, and a clear accessible name for each row action.
- Search, sort, and pagination
filtering - Define the default sort, supported filters, no-results recovery, page changes, and which state survives navigation. Explicitly omit unused controls.
- Selection and bulk actions
selection - Define whether selection exists; if it does, specify page versus all-results selection, selection count, confirmation, and partial failures.
Check the result
- Apply a filter with no matches: explain the result and offer a clear way to reset that filter.
- Sort by a column using the keyboard: expose the active sort direction to assistive technology.
- At 320px, preserve row identity and essential actions; if horizontal scrolling is necessary, confine it to a labelled table region.
- If bulk actions exist, show exactly which records are selected and report partial failures without losing the result.
These are starting requirements, not a certification or a substitute for testing with people. Record a reason when a behavior does not apply.
Use with an agent
Connect Amito to your AI assistant, fetch spec:table, and describe the behavior for each decision above. Ask the agent to run validate_design_spec to find missing decisions and placeholders.
Specification starter
{
"pattern": "table",
"decisions": {
"purpose": "",
"primaryAction": "",
"loading": "",
"empty": "",
"error": "",
"keyboard": "",
"accessibility": "",
"responsive": "",
"success": "",
"columns": "",
"filtering": "",
"selection": ""
}
}