Pages are now available as full-screen example templates that showcase real-world use cases and best practices for composing interfaces with the aFP Design System.
Use the header attribute to include a header section in the content.
No sales available
<afp-empty-stateheaderdescription="There are no sales records for the selected period. Try adjusting the date range or filters."><h3slot="header">No sales available</h3></afp-empty-state>
<afp-empty-stateheader[description]="'There are no sales records for the selected period. Try adjusting the date range or filters.'"><h3slot="header">No sales available</h3></afp-empty-state>
<AfpEmptyStateheaderdescription="There are no sales records for the selected period. Try adjusting the date range or filters."><h3slot="header">No sales available</h3></AfpEmptyState>
<AfpEmptyStateheader:description="'There are no sales records for the selected period. Try adjusting the date range or filters.'"><h3slot="header">No sales available</h3></AfpEmptyState>
Use the no-data type when there is no data to display (e.g., empty tables).
No sales available
<afp-empty-stateemptyStateType="no-data"description="There are no sales records for the selected period. Try adjusting the date range or filters."primaryAction="Adjust Filters"secondaryAction="Create New Entry"><h3slot="header">No sales available</h3></afp-empty-state>
<afp-empty-stateemptyStateType="no-data"[description]="'There are no sales records for the selected period. Try adjusting the date range or filters.'"primaryAction="Adjust Filters"secondaryAction="Create New Entry"><h3slot="header">No sales available</h3></afp-empty-state>
<AfpEmptyStateemptyStateType="no-data"description="There are no sales records for the selected period. Try adjusting the date range or filters."primaryAction="Adjust Filters"secondaryAction="Create New Entry"><h3slot="header">No sales available</h3></AfpEmptyState>
<AfpEmptyStateemptyStateType="no-data":description="'There are no sales records for the selected period. Try adjusting the date range or filters.'"primaryAction="Adjust Filters"secondaryAction="Create New Entry"><h3slot="header">No sales available</h3></AfpEmptyState>
Use the no-results type when a search or filter returns no matching items.
No results found
<afp-empty-stateheaderemptyStateType="no-results"description="We couldn't find any items matching your search. Try using different keywords or remove some filters."primaryAction="Clear Search"secondaryAction="Reset Filters"><h3slot="header">No results found</h3></afp-empty-state>
<afp-empty-stateheaderemptyStateType="no-results"[description]="'We couldn't find any items matching your search. Try using different keywords or remove some filters.'"primaryAction="Clear Search"secondaryAction="Reset Filters"><h3slot="header">No results found</h3></afp-empty-state>
<AfpEmptyStateheaderemptyStateType="no-results"description="We couldn't find any items matching your search. Try using different keywords or remove some filters."primaryAction="Clear Search"secondaryAction="Reset Filters"><h3slot="header">No results found</h3></AfpEmptyState>
<AfpEmptyStateheaderemptyStateType="no-results":description="'We couldn't find any items matching your search. Try using different keywords or remove some filters.'"primaryAction="Clear Search"secondaryAction="Reset Filters"><h3slot="header">No results found</h3></AfpEmptyState>
Use the error type when data could not be loaded or a feature is not available.
Unable to load data
<afp-empty-stateheaderemptyStateType="error"description="Something went wrong while loading your data. Please try again later or contact support if the problem persists."primaryAction="Try Again"secondaryAction="Contact Support"><h3slot="header">Unable to load data</h3></afp-empty-state>
<afp-empty-stateheaderemptyStateType="error"[description]="'Something went wrong while loading your data. Please try again later or contact support if the problem persists.'"primaryAction="Try Again"secondaryAction="Contact Support"><h3slot="header">Unable to load data</h3></afp-empty-state>
<AfpEmptyStateheaderemptyStateType="error"description="Something went wrong while loading your data. Please try again later or contact support if the problem persists."primaryAction="Try Again"secondaryAction="Contact Support"><h3slot="header">Unable to load data</h3></AfpEmptyState>
<AfpEmptyStateheaderemptyStateType="error":description="'Something went wrong while loading your data. Please try again later or contact support if the problem persists.'"primaryAction="Try Again"secondaryAction="Contact Support"><h3slot="header">Unable to load data</h3></AfpEmptyState>
Use the icon property to specify a custom icon name, or use the icon slot for full control.
No documents
<afp-empty-stateicon="folder"headerdescription="You haven't uploaded any documents yet. Start by uploading your first document."primaryAction="Upload Document"><h3slot="header">No documents</h3></afp-empty-state>
<afp-empty-state[icon]="'folder'"header[description]="'You haven't uploaded any documents yet. Start by uploading your first document.'"primaryAction="Upload Document"><h3slot="header">No documents</h3></afp-empty-state>
<AfpEmptyStateicon="folder"headerdescription="You haven't uploaded any documents yet. Start by uploading your first document."primaryAction="Upload Document"><h3slot="header">No documents</h3></AfpEmptyState>
<AfpEmptyState:icon="'folder'"header:description="'You haven't uploaded any documents yet. Start by uploading your first document.'"primaryAction="Upload Document"><h3slot="header">No documents</h3></AfpEmptyState>
Use the compact size for use within cards, tables, or smaller containers.
No items
<afp-card><afp-empty-statesize="compact"emptyStateType="no-data"headerdescription="This list is empty."primaryAction="Add Item"><h3slot="header">No items</h3></afp-empty-state></afp-card>
<afp-card><afp-empty-state[size]="'compact'"emptyStateType="no-data"header[description]="'This list is empty.'"primaryAction="Add Item"><h3slot="header">No items</h3></afp-empty-state></afp-card>
<AfpCard><AfpEmptyStatesize="compact"emptyStateType="no-data"headerdescription="This list is empty."primaryAction="Add Item"><h3slot="header">No items</h3></AfpEmptyState></AfpCard>
<AfpCard><AfpEmptyState:size="'compact'"emptyStateType="no-data"header:description="'This list is empty.'"primaryAction="Add Item"><h3slot="header">No items</h3></AfpEmptyState></AfpCard>
Use the standard size (default) for full-page or section placeholders.
Your inbox is empty
<afp-empty-statesize="standard"icon="inbox"headerdescription="You're all caught up! New messages will appear here when you receive them."><h3slot="header">Your inbox is empty</h3></afp-empty-state>
<afp-empty-state[size]="'standard'"[icon]="'inbox'"header[description]="'You're all caught up! New messages will appear here when you receive them.'"><h3slot="header">Your inbox is empty</h3></afp-empty-state>
<AfpEmptyStatesize="standard"icon="inbox"headerdescription="You're all caught up! New messages will appear here when you receive them."><h3slot="header">Your inbox is empty</h3></AfpEmptyState>
<AfpEmptyState:size="'standard'":icon="'inbox'"header:description="'You're all caught up! New messages will appear here when you receive them.'"><h3slot="header">Your inbox is empty</h3></AfpEmptyState>
Empty states can be displayed without action buttons when no immediate action is needed.
No notifications
<afp-empty-stateheaderemptyStateType="no-data"description="You have no new notifications at this time."><h3slot="header">No notifications</h3></afp-empty-state>
<afp-empty-stateheaderemptyStateType="no-data"[description]="'You have no new notifications at this time.'"><h3slot="header">No notifications</h3></afp-empty-state>
<AfpEmptyStateheaderemptyStateType="no-data"description="You have no new notifications at this time."><h3slot="header">No notifications</h3></AfpEmptyState>
<AfpEmptyStateheaderemptyStateType="no-data":description="'You have no new notifications at this time.'"><h3slot="header">No notifications</h3></AfpEmptyState>
Display only a primary action when there's one main action to take.
No team members
<afp-empty-stateicon="people"headerdescription="Your team doesn't have any members yet. Invite colleagues to collaborate."primaryAction="Invite Members"><h3slot="header">No team members</h3></afp-empty-state>
<afp-empty-state[icon]="'people'"header[description]="'Your team doesn't have any members yet. Invite colleagues to collaborate.'"primaryAction="Invite Members"><h3slot="header">No team members</h3></afp-empty-state>
<AfpEmptyStateicon="people"headerdescription="Your team doesn't have any members yet. Invite colleagues to collaborate."primaryAction="Invite Members"><h3slot="header">No team members</h3></AfpEmptyState>
<AfpEmptyState:icon="'people'"header:description="'Your team doesn't have any members yet. Invite colleagues to collaborate.'"primaryAction="Invite Members"><h3slot="header">No team members</h3></AfpEmptyState>
Use the default slot to add custom content below the description.
No upcoming events
Check back later or create a new event to get started.
<afp-empty-stateicon="calendar"headerdescription="You don't have any events scheduled."><h3slot="header">No upcoming events</h3><p>Check back later or create a new event to get started.</p></afp-empty-state>
<afp-empty-state[icon]="'calendar'"header[description]="'You don't have any events scheduled.'"><h3slot="header">No upcoming events</h3><p>Check back later or create a new event to get started.</p></afp-empty-state>
<AfpEmptyStateicon="calendar"headerdescription="You don't have any events scheduled."><h3slot="header">No upcoming events</h3><p>Check back later or create a new event to get started.</p></AfpEmptyState>
<AfpEmptyState:icon="'calendar'"header:description="'You don't have any events scheduled.'"><h3slot="header">No upcoming events</h3><p>Check back later or create a new event to get started.</p></AfpEmptyState>
Use the actions slot for full control over the action buttons.
Your cart is empty
Browse ProductsView Wishlist
<afp-empty-stateicon="cart"headerdescription="Add items to your cart to see them here."><h3slot="header">Your cart is empty</h3><divslot="actions"><afp-buttonappearance="filled"variant="brand">Browse Products</afp-button><afp-buttonappearance="outlined">View Wishlist</afp-button></div></afp-empty-state>
<afp-empty-state[icon]="'cart'"header[description]="'Add items to your cart to see them here.'"><h3slot="header">Your cart is empty</h3><divslot="actions"><afp-button[appearance]="'filled'"[variant]="'brand'">Browse Products</afp-button><afp-button[appearance]="'outlined'">View Wishlist</afp-button></div></afp-empty-state>
<AfpEmptyStateicon="cart"headerdescription="Add items to your cart to see them here."><h3slot="header">Your cart is empty</h3><divslot="actions"><AfpButtonappearance="filled"variant="brand">Browse Products</AfpButton><AfpButtonappearance="outlined">View Wishlist</AfpButton></div></AfpEmptyState>
<AfpEmptyState:icon="'cart'"header:description="'Add items to your cart to see them here.'"><h3slot="header">Your cart is empty</h3><divslot="actions"><AfpButton:appearance="'filled'":variant="'brand'">Browse Products</AfpButton><AfpButton:appearance="'outlined'">View Wishlist</AfpButton></div></AfpEmptyState>
Use the icon slot to provide a completely custom icon element.
Custom Icon
<afp-empty-stateheaderdescription="This example uses a custom icon in the slot."><h3slot="header">Custom Icon</h3><afp-iconslot="icon"name="star-fill"></afp-icon></afp-empty-state>
<afp-empty-stateheader[description]="'This example uses a custom icon in the slot.'"><h3slot="header">Custom Icon</h3><afp-icon[slot]="'icon'"[name]="'star-fill'"></afp-icon></afp-empty-state>
<AfpEmptyStateheaderdescription="This example uses a custom icon in the slot."><h3slot="header">Custom Icon</h3><AfpIconslot="icon"name="star-fill"></AfpIcon></AfpEmptyState>
<AfpEmptyStateheader:description="'This example uses a custom icon in the slot.'"><h3slot="header">Custom Icon</h3><AfpIcon:slot="'icon'":name="'star-fill'"></AfpIcon></AfpEmptyState>