algorithmic-color-pale…
Derive a full UI colour palette algorithmically from one or two brand colours. Darker and lighter variants for interactive states, desaturated greys from the…
Complex data deserves multiple view modes — grid, list, table — chosen by the user based on their task. Row and item selection should use large hit areas (the whole row or card, not just a checkbox). Selected state is communicated through a subtle background colour shift. Mass
$ npx -y skills add dembrandt/dembrandt-skills --skill data-display-and-selection --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/data-display-and-selectionContext preview
The summary Claude sees to decide when to auto-load this skill.
Complex data deserves multiple view modes — grid, list, table — chosen by the user based on their task. Row and item selection should use large hit areas (the whole row or card, not just a checkbox). Selected state is communicated through a subtle background colour shift. Mass
name: data-display-and-selection
description: Complex data deserves multiple view modes — grid, list, table — chosen by the user based on their task. Row and item selection should use large hit areas (the whole row or card, not just a checkbox). Selected state is communicated through a subtle background colour shift. Mass actions appear when items are selected. Use when designing data tables, product listings, file browsers, or any multi-item collection.
metadata:
priority: 7
pathPatterns:
- "components/**"
- "src/components/**"
- "**/*.tsx"
- "**/*.jsx"
- "design-system/**"
- "ui/**"
promptSignals:
phrases:
- "data table"
- "list view"
- "grid view"
- "mass action"
- "bulk action"
- "row selection"
- "select all"
- "item selection"
- "view toggle"
- "collection"
- "search"
- "autocomplete"
- "typeahead"
- "search results"
- "chart"
- "infographic"
- "metric"
retrieval:
aliases:
- data table
- list view
- grid view
- mass actions
- bulk actions
- row selection
- view modes
- collection UI
- search and autocomplete
- typeahead search
- instant search results
- chart type choice
- infographic colour
- making numbers comprehensible
intents:
- design a data table
- add grid and list view toggle
- implement row selection
- add bulk actions
- design a product listing
- make selection easier
- design a search with instant results
- choose a familiar chart type
- present a number or metric clearly
examples:
- add grid and list view to this product listing
- design row selection for this table
- add bulk delete to this list
- make it easier to select multiple items
- add an autocomplete search to this app
- what chart should I use for this trend
- make this number easier to understandComplex data collections — products, files, users, orders, tasks — have no single correct view. Different tasks call for different views. Browsing benefits from grid; comparing details benefits from list or table; bulk management benefits from a dense table with mass actions. Give users the choice.
---
Offer multiple views when the data has both visual and detailed dimensions.
| View | Best for | When to default | |---|---|---| | **Grid** | Visual items: products, images, files, cards | When items are visually distinct and browsing is the primary task | | **List** | Moderate detail: tasks, emails, articles | When a key piece of text or metadata drives selection | | **Table** | Dense data: orders, reports, user management | When multiple columns of data must be compared |
**View toggle placement:** top-right of the collection, adjacent to sort/filter controls. Use icon buttons with tooltips (`grid`, `list`, `table`). Persist the user's choice in localStorage.
[Filter ▾] [Sort ▾] [⊞ Grid] [☰ List] [⊟ Table]
On mobile, collapse to the view that works best for the content — grid for visual items, list for text. Do not offer a view toggle on small screens unless both views are genuinely usable.
---
Checkboxes are small targets. Requiring users to hit a 16×16px checkbox to select a row is unnecessary friction — especially on touch devices.
**Default: the entire row or card is the selection target.**
.row {
cursor: pointer;
background: var(--color-surface);
transition: background 100ms ease-out;
}
.row:hover {
background: var(--color-grey-50);
}
.row.selected {
background: var(--color-primary-subtle); /* subtle brand tint */
}For cards in a grid, the entire card is the selection area — not just a checkbox in the corner.
---
Selected items communicate their state through a background colour shift — not just a checkbox tick.
**Background:** `--color-primary-subtle` — the brand primary colour heavily desaturated and lightened to ~5–8% opacity. Perceptible but not jarring.
**Left border accent (optional):** A 3px left border in `--color-primary` reinforces the selected state for list and table rows.
**Checkbox:** Checked and filled with `--color-primary`. The checkbox is a secondary signal, not the primary one.
.row.selected {
background: var(--color-primary-subtle); /* e.g. hsl(224, 21%, 94%) */
border-left: 3px solid var(--color-primary);
}**Do not** use a high-contrast or saturated background for selection — it competes with content and makes dense tables hard to read.
---
When one or more items are selected, mass actions appear. They disappear when nothing is selected.
**Placement:** A contextual toolbar that appears at the top of the collection (replacing or supplementing the standard toolbar) when selection is active.
[✓ 3 selected] [Delete] [Archive] [Export] [Move to ▾] [× Clear]
**Select all:** A checkbox in the table header selects all items on the current page. A secondary action "Select all 247" extends to the full dataset.
[☑ Select all on page] → [Select all 247 results]
---
UX and design-system skills for AI agents. Install once, and your agent knows how to design. --all installs every skill at once. They load only when a prompt needs them, so there is no runtime cost to having them all. Want to pick by hand?
Repo: dembrandt/dembrandt-skills
Derive a full UI colour palette algorithmically from one or two brand colours. Darker and lighter variants for interactive states, desaturated greys from the…
The persistent shell around an application — the top bar, the app launcher, the tenant and environment cue, and in heavy tools a status bar. In an estate of…
Product visuals — hero shots, demos, screenshots, landing-page panels — must reproduce the real product, not a stylised poster of it. Design with real content…
A brand's visual tone — playful or serious, rounded or angular — should be consistent across all UI elements. Shape language in typography, border-radius, and…
Every interactive element needs a complete set of visual states — rest, hover, active/pressed, focus, disabled, and loading. States should be derived…
Rebuild an existing web page 1:1 from measurement instead of by eye — into Figma, Penpot, or code. Captures the rendered page, the raw source and the computed…