
Sectioned DataGrid layout for an editorial story pipeline: one independent DataGrid per group so every stage repeats its own column header row, a switchable Stage, Desk or Issue grouping dimension, tinted stage bands with counts and an add button, AvatarGroup bylines, flag placement badges and asset and note count chips.
An editorial production desk for magazine and newsroom teams who need to see every commissioned story at once, split into the stage of the pipeline it sits in, without losing the column names as they scan down the page.
Frame shell with publication and snapshot line, three desk KPIs (Stories, Unchecked, Ready), and a New story actionGroup by ToggleGroup (Stage, Desk, Issue) that rebuilds the sections rather than re-sorting one tableDataGriduseTable instance per section (TanStack Table v9, features: dataGridFeatures), so the column header row repeats for every groupAvatarGroup byline that rolls into an AvatarGroupCount at three, a filed date, a publish date, a placement badge, an assets count chip and a desk-notes count chip@tanstack/react-table v9 for one table instance per section and stable row idssonner for preview-safe action feedbackSTORIES and BYLINES with your own records; the grouping dimensions read straight off stage, desk and issue.size and leave columnsResizable off.New story to your CMS.DataGridPagination to a section. Nothing here needs it, and the primitive's last-row border rule keys off a :has() match on the element directly wrapping a grid and its pagination, so adding it changes that section's last-row border for no gain.DataGridContainer or its DataGridScrollArea. The container is w-full overflow-hidden, so without the scroll area a narrow viewport clips the right-hand columns with no way to reach them.Back each story with a stable id, a slug, a title, a one-line angle, a stage, a desk, an issue, a placement, byline ids, an ISO filed date and publish date each paired with a display label, and the asset and note counts. Keep the dates as ISO plus a pre-formatted label so nothing is built at render time. For server-backed data, fetch the flat story list and group it on the client; buildSections already returns every group in the dimension's own order, including empty ones.
Use this block when the user asks for a grouped list whose sections must each be their own table with their own column header, or for a stage pipeline rendered as tables rather than a board. This is the sectioned grid in the grouping family; data-grid-grouping-1 is one flat table with group rows and the header suppressed, data-grid-grouping-2 a one-level region rollup, data-grid-grouping-3 a cohort heatmap, data-grid-grouping-4 a bill-of-materials tree, and data-grid-grouping-5 an HR org tree. Preserve the one-DataGrid-per-section mounting, the shared module-scope column array, the absence of pagination, the per-section DataGridContainer, the switchable grouping dimension, the tinted stage band with its count and add button, and the semantic Badge usage unless the brief explicitly changes the grouping model.