Irozon Design System — design foundations, tokens and components by Irozon AB.
Irozon Design System · v1.0
Components / Tables

Editorial, not spreadsheet-heavy.

Tables v1 — packages/design-system/src/components/table.css. A real <table>, always — Irozon does not replace tables with div grids. Whitespace and aligned type carry the structure before heavy grid lines do.

Base
.iz-table on a native <table>; wrap in .iz-table-wrap for horizontal overflow.
Alignment
data-align="end" on a <td>/<th> — right-aligned, tabular numerals.
Density
data-density="compact" on the table — default requires no attribute.
Row state
data-interactive for a hover cue, aria-selected="true" for selection — both native/semantic, no .is-*.
Product table

Status, numerals, actions — together.

Customer Plan Status MRR Seats
Nordkap AB Scale Active $1,240 18 View
Solvik Studio Growth Past due $480 6 View
Fjordlight Labs Starter Trialing — 2 View
Ormberg Digital Scale Suspended — 0 View

Row 2 shows aria-selected="true"; empty numeric values use an em dash (.iz-table__empty), never a blank cell or "N/A".

Density

Default, or compact. Nothing between.

Job Started Duration
nightly-export-2024-06-01 02:00 UTC 4m 12s
webhook-retry-queue 02:04 UTC 0m 48s
data-density="compact" — dense admin/log views
Dark theme

Semantic tokens only.

Customer Status MRR
Nordkap AB Active $1,240
Responsive

Real tables scroll. They don't turn into cards.

.iz-table-wrap is a plain overflow-x: auto — a wide table scrolls horizontally on a narrow viewport, keeping every native table behavior (header association, screen-reader navigation) intact. Reshaping rows into stacked mobile cards breaks that semantics for a cosmetic win; not done here.

Usage

Do / Don't.

Do
Use a real <table> for tabular data · right-align numerals with data-align="end" · reserve data-interactive for rows that are genuinely one action · keep independent row controls independently focusable.
Don't
Rebuild a table as a div grid for layout flexibility · wrap every table in a bordered card by default · make an entire row with multiple controls one conflicting click target · invent a fifth density.