Skip to main content

AppReactApexCharts

In this guide, we'll discuss how to effectively utilize ApexCharts, a modern charting library, with Material-UI styling in a Next.js application. For more information on ApexCharts, see the official documentation.

Overview

ApexCharts is a feature-rich charting library that allows for the creation of interactive and visually appealing charts. To ensure these charts blend seamlessly with the Material-UI themed application, we have created a custom wrapper component.

Styling ApexCharts

We use Material-UI's styling capabilities to apply custom styles to ApexCharts. This is achieved through the AppReactApexCharts component, which is a styled Box component from Material-UI, adapted specifically for ApexCharts.

Styled Component: AppReactApexCharts

AppReactApexCharts encapsulates an ApexCharts component within a Material-UI Box, applying tailored styles for consistency with the overall theme.

Example Code

// MUI Imports
import Box from '@mui/material/Box';
import { styled } from '@mui/material/styles';
import type { BoxProps } from '@mui/material/Box';

import ReactApexcharts from '@/libs/ApexCharts';

// Third-party Imports
import type { Props } from 'react-apexcharts'

type ApexChartWrapperProps = Props & {
boxProps?: BoxProps
}

// Define custom styles and properties
const ApexChartWrapper = styled(Box)<BoxProps>(({ theme }) => ({
// Custom styles for the ApexCharts...
})) as typeof Box;

// Component to render the chart
const AppReactApexCharts = (props: ApexChartWrapperProps) => {
const { boxProps, ...rest } = props;

return (
<ApexChartWrapper {...boxProps}>
<ReactApexcharts {...rest} />
</ApexChartWrapper>
);
};

export default AppReactApexCharts;

In this code, AppReactApexCharts takes in the standard props for an ApexCharts component, along with additional BoxProps for further customization.

Implementing the Styled ApexCharts

Using AppReactApexCharts, you can easily incorporate customized ApexCharts into your application.

Example: Creating a Basic Line Chart

import dynamic from 'next/dynamic';
import Card from '@mui/material/Card';
import { useTheme } from '@mui/material/styles';
import CardHeader from '@mui/material/CardHeader';
import CardContent from '@mui/material/CardContent';
import type { ApexOptions } from 'apexcharts';

const AppReactApexCharts = dynamic(() => import('@/libs/styles/AppReactApexCharts'));

const ApexLineChart = () => {
const theme = useTheme();
const options: ApexOptions = {
// ApexCharts configuration...
};

return (
<Card>
<CardHeader
title='Balance'
subheader='Commercial networks & enterprises'
// Additional styling...
/>
<CardContent>
<AppReactApexCharts type='line' width='100%' height={400} options={options} series={series} />
</CardContent>
</Card>
);
};

export default ApexLineChart;

In this example, ApexLineChart is a functional component that renders a line chart using the AppReactApexCharts wrapper. It demonstrates how to pass configuration options and data series to the chart.