Skip to content

No.193 · Data· New

Column Profile

Every column of a table summarised on its own hard-edged card: nulls, distinct values, and the shape of what's there — a histogram you can read bin by bin, the top values, or a true/false split.

The prompt

Copy this text

Automatic copying is unavailable. Copy the selected text using your device’s copy command.

Written for the variant you picked above: Light

Build a table profiler in a playful-technical, diagrammatic style: warm off-white page #f4efea, white cards, ink #383838, 2px ink borders, 2px corners, flat 4px 4px 0 hard shadows, DM Mono for names, labels and numbers, Inter light elsewhere. Compute everything from rows: per column the row count, nulls (null, missing, empty or NaN), distinct values, and for numbers and ISO dates min, max, mean and a 14-bin equal-width histogram (the last bin includes the max; a constant column is one bin); for text the five most common values; for booleans a true/false count. Header: the table name in 18–22px DM Mono, '400 rows · 6 columns' in small uppercase, and a 'SORT' select (Table order, Most nulls, Most distinct). A responsive grid of cards (min 15rem): the column name with a bordered kind tag coloured by type (number sky #6fc2ff, date teal #16aa98, text coral #ff9538, boolean yellow #ffde00); a stat row of tiny uppercase labels over DM Mono values (Nulls as a percentage, rust when over 10%; Distinct; Mean for numbers). Numbers and dates show a 64px histogram of bordered bars in the kind colour on a 2px baseline; hovering or arrowing to a bar turns it ink and the readout under the axis changes from min…max to '12.5 – 18.0 · 34 rows' (dates as '3 Sept'). Text shows top values as rows with a 40% kind-colour bar behind each, sized to the most common. Booleans show a 34px bordered split bar: yellow 'TRUE 248' and neutral 'FALSE 152' in proportion. Selected variant — Light (light): Light theme: page #f4efea, cards #ffffff, ink, borders and hard shadows #383838, muted #6f6a64, faint #a39e97, rules rgb(56 56 56 / 0.14), boolean false track #ece6df, warning #b33a12; kind colours sky #6fc2ff, teal #16aa98, coral #ff9538, yellow #ffde00. This selection takes precedence over references to other themes or options in the general brief. Implement this selected appearance; do not add a variant picker or alternative appearances unless requested. Implementation requirements: Use React and TypeScript. Keep the component self-contained, with uniquely scoped CSS and no animation libraries. Include required imports, styles and font setup in the result. Interaction: Hover a bar, or focus the chart and use ←/→/Home/End, to read each bin; leaving clears the readout. Changing the sort reorders the cards, which glide to their new positions. Motion: Cards FLIP to new positions over 380ms using offsetLeft/Top; bars change colour over 100ms. Reduced motion re-sorts in place. Accessibility: The section is labelled with the table name; each card's statistics are a description list. Histograms are focusable groups with an instruction label and a polite live readout; top values are an ordered list; the boolean split is an image with a 'N true, N false' label. Responsive behavior: Cards reflow from several columns to one; long names and values truncate with an ellipsis. Touch: Tap a bar to read it; the min and max labels are always visible. Preserve keyboard access, visible focus and reduced-motion behavior. Keep fictional demo data and simulated service calls in a separate usage example; expose callbacks for real actions and recover from rejected requests. Keep usage-example links inside the demo: use local buttons or prevent navigation. Demonstration links must not navigate to Vitrine routes or open other pages; preserve real URL support in the reusable component itself. Verify the result at narrow and wide viewport sizes, with keyboard input and reduced motion enabled.

Notes

Interaction
Hover a bar, or focus the chart and use ←/→/Home/End, to read each bin; leaving clears the readout. Changing the sort reorders the cards, which glide to their new positions.
Motion
Cards FLIP to new positions over 380ms using offsetLeft/Top; bars change colour over 100ms. Reduced motion re-sorts in place.
Accessibility
The section is labelled with the table name; each card's statistics are a description list. Histograms are focusable groups with an instruction label and a polite live readout; top values are an ordered list; the boolean split is an image with a 'N true, N false' label.
Responsive
Cards reflow from several columns to one; long names and values truncate with an ellipsis.
On touch
Tap a bar to read it; the min and max labels are always visible.

Featured

333 components