FORMS & TABLES

Tables

Static tables done right — density, lines, rich cells, selection, expandable and sticky rows, states and three responsive modes. Sorting, search and paging live in Datatables.
THEME
01

Playground

Density, lines, stripes, hover, sticky header, mobile mode, state
PREVIEWDefault · row lines · data
Active projects8 projects · $222,700
ClientProjectStatusProgressBudgetDueActions
Lume Goodsben@lume.example
Packaging refreshActive72%$42,000
6 Novin 19 days
Nova Studiomara@nova.example
Spring campaignIn review90%$18,500
21 Octin 3 days
Atelier Rivejo@rive.example
Brand bookOverdue64%$24,000
12 Oct6 days late
Kiln Coffeesam@kiln.example
Product shootDone100%$9,200
2 OctDelivered
Orbit Labsli@orbit.example
App onboardingActive38%$36,000
1 Decin 44 days
Sableana@sable.example
Lookbook SS27Paused20%$14,000
15 Decin 58 days
Halo Clinickim@halo.example
Signage systemActive55%$21,000
20 Novin 33 days
Juniper Hotelola@juniper.example
Hotel identityIn review84%$58,000
28 Octin 10 days
No projects match “Overdue · Agency”Try another filter, or start a new project.
Settings
DENSITY
LINES
STRIPES
HOVER
STICKY HEADER
BELOW 640 PX
STATE
CODE
<Table density="default" lines="rows" hoverable responsive="cards" // below 640 px caption="Active projects"/>
02

Variants

12 tables
Basicrows · header · tabular numbers
NameRoleProjectsHoursActions
Olivia LaneCreative director632 h
Alex ReyesDesigner438 h
Jon ReyesDeveloper341 h
Mia HartCopywriter524 h
Noah FischerProducer736 h
Stripedevery other row tinted
NameRoleProjectsHoursActions
Olivia LaneCreative director632 h
Alex ReyesDesigner438 h
Jon ReyesDeveloper341 h
Mia HartCopywriter524 h
Noah FischerProducer736 h
Borderedfull grid
NameRoleProjectsHoursActions
Olivia LaneCreative director632 h
Alex ReyesDesigner438 h
Jon ReyesDeveloper341 h
Mia HartCopywriter524 h
Noah FischerProducer736 h
Borderlesswhitespace only
NameRoleProjectsHoursActions
Olivia LaneCreative director632 h
Alex ReyesDesigner438 h
Jon ReyesDeveloper341 h
Mia HartCopywriter524 h
Noah FischerProducer736 h
Hover rowstint follows the pointer
NameRoleProjectsHoursActions
Olivia LaneCreative director632 h
Alex ReyesDesigner438 h
Jon ReyesDeveloper341 h
Mia HartCopywriter524 h
Noah FischerProducer736 h
Sizes36 · 48 · 60 px rows
NameRoleProjectsHoursActions
Olivia LaneCreative director632 h
Alex ReyesDesigner438 h
Jon ReyesDeveloper341 h
Caption & footer<caption> · <tfoot> totals
October expenses
ItemCategoryAmountActions
SoftwareTools$1,240
Freelance illustratorContractors$3,800
Print proofsProduction$620
Studio rentOffice$4,200
Total4 items$9,860
Alignmenttext left · numbers right · status centre
ClientStatusInvoicesRevenueActions
Lume GoodsPaid6$28,450
Atelier RiveOverdue · 6 days3$14,200
Kiln CoffeeSent2$4,800
Orbit LabsDraft1$9,100
Contextual rowstint + text, never colour alone
InvoiceClientStatusAmountActions
INV-0424Nova StudioPaid$4,800
INV-0425Atelier RiveOverdue · 6 days$7,200
INV-0426Kiln CoffeeSent$2,400
INV-0427Lume GoodsDraft$5,600
INV-0428Orbit LabsPaid$9,100
Selectable rowscheckboxes · select all · shift-click range · bulk bar
Invoices, select rows for bulk actions
InvoiceClientStatusAmountActions
INV-0424Nova StudioPaid$4,800
INV-0425Atelier RiveOverdue$7,200
INV-0426Kiln CoffeeSent$2,400
INV-0427Lume GoodsDraft$5,600
INV-0428Orbit LabsPaid$9,100
INV-0429SableSent$3,300
Shift-click a checkbox to select a range.
Expandable rowschevron · aria-expanded · details row
Projects with expandable details
DetailsProjectOwnerTasksDueActions
Packaging refreshOlivia Lane18 / 246 Nov
BRIEFNew dielines and a calmer palette for 6 SKUs.
MILESTONESMoodboard — doneDielines — donePrint proofs — to do
Spring campaignAlex Reyes31 / 3421 Oct
BRIEFLaunch visuals for 3 channels and a 20 s spot.
MILESTONESConcepts — doneShoot — doneEdit — to do
Brand bookMia Hart9 / 2212 Oct
BRIEFGuidelines for logo, type, colour and tone of voice.
MILESTONESAudit — doneDrafts — to doFinal PDF — to do
App onboardingJon Reyes5 / 301 Dec
BRIEFFive first-run screens and an empty-state kit.
MILESTONESFlows — doneUI — to doHandoff — to do
Sticky header & first columnscroll both ways · 6 clients × 12 months
Monthly revenue by client, 2026
ClientJanFebMarAprMayJunJulAugSepOctNovDecTotal
Lume Goods$1,200$3,000$4,800$6,600$8,400$10,200$2,100$3,900$5,700$7,500——$53,400
Nova Studio$7,900$9,700$1,600$3,400$5,200$7,000$8,800$10,600$2,500$4,300——$61,000
Atelier Rive$4,700$6,500$8,300$10,100$2,000$3,800$5,600$7,400$9,200$11,000——$68,600
Kiln Coffee$11,400$3,300$5,100$6,900$8,700$10,500$2,400$4,200$6,000$7,800——$66,300
Orbit Labs$8,200$10,000$11,800$3,700$5,500$7,300$9,100$10,900$2,800$4,600——$73,900
Juniper Hotel$5,000$6,800$8,600$10,400$12,200$4,100$5,900$7,700$9,500$11,300——$81,500
The scroll area is focusable (tabindex 0, role region) so keyboard users can scroll it with the arrow keys.
03

