The role vocabulary

role= is a closed, controlled vocabulary of 53 recognized UI structures — button, nav-bar, card, dialog, and friends. Tagging a node with a role changes no pixels; it makes the file self-describing, the <nav>-vs-<div> distinction for .gui. Any machine, AI, or tool reading the file knows what a node is without guessing — which is what the Comprehensible quality level measures.

A role qualifies by appearing in at least one platform reference system — the Component Gallery for web, Apple's Human Interface Guidelines for iOS, Material Design for Android. Each role declares a reach: how far down its subtree its meaning documents the content (full = the whole subtree, 2 = a two-level grammar like table → row → cell, 1 = one chrome level, then the payload labels itself).

RoleReachPlatformsDescription
accordion1web · ios · androidVertically stacked sections, each with a header that reveals or hides content below it. AKA: disclosure, collapsible, expandable, expansion-panel
action-sheetfullios · androidModal sheet sliding up from the bottom presenting a list of contextual actions. AKA: bottom-sheet, action-menu
alertfullweb · ios · androidInline message communicating a status — informational, success, warning, or error. AKA: warning, error-message, info-message
avatarfullweb · ios · androidCircular or rounded image representing a person or entity. AKA: profile-image, user-photo, profile-picture
badgefullweb · ios · androidSmall count or status label overlaid on or beside another element. AKA: counter-badge, notification-badge, pip
buttonfullweb · ios · androidTappable element that triggers an action. AKA: primary-button, secondary-button, cta, action-button
card1web · ios · androidContained surface grouping related content and optional actions. AKA: content-card, panel, tile
checkboxfullweb · ios · androidBinary selection control for toggling an option on or off. AKA: checklist-item, tick-box
chipfullweb · ios · androidCompact tag used for filtering, selection, or labelling. AKA: filter-chip, suggestion-chip, tag, label
color-pickerfullweb · ios · androidControl for selecting a color from a palette or spectrum. AKA: color-selector, color-swatch
comboboxfullwebText input combined with a filterable dropdown list of suggestions. AKA: autocomplete, searchable-select, typeahead
command-palette1webFull-screen overlay with a search input for quickly finding and triggering commands or navigation. AKA: command-menu, quick-actions, spotlight
context-menufullweb · ios · androidFloating list of actions anchored to a specific element or tap position. AKA: right-click-menu, overflow-menu, action-menu
date-pickerfullweb · ios · androidControl for selecting a date, or date range, from a calendar view. AKA: calendar-picker, date-input, date-selector
dialog1web · ios · androidModal overlay requiring user interaction before returning to the main flow. AKA: modal, popup, confirmation-dialog
dividerfullweb · ios · androidHorizontal or vertical line used to separate sections of content. AKA: separator, rule, hr
drawer1web · ios · androidPanel that slides in from a screen edge, overlaying content without replacing it. AKA: side-sheet, bottom-sheet, slide-over, panel
empty-state1web · ios · androidPlaceholder shown when a list or view has no content, guiding the user to an action. AKA: zero-state, blank-state, no-results
file-uploaderfullwebArea for selecting or dropping files for upload. AKA: dropzone, file-input, drag-and-drop-upload
floating-action-buttonfullweb · ios · androidCircular button fixed above content, representing the primary action on a screen. AKA: FAB, primary-action-button
full-screen-overlay1web · ios · androidA view that occupies the entire screen, typically presented modally over another screen. AKA: immersive-modal, full-screen-modal, sheet
item-indicatorfullweb · ios · androidRow of dots or marks showing position within an ordered set of items — slides, steps, pages, or images. AKA: page-control, dot-indicator, step-indicator, carousel-indicator, slider-dots
launch-screenfullios · androidFull-screen view shown while an app is loading, typically displaying a logo or brand mark. AKA: splash-screen, loading-screen, intro-screen
loading-indicatorfullweb · ios · androidVisual cue that an operation is in progress. AKA: spinner, loader, activity-indicator, progress-spinner
paginationfullweb · androidNumbered page controls for navigating through a multi-page dataset. AKA: pager, page-navigator, page-controls
popoverfullweb · ios · androidSmall floating panel anchored to a trigger element, for supplementary information or a compact form. AKA: popup, flyout, floating-panel
progress-indicatorfullweb · ios · androidBar or ring showing how much of a process has completed. AKA: progress-bar, progress-ring, determinate-progress
radio-buttonfullweb · ios · androidSingle-selection control where only one option from a group can be chosen. AKA: radio, radio-option, radio-group
segmented-controlfullweb · ios · androidA set of mutually exclusive options displayed as connected segments, one selected at a time. AKA: segmented-button-group, button-group, tab-toggle
selectfullweb · ios · androidA control that shows a single chosen value and opens a list for changing it. AKA: dropdown, dropdown-select, picker
skeletonfullweb · ios · androidPlaceholder shapes shown while content is loading, matching the rough layout of the expected content. AKA: content-placeholder, loading-skeleton, ghost, shimmer
sliderfullweb · ios · androidA track with a draggable thumb for selecting a value within a continuous range. AKA: range-slider, scrubber, input-range
stepperfullweb · ios · androidA control with increment and decrement buttons for adjusting a numeric value. AKA: quantity-stepper, number-stepper, increment-decrement, counter
switchfullweb · ios · androidToggle control that switches a setting between on and off. AKA: toggle, toggle-switch
tab-barfullweb · ios · androidRow of tabs for switching between top-level sections of an app. AKA: tabs, bottom-navigation, bottom-tab-bar, tab-strip
table2web · ios · androidGrid of rows and columns presenting structured data. AKA: data-table, data-grid
text-areafullweb · ios · androidMulti-line text input for longer freeform content. AKA: multiline-input, multi-line-text-field, textarea
text-fieldfullweb · ios · androidSingle-line input for entering short text values. AKA: input-field, text-input, form-field
time-pickerfullweb · ios · androidControl for selecting a time value. AKA: time-selector, clock-picker, time-input
toastfullweb · ios · androidBrief notification that appears temporarily, typically at the bottom of the screen. AKA: snackbar, notification-toast, flash-message
toolbar1web · ios · androidA horizontal row of action controls contextually relevant to selected content or the current view. AKA: app-bar, command-bar, action-bar, formatting-bar
tooltipfullweb · ios · androidSmall label that appears on hover or long-press to explain a control or provide context. AKA: hint, info-tip, hover-label
top-navigation-bar1web · ios · androidPersistent bar at the top of a screen showing the title and primary actions. AKA: nav-bar, app-bar, header, header-bar
tree2webHierarchical list of expandable and collapsible nodes representing nested content. AKA: tree-view, hierarchy-view, folder-tree