npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

free-grid-react

v0.2.4

Published

A lightweight, high-performance React grid component built with CSS Grid and TypeScript.

Readme

free-grid-react

A lightweight, high-performance, and fully configurable React grid component built with CSS Grid and TypeScript.

Demo

  • Demo app: https://tonytomk.github.io/free-grid-react-demo/
  • Demo app codebase: https://github.com/tonytomk/free-grid-react-app

Features

  • 🚀 Performant: Built with native CSS Grid for smooth rendering.
  • 🎨 MUI-Inspired: Clean, professional aesthetic out of the box.
  • 🛠️ Configurable Headers: Bold labels with vertical dividers and togglable visibility.
  • 🔘 Selection: Built-in checkbox selection with "Select All" support.
  • 📁 Child Views: Easily expand rows to show detailed child components.
  • 📶 Sorting: Built-in support for ascending and descending sort on any column.
  • 🧺 Column Management: Hide/Show individual columns via header menu.
  • ⚙️ Manage Columns: Search and toggle multiple columns visibility through a right-aligned popover.
  • 📄 Pagination: Integrated right-aligned pagination footer.
  • ⌨️ TypeScript: First-class support for types and interfaces.

Installation

npm install free-grid-react

Quick Start

import { Grid } from 'free-grid-react';
import 'free-grid-react/dist/free-grid.css';

const columns = [
  { key: 'name', header: 'Name', flex: 1 },
  { key: 'email', header: 'Email', flex: 1 },
];

const data = [
  { id: 1, name: 'John Doe', email: '[email protected]' },
  { id: 2, name: 'Jane Smith', email: '[email protected]' },
];

function App() {
  return (
    <Grid
      data={data}
      columns={columns}
      selectable={true}
      pagination={{ total: 2, page: 1, pageSize: 10 }}
    />
  );
}

Props

Grid Props

| Prop | Type | Description | | --- | --- | --- | | data | any[] | Array of data objects to display. | | columns | Column[] | Configuration for columns. | | showHeader | boolean | Whether to show the grid header (default: true). | | allowSorting | boolean | true | Enable/disable sorting for the entire grid | | allowReordering | boolean | true | Enable/disable column drag-and-drop reordering | | allowResizing | boolean | true | Enable/disable interactive column resizing | | onSort | function | - | Callback when sorting changes | | selectable | boolean | Enable row selection checkboxes. | | selectedIds | (string\|number)[] | Managed array of selected row IDs. | | onSelectionChange | (ids: any[]) => void | Callback for selection changes. | | renderChildView | (row: any) => ReactNode | Render function for expanded row content. | | pagination | PaginationProps | Pagination configuration. |

Column Properties

| Property | Type | Description | | --- | --- | --- | | key | string | Unique key matching the data property. | | header | string | Header display text. | | width | number \| string | Fixed width (e.g., 100 or '100px'). | | flex | number | Flex grow value (uses fr units). | | sortable | boolean | true | Whether this specific column can be sorted | | hideable | boolean | true | Whether this column can be hidden via the menu | | defaultHidden | boolean | false | Whether the column is hidden by default | | draggable | boolean | true | Whether this specific column can be dragged | | resizable | boolean | true | Whether this specific column can be resized | | minWidth | number | 50 | Minimum width in pixels when resizing | | render | (val, row) => ReactNode | Custom cell renderer. |

Column Management

The grid provides built-in tools for managing columns:

  • Visibility: Toggle columns via the "Manage columns" dialog.
  • Reordering: Drag and drop header cells to change their order, or use "Move left/right" in the column menu.
  • Resizing: Hover between header cells and drag the handle to adjust column widths.
  • Persistence: The grid maintains internal state for column order and widths (you can lift this state if needed by passing controlled props in future updates).
  • Search & Reset: Search for columns, toggle visibility globally, or reset to defaults.

License

MIT © Tony Tom K