States

Loading, empty, error
Loadingskeleton rows · aria-busy
Active projectsLoading…
ClientProjectStatusProgressBudgetDueActions
No projects match “Overdue · Agency”Try another filter, or start a new project.
Emptysay why, offer the next step
Active projects0 projects
ClientProjectStatusProgressBudgetDueActions
No projects match “Overdue · Agency”Try another filter, or start a new project.
Errorkeep the header, offer Retry
Active projects
ClientProjectStatusProgressBudgetDueActions
04

Responsive

Three ways to fit a narrow screen
Scroll sidewaysall columns · focusable region
390 px · phone
Active projects4 projects · $93,700
ClientProjectStatusProgressBudgetDueActions
Lume Goodsben@lume.example
Packaging refreshActive72%$42,000
6 Novin 19 days
Nova Studiomara@nova.example
Spring campaignIn review90%$18,500
21 Octin 3 days
Atelier Rivejo@rive.example
Brand bookOverdue64%$24,000
12 Oct6 days late
Kiln Coffeesam@kiln.example
Product shootDone100%$9,200
2 OctDelivered
No projects match “Overdue · Agency”Try another filter, or start a new project.
Scroll sidewaysKeeps every column and the reading order. Good for analysts who compare across columns. Add a visible scroll hint.← Scroll the table inside the phone →
Rows become cardsone card per row · key / value
390 px · phone
Active projects4 projects · $93,700
  • Lume GoodsPackaging refresh
    Active
    Budget
    $42,000
    Due
    6 Nov · in 19 days
    72%
  • Nova StudioSpring campaign
    In review
    Budget
    $18,500
    Due
    21 Oct · in 3 days
    90%
  • Atelier RiveBrand book
    Overdue
    Budget
    $24,000
    Due
    12 Oct · 6 days late
    64%
