|$ curl https://forge-ai.dev/api/markdown?path=docs/components/data-display
$cat docs/data-display.md
updated Recently·22 min read·published

Data Display

CSSHTMLTailwindBootstrapUIIntermediate🎯Free Tools
Introduction

Data display components turn raw information into scannable UI. This guide covers production-ready patterns for avatars, badges, progress bars, skeleton loaders, stat cards, tables, timelines, and description lists — in plain HTML/CSS, Tailwind CSS, and Bootstrap.

info

Keep data components visually consistent: use the same color semantics for status (success, warning, danger), align numbers to the right, and always provide text alternatives for icon-only indicators.
Avatars

Avatar sizes, initials, online status, and avatar groups.

avatars
Live
untitled.html
HTML
1<div class="wrap">
2 <div class="row">
3 <div class="av sm" style="background:#3B82F6">
4 JD
5 </div>
6 <div class="av md" style="background:#22C55E">
7 AK
8 </div>
9 <div class="av lg" style="background:#EAB308">
10 MR
11 </div>
12 <div class="av xl" style="background:#EF4444;font-size:13px">
13 SP
14 </div>
15 </div>
16 <div class="row">
17 <div class="av-group">
18 <div class="av sm" style="background:#3B82F6;border:2px solid #0A0A0A">
19 J
20 </div>
21 <div class="av sm" style="background:#22C55E;border:2px solid #0A0A0A;margin-left:-8px">
22 A
23 </div>
24 <div class="av sm" style="background:#EAB308;border:2px solid #0A0A0A;margin-left:-8px">
25 M
26 </div>
27 <div class="av more sm" style="margin-left:-8px">
28 +3
29 </div>
30 </div>
31 <div class="dot-group">
32 <div class="av sm" style="background:#3B82F6">
33 <span class="dot on">
34 </span>
35 J
36 </div>
37 <div class="av sm" style="background:#22C55E">
38 <span class="dot away">
39 </span>
40 A
41 </div>
42 </div>
43 </div>
44</div>
preview
Badges & Status

Pills, dots, and outlined badges for status, labels, and counts.

badges
Live
untitled.html
HTML
1<div class="wrap">
2 <div class="row">
3 <span class="badge solid success">
4 Active
5 </span>
6 <span class="badge solid warning">
7 Pending
8 </span>
9 <span class="badge solid danger">
10 Failed
11 </span>
12 <span class="badge solid neutral">
13 Draft
14 </span>
15 </div>
16 <div class="row">
17 <span class="badge dot success">
18 Online
19 </span>
20 <span class="badge dot warning">
21 Away
22 </span>
23 <span class="badge dot danger">
24 Offline
25 </span>
26 </div>
27 <div class="row">
28 <span class="badge outline">
29 v2.4.1
30 </span>
31 <span class="badge outline">
32 Beta
33 </span>
34 <span class="badge count">
35 99+
36 </span>
37 </div>
38</div>
preview
Progress Bars

Progress bar variants, sizes, with labels, and animated.

progress
Live
untitled.html
HTML
1<div class="wrap">
2 <div class="p-group">
3 <span class="p-label">
4 Storage
5 </span>
6 <div class="p-bar">
7 <div class="p-fill" style="width:65%">
8 </div>
9 </div>
10 <span class="p-val">
11 65%
12 </span>
13 </div>
14 <div class="p-group">
15 <span class="p-label">
16 CPU
17 </span>
18 <div class="p-bar green">
19 <div class="p-fill" style="width:80%">
20 </div>
21 </div>
22 <span class="p-val">
23 80%
24 </span>
25 </div>
26 <div class="p-group">
27 <span class="p-label">
28 Memory
29 </span>
30 <div class="p-bar sm">
31 <div class="p-fill" style="width:45%">
32 </div>
33 </div>
34 <span class="p-val">
35 45%
36 </span>
37 </div>
38 <div class="p-group">
39 <span class="p-label">
40 Network
41 </span>
42 <div class="p-bar">
43 <div class="p-fill stripes" style="width:90%">
44 </div>
45 </div>
46 <span class="p-val">
47 90%
48 </span>
49 </div>
50</div>
preview
Skeleton Loaders

Loading placeholders for text, cards, tables, and avatars.

skeleton
Live
untitled.html
HTML
1<div class="wrap">
2 <div class="sk-card">
3 <div class="sk-av">
4 </div>
5 <div class="sk-body">
6 <div class="sk-line w-60">
7 </div>
8 <div class="sk-line w-80">
9 </div>
10 <div class="sk-line w-40">
11 </div>
12 </div>
13 </div>
14 <div class="sk-card">
15 <div class="sk-img">
16 </div>
17 <div class="sk-body">
18 <div class="sk-line w-70">
19 </div>
20 <div class="sk-line w-90">
21 </div>
22 <div class="sk-line w-50">
23 </div>
24 <div class="sk-line w-30" style="margin-top:8px">
25 </div>
26 </div>
27 </div>
28</div>
preview
Stat Cards

Metric display cards with labels, values, and change indicators.

stats
Live
untitled.html
HTML
1<div class="grid">
2 <div class="stat">
3 <span class="stat-label">
4 Revenue
5 </span>
6 <span class="stat-val">
7 $12,430
8 </span>
9 <span class="stat-chg up">
10 ↑ 12.5%
11 </span>
12 </div>
13 <div class="stat">
14 <span class="stat-label">
15 Users
16 </span>
17 <span class="stat-val">
18 1,842
19 </span>
20 <span class="stat-chg up">
21 ↑ 8.2%
22 </span>
23 </div>
24 <div class="stat">
25 <span class="stat-label">
26 Bounce Rate
27 </span>
28 <span class="stat-val">
29 32.1%
30 </span>
31 <span class="stat-chg down">
32 ↓ 2.4%
33 </span>
34 </div>
35 <div class="stat">
36 <span class="stat-label">
37 Avg. Session
38 </span>
39 <span class="stat-val">
40 4m 12s
41 </span>
42 <span class="stat-chg up">
43 ↑ 6.1%
44 </span>
45 </div>
46</div>
preview
Table

