Empty State — Stacked

OR

Here is the title text.

Description text goes here

Label

Caption text here

Here is the title text.

Description text goes here

Label

Caption text here

Empty State — Row

Here is the title text

Description text goes here

Label

Caption text here

OR

Here is the title text

Description text goes here

Label

Caption text here

Vertical — Default

Team working together

Product Design Sprint

A five-day process for answering critical business questions through design and prototyping.

Team collaboration

Team Collaboration Guide

Best practices for remote and hybrid team workflows across time zones.

Analytics dashboard

Data-Driven Decisions

How to build a metrics culture that actually moves the needle on outcomes.

Vertical — With Badge

Design workshop
Design

UX Research Methods

A comprehensive guide to user research methods, from surveys to contextual inquiry.

Code on screen
Engineering

Frontend Architecture

Patterns for scaling component libraries across multiple product teams.

Presentation
Leadership

Stakeholder Management

Frameworks for managing expectations and communicating progress effectively.

Vertical — With Actions

Office space

Workspace Setup Guide

Ergonomic recommendations for productive home and office setups.

Meeting room

Meeting Best Practices

How to run meetings that people actually want to attend.

Team huddle

Team Retrospectives

Templates and techniques for running effective sprint retrospectives.

Vertical — With Header Actions

Tech workspace
Backend

API Design Principles

RESTful conventions, versioning strategies, and error handling patterns.

Office
People

Onboarding Playbook

30-60-90 day plans that actually work for new engineering hires.

Strategy session
Strategy

Product Roadmap Planning

Align your team around outcomes, not features, using opportunity solution trees.

Subscription Active

PlanProfessional
RenewalApr 22, 2026
Amount$49.00/mo

Horizontal

Workshop

Design System Workshop

Learn to build and maintain a design system from scratch in this hands-on workshop.

Team brainstorm

Innovation Sprint

A structured approach to generating and validating new product ideas in one week.


Horizontal — With Badge + Actions

Design mockup
Tutorial

Component Library Audit

Step-by-step process for auditing your existing UI components and identifying gaps.

Wireframe
Workshop

Wireframing Techniques

From low-fidelity sketches to interactive prototypes in record time.

Delivery Tracking

TrackingFX-7829104562
CarrierFedEx Express
ETAMar 27, 2026

Sizes

Small

Workspace

Quick Tip: Focus Blocks

Protect two-hour blocks for deep work.

Medium (default)

Workspace

Quick Tip: Focus Blocks

Protect two-hour blocks for deep work.

Large

Workspace

Quick Tip: Focus Blocks

Protect two-hour blocks for deep work.

Aspect Ratios

Auto

Dashboard

Auto Ratio

Uses the natural image dimensions.

Square (1:1)

Dashboard

Square

Perfect for profile cards and thumbnails.

Video (16:9)

Dashboard

Video

Standard widescreen for media content.

Portrait (3:4)

Dashboard

Portrait

Taller cards for gallery or people views.

Clickable (Link)

Conference
Event

Annual Design Conference

Join 500+ designers for talks, workshops, and networking. Clickable card using Href.

Podcast setup
Podcast

Product Thinking Podcast

Weekly conversations with product leaders from top tech companies.

Course materials
Course

Accessibility Fundamentals

A practical course on building inclusive digital products from the ground up.


Usage examples

Copy-paste-ready snippets for the most common InfoCard patterns. Scroll up to browse the full variant catalog.

Vertical — default

Image on top, title + description below

Team working together

Product Design Sprint

A five-day process for answering critical business questions through design and prototyping.

razor
<InfoCard ImageSrc="/images/sprint.jpg" ImageAlt="Team working together" Title="Product Design Sprint" Description="A five-day process for answering critical business questions." />

Vertical — with badge

Category label via BadgeContent slot

Design workshop
Design

UX Research Methods

A comprehensive guide to user research methods.

razor
<InfoCard ImageSrc="/images/workshop.jpg" AspectRatio="video" Title="UX Research Methods" Description="A comprehensive guide to user research methods."> <BadgeContent> <Badge Color="brand" Size="sm">Design</Badge> </BadgeContent> </InfoCard>

