List row

v1.0.0

List rows combine a set of content inside a horizontal layout.

  • Skin
  • Marko
  • React

Anatomy

An list row diagram is shown with 4 elements numbered: 1. Container, 2. Lead element, 3. Main content, 4. Trailing element.
  1. Container
  2. Lead element
  3. Main content
  4. Trailing element

Options

Lead accessory

A lead accessory is optional. Common lead accessories include related icons, avatars, images, or selection controls like a checkbox or radio button. There can also be multiple lead accessories for cases like a field with an avatar and a checkbox.

4 list rows are shown with different lead elements. The first list row has an icon, the second row has an image, the third has an avatar, and the fourth has a checkbox.

Main content

The content typically contains the primary details. Common elements include titles, subtitles, descriptions, and overlines.

2 list rows with different content in the content area. The first as a single text layer and the second has two text layers vertically stacked.

Trailing accessory

A trailing accessory is optional. Trailing accessories commonly afford interaction and can appear across multiple items in a single list row.

Common trailing accessories are navigation disclosure icons, external link disclosures, a toggle switch, a secondary value, an infotip button, or other interactive elements.

4 list rows with different trailing elements. The first has a chevron icon indicating navigation. The second has text. The third has a toggle switch. And the fourth has an overflow icon.

Dividers

List rows can have a divider to help discern the shape of the container when the content is dense.

A list with 4 rows with dividers enabled to separate the row content.

Tap targets

List rows can be directly actionable or static.

Actionable

The entire list row container is one tap target.

Static

Only nested elements are actionable.

Two rows with different interaction states. The first row show a state change for the entire row background. The second row shows the state change in the trailing switch only.

Disabled items

A list row can be disabled if pre-requisites aren’t fulfilled. This is helpful for providing layout consistency and indicating that an option may become available later.

A single disabled list row. The content is light gray and the nested switch is set to a disabled state.

Behavior

Text overflow

Content expanding beyond the width of the container can either wrap indefinitely or truncate after a certain number of lines.

Content indefinitely wraps to a new line by default.

Two list rows exemplifying different text wrapping properties. The first row wraps the text indefinitely. The second row truncates at two lines.

Height

List rows can flex vertically according to their content.

In general, list rows on small screens should aim for a minimum height of 48px for a tap-friendly experience.

Two list rows with different heights. The first row is 48 pixels tall and the second row is 40 pixels tall.

Width

List rows flex horizontally with their parent container. The overall width is determined by the page layout.

However, avoid allowing list rows to extend larger than 480px. The main content in list rows should maintain a readable line length.

A list row group containing 4 list rows are stretched to their recommended maximum width of 480 pixels wide.

Screens sizes

Small

List rows commonly expand the full width of their parent container on small screens.

A mobile screen with two sections. Each section has a section title and list group. The list rows fill the width of the screen. Each row has a single line of text in the content area and a trailing text element indicating the total number of items available for each list row.
A mobile screen with a single list group representing direct messages. The list group has 5 visible list rows, each with a leading avatar, a title and description in the content area, and a trailing text element with metadata indicating when the message was received.

Medium

List rows adjust to take advantage of the additional visible space available on medium screens. Use a multi-column layout to keep list rows to a comfortable width.

A medium screen with a navigation header and two columns. The first column has two sections, each with a section title and a list group. Each list row has a single line of text in the content area and a trailing text element indicating the total number of items available for each list row. The other column has grey boxes representing content containers.

Large

The list row width and layout adjusts on larger screens to take advantage of the additional space on large screens. Use a multi-column layout to keep list rows to a comfortable width.

A large screen with a navigation header and three columns. The first column has two sections, each with a section title and a list group. Each list row has a single line of text in the content area and a trailing text element indicating the total number of items available for each list row. The other two columns have grey boxes representing content containers.

Best practices

Icons

Do use or omit a leading icon for every item in a group.

A list group with 5 list rows. Each list row has a leading icon and a single line of text exemplifying how list rows within a list group should have the same structure.

Don’t mix items with and without leading icons in a group.

A list group with 5 list rows. the first 2 rows and the fourth row has a leading icon and a single line of text, while the third and fifth list rows only have the text, exemplifying that list rows in a group shouldn’t have different structures.

Nested elements

Do keep list row elements simple with a single interaction per item. If another interactive element is needed, place it in a new row above or below.

A single list row with a line of text and a trailing secondary button. The button is in a pressed state, showing that only nested interactive elements are interactive when present.

Avoid nesting multiple interactive elements in list rows. This increases the chance of mistaken taps and may be difficult for users with motor issues to navigate.

A single list row with a line of text and a trailing secondary button. The entire list row is in a pressed state. This is an example of an incorrect application of state in a list row with nested interactive elements.

Congruent list rows

Do omit dividers for congruent list rows.

A list group with 4 list rows. Each list row has a leading avatar, a title and description, and trailing metadata. This congruent list of similar elements omit dividers.

Don’t include dividers on multiple list row elements within a row group.

A list group with 4 list rows. Each list row has a leading avatar, a title and description, and trailing metadata, and dividers between each list row. This is an example of incorrect application of dividers in a congruent list.

Width

Adjust the width of the list rows by shifting to different layouts like multi-column, primary-secondary, or list-detail views.

A column with two sections, each containing a section title and list group. The column is a comfortable reading width all visible in the frame.

Avoid full width rows on larger screens. End content can be lost and the excessive line lengths make it difficult to read longer content.

A column with two sections, each containing a section title and list group. The column stretches all the way across a large screen, so the trailing metadata isn’t visible within the frame leading to difficultly tracking information across the screen.

Specs

A single list row with measurements. Elements within a list row have 16 pixels of space between them.

Change log

VersionDateNotes
1.0
Mar, 2025
  • Created with eBay Evo