Broad support for building analysis and dashboard tooling — 42 themed chart recipes across four families, designed so metrics are a first-class part of any Lantern surface.
Lantern Fire v0.3.0 is an analytics release. Charts are now a first-class part of the design system, not a one-off you wire up per project. Forty-two chart recipes ship across four families, all themed against the Lantern token palette, all opt-in by family, all ready to drop into a dashboard, report, or internal tool.
Install:
npm install @lantern-product/ui@0.3.0
Docs: design.lantern.codes/charts
Why metrics matter for Lantern
The work happening across Lantern is increasingly metrics-shaped — engagement loops, operator dashboards, customer-facing analytics, internal back-office views. Until now, every team that needed a chart reached for raw Recharts or Chart.js, picked their own colors, designed their own tooltip and legend chrome, and ended up with surfaces that felt bolted-on instead of native to the design language.
This release closes that gap. The same way Card, Table, and Dialog are reusable surfaces with consistent affordances, ChartLineInteractive, ChartBarStacked, and ChartPieDonutText are now reusable visualizations with consistent palette, motion, and chrome. A dashboard built on Lantern Fire reads as a dashboard built at Lantern — not "an app, plus a charts library."
Four families, 42 recipes
| Family |
Subpath |
Variants |
| Area |
@lantern-product/ui/charts/area |
10 |
| Bar |
@lantern-product/ui/charts/bar |
10 |
| Line |
@lantern-product/ui/charts/line |
10 |
| Pie |
@lantern-product/ui/charts/pie |
11 |
Each family covers the full range of analytical use cases:
- Area — simple, linear, step, stacked, stacked-expand, gradient, legend, axes, icons, interactive (date-range selector over 3 months of daily data)
- Bar — default, horizontal, multiple, stacked + legend, label, custom label, mixed (per-bar colors), active (highlighted sector), negative (split positive/negative), interactive (metric switcher)
- Line — default, linear, step, multiple, dots, dots-colors, dots-custom (icon markers), label, custom label, interactive
- Pie — simple, no-separator, label, custom label, label-list, legend, donut, donut-active, donut-text (centered total), stacked (concentric), interactive (Select-driven active sector)
Every recipe themes its series through --chart-1 through --chart-5 — the same Lantern OKLCH chart tokens that appear on the /tokens page. Light and dark mode swap palettes automatically. No per-chart color picking, no theme drift between dashboards.
Opt-in, family-by-family
Recharts is not cheap (50-150 KB per family). To keep that cost off apps that don't need every chart type, each family ships as its own subpath bundle:
import { ChartLineInteractive } from "@lantern-product/ui/charts/line";
import { ChartPieDonutText } from "@lantern-product/ui/charts/pie";
An app that uses only line charts pays for only the line bundle. An app that needs all four families pays for all four. The main @lantern-product/ui entry remains Recharts-free — Button, Card, Table, etc. import costs are unchanged.
Chart primitives (the underlying ChartContainer, ChartTooltip, ChartLegend from shadcn's chart spec) continue to live at the existing @lantern-product/ui/chart subpath for projects building bespoke visualizations on top of Recharts.
Designed for dashboards and prototyping
The same vibe-coded-prototype framing from v0.1.1 holds: a ChartLineInteractive next to a Card, a Table, and a Sidebar is 80% of an internal dashboard. The dashboard looks like Lantern from the first render — themed tooltips, themed legend, themed selector chrome, dark mode out of the box, keyboard-accessible Recharts primitives underneath — so the gap between "spike" and "ship" is mostly content and data wiring.
This matters most for the kind of work Lantern is doing more of: operator tooling, customer-facing analytics views, KPI summaries inside product surfaces, and proof-of-concept dashboards that need to survive the "should we ship this?" conversation.
Docs: a new top-level Charts section
The sidebar now has its own Charts group:
/charts — live gallery. All 42 variants on one page, grouped by family, with an anchor-pill nav to jump between sections. Modeled on the shadcn charts gallery.
/charts/area, /charts/bar, /charts/line, /charts/pie — per-family deep dives. Each variant has a description, a code toggle showing the exact import + usage, and the live themed chart.
The Components > Data page no longer lists ChartContainer — chart primitives and chart recipes now live in their own dedicated section.
What's next
Candidates for v0.4.0:
- Radar + radial recipes to round out the gallery with the remaining shadcn chart families
- Tooltip recipes — themed tooltip patterns beyond the defaults (range tooltips, comparison tooltips, on-canvas annotations)
- Dashboard shells — example application shells composing chart families with sidebars, filters, and KPI cards, so the "dashboard in an afternoon" claim has a directly copyable starting point
- Theming presets — palette overrides for product-specific accent schemes while keeping the same chart token contract