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

@json-render-plugins/recharts

v0.0.2

Published

Recharts component library for @json-render/core. JSON becomes beautiful Recharts charts with React rendering.

Readme

@json-render-plugins/recharts

Recharts component library for @json-render/core. Transform JSON specifications into beautiful Recharts visualizations using React.

Features

  • Six Chart Types: LineChart, AreaChart, PieChart, BarChart, ScatterChart, RadarChart
  • React-Native Rendering: Declarative, composable chart components
  • Full Customization: Comprehensive props for styling and behavior
  • Style Support: All charts support custom style prop for container styling
  • Empty Data Handling: Charts gracefully handle empty data without rendering
  • Type-Safe: Full TypeScript support with Zod schemas
  • React Integration: Seamless integration with @json-render/react

Installation

npm install @json-render-plugins/recharts recharts react react-dom
# or
pnpm add @json-render-plugins/recharts recharts react react-dom
# or
yarn add @json-render-plugins/recharts recharts react react-dom

Quick Start

1. Create a Catalog

Import standard definitions from @json-render-plugins/recharts/catalog:

import { defineCatalog } from "@json-render/core";
import { schema } from "@json-render/react/schema";
import { rechartsComponentDefinitions } from "@json-render-plugins/recharts/catalog";

const catalog = defineCatalog(schema, {
  components: {
    LineChart: rechartsComponentDefinitions.LineChart,
    AreaChart: rechartsComponentDefinitions.AreaChart,
    PieChart: rechartsComponentDefinitions.PieChart,
    BarChart: rechartsComponentDefinitions.BarChart,
    ScatterChart: rechartsComponentDefinitions.ScatterChart,
    RadarChart: rechartsComponentDefinitions.RadarChart,
  },
  actions: {},
});

2. Create a Registry

Import implementations from @json-render-plugins/recharts:

import { defineRegistry } from "@json-render/react";
import { rechartsComponents } from "@json-render-plugins/recharts";

const { registry } = defineRegistry(catalog, {
  components: {
    LineChart: rechartsComponents.LineChart,
    AreaChart: rechartsComponents.AreaChart,
    PieChart: rechartsComponents.PieChart,
    BarChart: rechartsComponents.BarChart,
    ScatterChart: rechartsComponents.ScatterChart,
    RadarChart: rechartsComponents.RadarChart,
  },
});

3. Render

import { Renderer } from "@json-render/react";

function App({ spec }) {
  return <Renderer spec={spec} registry={registry} />;
}

Components

LineChart

Line charts display data trends over time or categories. Supports area fills, smooth curves, and symbol customization. Multiple series can share the same coordinate system. Use smooth=true for curved lines, areaStyle=true for filled regions.

{
  "type": "LineChart",
  "props": {
    "xAxisData": ["Jan", "Feb", "Mar", "Apr", "May"],
    "series": [
      {
        "name": "Revenue",
        "data": [120, 200, 150, 80, 70],
        "smooth": true,
        "areaStyle": true
      },
      {
        "name": "Cost",
        "data": [80, 100, 120, 60, 50]
      }
    ],
    "title": "Financial Overview",
    "showTooltip": true,
    "showLegend": true
  }
}

Key Props:

  • xAxisData: Array of X-axis labels
  • series: Array of line series with name, data, and optional styling
  • smooth: Enable smooth curves (monotone interpolation)
  • areaStyle: Fill area under line
  • symbol: Point marker shape — "circle", "square", "triangle", "diamond", "none"
  • symbolSize: Dot radius in pixels
  • lineStyle: Line style with width and type ("solid", "dashed", "dotted")

PieChart

Pie and donut charts showing data proportions and percentages. Use innerRadius and outerRadius to create donut charts. Each slice can have a custom color.

{
  "type": "PieChart",
  "props": {
    "data": [
      { "name": "Category A", "value": 335 },
      { "name": "Category B", "value": 310 },
      { "name": "Category C", "value": 234 }
    ],
    "title": "Market Share",
    "innerRadius": "40%",
    "outerRadius": "70%",
    "showLabel": true,
    "showTooltip": true
  }
}

Key Props:

  • data: Array of slices with name, value, and optional color
  • innerRadius: Inner radius for donut charts (e.g. "40%" or 80)
  • outerRadius: Outer radius of the pie (e.g. "70%" or 120); defaults to "50%"
  • cx / cy: Center position; defaults to "50%" / "50%"
  • showLabel: Show percentage labels on slices (default true)

BarChart

Bar charts featuring stacked series and custom styling. Supports stacking multiple series with the stack property, custom bar sizes, and background bars. Use horizontal=true for horizontal bars.

{
  "type": "BarChart",
  "props": {
    "xAxisData": ["Product A", "Product B", "Product C"],
    "series": [
      { "name": "Sales", "data": [320, 332, 301] },
      { "name": "Marketing", "data": [120, 132, 101], "stack": "total" }
    ],
    "title": "Product Performance",
    "showTooltip": true,
    "horizontal": false
  }
}

