BriteTable
Sharedcomponent✓ stampedData table — sortable headers, toolbar, and inline-editable cells.
@brite-nites/design-system/primitives/brite-tableColumns are defined once on <BriteTable>; both header and body cells reference them by column='key'. Resize handles auto-render on every fixed-width column (drag to resize). Width state is shared between header and body via context so body rows always track the header. Pattern matches Linear / Notion / TanStack / AG Grid.
Full example — Customers list
Toolbar (BriteFilterChipGroup + Layout button) + sortable table + square Avatar for account marks + circular Avatar + AvatarStack + BriteActionMenu on hover. Zero custom chrome.
Density
compact (32) / default (36) / comfortable (44). Default is 36 — reads as dense but legible. Use compact for data-heavy views, comfortable for short lists with imagery.
Editable cells
Row click selects (or navigates). Any cell that wraps an editable primitive (PropertyField, AssigneeField, BriteChipField, BriteInlineTextCell, BriteInlineDescriptionCell) adds `onClick={(e) => e.stopPropagation()}` so opening a popover doesn't fire the row click. All clipping + overflow concerns live in the primitives — cells themselves stay dumb.
Text field variants: BriteInlineTextCell for short labels / refs (single-line, 60-char cap, tooltip on hover when truncated). BriteInlineDescriptionCell for long-form fields — click opens a floating textarea anchored to the cell that grows downward as you type (250-char cap), commits on Enter or blur, Shift+Enter for newline, Escape to discard. Filled cells render truncated with a hover tooltip that shows the full description.
Striped
Alternating row backgrounds for long, dense lists where the eye needs help tracking across columns.