Tables

Rare, small tables — tabular DATA lives in lister cards

The rules — tables are the EXCEPTION; tabular data rides lister

  • The default for tabular DATA — lists of records — is a lister with card rows (the data-list page), even when the list is small and has no search or paging yet. A plain .table is the EXCEPTION, used rarely: small summary tables (settings, totals), a handful of rows inside a card or in running text.
  • The house look (small uppercase muted headers, theme-aware separators, cell alignment) applies to every .table automatically — no extra classes for the look.
  • WHEN a table is warranted, its default placement is full-bleed in a card: the table sits directly in the card (NOT in .card-body) wrapped in .table-responsive, with .mb-0 — columns align with the card padding, the last row drops its border.
  • Add .align-middle whenever rows carry avatars or buttons; .table-hover whenever rows have actions; .text-end on numeric/date columns (th AND td).
  • Columns that matter less hide on mobile with .d-none .d-md-table-cell — and every table gets .table-responsive regardless.
  • No visual variants beyond these: .table-sm .table-striped for long compact listings; .table-bordered is not used.

Full-bleed in a card — the mechanics: person cells, badges, actions (a REAL team list like this would be a lister)

Member Role City Status Actions
AP
Ana Popescu
ana@example.com
Design lead Bucharest Active
BI
Bogdan Ionescu
bogdan@example.com
Backend Cluj-Napoca On leave
CG
Carmen Georgescu
carmen@example.com
QA Timisoara Inactive

Compact + striped — long listings: .table-sm .table-striped, numbers right

Invoice Client Amount Date
#2041Genus SRL€1,250.0003.07.2026
#2040Paces Studio€860.0028.06.2026
#2039Northwind€2,300.0021.06.2026
#2038Acme Corp€415.0014.06.2026

Summary table — small, inside .card-body

Setting Value
PlanBusiness
Seats12 / 20
Storage48 GB
Renewal01.01.2027
  • The person cell is a fixed pattern: .d-flex.align-items-center.gap-2 with an .avatar.avatar-sm (initials, or bg-*-subtle text-*-emphasis for color) + a name/email stack (.fw-semibold / .text-body-secondary.small).
  • Status cells are badges on the subtle/emphasis pair (the color map).
  • Action cells sit right and follow the SAME shapes as lister rows (the data-list page): the inline .btn-group of .btn-sm icon buttons (shown here — .btn-secondary edit, .btn-danger delete, each with a title; only SOLID buttons in a .btn-group, never outline), or, when actions are many, the actions-only dropdown — one .btn-contrast kebab button opening the menu. One shape per table, consistently.
  • A small summary table may live inside .card-body (it keeps the body padding); it still takes .mb-0 and gets a discreet frame — hairline border + radius — automatically.