Clean data table with header, rows, sortable columns, and hover states.

table
Live
untitled.html
HTML
1<table class="table">
2 <thead>
3 <tr>
4 <th data-sort>
5 Name
6 </th>
7 <th data-sort>
8 Role
9 </th>
10 <th data-sort>
11 Status
12 </th>
13 <th style="text-align:right">
14 Actions
15 </th>
16 </tr>
17 </thead>
18 <tbody>
19 <tr>
20 <td>
21 John Doe
22 </td>
23 <td>
24 Developer
25 </td>
26 <td>
27 <span class="t-badge active">
28 Active
29 </span>
30 </td>
31 <td style="text-align:right">
32 <button class="t-btn">
33 Edit
34 </button>
35 </td>
36 </tr>
37 <tr>
38 <td>
39 Jane Smith
40 </td>
41 <td>
42 Designer
43 </td>
44 <td>
45 <span class="t-badge away">
46 Away
47 </span>
48 </td>
49 <td style="text-align:right">
50 <button class="t-btn">
51 Edit
52 </button>
53 </td>
54 </tr>
55 <tr>
56 <td>
57 Sam Wilson
58 </td>
59 <td>
60 Manager
61 </td>
62 <td>
63 <span class="t-badge off">
64 Offline
65 </span>
66 </td>
67 <td style="text-align:right">
68 <button class="t-btn">
69 Edit
70 </button>
71 </td>
72 </tr>
73 <tr>
74 <td>
75 Lisa Ray
76 </td>
77 <td>
78 Developer
79 </td>
80 <td>
81 <span class="t-badge active">
82 Active
83 </span>
84 </td>
85 <td style="text-align:right">
86 <button class="t-btn">
87 Edit
88 </button>
89 </td>
90 </tr>
91 </tbody>
92</table>
preview
Timeline

Vertical timeline with events, dates, and status indicators.

timeline
Live
untitled.html
HTML
1<div class="tl">
2 <div class="tl-item">
3 <div class="tl-dot done">
4 </div>
5 <div class="tl-content">
6 <div class="tl-date">
7 2 min ago
8 </div>
9 <div class="tl-title">
10 Deployed v2.4.1
11 </div>
12 <div class="tl-desc">
13 Production release with bug fixes and performance improvements.
14 </div>
15 </div>
16 </div>
17 <div class="tl-item">
18 <div class="tl-dot done">
19 </div>
20 <div class="tl-content">
21 <div class="tl-date">
22 1 hour ago
23 </div>
24 <div class="tl-title">
25 Code Review Approved
26 </div>
27 <div class="tl-desc">
28 PR #342 merged to main branch.
29 </div>
30 </div>
31 </div>
32 <div class="tl-item">
33 <div class="tl-dot current">
34 </div>
35 <div class="tl-content">
36 <div class="tl-date">
37 In progress
38 </div>
39 <div class="tl-title">
40 Database Migration
41 </div>
42 <div class="tl-desc">
43 Migrating user data to new schema.
44 </div>
45 </div>
46 </div>
47 <div class="tl-item">
48 <div class="tl-dot">
49 </div>
50 <div class="tl-content">
51 <div class="tl-date">
52 Next
53 </div>
54 <div class="tl-title">
55 Load Testing
56 </div>
57 <div class="tl-desc">
58 Scheduled for next sprint.
59 </div>
60 </div>
61 </div>
62</div>
preview
Description Lists

Key-value pairs for metadata, settings, and detail views.

description-lists
Live
untitled.html
HTML
1<div class="wrap">
2 <dl class="dl stacked">
3 <div class="dl-row">
4 <dt>
5 Plan
6 </dt>
7 <dd>
8 Pro
9 </dd>
10 </div>
11 <div class="dl-row">
12 <dt>
13 Region
14 </dt>
15 <dd>
16 us-east-1
17 </dd>
18 </div>
19 <div class="dl-row">
20 <dt>
21 Last deploy
22 </dt>
23 <dd>
24 2 min ago
25 </dd>
26 </div>
27 <div class="dl-row">
28 <dt>
29 Build ID
30 </dt>
31 <dd>
32 <code class="code">
33 a1b2c3d
34 </code>
35 </dd>
36 </div>
37 </dl>
38 <dl class="dl inline">
39 <div class="dl-row">
40 <dt>
41 Status
42 </dt>
43 <dd>
44 <span class="status">
45 Healthy
46 </span>
47 </dd>
48 </div>
49 <div class="dl-row">
50 <dt>
51 Uptime
52 </dt>
53 <dd>
54 99.99%
55 </dd>
56 </div>
57 <div class="dl-row">
58 <dt>
59 Latency
60 </dt>
61 <dd>
62 42ms
63 </dd>
64 </div>
65 </dl>
66</div>
preview
Accessibility

Data display components should be perceivable and navigable for everyone. Tables need proper headers, progress needs visible labels, and status indicators should not rely on color alone.

  • Use <table> with <th scope="col"> so screen readers announce column relationships.
  • Pair progress bars with visible percentage text and an aria-valuenow when building custom widgets.
  • Do not communicate status only through color — add text labels or accessible labels to badges and dots.
  • Keep skeleton loaders inside regions with aria-busy="true" and avoid showing them indefinitely.
  • Ensure timeline items are ordered logically in the DOM; add headings or lists for complex event feeds.

Community

Get help on Slack, Discord or VIP

Stuck on a guide? Join the community and ask.