List
Material Design 3 list component for displaying organized content with support for icons, avatars, and multiple line variants
Canonical Composition And Compatibility
Use list-item-content, list-item-title, list-item-subtitle, list-item-icon
and list-item-action. Historical list-item-text / list-item-secondary map
to title/subtitle. list-item-leading / list-item-trailing remain composable
slots; two/three-line items, surface variants, comfortable spacing and nested
indentation are shipped. Text wraps in narrow containers and indentation follows RTL.
Use native links/buttons for interactive items. list-item-interactive and
list-item-clickable only style a hook: they do not make a li into a keyboard
control. Selection, ARIA and callbacks belong to the application. Status can be
composed with visible labels; see Indicator.
List
Lists are continuous, vertical indexes of text or images. They present multiple line items in a vertical arrangement as a single connected element.
Basic Usage
Basic List
-
List Item 1
-
List Item 2
-
List Item 3
<ul class="list">
<li class="list-item">
<div class="list-item-content">
<span class="list-item-text">List Item 1</span>
</div>
</li>
<li class="list-item">
<div class="list-item-content">
<span class="list-item-text">List Item 2</span>
</div>
</li>
<li class="list-item">
<div class="list-item-content">
<span class="list-item-text">List Item 3</span>
</div>
</li>
</ul>List Items
Simple List Items
Basic single-line list items:
Simple List Items
-
Photos
-
Videos
-
Documents
<ul class="list">
<li class="list-item">
<div class="list-item-content">
<span class="list-item-text">Photos</span>
</div>
</li>
<li class="list-item">
<div class="list-item-content">
<span class="list-item-text">Videos</span>
</div>
</li>
<li class="list-item">
<div class="list-item-content">
<span class="list-item-text">Documents</span>
</div>
</li>
</ul>Two-Line List Items
List items with primary and secondary text:
Two-Line List Items
-
Brunch this weekend? Ali Connors — I'll be in your neighborhood
-
Summer BBQ to Alex, Scott, Jennifer — Wish I could come
<ul class="list">
<li class="list-item list-item-two-line">
<div class="list-item-content">
<span class="list-item-text">Brunch this weekend?</span>
<span class="list-item-secondary">Ali Connors — I'll be in your neighborhood</span>
</div>
</li>
<li class="list-item list-item-two-line">
<div class="list-item-content">
<span class="list-item-text">Summer BBQ</span>
<span class="list-item-secondary">to Alex, Scott, Jennifer — Wish I could come</span>
</div>
</li>
</ul>Three-Line List Items
List items with expanded secondary text:
Three-Line List Items
-
Oui Oui Sandra Adams — Do you have Paris recommendations? Have you ever been? I'm looking for ideas for our upcoming trip.
-
Birthday Gift Trevor Hansen — Have any ideas about what we should get for the party? I was thinking about getting a board game.
<ul class="list">
<li class="list-item list-item-three-line">
<div class="list-item-content">
<span class="list-item-text">Oui Oui</span>
<span class="list-item-secondary">Sandra Adams — Do you have Paris recommendations? Have you ever been? I'm looking for ideas for our upcoming trip.</span>
</div>
</li>
<li class="list-item list-item-three-line">
<div class="list-item-content">
<span class="list-item-text">Birthday Gift</span>
<span class="list-item-secondary">Trevor Hansen — Have any ideas about what we should get for the party? I was thinking about getting a board game.</span>
</div>
</li>
</ul>Interactive Lists
Clickable List Items
Add hover and active states to list items:
Clickable List Items
-
Inbox
-
Starred
-
Sent Mail
<ul class="list">
<li class="list-item list-item-interactive">
<div class="list-item-content">
<span class="list-item-text">Inbox</span>
</div>
</li>
<li class="list-item list-item-interactive">
<div class="list-item-content">
<span class="list-item-text">Starred</span>
</div>
</li>
<li class="list-item list-item-interactive">
<div class="list-item-content">
<span class="list-item-text">Sent Mail</span>
</div>
</li>
</ul>Selected List Items
Show selected state with primary color:
Selected List Items
-
Inbox
-
Starred
-
Sent Mail
<ul class="list">
<li class="list-item list-item-interactive list-item-active">
<div class="list-item-content">
<span class="list-item-text">Inbox</span>
</div>
</li>
<li class="list-item list-item-interactive">
<div class="list-item-content">
<span class="list-item-text">Starred</span>
</div>
</li>
<li class="list-item list-item-interactive">
<div class="list-item-content">
<span class="list-item-text">Sent Mail</span>
</div>
</li>
</ul>Active State Variants
Use different color schemes for selected items:
Active State Variants
<!-- Primary active state (default) -->
<li class="list-item list-item-interactive list-item-active-primary">
<div class="list-item-content">
<span class="list-item-text">Primary Selected</span>
</div>
</li>
<!-- Secondary active state -->
<li class="list-item list-item-interactive list-item-active-secondary">
<div class="list-item-content">
<span class="list-item-text">Secondary Selected</span>
</div>
</li>
<!-- Tertiary active state -->
<li class="list-item list-item-interactive list-item-active-tertiary">
<div class="list-item-content">
<span class="list-item-text">Tertiary Selected</span>
</div>
</li>List Items with Icons
Leading Icons
Add icons to the start of list items:
List Items with Leading Icons
-
Inbox
-
Starred
-
Sent
<ul class="list">
<li class="list-item list-item-interactive">
<div class="list-item-leading">
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z" />
</svg>
</div>
<div class="list-item-content">
<span class="list-item-text">Inbox</span>
</div>
</li>
<li class="list-item list-item-interactive">
<div class="list-item-leading">
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z" />
</svg>
</div>
<div class="list-item-content">
<span class="list-item-text">Starred</span>
</div>
</li>
<li class="list-item list-item-interactive">
<div class="list-item-leading">
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 19l9 2-9-18-9 18 9-2zm0 0v-8" />
</svg>
</div>
<div class="list-item-content">
<span class="list-item-text">Sent</span>
</div>
</li>
</ul>Trailing Icons
Add icons or actions to the end of list items:
List Items with Trailing Icons
-
Notifications
-
Privacy
<ul class="list">
<li class="list-item list-item-interactive">
<div class="list-item-content">
<span class="list-item-text">Notifications</span>
</div>
<div class="list-item-trailing">
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" />
</svg>
</div>
</li>
<li class="list-item list-item-interactive">
<div class="list-item-content">
<span class="list-item-text">Privacy</span>
</div>
<div class="list-item-trailing">
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" />
</svg>
</div>
</li>
</ul>Both Leading and Trailing Elements
Combine leading and trailing elements:
Leading and Trailing Elements
-
Brunch this weekend? Ali Connors10:30 AM
<ul class="list">
<li class="list-item list-item-interactive list-item-two-line">
<div class="list-item-leading">
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z" />
</svg>
</div>
<div class="list-item-content">
<span class="list-item-text">Brunch this weekend?</span>
<span class="list-item-secondary">Ali Connors</span>
</div>
<div class="list-item-trailing">
<span class="text-xs text-on-surface-variant">10:30 AM</span>
</div>
</li>
</ul>List Items with Avatars
Use avatars for user-centric lists:
List Items with Avatars
-
Ali Connors Brunch this weekend?
-
Jennifer Smith Dinner reservations
<ul class="list">
<li class="list-item list-item-interactive list-item-two-line">
<div class="list-item-leading">
<img src="https://picsum.photos/seed/ali/80/80" alt="Ali Connors" class="w-10 h-10 rounded-full">
</div>
<div class="list-item-content">
<span class="list-item-text">Ali Connors</span>
<span class="list-item-secondary">Brunch this weekend?</span>
</div>
</li>
<li class="list-item list-item-interactive list-item-two-line">
<div class="list-item-leading">
<img src="https://picsum.photos/seed/jennifer/80/80" alt="Jennifer Smith" class="w-10 h-10 rounded-full">
</div>
<div class="list-item-content">
<span class="list-item-text">Jennifer Smith</span>
<span class="list-item-secondary">Dinner reservations</span>
</div>
</li>
</ul>List Dividers
Standard Dividers
Separate list items with dividers:
Standard Dividers
-
Item 1
-
Item 2
-
Item 3
<ul class="list">
<li class="list-item">
<div class="list-item-content">
<span class="list-item-text">Item 1</span>
</div>
</li>
<hr class="list-divider">
<li class="list-item">
<div class="list-item-content">
<span class="list-item-text">Item 2</span>
</div>
</li>
<hr class="list-divider">
<li class="list-item">
<div class="list-item-content">
<span class="list-item-text">Item 3</span>
</div>
</li>
</ul>Inset Dividers
Use inset dividers for lists with leading elements:
Inset Dividers
-
John Doe
-
Jane Smith
<ul class="list">
<li class="list-item">
<div class="list-item-leading">
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z" />
</svg>
</div>
<div class="list-item-content">
<span class="list-item-text">John Doe</span>
</div>
</li>
<hr class="list-divider list-divider-inset">
<li class="list-item">
<div class="list-item-leading">
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z" />
</svg>
</div>
<div class="list-item-content">
<span class="list-item-text">Jane Smith</span>
</div>
</li>
</ul>List Subheaders
Organize lists with subheaders:
List Subheaders
-
Meeting with team 10:00 AM - 11:00 AM
-
Lunch break 12:00 PM - 1:00 PM
-
Project review 9:00 AM - 10:00 AM
<ul class="list">
<div class="list-subheader">Today</div>
<li class="list-item list-item-two-line">
<div class="list-item-content">
<span class="list-item-text">Meeting with team</span>
<span class="list-item-secondary">10:00 AM - 11:00 AM</span>
</div>
</li>
<li class="list-item list-item-two-line">
<div class="list-item-content">
<span class="list-item-text">Lunch break</span>
<span class="list-item-secondary">12:00 PM - 1:00 PM</span>
</div>
</li>
<div class="list-subheader">Tomorrow</div>
<li class="list-item list-item-two-line">
<div class="list-item-content">
<span class="list-item-text">Project review</span>
<span class="list-item-secondary">9:00 AM - 10:00 AM</span>
</div>
</li>
</ul>List Density
Compact Lists
More condensed spacing for data-dense interfaces:
Compact Lists
-
Compact Item 1
-
Compact Item 2
<ul class="list list-compact">
<li class="list-item">
<div class="list-item-leading">
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 21a4 4 0 01-4-4V5a2 2 0 012-2h4a2 2 0 012 2v12a4 4 0 01-4 4zm0 0h12a2 2 0 002-2v-4a2 2 0 00-2-2h-2.343M11 7.343l1.657-1.657a2 2 0 012.828 0l2.829 2.829a2 2 0 010 2.828l-8.486 8.485M7 17h.01" />
</svg>
</div>
<div class="list-item-content">
<span class="list-item-text">Compact Item 1</span>
</div>
</li>
<li class="list-item">
<div class="list-item-leading">
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" />
</svg>
</div>
<div class="list-item-content">
<span class="list-item-text">Compact Item 2</span>
</div>
</li>
</ul>Comfortable Lists
More spacious for better readability:
Comfortable Lists
-
Documents
-
Images
<ul class="list list-comfortable">
<li class="list-item">
<div class="list-item-leading">
<svg class="w-7 h-7" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z" />
</svg>
</div>
<div class="list-item-content">
<span class="list-item-text">Documents</span>
</div>
</li>
<li class="list-item">
<div class="list-item-leading">
<svg class="w-7 h-7" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z" />
</svg>
</div>
<div class="list-item-content">
<span class="list-item-text">Images</span>
</div>
</li>
</ul>Surface Variants
Container Surfaces
Apply different surface elevations:
Container Surfaces
-
Default Surface
-
Container Surface
-
Container Low Surface
-
Container High Surface
<!-- Default surface -->
<ul class="list">
<li class="list-item">
<div class="list-item-content">
<span class="list-item-text">Default Surface</span>
</div>
</li>
</ul>
<!-- Surface container -->
<ul class="list list-surface-container">
<li class="list-item">
<div class="list-item-content">
<span class="list-item-text">Container Surface</span>
</div>
</li>
</ul>
<!-- Surface container low -->
<ul class="list list-surface-container-low">
<li class="list-item">
<div class="list-item-content">
<span class="list-item-text">Container Low Surface</span>
</div>
</li>
</ul>
<!-- Surface container high -->
<ul class="list list-surface-container-high">
<li class="list-item">
<div class="list-item-content">
<span class="list-item-text">Container High Surface</span>
</div>
</li>
</ul>Bordered Lists
Add borders to lists:
Bordered Lists
-
Bordered Item 1
-
Bordered Item 2
-
Bordered Item 3
<ul class="list list-bordered">
<li class="list-item">
<div class="list-item-content">
<span class="list-item-text">Bordered Item 1</span>
</div>
</li>
<li class="list-item">
<div class="list-item-content">
<span class="list-item-text">Bordered Item 2</span>
</div>
</li>
<li class="list-item">
<div class="list-item-content">
<span class="list-item-text">Bordered Item 3</span>
</div>
</li>
</ul>Nested Lists
Create hierarchical list structures:
Nested Lists
-
Projects
-
Website Redesign
-
Mobile App
-
Team
<ul class="list">
<li class="list-item list-item-interactive">
<div class="list-item-leading">
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z" />
</svg>
</div>
<div class="list-item-content">
<span class="list-item-text">Projects</span>
</div>
</li>
<ul class="list list-nested">
<li class="list-item list-item-interactive">
<div class="list-item-content">
<span class="list-item-text">Website Redesign</span>
</div>
</li>
<li class="list-item list-item-interactive">
<div class="list-item-content">
<span class="list-item-text">Mobile App</span>
</div>
</li>
</ul>
<li class="list-item list-item-interactive">
<div class="list-item-leading">
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197M13 7a4 4 0 11-8 0 4 4 0 018 0z" />
</svg>
</div>
<div class="list-item-content">
<span class="list-item-text">Team</span>
</div>
</li>
</ul>Disabled State
Disable interaction with list items:
Disabled List Items
-
Available Item
-
Disabled Item
-
Available Item
<ul class="list">
<li class="list-item list-item-interactive">
<div class="list-item-content">
<span class="list-item-text">Available Item</span>
</div>
</li>
<li class="list-item list-item-disabled">
<div class="list-item-content">
<span class="list-item-text">Disabled Item</span>
</div>
</li>
<li class="list-item list-item-interactive">
<div class="list-item-content">
<span class="list-item-text">Available Item</span>
</div>
</li>
</ul>Best Practices
Content Organization
- Use subheaders to group related list items
- Keep list item text concise and scannable
- Use two-line and three-line variants for additional context
- Place the most important information in the primary text
Visual Hierarchy
Visual Hierarchy Best Practice
-
Featured Item This is the active selection
-
Standard Item
-
Unavailable Item
<ul class="list">
<!-- Important item with icon and active state -->
<li class="list-item list-item-interactive list-item-active list-item-two-line">
<div class="list-item-leading">
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 5a2 2 0 012-2h10a2 2 0 012 2v16l-7-3.5L5 21V5z" />
</svg>
</div>
<div class="list-item-content">
<span class="list-item-text">Featured Item</span>
<span class="list-item-secondary">This is the active selection</span>
</div>
</li>
<!-- Standard items -->
<li class="list-item list-item-interactive">
<div class="list-item-content">
<span class="list-item-text">Standard Item</span>
</div>
</li>
<!-- Disabled/unavailable item -->
<li class="list-item list-item-disabled">
<div class="list-item-content">
<span class="list-item-text">Unavailable Item</span>
</div>
</li>
</ul>Accessibility
- Use semantic HTML (
<ul>,<li>) for proper structure - Provide meaningful alt text for avatars and images
- Ensure interactive items are keyboard accessible
- Use
aria-labelfor icon-only actions
Accessible List Example
-
John Doe Online
<ul class="list" role="list">
<li class="list-item list-item-interactive" role="listitem">
<div class="list-item-leading">
<img src="https://picsum.photos/seed/profile/80/80" alt="User profile picture" class="w-10 h-10 rounded-full">
</div>
<div class="list-item-content">
<span class="list-item-text">John Doe</span>
<span class="list-item-secondary">Online</span>
</div>
<div class="list-item-trailing">
<button class="btn btn-icon btn-icon-sm" aria-label="More options">
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 5v.01M12 12v.01M12 19v.01M12 6a1 1 0 110-2 1 1 0 010 2zm0 7a1 1 0 110-2 1 1 0 010 2zm0 7a1 1 0 110-2 1 1 0 010 2z" />
</svg>
</button>
</div>
</li>
</ul>Touch Targets
Ensure list items are large enough for touch interaction:
- Default list items: 48px minimum height
- Two-line items: 64px minimum height
- Three-line items: 88px minimum height
- Use
.list-comfortablefor more generous touch targets
Framework Examples
React
interface ListItemProps {
primary: string;
secondary?: string;
icon?: React.ReactNode;
avatar?: string;
active?: boolean;
interactive?: boolean;
onClick?: () => void;
}
export function ListItem({
primary,
secondary,
icon,
avatar,
active = false,
interactive = false,
onClick
}: ListItemProps) {
const classes = [
'list-item',
secondary && 'list-item-two-line',
interactive && 'list-item-interactive',
active && 'list-item-active'
].filter(Boolean).join(' ');
return (
<li className={classes} onClick={onClick}>
{(icon || avatar) && (
<div className="list-item-leading">
{avatar ? (
<img src={avatar} alt="" className="w-10 h-10 rounded-full" />
) : icon}
</div>
)}
<div className="list-item-content">
<span className="list-item-text">{primary}</span>
{secondary && (
<span className="list-item-secondary">{secondary}</span>
)}
</div>
</li>
);
}
// Usage
<ul className="list">
<ListItem
primary="Inbox"
secondary="5 new messages"
icon={<InboxIcon />}
interactive
active
/>
<ListItem
primary="Starred"
icon={<StarIcon />}
interactive
/>
</ul>
Vue
<template>
<li :class="classes" @click="onClick">
<div v-if="icon || avatar" class="list-item-leading">
<img v-if="avatar" :src="avatar" alt="" class="w-10 h-10 rounded-full" />
<slot v-else name="icon"></slot>
</div>
<div class="list-item-content">
<span class="list-item-text">{{ primary }}</span>
<span v-if="secondary" class="list-item-secondary">{{ secondary }}</span>
</div>
<div v-if="$slots.trailing" class="list-item-trailing">
<slot name="trailing"></slot>
</div>
</li>
</template>
<script setup>
import { computed } from 'vue';
const props = defineProps({
primary: String,
secondary: String,
avatar: String,
active: Boolean,
interactive: Boolean
});
const emit = defineEmits(['click']);
const classes = computed(() => [
'list-item',
props.secondary && 'list-item-two-line',
props.interactive && 'list-item-interactive',
props.active && 'list-item-active'
].filter(Boolean).join(' '));
const onClick = () => {
if (props.interactive) {
emit('click');
}
};
</script>
<!-- Usage -->
<ul class="list">
<ListItem
primary="Inbox"
secondary="5 new messages"
:interactive="true"
:active="true"
>
<template #icon>
<InboxIcon />
</template>
</ListItem>
</ul>
API Reference
Class Names
| Class | Description |
|---|---|
.list |
Base list container (required) |
.list-item |
Base list item (required) |
.list-item-content |
Content wrapper for text |
.list-item-text |
Primary text content |
.list-item-secondary |
Secondary/supporting text |
.list-item-leading |
Leading element (icon, avatar) |
.list-item-trailing |
Trailing element (icon, action) |
.list-item-interactive |
Adds hover/active states |
.list-item-active |
Active/selected state (primary) |
.list-item-active-primary |
Active state with primary color |
.list-item-active-secondary |
Active state with secondary color |
.list-item-active-tertiary |
Active state with tertiary color |
.list-item-two-line |
Two-line list item variant |
.list-item-three-line |
Three-line list item variant |
.list-divider |
Horizontal divider line |
.list-divider-inset |
Inset divider (with leading element) |
.list-subheader |
Section subheader |
.list-compact |
Compact density variant |
.list-comfortable |
Comfortable density variant |
.list-surface-container |
Container surface elevation |
.list-surface-container-low |
Low container surface |
.list-surface-container-high |
High container surface |
.list-bordered |
Add border to list |
.list-nested |
Nested/indented list |
.list-item-disabled |
Disabled list item |
CSS Custom Properties
Lists use the Material Design 3 color tokens:
--color-surface- List background--color-on-surface- List item text--color-on-surface-variant- Secondary text--color-outline-variant- Divider color--color-primary-container- Active item background--color-on-primary-container- Active item text--color-secondary-container- Secondary active background--color-tertiary-container- Tertiary active background