Data card (no image)

Field list via Fields parameter

Customer

NamePhoenix Baker
Emailphoenix@untitledui.com
Phone+1 (555) 000-0000
razor
<InfoCard Title="Customer" Fields="_customerFields" /> @code { private List<InfoCard.InfoCardField> _customerFields = new() { new("Name", "Phoenix Baker"), new("Email", "phoenix@untitledui.com"), new("Phone", "+1 (555) 000-0000"), }; }

Empty state — text avatar

Circular avatar placeholder via PlaceholderText

OR

Here is the title text.

Description text goes here

Label

Caption text here

razor
<InfoCard Variant="empty" PlaceholderText="OR" Title="Here is the title text." Description="Description text goes here" CaptionText="Caption text here"> <HeaderActions> <button class="btn btn-sm btn-tertiary" aria-label="More options"> <svg width="20" height="20" viewBox="0 0 20 20" fill="none"> <path d="M10 10.833a.833.833 0 1 0 0-1.666.833.833 0 0 0 0 1.666zM10 5.833a.833.833 0 1 0 0-1.666.833.833 0 0 0 0 1.666zM10 15.833a.833.833 0 1 0 0-1.666.833.833 0 0 0 0 1.666z" stroke="currentColor" stroke-width="1.667" stroke-linecap="round" stroke-linejoin="round"/> </svg> </button> </HeaderActions> <BadgeContent> <Badge Color="brand" Size="sm">Label</Badge> </BadgeContent> </InfoCard>

Empty state — row, text avatar

Row layout via EmptyLayout="row" with PlaceholderText

OR

Here is the title text

Description text goes here

Label

Caption text here

razor
<InfoCard Variant="empty" EmptyLayout="row" PlaceholderText="OR" Title="Here is the title text" Description="Description text goes here" CaptionText="Caption text here"> <HeaderActions> <button class="btn btn-sm btn-tertiary" aria-label="More options"> <!-- dots-vertical icon --> </button> </HeaderActions> <BadgeContent> <Badge Color="brand" Size="sm">Label</Badge> </BadgeContent> </InfoCard>

Empty state — row, illustration

Row layout with LeadingIcon illustration

Here is the title text

Description text goes here

Label

Caption text here

razor
<InfoCard Variant="empty" EmptyLayout="row" Title="Here is the title text" Description="Description text goes here" CaptionText="Caption text here"> <HeaderActions> <button class="btn btn-sm btn-tertiary" aria-label="More options"> <!-- dots-vertical icon --> </button> </HeaderActions> <LeadingIcon> <!-- Your illustration. 64px fits nicely; max 80px is clamped. --> <svg width="64" height="64" viewBox="0 0 24 24" fill="none"> <path d="M22 12h-6l-2 3h-4l-2-3H2" stroke="currentColor" stroke-width="2"/> <path d="M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z" stroke="currentColor" stroke-width="2"/> </svg> </LeadingIcon> <BadgeContent> <Badge Color="brand" Size="sm">Label</Badge> </BadgeContent> </InfoCard>

Empty state — illustration

Decorative illustration via LeadingIcon slot

Here is the title text.

Description text goes here

Label

Caption text here

razor
<InfoCard Variant="empty" Title="Here is the title text." Description="Description text goes here" CaptionText="Caption text here"> <HeaderActions> <button class="btn btn-sm btn-tertiary" aria-label="More options"> <!-- dots-vertical icon --> </button> </HeaderActions> <LeadingIcon> <!-- Drop any SVG or <img /> here. Gets clamped to max 80x80. --> <svg width="64" height="64" viewBox="0 0 24 24" fill="none"> <path d="M22 12h-6l-2 3h-4l-2-3H2" stroke="currentColor" stroke-width="2"/> <path d="M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z" stroke="currentColor" stroke-width="2"/> </svg> </LeadingIcon> <BadgeContent> <Badge Color="brand" Size="sm">Label</Badge> </BadgeContent> </InfoCard>
An unhandled error has occurred. Reload 🗙

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.