Area Chart Connect Nulls

import { AreaChart, Area, XAxis, YAxis, CartesianGrid, Tooltip } from 'recharts';
import { RechartsDevtools } from '@recharts/devtools';

// #region Sample data
const data = [
  {
    name: 'Page A',
    uv: 4000,
    pv: 2400,
    amt: 2400,
  },
  {
    name: 'Page B',
    uv: 3000,
    pv: 1398,
    amt: 2210,
  },
  {
    name: 'Page C',
    uv: 2000,
    pv: 9800,
    amt: 2290,
  },
  {
    name: 'Page D',
    pv: 3908,
    amt: 2000,
  },
  {
    name: 'Page E',
    uv: 1890,
    pv: 4800,
    amt: 2181,
  },
  {
    name: 'Page F',
    uv: 2390,
    pv: 3800,
    amt: 2500,
  },
  {
    name: 'Page G',
    uv: 3490,
    pv: 4300,
    amt: 2100,
  },
];

const dataWithGaps = [
  {
    name: 'Page A',
    uv: 4000,
    pv: 2400,
    amt: 2400,
  },
  {
    name: 'Page B',
    uv: 3000,
    pv: 1398,
    amt: 2210,
  },
  {
    name: 'Page C',
    // no series has a value here
  },
  {
    name: 'Page D',
    uv: 2000,
    pv: 9800,
    amt: 2290,
  },
  {
    name: 'Page E',
    uv: 1890,
    pv: 4800,
    amt: 2181,
  },
  {
    name: 'Page F',
    // only uv is missing here
    pv: 4300,
    amt: 2100,
  },
];

// #endregion
const AreaChartConnectNulls = () => {
  return (
    <div style={{ width: '100%' }}>
      <AreaChart
        style={{ width: '100%', maxWidth: '700px', maxHeight: '30vh', aspectRatio: 1.618 }}
        responsive
        data={data}
        margin={{
          top: 20,
          right: 0,
          left: 0,
          bottom: 0,
        }}
      >
        <CartesianGrid />
        <XAxis dataKey="name" />
        <YAxis width="auto" />
        <Tooltip />
        <Area type="monotone" dataKey="uv" />
        <RechartsDevtools />
      </AreaChart>

      <AreaChart
        style={{ width: '100%', maxWidth: '700px', maxHeight: '30vh', aspectRatio: 1.618 }}
        responsive
        data={data}
        margin={{
          top: 20,
          right: 0,
          left: 0,
          bottom: 0,
        }}
      >
        <CartesianGrid />
        <XAxis dataKey="name" />
        <YAxis width="auto" />
        <Tooltip />
        <Area connectNulls type="monotone" dataKey="uv" />
        <RechartsDevtools />
      </AreaChart>

      <AreaChart
        style={{ width: '100%', maxWidth: '700px', maxHeight: '30vh', aspectRatio: 1.618 }}
        responsive
        data={data}
        margin={{
          top: 10,
          right: 30,
          left: 0,
          bottom: 0,
        }}
      >
        <CartesianGrid />
        <XAxis dataKey="name" />
        <YAxis />
        <Tooltip />
        <Area type="monotone" dataKey="uv" stackId="1" />
        <Area type="monotone" dataKey="pv" stackId="1" />
        <Area type="monotone" dataKey="amt" stackId="1" />
        <RechartsDevtools />
      </AreaChart>

      <AreaChart
        style={{ width: '100%', maxWidth: '700px', maxHeight: '30vh', aspectRatio: 1.618 }}
        responsive
        data={data}
        margin={{
          top: 10,
          right: 30,
          left: 0,
          bottom: 0,
        }}
      >
        <CartesianGrid />
        <XAxis dataKey="name" />
        <YAxis />
        <Tooltip />
        <Area connectNulls type="monotone" dataKey="uv" stackId="1" />
        <Area connectNulls type="monotone" dataKey="pv" stackId="1" />
        <Area connectNulls type="monotone" dataKey="amt" stackId="1" />
        <RechartsDevtools />
      </AreaChart>

      <AreaChart
        style={{ width: '100%', maxWidth: '700px', maxHeight: '30vh', aspectRatio: 1.618 }}
        responsive
        data={dataWithGaps}
        margin={{
          top: 10,
          right: 30,
          left: 0,
          bottom: 0,
        }}
      >
        <CartesianGrid />
        <XAxis dataKey="name" />
        <YAxis />
        <Tooltip />
        <Area type="monotone" dataKey="uv" stackId="1" />
        <Area type="monotone" dataKey="pv" stackId="1" />
        <Area type="monotone" dataKey="amt" stackId="1" />
        <RechartsDevtools />
      </AreaChart>

      <AreaChart
        style={{ width: '100%', maxWidth: '700px', maxHeight: '30vh', aspectRatio: 1.618 }}
        responsive
        data={dataWithGaps}
        margin={{
          top: 10,
          right: 30,
          left: 0,
          bottom: 0,
        }}
      >
        <CartesianGrid />
        <XAxis dataKey="name" />
        <YAxis />
        <Tooltip />
        <Area connectNulls type="monotone" dataKey="uv" stackId="1" />
        <Area connectNulls type="monotone" dataKey="pv" stackId="1" />
        <Area connectNulls type="monotone" dataKey="amt" stackId="1" />
        <RechartsDevtools />
      </AreaChart>
    </div>
  );
};

export default AreaChartConnectNulls;