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

@shridey/intelligentable

v2.1.0

Published

Intelligentable is a highly customizable, fully-types, performant, and feature-rich React component library built on top of handpicked industry-level production-grade UI Components for modern web applications.

Readme

Intelligentable by @shridey

Intelligentable is a highly customizable, fully-typed, performant, and feature-rich React component library built on top of handpicked industry-level production-grade UI Components for modern web applications.


📦 Installation

npm install @shridey/intelligentable

Changelog

See the CHANGELOG for all updates and release notes.


🧠 IntelligentTable

IntelligentTable is a Modern React TypeScript Table Component built on top of Ant Design, providing advanced, smart, and highly customizable table component.


✨ Features

  • 📊 Automatic Sorting – Enabled smart sorting by default for numbers, dates, days of week, currencies, percentages, ids and string.
  • 📊 Automatic Summary Row – Built-in support for sum, average, count, max, and min operations per column.
  • 🔍 Universal Search – Out-of-the-box search across all columns, or plug in your own custom logic.
  • 🧩 Composable Data Transformation Pipeline – Chain and compose data transformation steps before rendering.
  • 🔎 Smart Numeric Filtering – Out-of-the-box filter support for numbers, ids, percentages, and currencies. Supports exact match (42) and range queries (10-50).
  • 🎨 Legends – Dynamic legend generation based on column color rules, with customizable styles.
  • 📤 Export – Export table data to Excel (XLSX), PDF, JSON, CSV, and TSV formats.
  • 🏷️ Dynamic Cell Coloring – Apply colors to cells based on value thresholds, string matches, or regex.
  • 🌈 Themeable – Fully customize every visual aspect of the table, including legends, summary rows, search box, export buttons, and more.
  • 🛠️ Type Safety – All props and features are fully typed for maximum reliability.

🚀 Quick Start Example

import { IntelligentTable } from "@shridey/intelligentable";
import type { IntelligentTableColumnType } from "@shridey/intelligentable";

function App() {
  const columns: IntelligentTableColumnType[] = [
    {
      title: "Name",
      dataIndex: "name",
      summaryOperation: "count",
    },
    {
      title: "Salary",
      dataIndex: "salary",
      summaryOperation: "sum",
      colorConfig: [
        { min: 0, max: 50000, color: "red" },
        { min: 50000, max: 100000, inclusiveMax: true, color: "green" },
      ],
    },
  ];

  const dataSource = [
    { key: 1, name: "Alice", salary: 40000 },
    { key: 2, name: "Bob", salary: 60000 },
  ];

  return (
    <IntelligentTable
      columns={columns}
      dataSource={dataSource}
      defaultSummary={{ enable: true, fixed: "bottom" }}
      enableLegends
      search={{ enable: true }}
      tableExport={{ enable: true, exportFileName: "MyTable" }}
      tableThemeConfig={{
        legends: { fontSize: "12px" },
      }}
    />
  );
}

export default App;

⚙️ Full Props Reference

