Data Grid

Pin On Demand

A wide grid where pinning is the reader's call: a pin in the header makes the column sticky, and its offset is derived from the columns already pinned.

React + Tailwind, shadcn-compatible: press “Copy for AI” and your Cursor or Claude Code agent installs it with the shadcn CLI.

What you can change

  • the line under the toolbar through caption
  • the cap on pinned columns through maxPinned
  • the panel heading through heading and the pin counter through pinnedTemplate with {count} and {max}

A link for your AI agent: preview, code and instructions.

Preview

1440pxHost theme
Pin On Demand — A wide grid where pinning is the reader's call: a pin in the header makes the column sticky, and its offset is derived from the columns already pinned.

Use it with AI

  1. 1. Copy the link.
  2. 2. Write to your agent in your own words and drop the link into the sentence.
  3. 3. The agent opens the link and installs the component from the registry.
AI
1Pick it here

put this on the home page as the hero:

https://vibeui.club/c/datagrid-014?lang=en&theme=dark

2Paste into the chat
3Get it in your project

Not sure where to paste it? Step-by-step guide

Show the full instructions

What the link says, spelled out. Use it when your agent cannot open links — paste this text instead.

Loading…

How to use

<Datagrid014 caption="Pin the columns you need" maxPinned={3} />

A sample call. The agent installs the component itself from the registry via the “Copy for AI” link.

Settings

Caption
caption · default: Press the pin in a header to freeze the column on the left
Maximum pinned
maxPinned · default: 2
Accent
accent · default: theme colour
Background
background · default: theme colour

FAQ

How do I add Pin On Demand with Cursor or Claude Code?
Press “Copy for AI” on this page and paste it into your agent's chat. The instruction contains the shadcn CLI install command, the dependencies and what to keep, so the agent installs this exact component instead of recreating a lookalike.
What does Pin On Demand depend on?
No npm packages beyond React and Tailwind CSS.
What can I change in Pin On Demand?
Adapt: the line under the toolbar through caption; the cap on pinned columns through maxPinned; the panel heading through heading and the pin counter through pinnedTemplate with {count} and {max}. Keep as installed: the imports from @/components/vibeui/ — do not inline their code into the block or swap in your own; the parts receive props only; the local --vibeui-datagrid-014-* palette — do not swap it for your theme tokens; aria-pressed on the pin: it is a state toggle, not a plain action button.
Is Pin On Demand free?
Yes. The preview is open without an account; with a free account you can copy up to 20 components a month.

For developers

npx shadcn@latest add https://vibeui.club/r/pro/datagrid-014.json

This command needs a signed link: sign in and open “Component source” below — it issues a working link valid for 30 minutes. All install options

Technical notes

A composite block: imports from @/components/vibeui/ — the install command brings them along with the block. The block owns the layout and its own text, passes the parts props only and leaves their --vibeui-<name>-* palettes alone. The component is self-contained: one file, no npm dependencies, the palette in --vibeui-datagrid-014-*. A client component: useState holds the list of pinned keys, but the order is taken from the order of the columns rather than of the clicks — otherwise the columns would swap places under the cursor. The column width is fixed by the --vibeui-datagrid-014-col variable together with table-layout:fixed: only that way is left computed by a calc formula, with no measuring in the browser. A sticky cell carries a background of its own, and the table is built with border-collapse:separate. The pin is a button with aria-pressed and an aria-label of its own, and the number of pinned columns is capped by a prop. The scrolling lives in a container with role=region, aria-label and tabindex=0. The theme comes from the surrounding color-scheme through light-dark(): by default the grid lays no panel under itself, it sits directly on the page background and darkens along with it, and an opaque background of its own is left only on the sticky cells.

Tags

  • datagrid
  • sticky-column
  • pinning
  • table
  • composite
Component source

The same file your agent installs. Here in case you would rather copy it by hand.

Loading…