Rows become cardsBest for scanning on phones. Keep the same order of fields as the columns.
Hide columnspriority columns stay
390 px · phone
Active projects4 projects · $93,700
ClientProjectStatusProgressBudgetDueActions
Lume Goodsben@lume.example
Packaging refreshActive72%$42,000
6 Novin 19 days
Nova Studiomara@nova.example
Spring campaignIn review90%$18,500
21 Octin 3 days
Atelier Rivejo@rive.example
Brand bookOverdue64%$24,000
12 Oct6 days late
Kiln Coffeesam@kiln.example
Product shootDone100%$9,200
2 OctDelivered
No projects match “Overdue · Agency”Try another filter, or start a new project.
Hide columnsDrop the least important columns (project, progress, due). Offer the full view somewhere.
05

In Avava

Invoices, team workload, plan comparison
Lume Goods · invoicescaption · status · totals in tfoot
Lume Goods · 2026
InvoiceIssuedDueStatusAmountActions
INV-04182 Sep16 SepPaid$6,200
INV-042118 Sep2 OctPaid$4,800
INV-042330 Sep14 OctPaid$3,650
INV-04266 Oct20 OctSent$7,400
INV-043014 Oct28 OctDraft$6,400
Total3 paid · $13,800 open$28,450
Project teamworkload against 40 h capacity
Lume rebrand · this week
MemberRoleHoursWorkloadActions
Olivia LaneCreative director32 h80%8 h free
Alex ReyesDesigner38 h95%Nearly full
Jon ReyesDeveloper45 h113%Over capacity by 5 h
Mia HartCopywriter24 h60%16 h free
Noah FischerProducer36 h90%Nearly full
Plansfeature × plan · grouped rows · highlighted column
Compare Avava plans
Team$19 / seatPOPULARStudio$49 / seatAgency$99 / seat
Projects
Active projects10UnlimitedUnlimited
Client portalNot includedIncludedIncluded
Time trackingIncludedIncludedIncluded
Billing
Invoices per month20UnlimitedUnlimited
Multi-currencyNot includedIncludedIncluded
Custom domainNot includedNot includedIncluded
Team
Seats included31025
Single sign-onNot includedNot includedIncluded
06

Rules & a11y

When to use, anatomy, screen readers
Table, list or cards?pick by the job
Table
People compare values across rowsInvoices, budgets, workload
List
One main thing per row, few attributesNotifications, files, people
Cards
Visual items or phonesProjects with covers, mobile rows
Datatable
Sort, filter, page, editSee the Datatables pages
Anatomy & tokenswhat every table shares
Header40 px · 10.5 / 900 caps · muted · 1 px line under it
Rows40 / 54 / 66 px · 14 px side padding · 1 px line at 6%
NumbersRight-aligned · tabular figures · same decimals per column
StatusPill with dot + word · tint 16% of the status colour
Hover / selectedRow at 5% ink / cyan at 9%
Footertfoot · 1.5 px line above · totals in 800
Screen readersreal table semantics
✓<caption> names the tableVisible or visually hidden
✓<th scope="col"> and scope="row"Row headers for the first column when it identifies the row
✓Scroll area: tabindex="0" role="region"With an aria-label, so it can be scrolled by keyboard
✓aria-expanded + aria-controlsOn the expand button, pointing to the details row
✓Header checkbox: indeterminatePlus “N selected” in a live region
✓Never a table for layoutOnly for data that has rows and columns
DO✓Right-align numbers and use tabular figures✓Give every table a caption — visible or hidden✓Pair status colour with a word✓Pick one responsive mode per table and keep it✓Show skeleton rows while loading, not a spinner alone
DON’T✕Centre-align text columns✕Use zebra stripes and grid lines together✕Hide the only column that identifies a row✕Put more than one primary action per row✕Leave an empty table with just the header