Skip to main content
Version: Next (5.0)

Components

Rules per AWE element. Each component reads semantic or component tokens only, defines every state (hover, focus, active, disabled, invalid, loading, empty) and works in both densities and both modes. The sample screen and the AWE 5 components page show them live.

Buttons​

VariantUse
PrimaryThe main action of a screen, card or dialog. One per area.
SecondaryFrequent actions next to the primary (Import, Reset).
OutlinedNeutral actions, toolbars, button groups.
TextLow-emphasis actions (History, Clear all, links inside cards).
Ghost iconToolbar and row actions. Always aria-label + tooltip.
Danger / danger outlinedDestructive actions. Filled only in the confirmation step.
  • Sizes: small (--awe-size-control-sm), default (--awe-size-control), large (--awe-size-control-lg, login).
  • Label weight 500, icon on the left, 8px gap.
  • Busy (#771): when the action a button launched is still running after about 400 ms, that button shows a spinner instead of its icon (before its label when it has none), stays disabled and is not faded; quick actions show nothing. The other buttons are disabled while actions run. show-loading="false" turns it off for a button (see Button).
  • Button groups share borders; a split button is a primary plus a chevron button.
DoDon't
"Save changes", "Delete customers""OK", "Yes"
One primary per areaTwo filled buttons side by side
Disable and explain (tooltip)Hide an action the user expects

Criteria (form fields)​

ElementRule
LabelAbove the field, --awe-font-size-label, weight 500. Required: red *. Optional hints right-aligned in muted text.
FieldHeight --awe-size-control, --awe-radius-field, border --awe-color-field-border. Leading icon optional.
FocusBorder in the primary plus a soft halo.
InvalidRed border, message under the field with an icon (--awe-color-danger-text), aria-invalid and aria-describedby.
Disabled / read-onlyDisabled: muted background, no shadow. Read-only: filled background, value selectable. Locked: lock icon plus the reason (see #791).
HelpOne line under the field in muted text.
LayoutAuto-fill grid of 232px minimum columns; wide fields span 2 columns.

Numbers. Right-aligned, tabular figures, unit as a prefix or suffix (€, days), optional stepper.

Select, multiselect and autocomplete​

The native browser list is not used: it ignores the theme and the mode. Every select is a combobox with a listbox popup in the AWE list style.

PartRule
PopupOverlay surface, border, --awe-shadow-overlay, 4px padding, 2px gap, top layer (never clipped by grids or dialogs). Opens below, or above when there is no room.
Option8px × 12px padding, --awe-radius-list-option. Hover/focus: --awe-color-list-option-focus. Selected: highlight background plus a check.
GroupsOptional group header (small, muted) and a separator.
FilterA filter input at the top when there are more than 10 options.
Keyboard↑/↓, Home/End, Enter/Space, Esc, Tab closes, type-ahead also when closed.
ARIArole="combobox" with aria-expanded, aria-controls, aria-activedescendant; role="listbox" and role="option" with aria-selected.
MultiselectSelected values as removable chips in the field; the popup lists every option with a checkbox and "n of m" in the field.
AutocompleteSame list style; the matched text is highlighted; options can have a second line (meta).

Dates and times​

  • Date: text field with a calendar button. Calendar: today outlined, selected filled with the primary.
  • Month picker (#820): 3×4 grid of months.
  • Date formats (#820): the display format is shown as a hint next to the label.
  • Range (#839): one field with two inputs and an arrow; shortcuts (7 days, 1 month, 3 months, year to date, 12 months, all) as pill buttons under the field; the end cannot be before the start.
  • Time: text field with a clock icon, tabular figures.

Segmented control (button radio)​

  • A track with a border; the selected segment has its own surface, border, shadow and semibold text (--awe-segmented-*). It must read in both modes.
  • Never clips. Segments wrap; in a cell narrower than 300px they become a two-column grid at full width.
  • Give it enough width in examples and forms: a four-option control spans two criteria columns.

Checkbox, radio and switch​

  • Checkbox --awe-size-checkbox, --awe-radius-sm; supports indeterminate.
  • Radio groups in a row, wrapping; disabled options keep their label visible.
  • Switch for settings that apply at once; checkbox for values submitted with a form.

Uploader (#841)​

Drop zone (dashed border, highlight on drag-over), "browse" link, accepted types and size as help. Files listed with icon, name, size, progress or status. An image shows a preview with Clear. A Take photo button opens the camera. Read-only uploaders show the file and disable the actions.

Grid​

PartRule
CardThe grid lives in a card; title and count in the card header.
ToolbarSearch in results, Filters (with count), spacer, Columns, Export (split button).
Active filtersRemovable dashed chips under the toolbar, plus "Clear all".
Header--awe-grid-header-*, sortable columns show an arrow; the sorted one in the primary. Sticky.
RowsCell padding --awe-grid-cell-padding-*, hover background, no zebra.
SelectionCheckbox column; selected rows use the highlight background; a selection bar shows the count and bulk actions.
NumbersRight-aligned, tabular, negatives in the danger colour with a minus sign.
StatusTags with a dot (tag--success, --warning, --danger, --info).
Inline editThe edited row gets a primary outline, fields inside the cells (small controls), Save and Cancel in the actions column.
Row actionsGhost icon buttons at the end of the row, or a menu button (#801).
Pager"Showing 1–10 of 1,284", page size (select), pages with first/previous/next/last, "Go to page" (#826, #874).
LoadingSkeleton rows under the real header (#856). A refresh dims the current rows and shows a top loading bar.
EmptyEmpty state inside the grid body (#837).
DoDon't
Keep the real header while loadingShow a spinner over an empty box
Put the key column first with a second lineRepeat the same data in two columns
Truncate with ellipsis and tooltipLet a long text break the row height without a limit

Tabs and accordion​

  • Tabs: muted labels, active label and 2px underline in --awe-color-primary-text, optional count badge, ←/→ move. A tab with an error shows an error count (#827).
  • Accordion: one header per section with an icon and a chevron; open sections animate; several can be open.

Overlays​

ElementRule
Dialog<dialog>, --awe-radius-modal, header (title, subtitle, close), scrollable body, footer with actions on the right. Mask --awe-color-mask with a slight blur. Sizes in #844.
ConfirmationSmall dialog with a danger icon, a precise question ("Delete 2 customers?"), the consequence, Cancel focused by default.
Side panel (#843)Slides from the right, full height, own footer of actions. For editing a record without leaving the list.
Popover (#843)Anchored to its button, with an arrow; can hold criteria and a small grid; Cancel / Accept.
Dropdown menuOverlay list of options with icons; destructive options last, in danger text, after a separator.
ToastTop right, below the header, top layer (above dialogs). Success, info, warning, error; auto-dismiss 6s, close button. Errors use role="alert".
TooltipInverse surface (--awe-color-tooltip), small text, appears on hover and focus. Never the only place of essential information.

Feedback​

  • Messages: subtle background, border and icon per status; bold first words state the fact.
  • Tags for states, badges for counts.
  • Empty state: icon in a circle, title, one or two lines of explanation, at most two actions.
  • Progress bar for known progress; loading bar for unknown progress.

New AWE 5 elements​

Grouped as in the components page. Done items are in AWE 5 and are redesigned; Planned items are proposals.

Grid features​

ElementIssueStatusRule
Multi-line cells with tooltip#825DoneUp to N lines per column, then ellipsis; the full text in a tooltip.
Radio and button-bar columns#838DoneOne column holds a set of options; arrow keys change the value. Use the segmented control style.
Sparkline column#855DoneLine, bars or area per row; negatives in danger; min, max and last marks.
Expandable row detail#835DoneA chevron opens a detail area under the row (fields or a nested grid), marked with a primary left border.
Move rows#842DoneToolbar actions: top, up, down, bottom on the selected rows.
Data bars in cells#831PlannedA light bar behind the number; negatives grow to the left in the danger tone. The number stays readable.
Secondary line, status and tags in cells#832DoneMuted second line, status with a dot, tags collapsing into "+n".
Row grouping with subtotals#833PlannedCollapsible group header with count and totals, a subtotal row per group, grand total in the footer.
Quick search and value filters#834PlannedSearch in every column; column filter with values and counts; footer totals say they are filtered.
Pager with range, total and go to page#826, #874DoneSee Grid.
Columns dialog per user#813DonePopover anchored to the Columns button by default (columns-panel: popover, dialog or side-panel), changes applied live. Show, hide, reorder (drag or arrows), Restore default, Cancel, Save.

Criteria and forms​

ElementIssueStatusRule
Month picker and date formats#820DoneSee Dates and times.
Date range with shortcuts#839DoneSee Dates and times.
Uploader with drop zone, preview and camera#841DoneSee Uploader.
Reveal the first invalid field across tabs#827DoneOn validation, open the tab with the first error, mark the tab, focus the field, show a summary with "Go to field".
Required to save vs. required to finish#840Planned* blocks saving; a second marker (diamond, warning tone, dashed border) is needed to finish; a pending list with links; Save draft stays enabled.
Advanced search#790PlannedConditions (field, operator, value), nested All/Any groups, saved searches per user.
Visible access restrictions#791PlannedLocked fields and actions stay visible with a lock icon and the reason (help text or tooltip).

Overlays and panels​

ElementIssueStatusRule
Field context menu and row menu button#801DoneRight-click or Shift+F10 on a field, button or tab; a menu button in a row opens that row's menu.
Maximize and restore#799, #813DoneFills the content area; Restore or Esc returns.
Side panel#843DoneSee Overlays.
Popover anchored to a button#843DoneSee Overlays.
Dialog sizes#844Donesm 360px, md 560px, lg 800px, xl 1140px, full screen.
ElementIssueStatusRule
Launcher pages with descriptions#828DoneCards with icon, title, one-line description and optional count; a launcher can open another one; the breadcrumb shows every level.

Data visualisation​

ElementIssueStatusRule
Pivot table#821, #878DoneDrop zones for rows, columns and values; aggregation select; swap; totals per row and column.
Map#798DoneControls and panels use AWE surfaces and buttons; markers and routes in the primary.
Colour scale cells and grid without header#830Done5-step scale from the primary with a legend; a headerless grid starts with its first row.
Card#899DoneMetric tile: title, value (tabular) with unit, change as a tag with arrow and text (tone from good-trend), optional target progress, an optional status chip at the top right, before the icon (#836) and a body with any component; laid out with awe-card-grid.
KPI#836PlannedAdds the filter mode on top of the card (#899): a selected state, and a click filters a grid through dependencies.

Feedback and loading​

ElementIssueStatusRule
Skeletons: grid, screen, dim#856, #869DoneShow the structure that is coming; a refresh dims instead of hiding.
Configurable grid empty state#837DoneOwn icon, title, text and action per grid.
Avatar without image and first-load splash#864DonePhoto, initials, or a generic user icon; never an empty circle. Splash with the logo, then the screen skeleton.