| Prop | Type | Description | | ------------------------- | ------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | | columns | IntelligentTableColumnType[] (extends AntD's TableColumnType) | Table columns, supports extra fields: roundOff, colorConfig, summaryOperation, displaySummaryOperationInSummary | | dataSource | readonly AnyObject[] (AntD's) | Table data | | defaultSummary | { enable?: boolean; fixed?: "top" \| "bottom" } | Enables built-in summary row | | enableLegends | boolean | Show legend box | | search | { enable: boolean; placeholder: string; onSearch?: (searchText, row, columns) => boolean } | Built-in search or custom logic | | tableExport | { enable: boolean; exportFileName?: string; pdfFontOptions?: IntelligentTableExportButtonPDFFontOptionsType | Enables export options | | dataTransform | (ctx: { pipeline }) => AnyObject[] | Chain data transformations | | tableThemeConfig | IntelligentTableThemeConfigType (Table Theme from AntD's ThemeConfig) | Theme customization (legend, searchBox, exportButton etc) | | ...other AntD Table props | Supported | All other props from AntD's <Table /> are supported |


...

🔢 Automatic Smart Sorting

IntelligentTable automatically detects the data type of each column and applies the most appropriate sorting logic:

  • Numbers: Sorted numerically
  • Strings: Sorted alphabetically
  • Dates: Sorted chronologically
  • Day of Week: Starting from Sunday to Saturday
  • Currencies, Percentages, IDs: Sorted by their respective types

You do not need to specify a sorter manually—IntelligentTable does it for you!

Example: Smart Sorting

import { IntelligentTable } from "@shridey/intelligentable";
import type { IntelligentTableColumnType } from "@shridey/intelligentable";

const columns: IntelligentTableColumnType[] = [
  {
    title: "Employee ID",
    dataIndex: "id",
    // Smart sorting will sort as numbers
  },
  {
    title: "Name",
    dataIndex: "name",
    // Smart sorting will sort alphabetically
  },
  {
    title: "Joining Date",
    dataIndex: "joiningDate",
    // Smart sorting will sort by date
  },
  {
    title: "Joining Day",
    dataIndex: "joiningDay",
    // Smart sorting will sort by day of week
  },
  {
    title: "Salary",
    dataIndex: "salary",
    // Smart sorting will sort numerically
  },
];

const dataSource = [
  { key: 1, id: 101, name: "Alice", joiningDate: "2022-01-15", salary: 40000 },
  { key: 2, id: 102, name: "Bob", joiningDate: "2021-11-03", salary: 60000 },
];

<IntelligentTable columns={columns} dataSource={dataSource} />;

Overriding Smart Sorting with a Custom Sorter

If you want to override the automatic sorting for a column, simply provide your own sorter function:

const columns: IntelligentTableColumnType[] = [
  {
    title: "Name",
    dataIndex: "name",
    // Override smart sorting with custom sorter
    sorter: (a, b) => a.name.length - b.name.length, // Sort by name length
  },
  // ...other columns
];

🧮 Summary Operations

Set via summaryOperation in column:

  • "sum" – total
  • "average" – mean
  • "count" – count
  • "max" – max value
  • "min" – min value

Example:

{
  title: "Score",
  dataIndex: "score",
  summaryOperation: "average",
}

🎨 Dynamic Cell Coloring & Legends

Add dynamic coloring rules to columns:

colorConfig: [
  { min: 0, max: 50, color: "red" },
  { min: 50, max: 100, inclusiveMax: true, color: "green" },
  { str: "Pending", color: "orange" },
  { regEx: "^Error", color: "red" },
];

Legends are automatically generated and displayed when enableLegends is true.


🔍 Universal Search

Enable built-in search or provide your own logic:

<IntelligentTable
  defaultUniversalSearch={{
    enable: true,
    onSearch: (searchText, row, columns) =>
      columns.some((col) => String(row[col.dataIndex]).includes(searchText)),
  }}
  // ...
/>

📤 Export

Export table data to:

  • Excel (xlsx)
  • PDF
  • JSON
  • CSV
  • TSV

Enable via tableExport prop:

import NotoSans from "@/assets/fonts/NotoSans-Regular.ttf";

<IntelligentTable
  tableExport={{
    enable: true,
    exportFileName: "Report",
    pdfFontOptions: {
      // Optional
      fontUrl: NotoSans,
      fontName: "NotoSans",
      fontFileName: "NotoSans-Regular.ttf",
      fontStyles: ["normal", "bold"],
      fallbackFont: "helvetiva", // Default
    },
  }}
  // ...
/>;

🧩 Data Transformation Pipeline

Chain multiple data transformation steps before rendering:

<IntelligentTable
  dataTransform={({ pipeline }) =>
    pipeline([
      (data) => data.filter((row) => row.active),
      (data) => data.sort((a, b) => a.score - b.score),
      // ...other transformations
    ])
  }
  // ...
/>

Numeric Value Filtering

<IntelligentTable
  columns={[
    {
      title: "ID",
      dataIndex: "id",
      filters: [
        { text: "1", value: "1" },
        { text: "10–50", value: "10-50" },
      ],
    },
    {
      title: "Price",
      dataIndex: "price",
      filters: [
        { text: "100", value: "100" },
        { text: "500–1000", value: "500-1000" },
      ],
      // No need to write onFilters
    },
  ]}
  dataSource={[
    // On activating column filter, below values will be
    { id: 1, price: 200 }, // Filtered
    { id: 25, price: 800 }, // Visible
    { id: 60, price: 1200 }, // Filtered
    // Based on rules defined in filters above
  ]}
/>

🌈 Theme Customization

Customize table appearance via tableThemeConfig:

<IntelligentTable
  tableThemeConfig={{
    legends: { fontSize: "14px", backgroundColor: "#f0f0f0" },
    searchBox: { colorText: "#333" },
    exportButton: { defaultBg: "#1890ff", defaultColor: "#fff" },
    defaultSummaryRow: { backgroundColor: "#fafafa", fontWeight: "bold" },
  }}
  // ...
/>

📜 License

MIT | Made with ❤️ in Mumbai 🇮🇳


✨ More IntelligentComponents Coming Soon!

Stay tuned for updates and new components.


Wanna Talk: Start a discussion or Create an issue