AhaSlides Design
v0.52.0React · Vue · Lit

Components · Data Display

List

A vertical list of uniform rows — avatar + title/description meta and trailing actions, with size, bordered and split options.

Examples

Size
Bordered
Split
List · bordered · avatar + title/description meta · trailing actions · row hover

API

PropTypeDefaultNotes
itemsJSON array[]Structured rows: { title, description?, avatar? (icon name), actions?:[{ key, icon, danger?, label? }] }
(children)slotFree-form fallback — each light-DOM child renders as one plain row (used when `items` is empty)
size'small' | 'default' | 'large'defaultRow vertical padding scale (8 · 12 · 16)
borderedbooleanfalseDraw the outer container border
splitbooleantrueRow dividers; set split="false" to remove them
list-titlestringRenders an optional header row
footerstringRenders an optional footer row
loadingbooleanfalseShow shimmer skeleton rows in place of content
actionCustomEventComposed event on a trailing action click, detail { key, index }

Install

# .npmrc — once: point the @ahaslides-product scope at GitHub Packages
@ahaslides-product:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=${GITHUB_TOKEN}   # a GitHub token with read:packages

npm i @ahaslides-product/design
import '@ahaslides-product/design/tokens.css';   // once, at the app root
import '@ahaslides-product/design/aha-list';   // registers <aha-list>

Agent feed for this component (absolute, fetchable anywhere): list.agent.json · list.md · list.llms.txt

When to use

When to use
  • List — many uniform rows of the same shape (recent items, participants, feeds)
  • Table — multi-column records that need sorting or alignment
  • Card — one titled group of mixed content
Keep rows to one shape — a title, optionally a description and a small trailing actions cluster. Reserve `bordered` for a standalone list; drop the border when the list sits inside a card. For dense multi-column data reach for the Table instead.
Surfaces
editor dashboard settings audience

Spec

Container radius 12px · bg #FFFFFF · border 1px #E3E3E3 only when `bordered` · Header padding 14/20 · 15/22 SemiBold #1A1A1A · divider #F1F1F1 · Row padding 12/20 (small 8, large 16) · 14/22 #4A4A4A · avatar 36 + meta + trailing actions · Avatar 36px pill, bg-accent #F9F5FF fill, color-primary #6A1EBB glyph · Meta title 600 #1A1A1A + description 13/20 #8A8A8A, both ellipsised · Action 28px icon button, text-tertiary #8A8A8A; danger hover error-tinted · Split row dividers #F1F1F1, on by default; split=false drops them · Row hover interactive rows → bg #F7F7F7, motion-fast ease-out (persistent node) · Footer padding 12/20 · 13/20 #8A8A8A · top divider