---
name: "@evilcharts"
slug: "evilcharts"
description: "EvilCharts is an open-source chart UI library built on shadcn/ui and Recharts. It provides handcrafted, visually styled chart components across eight types: area, line, bar, composed, radar, pie, radial, and Sankey charts. The docs site also ships UI utilities including a background component, tooltip, and legend, plus a chart-config system for consistent theming. Free and MIT licensed, distributed via the shadcn registry. Use for: adding Recharts-powered charts with opinionated, on-brand styling to a shadcn/ui project when the default shadcn chart appearance needs more visual polish without writing custom Recharts configuration from scratch."
category: "Charts/data viz"
tags: ["accessibility", "animation", "backgrounds", "blocks", "charts", "cms", "dashboard", "glassmorphism", "hooks", "icons", "loaders", "mobile", "overlays", "theming"]
framework: "react"
license: "MIT"
author: "legions-developer"
website: "https://evilcharts.com"
github: "https://github.com/legions-developer/evilcharts"
registry: "https://evilcharts.com/r/registry.json"
pro: false
pro_url: null
github_stars: 2554
component_count: 250
generated_at: "2026-07-28T08:00:50.948Z"
---

# @evilcharts

EvilCharts is an open-source chart UI library built on shadcn/ui and Recharts. It provides handcrafted, visually styled chart components across eight types: area, line, bar, composed, radar, pie, radial, and Sankey charts. The docs site also ships UI utilities including a background component, tooltip, and legend, plus a chart-config system for consistent theming. Free and MIT licensed, distributed via the shadcn registry. Use for: adding Recharts-powered charts with opinionated, on-brand styling to a shadcn/ui project when the default shadcn chart appearance needs more visual polish without writing custom Recharts configuration from scratch.

## Links

- Website: https://evilcharts.com
- GitHub: https://github.com/legions-developer/evilcharts
- Registry JSON: https://evilcharts.com/r/registry.json
- Directory page: https://sh4dcn.vercel.app/registry/evilcharts
- This file: https://sh4dcn.vercel.app/md/evilcharts.md

## Install

```sh
# add the whole registry (shadcn CLI)
npx shadcn@latest add https://evilcharts.com/r/registry.json
pnpm dlx shadcn@latest add https://evilcharts.com/r/registry.json
bunx shadcn@latest add https://evilcharts.com/r/registry.json
# clone the source repo
git clone https://github.com/legions-developer/evilcharts.git
# fetch the raw registry index
curl -s https://evilcharts.com/r/registry.json
```

## Components (250)

