Skip to main content

Selector

Allows users to choose from a set of options presented as selectable cards or tiles. Use when options benefit from richer visual presentation than a radio button or dropdown provides. Don't use when there are more than 6–8 options.

Figma Storybook Docs

Description

What it does

Presents a small set of mutually exclusive or multi-select options as visually distinct tiles, allowing users to scan and select based on label, icon, or supporting description rather than a plain text list.

Where it appears

Configuration steps, survey question types, consultation method selection, engagement channel pickers, and onboarding setup flows where a visual choice is clearer than a dropdown.

Why it exists

Government workflows often require users to choose between meaningfully different options — such as consultation types or engagement channels — where a brief description or icon significantly reduces decision errors. Selector gives these choices the visual weight they deserve without requiring a full modal or multi-step form.

Dependencies

Radio, Checkbox, Dropdown

Anatomy

PartRequired?Notes
Tile container Required The outer interactive element. Renders as a div with role="radio" or role="checkbox" depending on selection mode. Carries all border, background, and focus ring styles.
Icon or visual mark Optional A wa-icon or illustrative mark placed at the top or left of the tile to aid quick scanning. Should reinforce, not replace, the label.
Label Required Primary text identifying the option. Should be concise — one to four words is ideal. Uses --op-text-sm, semibold weight, --op-color-text-primary.
Supporting description Optional Secondary text beneath the label providing additional context. Use when the label alone is ambiguous. Uses --op-text-xs, regular weight, --op-color-text-secondary.
Selected indicator Required Visual treatment — border colour change, background fill, and a checkmark or radio icon — that communicates selected state. Must not rely on colour alone.
Group label Recommended A visible fieldset legend or heading labelling the entire selector group. Required for accessibility; recommended to always be visible in the UI.

Variants

Single select

Exactly one option may be active at a time, equivalent to a radio group.

Use when choices are mutually exclusive — for example, selecting a consultation type (Survey, Workshop, Drop-in) or a stakeholder visibility level.

Multi-select

One or more options may be active simultaneously, equivalent to a checkbox group.

Use when users may legitimately need more than one option — for example, choosing which engagement channels to enable (Email, SMS, Online portal).

Icon tile

Tile prominently features a wa-icon above the label for rapid visual scanning.

Use when options map cleanly to recognisable icons and the set is small (3–6 items).

Text tile

Tile contains label and optional description only, no icon.

Use when options are nuanced and descriptive copy is more useful than an icon, or when suitable icons do not exist.

States

State Behaviour
Default (unselected) Tile displays with --op-color-bg-primary background and 1px --op-color-border-default border. Label and description use standard text colours.
Hover Background shifts to --op-color-bg-secondary; border colour shifts to --op-color-interactive-hover. Cursor is pointer.
Focus 3px focus ring in --op-color-interactive-focus appears outside the tile border at 2px offset. Focus is visible on keyboard navigation and must not be suppressed.
Selected Border becomes 2px solid --op-color-interactive-default; background may carry a subtle tint. A checkmark icon (single-select: circle-check, multi-select: square-check) appears in --op-color-interactive-default.
Selected and focused Selected visual treatment is maintained and the 3px focus ring is applied simultaneously. Both indicators are visible at the same time.
Disabled Tile is non-interactive. Whole tile has opacity: 0.4. Cursor is not-allowed. aria-disabled='true' is set; tile is removed from tab order (tabindex='-1').
Error (group-level) A group-level error message appears below the tile set using --op-color-status-error with an accompanying icon. Individual tiles are not individually marked invalid; the fieldset group conveys the error via aria-describedby.

Usage guidelines

When to use

  • Choosing a consultation type when creating a new project (Survey, Workshop, Drop-in session, Online forum).
  • Selecting which engagement channels to activate for a project (Email, SMS, Online portal, In-person).
  • Picking a stakeholder group visibility setting (Public, Registered stakeholders, Invite only).
  • Onboarding steps where a user configures a preference and visual context reduces mistakes.

When not to use

  • When there are more than 6–8 options — use a Dropdown instead.
  • When options are purely textual with no meaningful visual differentiation — use a Radio group instead.
  • When screen space is constrained on mobile and tiles would require horizontal scrolling — use a Dropdown or Radio group instead.
  • When the choice is binary (yes/no, on/off) — use a Switch or single Checkbox instead.

Do / Don't

Do

Keep tile labels to four words or fewer so users can scan quickly.

Don't

Don't write paragraph-length labels inside a tile — move long explanations to hint text outside the tile.

Do

Always include a visible group label (fieldset legend) so the purpose of the selector is clear to all users.

Don't

Don't rely on surrounding page context alone to communicate what the selector group is asking.

Do

Pre-select a sensible default when one option is clearly most common, and explain the default in hint text.

Don't

Don't leave all tiles unselected with no guidance when a default would reduce cognitive load.

Do

Display tiles in a consistent grid or row so users can compare options spatially.

Don't

Don't vary tile sizes within a group — inconsistent sizing implies hierarchy that does not exist.

Do

Show a group-level error message with actionable text when validation fails (e.g. 'Select a consultation type to continue').

Don't

Don't use a red border on individual tiles as the sole error indicator — this fails WCAG 1.4.1 (use of colour).

Was this page helpful?

Updated 9 September 2026