AhaSlides Design
v0.52.0React · Vue · Lit

Components · Data Display

Card

A surface that groups related content — cover, title, body and footer actions — in default/small size, bordered or flat, with a hover lift and a loading skeleton.

Examples

Size
Bordered
Hoverable
Card · cover · title + extra action · body · footer actions · hoverable
Edit Which release cadence works best for your team this quarter?
A small card tightens its padding. One idea per card. No outline — a flat surface that leans on the page background.

API

PropTypeDefaultNotes
card-titlestringRenders the header row; omit for a bare body
size'default' | 'small'defaultPadding density of header/body/actions
borderedboolean-ishtrueSet bordered="false" for a flat, outline-less surface
hoverablebooleanfalseLift the card (border + shadow) on hover
loadingbooleanfalseSwap the body for a shimmer skeleton while content loads
coverslotFull-bleed image/media above the header
extraslotRight-aligned header action (a link or button)
actionsslotRuled-off footer row of actions

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-card';   // registers <aha-card>

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

When to use

When to use
  • Card — grouping related content into a titled surface on a dashboard or settings page
  • List — many uniform rows of the same shape
  • Descriptions — read-only label/value pairs about one entity
Titles are sentence case and name the group — 'Live results', not 'LIVE RESULTS'. Keep one idea per card; reach for hoverable only when the whole card is clickable. Use a cover for a media-led card, footer actions for card-level operations, and loading while the body fetches.
Surfaces
editor dashboard settings

Spec

Container border 1px #E3E3E3 · radius 12px · bg #FFFFFF · Cover full-bleed media above the header, no inset; hidden when the slot is empty · Header padding 16/20 · 16/24 SemiBold #1A1A1A · divider #F1F1F1 · extra action right-aligned · Body padding 20 · 14/22 #4A4A4A · Actions footer row, 12/20 padding, 8 gap, top divider #F1F1F1; hidden when empty · Small size header 8/12 · body 12 · actions 8/12 (antd Card size=small) · Bordered=false border-color transparent — a flat surface · Hover (hoverable) border #D3B4FF + shadow, motion-mid ease-out on a persistent node · Loading body → shimmer skeleton bars (aria-busy), motion-slow sweep