Volume or trend over time — traffic, pipeline value, headcount. Stacked or 100% stacked, gradient / solid / no fill, a dashed previous-period series and reference lines.
Nov 1 – Nov 30. Visits: low 820 (Nov 1), high 1,419 (Nov 27), average 1,105.37. Previous 30 days: low 705 (Nov 1), high 1,222 (Nov 28), average 951.47.
| Date | Visits | Previous 30 days |
|---|---|---|
| Nov 1, 2026 | 820 | 705 |
| Nov 2, 2026 | 926 | 794 |
| Nov 3, 2026 | 1,027 | 878 |
| Nov 4, 2026 | 1,028 | 873 |
| Nov 5, 2026 | 1,105 | 936 |
| Nov 6, 2026 | 1,075 | 985 |
| Nov 7, 2026 | 1,118 | 939 |
| Nov 8, 2026 | 1,144 | 959 |
| Nov 9, 2026 | 1,066 | 966 |
| Nov 10, 2026 | 1,067 | 885 |
| Nov 11, 2026 | 973 | 878 |
| Nov 12, 2026 | 969 | 871 |
| Nov 13, 2026 | 969 | 789 |
| Nov 14, 2026 | 890 | 795 |
| Nov 15, 2026 | 914 | 734 |
| Nov 16, 2026 | 865 | 766 |
| Nov 17, 2026 | 923 | 813 |
| Nov 18, 2026 | 998 | 795 |
| Nov 19, 2026 | 998 | 869 |
| Nov 20, 2026 | 1,098 | 953 |
| Nov 21, 2026 | 1,114 | 961 |
| Nov 22, 2026 | 1,221 | 1,050 |
| Nov 23, 2026 | 1,232 | 1,134 |
| Nov 24, 2026 | 1,324 | 1,131 |
| Nov 25, 2026 | 1,403 | 1,195 |
| Nov 26, 2026 | 1,375 | 1,166 |
| Nov 27, 2026 | 1,419 | 1,201 |
| Nov 28, 2026 | 1,357 | 1,222 |
| Nov 29, 2026 | 1,370 | 1,151 |
| Nov 30, 2026 | 1,373 | 1,150 |
Installation
The whole kit as one package — get updates by bumping the version. Add the styles to globals.css: @import "@vamos-ui/react/styles.css";
Usage
import { AreaChart } from "@vamos-ui/react/charts";
<AreaChart title="Traffic" data={rows} x="date" config={{ visits: { label: "Visits" } }} height="md" />null values leave gaps (connectNulls is off); a single point renders as a dot.
Gradient ids come from useId, so two charts on a page never collide.
Examples
Stacked by channel
stack="stacked" with fill="solid"; the tooltip reads the total.
Sep 7 – Oct 19. Organic: low 4,210 (Sep 7), high 5,490 (Oct 19), average 4,794.29. Paid: low 1,860 (Sep 7), high 2,450 (Oct 19), average 2,138.57. Social: low 870 (Sep 14), high 1,260 (Oct 12), average 1,081.43. Email: low 640 (Sep 7), high 940 (Oct 19), average 777.14.
| Week | Organic | Paid | Social | |
|---|---|---|---|---|
| Sep 7 | 4,210 | 1,860 | 920 | 640 |
| Sep 14 | 4,480 | 2,010 | 870 | 710 |
| Sep 21 | 4,390 | 2,240 | 1,040 | 690 |
| Sep 28 | 4,720 | 2,120 | 1,180 | 820 |
| Oct 5 | 5,010 | 1,980 | 1,090 | 760 |
| Oct 12 | 5,260 | 2,310 | 1,260 | 880 |
| Oct 19 | 5,490 | 2,450 | 1,210 | 940 |
100% stacked
stack="percent": the axis reads 0–100%, the tooltip adds each share.
May – Oct. Mobile: low 5,840 (May), high 7,420 (Oct), average 6,735. Desktop: low 3,720 (Jul), high 4,260 (Sep), average 4,013.33. Tablet: low 520 (Aug), high 610 (May), average 556.67.
| Month | Mobile | Desktop | Tablet |
|---|---|---|---|
| May | 5,840 | 4,120 | 610 |
| Jun | 6,210 | 3,980 | 580 |
| Jul | 6,940 | 3,720 | 540 |
| Aug | 7,180 | 3,810 | 520 |
| Sep | 6,820 | 4,260 | 560 |
| Oct | 7,420 | 4,190 | 530 |
Compare to previous period (HR)
compare={{ key }} draws that series dashed, unfilled and outside the stack.
Jan – Oct. 2026: low 212 (Jan), high 259 (Oct), average 235. 2025: low 184 (Jan), high 210 (Oct), average 199.
| Month | 2026 | 2025 |
|---|---|---|
| Jan | 212 | 184 |
| Feb | 216 | 186 |
| Mar | 223 | 191 |
| Apr | 229 | 193 |
| May | 231 | 198 |
| Jun | 238 | 202 |
| Jul | 244 | 205 |
| Aug | 246 | 207 |
| Sep | 252 | 209 |
| Oct | 259 | 210 |
Target line
reference lines take a token colour and a label; the axis extends to include them.
Apr – Oct. MRR: low $38,200.00 (Apr), high $54,600.00 (Oct), average $45,957.14.
| Month | MRR |
|---|---|
| Apr | $38,200.00 |
| May | $41,900.00 |
| Jun | $44,300.00 |
| Jul | $43,700.00 |
| Aug | $47,800.00 |
| Sep | $51,200.00 |
| Oct | $54,600.00 |
API
AreaChart
| Prop | Type | Default |
|---|---|---|
…Chart propstitle, data, config, x, formats, height, state, legend, tableToggle, onPointClick… (see Chart frame). | ChartProps | — |
seriesKeys to draw. Default: every config key. | string[] | — |
stackStacking. | "none" | "stacked" | "percent" | "none" |
curveLine interpolation. | "monotone" | "linear" | "step" | "monotone" |
fillFill under the line. Gradient top opacity drops in glass mode. | "gradient" | "solid" | "none" | "gradient" |
comparePrevious-period series: dashed, no fill, not stacked. | { key: string } | — |
referenceHorizontal reference lines. | { y, label?, color? }[] | — |
hideYAxisHide the value axis (compact cards). | boolean | false |