Key Props:

  • xAxisData: Array of X-axis labels
  • series: Array of bar series with name, data, and optional styling
  • horizontal: Flip to horizontal bars (default false)
  • stack: Group name for stacked bars — bars with the same stack value are stacked
  • barSize: Fixed bar width in pixels
  • maxBarSize: Maximum bar width in pixels
  • background: Show background bar behind each bar
  • backgroundColor: Background bar color (default "#f5f5f5")

AreaChart

Area charts display cumulative data over time with filled regions. Supports stacked areas and gradient fills for enhanced visualization.

{
  "type": "AreaChart",
  "props": {
    "xAxisData": ["Jan", "Feb", "Mar", "Apr", "May"],
    "series": [
      {
        "name": "Revenue",
        "data": [4000, 3000, 2000, 2780, 1890],
        "fillOpacity": 0.6
      },
      {
        "name": "Expenses",
        "data": [2400, 1398, 9800, 3908, 4800],
        "stackId": "a",
        "fillOpacity": 0.6
      }
    ],
    "title": "Financial Overview",
    "smooth": true
  }
}

Key Props:

  • xAxisData: Array of X-axis labels
  • series: Array of area series with name, data, and optional styling
  • smooth: Enable smooth curves (default false)
  • fillOpacity: Area fill transparency (0-1, default 0.6)
  • stackId: Group name for stacked areas — areas with the same stackId are stacked

ScatterChart

Scatter charts display data points on a two-dimensional coordinate system. Ideal for showing relationships between variables. Supports bubble charts via the z property.

{
  "type": "ScatterChart",
  "props": {
    "series": [
      {
        "name": "Group A",
        "data": [
          { "x": 100, "y": 200, "z": 200 },
          { "x": 120, "y": 100, "z": 260 },
          { "x": 170, "y": 300, "z": 400 }
        ]
      }
    ],
    "title": "Correlation Analysis",
    "xAxisName": "Variable X",
    "yAxisName": "Variable Y"
  }
}

Key Props:

  • series: Array of scatter series with name and data
  • data: Array of points with x, y coordinates and optional z for bubble size
  • xAxisName: Label for X-axis
  • yAxisName: Label for Y-axis

RadarChart

Radar charts display multivariate data on a spider diagram. Perfect for comparing multiple quantitative variables across categories.

{
  "type": "RadarChart",
  "props": {
    "data": [
      { "name": "Math", "A": 120, "B": 110 },
      { "name": "Chinese", "A": 98, "B": 130 },
      { "name": "English", "A": 86, "B": 130 }
    ],
    "series": [
      { "name": "Student A", "dataKey": "A", "fillOpacity": 0.6 },
      { "name": "Student B", "dataKey": "B", "fillOpacity": 0.6 }
    ],
    "title": "Student Performance"
  }
}

Key Props:

  • data: Array of category objects with dynamic keys for each series
  • series: Array of radar series with name, dataKey, and optional styling
  • dataKey: Property name in data objects to use for this series
  • fillOpacity: Polygon fill transparency (0-1, default 0.6)

Common Props

All charts support these common properties:

Layout & Style

| Prop | Type | Description | |------|------|-------------| | style | object | Custom styles for chart container (supports width, height, maxWidth, aspectRatio, etc.) | | margin | { top?, right?, left?, bottom? } | Chart margins |

Title

| Prop | Type | Description | |------|------|-------------| | title | string | Main title text | | titleSubtext | string | Subtitle text |

Legend

| Prop | Type | Default | Description | |------|------|---------|-------------| | showLegend | boolean | true (multi-series) | Show/hide legend | | legendPosition | "top" \| "bottom" \| "left" \| "right" | "top" | Legend position |

Tooltip

| Prop | Type | Default | Description | |------|------|---------|-------------| | showTooltip | boolean | true | Show/hide tooltip |

Axis (LineChart, BarChart)

| Prop | Type | Description | |------|------|-------------| | xAxisName | string | X-axis label | | yAxisName | string | Y-axis label | | showXAxis | boolean | Show/hide X-axis | | showYAxis | boolean | Show/hide Y-axis | | showGrid | boolean | Show/hide grid lines (default true) |

Animation

| Prop | Type | Default | Description | |------|------|---------|-------------| | animation | boolean | true | Enable animations | | animationDuration | number | 1000 | Duration in ms |

Events

All components support two independent events:

{
  "type": "LineChart",
  "props": { "..." },
  "on": {
    "click": [{ "action": "handleChartClick" }],
    "legendClick": [{ "action": "handleLegendToggle" }]
  }
}

Available events:

  • click: Triggered when clicking on the chart area or data points
  • legendClick: Triggered when clicking a legend item

Empty Data Handling

All chart components gracefully handle empty data:

  • LineChart/AreaChart/BarChart: Returns null when xAxisData or series is empty
  • PieChart: Returns null when data is empty
  • ScatterChart: Returns null when series is empty
  • RadarChart: Returns null when data or series is empty

This prevents rendering errors and console warnings during streaming when data is being populated incrementally.

Exports

| Entry Point | Exports | |-------------|---------| | @json-render-plugins/recharts | rechartsComponents | | @json-render-plugins/recharts/catalog | rechartsComponentDefinitions, RechartsProps, ComponentDefinition, BindingsConfig, EmitFunction |

The /catalog entry point contains only Zod schemas (no React dependency), so it can be used in server-side code for prompt generation.

License

MIT