| name | type | description | install |
| --- | --- | --- | --- |
| recharts-chart | registry:component | — | `npx shadcn@latest add https://evilcharts.com/r/recharts-chart.json` |
| recharts-tooltip | registry:component | — | `npx shadcn@latest add https://evilcharts.com/r/recharts-tooltip.json` |
| recharts-legend | registry:component | — | `npx shadcn@latest add https://evilcharts.com/r/recharts-legend.json` |
| recharts-dot | registry:component | — | `npx shadcn@latest add https://evilcharts.com/r/recharts-dot.json` |
| recharts-brush | registry:component | — | `npx shadcn@latest add https://evilcharts.com/r/recharts-brush.json` |
| recharts-background | registry:component | — | `npx shadcn@latest add https://evilcharts.com/r/recharts-background.json` |
| echarts-chart | registry:component | — | `npx shadcn@latest add https://evilcharts.com/r/echarts-chart.json` |
| echarts-tooltip | registry:component | — | `npx shadcn@latest add https://evilcharts.com/r/echarts-tooltip.json` |
| echarts-legend | registry:component | — | `npx shadcn@latest add https://evilcharts.com/r/echarts-legend.json` |
| echarts-dot | registry:component | — | `npx shadcn@latest add https://evilcharts.com/r/echarts-dot.json` |
| echarts-brush | registry:component | — | `npx shadcn@latest add https://evilcharts.com/r/echarts-brush.json` |
| echarts-area-chart | registry:component | Area chart component rendered with Apache ECharts | `npx shadcn@latest add https://evilcharts.com/r/echarts-area-chart.json` |
| echarts-line-chart | registry:component | Line chart component rendered with Apache ECharts | `npx shadcn@latest add https://evilcharts.com/r/echarts-line-chart.json` |
| echarts-bar-chart | registry:component | Bar chart component rendered with Apache ECharts | `npx shadcn@latest add https://evilcharts.com/r/echarts-bar-chart.json` |
| echarts-composed-chart | registry:component | Composed chart component rendered with Apache ECharts | `npx shadcn@latest add https://evilcharts.com/r/echarts-composed-chart.json` |
| echarts-radar-chart | registry:component | Radar chart component rendered with Apache ECharts | `npx shadcn@latest add https://evilcharts.com/r/echarts-radar-chart.json` |
| echarts-pie-chart | registry:component | Pie chart component rendered with Apache ECharts | `npx shadcn@latest add https://evilcharts.com/r/echarts-pie-chart.json` |
| echarts-radial-chart | registry:component | Radial chart component rendered with Apache ECharts | `npx shadcn@latest add https://evilcharts.com/r/echarts-radial-chart.json` |
| echarts-sankey-chart | registry:component | Sankey chart component rendered with Apache ECharts | `npx shadcn@latest add https://evilcharts.com/r/echarts-sankey-chart.json` |
| recharts-area-chart | registry:component | Area chart component | `npx shadcn@latest add https://evilcharts.com/r/recharts-area-chart.json` |
| recharts-line-chart | registry:component | Line chart component | `npx shadcn@latest add https://evilcharts.com/r/recharts-line-chart.json` |
| recharts-bar-chart | registry:component | Bar chart component | `npx shadcn@latest add https://evilcharts.com/r/recharts-bar-chart.json` |
| recharts-composed-chart | registry:component | Composed chart component combining bar and line charts | `npx shadcn@latest add https://evilcharts.com/r/recharts-composed-chart.json` |
| recharts-pie-chart | registry:component | Pie chart component with donut, gradient, and glow effects | `npx shadcn@latest add https://evilcharts.com/r/recharts-pie-chart.json` |
| recharts-radial-chart | registry:component | Radial bar chart component with full and semi-circle variants | `npx shadcn@latest add https://evilcharts.com/r/recharts-radial-chart.json` |
| recharts-radar-chart | registry:component | Radar chart component with filled and lines variants | `npx shadcn@latest add https://evilcharts.com/r/recharts-radar-chart.json` |
| recharts-sankey-chart | registry:component | Sankey chart component for visualizing flow data with nodes and links | `npx shadcn@latest add https://evilcharts.com/r/recharts-sankey-chart.json` |
| ex-hover-highlight-echarts-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-hover-highlight-echarts-area-chart.json` |
| ex-echarts-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-echarts-area-chart.json` |
| ex-brush-echarts-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-brush-echarts-area-chart.json` |
| ex-buffer-echarts-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-buffer-echarts-area-chart.json` |
| ex-hover-reveal-echarts-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-hover-reveal-echarts-area-chart.json` |
| ex-animated-dashed-stroke-echarts-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-animated-dashed-stroke-echarts-area-chart.json` |
| ex-bump-curve-type-echarts-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-bump-curve-type-echarts-area-chart.json` |
| ex-dashed-stroke-echarts-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-dashed-stroke-echarts-area-chart.json` |
| ex-default-type-echarts-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-default-type-echarts-area-chart.json` |
| ex-dotted-area-variant-echarts-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-dotted-area-variant-echarts-area-chart.json` |
| ex-expanded-type-echarts-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-expanded-type-echarts-area-chart.json` |
| ex-gradient-area-variant-echarts-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-gradient-area-variant-echarts-area-chart.json` |
| ex-gradient-colors-echarts-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-gradient-colors-echarts-area-chart.json` |
| ex-gradient-colors-bump-echarts-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-gradient-colors-bump-echarts-area-chart.json` |
| ex-gradient-reverse-area-variant-echarts-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-gradient-reverse-area-variant-echarts-area-chart.json` |
| ex-hatched-area-variant-echarts-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-hatched-area-variant-echarts-area-chart.json` |
| ex-lines-area-variant-echarts-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-lines-area-variant-echarts-area-chart.json` |
| ex-loading-state-echarts-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-loading-state-echarts-area-chart.json` |
| ex-monotoney-curve-type-echarts-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-monotoney-curve-type-echarts-area-chart.json` |
| ex-solid-area-variant-echarts-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-solid-area-variant-echarts-area-chart.json` |
| ex-solid-stroke-echarts-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-solid-stroke-echarts-area-chart.json` |
| ex-stacked-type-echarts-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-stacked-type-echarts-area-chart.json` |
| ex-step-curve-type-echarts-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-step-curve-type-echarts-area-chart.json` |
| ex-echarts-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-echarts-line-chart.json` |
| ex-gradient-colors-echarts-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-gradient-colors-echarts-line-chart.json` |
| ex-gradient-colors-bump-echarts-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-gradient-colors-bump-echarts-line-chart.json` |
| ex-loading-state-echarts-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-loading-state-echarts-line-chart.json` |
| ex-bump-curve-type-echarts-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-bump-curve-type-echarts-line-chart.json` |
| ex-step-curve-type-echarts-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-step-curve-type-echarts-line-chart.json` |
| ex-monotoney-curve-type-echarts-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-monotoney-curve-type-echarts-line-chart.json` |
| ex-solid-stroke-echarts-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-solid-stroke-echarts-line-chart.json` |
| ex-dashed-stroke-echarts-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-dashed-stroke-echarts-line-chart.json` |
| ex-animated-dashed-stroke-echarts-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-animated-dashed-stroke-echarts-line-chart.json` |
| ex-glowing-desktop-echarts-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-glowing-desktop-echarts-line-chart.json` |
| ex-glowing-mobile-echarts-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-glowing-mobile-echarts-line-chart.json` |
| ex-buffer-echarts-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-buffer-echarts-line-chart.json` |
| ex-hover-reveal-echarts-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-hover-reveal-echarts-line-chart.json` |
| ex-dot-default-echarts-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-dot-default-echarts-line-chart.json` |
| ex-dot-border-echarts-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-dot-border-echarts-line-chart.json` |
| ex-dot-colored-border-echarts-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-dot-colored-border-echarts-line-chart.json` |
| ex-dot-ping-echarts-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-dot-ping-echarts-line-chart.json` |
| ex-legend-square-echarts-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-legend-square-echarts-line-chart.json` |
| ex-legend-circle-echarts-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-legend-circle-echarts-line-chart.json` |
| ex-legend-circle-outline-echarts-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-legend-circle-outline-echarts-line-chart.json` |
| ex-legend-rounded-square-echarts-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-legend-rounded-square-echarts-line-chart.json` |
| ex-legend-rounded-square-outline-echarts-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-legend-rounded-square-outline-echarts-line-chart.json` |
| ex-legend-vertical-bar-echarts-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-legend-vertical-bar-echarts-line-chart.json` |
| ex-legend-horizontal-bar-echarts-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-legend-horizontal-bar-echarts-line-chart.json` |
| ex-echarts-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-echarts-bar-chart.json` |
| ex-buffer-echarts-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-buffer-echarts-bar-chart.json` |
| ex-gradient-colors-echarts-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-gradient-colors-echarts-bar-chart.json` |
| ex-loading-state-echarts-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-loading-state-echarts-bar-chart.json` |
| ex-default-variant-echarts-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-default-variant-echarts-bar-chart.json` |
| ex-expandable-variant-echarts-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-expandable-variant-echarts-bar-chart.json` |
| ex-max-highlight-echarts-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-max-highlight-echarts-bar-chart.json` |
| ex-blocks-variant-echarts-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-blocks-variant-echarts-bar-chart.json` |
| ex-hatched-variant-echarts-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-hatched-variant-echarts-bar-chart.json` |
| ex-duotone-variant-echarts-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-duotone-variant-echarts-bar-chart.json` |
| ex-duotone-reverse-variant-echarts-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-duotone-reverse-variant-echarts-bar-chart.json` |
| ex-gradient-variant-echarts-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-gradient-variant-echarts-bar-chart.json` |
| ex-stripped-variant-echarts-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-stripped-variant-echarts-bar-chart.json` |
| ex-stacked-type-echarts-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-stacked-type-echarts-bar-chart.json` |
| ex-percent-type-echarts-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-percent-type-echarts-bar-chart.json` |
| ex-horizontal-layout-echarts-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-horizontal-layout-echarts-bar-chart.json` |
| ex-hover-highlight-echarts-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-hover-highlight-echarts-bar-chart.json` |
| ex-glowing-desktop-echarts-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-glowing-desktop-echarts-bar-chart.json` |
| ex-glowing-mobile-echarts-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-glowing-mobile-echarts-bar-chart.json` |
| ex-tooltip-default-echarts-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-tooltip-default-echarts-bar-chart.json` |
| ex-tooltip-frosted-glass-echarts-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-tooltip-frosted-glass-echarts-bar-chart.json` |
| ex-chart-config-default-echarts-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-chart-config-default-echarts-bar-chart.json` |
| ex-chart-config-icons-echarts-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-chart-config-icons-echarts-bar-chart.json` |
| ex-echarts-composed-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-echarts-composed-chart.json` |
| ex-gradient-colors-echarts-composed-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-gradient-colors-echarts-composed-chart.json` |
| ex-loading-state-echarts-composed-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-loading-state-echarts-composed-chart.json` |
| ex-hatched-variant-echarts-composed-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-hatched-variant-echarts-composed-chart.json` |
| ex-duotone-variant-echarts-composed-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-duotone-variant-echarts-composed-chart.json` |
| ex-gradient-variant-echarts-composed-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-gradient-variant-echarts-composed-chart.json` |
| ex-stripped-variant-echarts-composed-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-stripped-variant-echarts-composed-chart.json` |
| ex-dashed-stroke-echarts-composed-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-dashed-stroke-echarts-composed-chart.json` |
| ex-animated-dashed-stroke-echarts-composed-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-animated-dashed-stroke-echarts-composed-chart.json` |
| ex-bump-curve-echarts-composed-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-bump-curve-echarts-composed-chart.json` |
| ex-dots-echarts-composed-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-dots-echarts-composed-chart.json` |
| ex-hover-highlight-echarts-composed-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-hover-highlight-echarts-composed-chart.json` |
| ex-glowing-echarts-composed-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-glowing-echarts-composed-chart.json` |
| ex-echarts-radar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-echarts-radar-chart.json` |
| ex-lines-variant-echarts-radar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-lines-variant-echarts-radar-chart.json` |
| ex-circle-grid-echarts-radar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-circle-grid-echarts-radar-chart.json` |
| ex-gradient-colors-echarts-radar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-gradient-colors-echarts-radar-chart.json` |
| ex-loading-state-echarts-radar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-loading-state-echarts-radar-chart.json` |
| ex-echarts-pie-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-echarts-pie-chart.json` |
| ex-gradient-colors-echarts-pie-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-gradient-colors-echarts-pie-chart.json` |
| ex-donut-echarts-pie-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-donut-echarts-pie-chart.json` |
| ex-padded-echarts-pie-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-padded-echarts-pie-chart.json` |
| ex-overlapping-padded-echarts-pie-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-overlapping-padded-echarts-pie-chart.json` |
| ex-labels-echarts-pie-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-labels-echarts-pie-chart.json` |
| ex-loading-state-echarts-pie-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-loading-state-echarts-pie-chart.json` |
| ex-outside-labels-echarts-pie-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-outside-labels-echarts-pie-chart.json` |
| ex-echarts-radial-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-echarts-radial-chart.json` |
| ex-semi-variant-echarts-radial-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-semi-variant-echarts-radial-chart.json` |
| ex-gradient-colors-echarts-radial-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-gradient-colors-echarts-radial-chart.json` |
| ex-loading-state-echarts-radial-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-loading-state-echarts-radial-chart.json` |
| ex-echarts-sankey-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-echarts-sankey-chart.json` |
| ex-gradient-colors-echarts-sankey-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-gradient-colors-echarts-sankey-chart.json` |
| ex-loading-state-echarts-sankey-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-loading-state-echarts-sankey-chart.json` |
| ex-solid-link-variant-echarts-sankey-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-solid-link-variant-echarts-sankey-chart.json` |
| ex-source-link-variant-echarts-sankey-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-source-link-variant-echarts-sankey-chart.json` |
| ex-labeled-nodes-echarts-sankey-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-labeled-nodes-echarts-sankey-chart.json` |
| ex-outside-labels-echarts-sankey-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-outside-labels-echarts-sankey-chart.json` |
| ex-solid-labeled-nodes-echarts-sankey-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-solid-labeled-nodes-echarts-sankey-chart.json` |
| ex-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-area-chart.json` |
| ex-brush-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-brush-area-chart.json` |
| ex-gradient-colors-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-gradient-colors-area-chart.json` |
| ex-gradient-colors-bump-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-gradient-colors-bump-area-chart.json` |
| ex-loading-state-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-loading-state-area-chart.json` |
| ex-default-type-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-default-type-area-chart.json` |
| ex-stacked-type-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-stacked-type-area-chart.json` |
| ex-expanded-type-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-expanded-type-area-chart.json` |
| ex-bump-curve-type-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-bump-curve-type-area-chart.json` |
| ex-step-curve-type-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-step-curve-type-area-chart.json` |
| ex-monotoney-curve-type-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-monotoney-curve-type-area-chart.json` |
| ex-solid-stroke-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-solid-stroke-area-chart.json` |
| ex-dashed-stroke-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-dashed-stroke-area-chart.json` |
| ex-animated-dashed-stroke-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-animated-dashed-stroke-area-chart.json` |
| ex-gradient-area-variant-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-gradient-area-variant-area-chart.json` |
| ex-gradient-reverse-area-variant-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-gradient-reverse-area-variant-area-chart.json` |
| ex-solid-area-variant-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-solid-area-variant-area-chart.json` |
| ex-dotted-area-variant-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-dotted-area-variant-area-chart.json` |
| ex-lines-area-variant-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-lines-area-variant-area-chart.json` |
| ex-hatched-area-variant-area-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-hatched-area-variant-area-chart.json` |
| ex-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-line-chart.json` |
| ex-dot-default-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-dot-default-line-chart.json` |
| ex-dot-border-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-dot-border-line-chart.json` |
| ex-dot-colored-border-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-dot-colored-border-line-chart.json` |
| ex-gradient-colors-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-gradient-colors-line-chart.json` |
| ex-gradient-colors-bump-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-gradient-colors-bump-line-chart.json` |
| ex-loading-state-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-loading-state-line-chart.json` |
| ex-bump-curve-type-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-bump-curve-type-line-chart.json` |
| ex-step-curve-type-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-step-curve-type-line-chart.json` |
| ex-monotoney-curve-type-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-monotoney-curve-type-line-chart.json` |
| ex-solid-stroke-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-solid-stroke-line-chart.json` |
| ex-dashed-stroke-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-dashed-stroke-line-chart.json` |
| ex-animated-dashed-stroke-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-animated-dashed-stroke-line-chart.json` |
| ex-glowing-desktop-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-glowing-desktop-line-chart.json` |
| ex-glowing-mobile-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-glowing-mobile-line-chart.json` |
| ex-buffer-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-buffer-line-chart.json` |
| ex-bg-dots-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-bg-dots-line-chart.json` |
| ex-bg-grid-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-bg-grid-line-chart.json` |
| ex-bg-cross-hatch-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-bg-cross-hatch-line-chart.json` |
| ex-bg-diagonal-lines-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-bg-diagonal-lines-line-chart.json` |
| ex-bg-plus-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-bg-plus-line-chart.json` |
| ex-bg-falling-triangles-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-bg-falling-triangles-line-chart.json` |
| ex-bg-4-pointed-star-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-bg-4-pointed-star-line-chart.json` |
| ex-bg-tiny-checkers-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-bg-tiny-checkers-line-chart.json` |
| ex-bg-overlapping-circles-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-bg-overlapping-circles-line-chart.json` |
| ex-bg-wiggle-lines-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-bg-wiggle-lines-line-chart.json` |
| ex-bg-bubbles-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-bg-bubbles-line-chart.json` |
| ex-buffer-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-buffer-bar-chart.json` |
| ex-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-bar-chart.json` |
| ex-gradient-colors-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-gradient-colors-bar-chart.json` |
| ex-loading-state-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-loading-state-bar-chart.json` |
| ex-default-variant-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-default-variant-bar-chart.json` |
| ex-hatched-variant-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-hatched-variant-bar-chart.json` |
| ex-duotone-variant-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-duotone-variant-bar-chart.json` |
| ex-duotone-reverse-variant-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-duotone-reverse-variant-bar-chart.json` |
| ex-gradient-variant-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-gradient-variant-bar-chart.json` |
| ex-stripped-variant-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-stripped-variant-bar-chart.json` |
| ex-stacked-type-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-stacked-type-bar-chart.json` |
| ex-percent-type-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-percent-type-bar-chart.json` |
| ex-horizontal-layout-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-horizontal-layout-bar-chart.json` |
| ex-hover-highlight-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-hover-highlight-bar-chart.json` |
| ex-glowing-desktop-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-glowing-desktop-bar-chart.json` |
| ex-glowing-mobile-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-glowing-mobile-bar-chart.json` |
| ex-composed-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-composed-chart.json` |
| ex-gradient-colors-composed-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-gradient-colors-composed-chart.json` |
| ex-loading-state-composed-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-loading-state-composed-chart.json` |
| ex-hatched-variant-composed-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-hatched-variant-composed-chart.json` |
| ex-duotone-variant-composed-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-duotone-variant-composed-chart.json` |
| ex-gradient-variant-composed-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-gradient-variant-composed-chart.json` |
| ex-stripped-variant-composed-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-stripped-variant-composed-chart.json` |
| ex-dashed-stroke-composed-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-dashed-stroke-composed-chart.json` |
| ex-animated-dashed-stroke-composed-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-animated-dashed-stroke-composed-chart.json` |
| ex-bump-curve-composed-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-bump-curve-composed-chart.json` |
| ex-dots-composed-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-dots-composed-chart.json` |
| ex-hover-highlight-composed-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-hover-highlight-composed-chart.json` |
| ex-glowing-composed-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-glowing-composed-chart.json` |
| ex-pie-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-pie-chart.json` |
| ex-gradient-colors-pie-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-gradient-colors-pie-chart.json` |
| ex-donut-pie-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-donut-pie-chart.json` |
| ex-padded-pie-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-padded-pie-chart.json` |
| ex-overlapping-padded-pie-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-overlapping-padded-pie-chart.json` |
| ex-labels-pie-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-labels-pie-chart.json` |
| ex-loading-state-pie-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-loading-state-pie-chart.json` |
| ex-glowing-pie-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-glowing-pie-chart.json` |
| ex-radial-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-radial-chart.json` |
| ex-semi-variant-radial-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-semi-variant-radial-chart.json` |
| ex-gradient-colors-radial-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-gradient-colors-radial-chart.json` |
| ex-loading-state-radial-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-loading-state-radial-chart.json` |
| ex-radar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-radar-chart.json` |
| ex-lines-variant-radar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-lines-variant-radar-chart.json` |
| ex-circle-grid-radar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-circle-grid-radar-chart.json` |
| ex-gradient-colors-radar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-gradient-colors-radar-chart.json` |
| ex-loading-state-radar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-loading-state-radar-chart.json` |
| ex-glowing-radar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-glowing-radar-chart.json` |
| ex-sankey-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-sankey-chart.json` |
| ex-gradient-colors-sankey-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-gradient-colors-sankey-chart.json` |
| ex-loading-state-sankey-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-loading-state-sankey-chart.json` |
| ex-solid-link-variant-sankey-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-solid-link-variant-sankey-chart.json` |
| ex-source-link-variant-sankey-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-source-link-variant-sankey-chart.json` |
| ex-labeled-nodes-sankey-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-labeled-nodes-sankey-chart.json` |
| ex-outside-labels-sankey-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-outside-labels-sankey-chart.json` |
| ex-solid-labeled-nodes-sankey-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-solid-labeled-nodes-sankey-chart.json` |
| ex-tooltip-default-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-tooltip-default-bar-chart.json` |
| ex-tooltip-frosted-glass-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-tooltip-frosted-glass-bar-chart.json` |
| ex-legend-square-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-legend-square-line-chart.json` |
| ex-legend-circle-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-legend-circle-line-chart.json` |
| ex-legend-circle-outline-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-legend-circle-outline-line-chart.json` |
| ex-legend-rounded-square-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-legend-rounded-square-line-chart.json` |
| ex-legend-rounded-square-outline-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-legend-rounded-square-outline-line-chart.json` |
| ex-legend-vertical-bar-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-legend-vertical-bar-line-chart.json` |
| ex-legend-horizontal-bar-line-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-legend-horizontal-bar-line-chart.json` |
| ex-chart-config-default-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-chart-config-default-bar-chart.json` |
| ex-chart-config-icons-bar-chart | registry:block | — | `npx shadcn@latest add https://evilcharts.com/r/ex-chart-config-icons-bar-chart.json` |
| monospace-bar-chart | registry:block | Monospace bar chart component | `npx shadcn@latest add https://evilcharts.com/r/monospace-bar-chart.json` |

## For AI agents

```text
You are adding components from @evilcharts to a shadcn-compatible project.
1. Read this file (https://sh4dcn.vercel.app/md/evilcharts.md) for the component list.
2. Fetch the machine-readable index: https://evilcharts.com/r/registry.json
3. Install a single component with its install command from the table above.
4. Full structured record: https://sh4dcn.vercel.app/json (library slug: evilcharts).
```
