Strongtie Design System
Getting StartedComponents

Command Palette

Search for a command to run...

Getting Started
  • Introduction
  • Setup Guide
  • Package Installation
  • Code Quality Setup
  • Migration Guide
  • Resources
Registry
  • Getting Started
  • Combobox
  • Datepicker
  • MultiSelect
  • Tree
Guides
  • Framework Recommendations
Foundations
  • States
  • Variables
Components
  • Accordion
  • Alert
  • Alert Dialog
  • Avatar
  • Badge
  • Breadcrumb
  • Button
  • Button Group
  • Calendar
  • Card
  • Carousel
  • Chart
  • Checkbox
  • Collapsible
  • Command
  • Combobox
  • Context Menu
  • Date Picker
  • Dialog
  • Drawer
  • Dropdown Menu
  • Empty
  • Field
  • Hover Card
  • Input
  • Input Group
  • Item
  • Kbd
  • Label
  • Menubar
  • Multi Select
  • Navigation Menu
  • Pagination
  • Popover
  • Progress
  • Radio Group
  • Scroll Area
  • Select
  • Separator
  • Sheet
  • Sidebar
  • Skeleton
  • Slider
  • Switch
  • Table
  • Tabs
  • Textarea
  • Toaster
  • Toggle
  • Toggle Group
  • Tooltip
  • Tree
2026 Simpson Strong-Tie
  1. Docs
  2. Components
  3. Chart

Chart

PreviousNext

ChartContainer is a wrapper component for Recharts charts that provides consistent styling and theming.

This component handles responsive sizing, theme-aware color configuration, and consistent styling across chart elements. It accepts a config object that defines colors, labels, and icons for each data series, which are automatically applied to tooltips and legends for consistent presentation.

Use ChartContainer as the root wrapper for any Recharts chart (LineChart, BarChart, AreaChart, etc.) to ensure proper styling, theming, and responsive behavior. The container includes pre-configured styles for axes, grids, tooltips, and data points that integrate with your design system's tokens.

Example

"use client"

import {
  ChartContainer,
  ChartTooltip,
  ChartTooltipContent,
  type ChartConfig,
} from "@strongtie/design-system/chart"
import { Bar, BarChart, CartesianGrid, XAxis } from "recharts"

const chartData = [
  { month: "January", desktop: 186 },
  { month: "February", desktop: 305 },
  { month: "March", desktop: 237 },
  { month: "April", desktop: 73 },
  { month: "May", desktop: 209 },
  { month: "June", desktop: 214 },
]

const chartConfig = {
  desktop: {
    label: "Desktop",
    color: "#2563eb",
  },
} satisfies ChartConfig

export function ChartDefault() {
  return (
    <ChartContainer config={chartConfig} className="min-h-[200px] w-full">
      <BarChart accessibilityLayer data={chartData}>
        <CartesianGrid vertical={false} />
        <XAxis
          dataKey="month"
          tickLine={false}
          tickMargin={10}
          axisLine={false}
          tickFormatter={(value) => value.slice(0, 3)}
        />
        <ChartTooltip content={<ChartTooltipContent />} />
        <Bar dataKey="desktop" fill="var(--color-desktop)" radius={8} />
      </BarChart>
    </ChartContainer>
  )
}

Installation

npm install @strongtie/design-system
import { Chart } from "@strongtie/design-system/chart"

Components

This module exports the following components:

  • ChartContainer
  • Tooltip
  • ChartTooltipContent
  • Legend
  • componentDidMount
  • componentDidUpdate
  • ChartLegendContent
  • ChartStyle

Props

<ChartContainer>

PropTypeDefaultDescription
config *ChartConfig-

<Tooltip>

PropTypeDefaultDescription
activeboolean-If true, then Tooltip is always displayed, once an activeIndex is set by mouse over, or programmatically. If false, then Tooltip is never displayed. If active is undefined, Recharts will control when the Tooltip displays. This includes mouse and keyboard controls.
allowEscapeViewBoxAllowInDimension-
animationDurationnumber-
animationEasingease | ease-in | ease-out | ease-in-out | linear-
contentContentType<TValue, TName>-
coordinatePartial<Coordinate>-
cursorboolean | ReactElement<unknown, string | JSXElementConstructor<any>> | SVGProps<...-
defaultIndexnumber-
filterNullboolean-
includeHiddenboolean-If true, then Tooltip will information about hidden series (defaults to false). Interacting with the hide property of Area, Bar, Line, Scatter.
isAnimationActiveboolean-
offsetnumber-
payloadUniqByUniqueOption<Payload<TValue, TName>>-
positionPartial<Coordinate>-
reverseDirectionAllowInDimension-
sharedboolean-
triggerhover | click-
useTranslate3dboolean-
viewBoxCartesianViewBox-
wrapperStyleCSSProperties-

<ChartTooltipContent>

PropTypeDefaultDescription
activeboolean-If true, then Tooltip is always displayed, once an activeIndex is set by mouse over, or programmatically. If false, then Tooltip is never displayed. If active is undefined, Recharts will control when the Tooltip displays. This includes mouse and keyboard controls.
allowEscapeViewBoxAllowInDimension-
animationDurationnumber-
animationEasingease | ease-in | ease-out | ease-in-out | linear-
content(ContentType<ValueType, NameType> & string)-
coordinatePartial<Coordinate>-
cursorboolean | ReactElement<unknown, string | JSXElementConstructor<any>> | SVGProps<...-
defaultIndexnumber-
filterNullboolean-
hideIndicatorbooleanfalse
hideLabelbooleanfalse
includeHiddenboolean-If true, then Tooltip will information about hidden series (defaults to false). Interacting with the hide property of Area, Bar, Line, Scatter.
indicatorline | dot | dasheddot
isAnimationActiveboolean-
labelKeystring-
nameKeystring-
offsetnumber-
payloadUniqByUniqueOption<Payload<ValueType, NameType>>-
positionPartial<Coordinate>-
reverseDirectionAllowInDimension-
sharedboolean-
triggerhover | click-
useTranslate3dboolean-
viewBoxCartesianViewBox-
wrapperStyleCSSProperties-

<Legend>

PropTypeDefaultDescription
chartHeightnumber-
chartWidthnumber-
dangerouslySetInnerHTML{ __html: string; }-
margin{ top?: number; left?: number; bottom?: number | undefined; right?: number | und...-
onAbortAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onAbortCaptureAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onAnimationEndAdaptChildAnimationEventHandler<any, ReactElement<unknown, string | JSXElementCo...-
onAnimationEndCaptureAdaptChildAnimationEventHandler<any, ReactElement<unknown, string | JSXElementCo...-
onAnimationIterationAdaptChildAnimationEventHandler<any, ReactElement<unknown, string | JSXElementCo...-
onAnimationIterationCaptureAdaptChildAnimationEventHandler<any, ReactElement<unknown, string | JSXElementCo...-
onAnimationStartAdaptChildAnimationEventHandler<any, ReactElement<unknown, string | JSXElementCo...-
onAnimationStartCaptureAdaptChildAnimationEventHandler<any, ReactElement<unknown, string | JSXElementCo...-
onAuxClickAdaptChildMouseEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onAuxClickCaptureAdaptChildMouseEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onBBoxUpdate((box: DOMRect | null) => void)-
onBeforeInputAdaptChildFormEventHandler<any, ReactElement<unknown, string | JSXElementConstru...-
onBeforeInputCaptureAdaptChildFormEventHandler<any, ReactElement<unknown, string | JSXElementConstru...-
onBlurAdaptChildFocusEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onBlurCaptureAdaptChildFocusEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onCanPlayAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onCanPlayCaptureAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onCanPlayThroughAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onCanPlayThroughCaptureAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onChangeAdaptChildFormEventHandler<any, ReactElement<unknown, string | JSXElementConstru...-
onChangeCaptureAdaptChildFormEventHandler<any, ReactElement<unknown, string | JSXElementConstru...-
onClickCaptureAdaptChildMouseEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onCompositionEndAdaptChildCompositionEventHandler<any, ReactElement<unknown, string | JSXElement...-
onCompositionEndCaptureAdaptChildCompositionEventHandler<any, ReactElement<unknown, string | JSXElement...-
onCompositionStartAdaptChildCompositionEventHandler<any, ReactElement<unknown, string | JSXElement...-
onCompositionStartCaptureAdaptChildCompositionEventHandler<any, ReactElement<unknown, string | JSXElement...-
onCompositionUpdateAdaptChildCompositionEventHandler<any, ReactElement<unknown, string | JSXElement...-
onCompositionUpdateCaptureAdaptChildCompositionEventHandler<any, ReactElement<unknown, string | JSXElement...-
onContextMenuAdaptChildMouseEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onContextMenuCaptureAdaptChildMouseEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onCopyAdaptChildClipboardEventHandler<any, ReactElement<unknown, string | JSXElementCo...-
onCopyCaptureAdaptChildClipboardEventHandler<any, ReactElement<unknown, string | JSXElementCo...-
onCutAdaptChildClipboardEventHandler<any, ReactElement<unknown, string | JSXElementCo...-
onCutCaptureAdaptChildClipboardEventHandler<any, ReactElement<unknown, string | JSXElementCo...-
onDoubleClickAdaptChildMouseEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onDoubleClickCaptureAdaptChildMouseEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onDragAdaptChildDragEventHandler<any, ReactElement<unknown, string | JSXElementConstru...-
onDragCaptureAdaptChildDragEventHandler<any, ReactElement<unknown, string | JSXElementConstru...-
onDragEndAdaptChildDragEventHandler<any, ReactElement<unknown, string | JSXElementConstru...-
onDragEndCaptureAdaptChildDragEventHandler<any, ReactElement<unknown, string | JSXElementConstru...-
onDragEnterAdaptChildDragEventHandler<any, ReactElement<unknown, string | JSXElementConstru...-
onDragEnterCaptureAdaptChildDragEventHandler<any, ReactElement<unknown, string | JSXElementConstru...-
onDragExitAdaptChildDragEventHandler<any, ReactElement<unknown, string | JSXElementConstru...-
onDragExitCaptureAdaptChildDragEventHandler<any, ReactElement<unknown, string | JSXElementConstru...-
onDragLeaveAdaptChildDragEventHandler<any, ReactElement<unknown, string | JSXElementConstru...-
onDragLeaveCaptureAdaptChildDragEventHandler<any, ReactElement<unknown, string | JSXElementConstru...-
onDragOverAdaptChildDragEventHandler<any, ReactElement<unknown, string | JSXElementConstru...-
onDragOverCaptureAdaptChildDragEventHandler<any, ReactElement<unknown, string | JSXElementConstru...-
onDragStartAdaptChildDragEventHandler<any, ReactElement<unknown, string | JSXElementConstru...-
onDragStartCaptureAdaptChildDragEventHandler<any, ReactElement<unknown, string | JSXElementConstru...-
onDropAdaptChildDragEventHandler<any, ReactElement<unknown, string | JSXElementConstru...-
onDropCaptureAdaptChildDragEventHandler<any, ReactElement<unknown, string | JSXElementConstru...-
onDurationChangeAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onDurationChangeCaptureAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onEmptiedAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onEmptiedCaptureAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onEncryptedAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onEncryptedCaptureAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onEndedAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onEndedCaptureAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onErrorAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onErrorCaptureAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onFocusAdaptChildFocusEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onFocusCaptureAdaptChildFocusEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onGotPointerCaptureAdaptChildPointerEventHandler<any, ReactElement<unknown, string | JSXElementCons...-
onGotPointerCaptureCaptureAdaptChildPointerEventHandler<any, ReactElement<unknown, string | JSXElementCons...-
onInputAdaptChildFormEventHandler<any, ReactElement<unknown, string | JSXElementConstru...-
onInputCaptureAdaptChildFormEventHandler<any, ReactElement<unknown, string | JSXElementConstru...-
onInvalidAdaptChildFormEventHandler<any, ReactElement<unknown, string | JSXElementConstru...-
onInvalidCaptureAdaptChildFormEventHandler<any, ReactElement<unknown, string | JSXElementConstru...-
onKeyDownAdaptChildKeyboardEventHandler<any, ReactElement<unknown, string | JSXElementCon...-
onKeyDownCaptureAdaptChildKeyboardEventHandler<any, ReactElement<unknown, string | JSXElementCon...-
onKeyPressAdaptChildKeyboardEventHandler<any, ReactElement<unknown, string | JSXElementCon...-
onKeyPressCaptureAdaptChildKeyboardEventHandler<any, ReactElement<unknown, string | JSXElementCon...-
onKeyUpAdaptChildKeyboardEventHandler<any, ReactElement<unknown, string | JSXElementCon...-
onKeyUpCaptureAdaptChildKeyboardEventHandler<any, ReactElement<unknown, string | JSXElementCon...-
onLoadAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onLoadCaptureAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onLoadedDataAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onLoadedDataCaptureAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onLoadedMetadataAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onLoadedMetadataCaptureAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onLoadStartAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onLoadStartCaptureAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onLostPointerCaptureAdaptChildPointerEventHandler<any, ReactElement<unknown, string | JSXElementCons...-
onLostPointerCaptureCaptureAdaptChildPointerEventHandler<any, ReactElement<unknown, string | JSXElementCons...-
onMouseDownAdaptChildMouseEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onMouseDownCaptureAdaptChildMouseEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onMouseMoveAdaptChildMouseEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onMouseMoveCaptureAdaptChildMouseEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onMouseOutAdaptChildMouseEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onMouseOutCaptureAdaptChildMouseEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onMouseOverAdaptChildMouseEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onMouseOverCaptureAdaptChildMouseEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onMouseUpAdaptChildMouseEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onMouseUpCaptureAdaptChildMouseEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onPasteAdaptChildClipboardEventHandler<any, ReactElement<unknown, string | JSXElementCo...-
onPasteCaptureAdaptChildClipboardEventHandler<any, ReactElement<unknown, string | JSXElementCo...-
onPauseAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onPauseCaptureAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onPlayAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onPlayCaptureAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onPlayingAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onPlayingCaptureAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onPointerCancelAdaptChildPointerEventHandler<any, ReactElement<unknown, string | JSXElementCons...-
onPointerCancelCaptureAdaptChildPointerEventHandler<any, ReactElement<unknown, string | JSXElementCons...-
onPointerDownAdaptChildPointerEventHandler<any, ReactElement<unknown, string | JSXElementCons...-
onPointerDownCaptureAdaptChildPointerEventHandler<any, ReactElement<unknown, string | JSXElementCons...-
onPointerEnterAdaptChildPointerEventHandler<any, ReactElement<unknown, string | JSXElementCons...-
onPointerEnterCaptureAdaptChildPointerEventHandler<any, ReactElement<unknown, string | JSXElementCons...-
onPointerLeaveAdaptChildPointerEventHandler<any, ReactElement<unknown, string | JSXElementCons...-
onPointerLeaveCaptureAdaptChildPointerEventHandler<any, ReactElement<unknown, string | JSXElementCons...-
onPointerMoveAdaptChildPointerEventHandler<any, ReactElement<unknown, string | JSXElementCons...-
onPointerMoveCaptureAdaptChildPointerEventHandler<any, ReactElement<unknown, string | JSXElementCons...-
onPointerOutAdaptChildPointerEventHandler<any, ReactElement<unknown, string | JSXElementCons...-
onPointerOutCaptureAdaptChildPointerEventHandler<any, ReactElement<unknown, string | JSXElementCons...-
onPointerOverAdaptChildPointerEventHandler<any, ReactElement<unknown, string | JSXElementCons...-
onPointerOverCaptureAdaptChildPointerEventHandler<any, ReactElement<unknown, string | JSXElementCons...-
onPointerUpAdaptChildPointerEventHandler<any, ReactElement<unknown, string | JSXElementCons...-
onPointerUpCaptureAdaptChildPointerEventHandler<any, ReactElement<unknown, string | JSXElementCons...-
onProgressAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onProgressCaptureAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onRateChangeAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onRateChangeCaptureAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onResetAdaptChildFormEventHandler<any, ReactElement<unknown, string | JSXElementConstru...-
onResetCaptureAdaptChildFormEventHandler<any, ReactElement<unknown, string | JSXElementConstru...-
onScrollAdaptChildUIEventHandler<any, ReactElement<unknown, string | JSXElementConstruct...-
onScrollCaptureAdaptChildUIEventHandler<any, ReactElement<unknown, string | JSXElementConstruct...-
onSeekedAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onSeekedCaptureAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onSeekingAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onSeekingCaptureAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onSelectAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onSelectCaptureAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onStalledAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onStalledCaptureAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onSubmitAdaptChildFormEventHandler<any, ReactElement<unknown, string | JSXElementConstru...-
onSubmitCaptureAdaptChildFormEventHandler<any, ReactElement<unknown, string | JSXElementConstru...-
onSuspendAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onSuspendCaptureAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onTimeUpdateAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onTimeUpdateCaptureAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onTouchCancelAdaptChildTouchEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onTouchCancelCaptureAdaptChildTouchEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onTouchEndAdaptChildTouchEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onTouchEndCaptureAdaptChildTouchEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onTouchMoveAdaptChildTouchEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onTouchMoveCaptureAdaptChildTouchEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onTouchStartAdaptChildTouchEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onTouchStartCaptureAdaptChildTouchEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onTransitionEndAdaptChildTransitionEventHandler<any, ReactElement<unknown, string | JSXElementC...-
onTransitionEndCaptureAdaptChildTransitionEventHandler<any, ReactElement<unknown, string | JSXElementC...-
onVolumeChangeAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onVolumeChangeCaptureAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onWaitingAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onWaitingCaptureAdaptChildReactEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onWheelAdaptChildWheelEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
onWheelCaptureAdaptChildWheelEventHandler<any, ReactElement<unknown, string | JSXElementConstr...-
payloadUniqByUniqueOption<Payload>-
wrapperStyleCSSProperties-

<ChartLegendContent>

PropTypeDefaultDescription
hideIconbooleanfalse
nameKeystring-

<ChartStyle>

PropTypeDefaultDescription
config *ChartConfig-
id *string-

Example

"use client"

import {
  ChartContainer,
  ChartTooltip,
  ChartTooltipContent,
  type ChartConfig,
} from "@strongtie/design-system/chart"
import { Bar, BarChart, CartesianGrid, XAxis } from "recharts"

const chartData = [
  { month: "January", desktop: 186 },
  { month: "February", desktop: 305 },
  { month: "March", desktop: 237 },
  { month: "April", desktop: 73 },
  { month: "May", desktop: 209 },
  { month: "June", desktop: 214 },
]

const chartConfig = {
  desktop: {
    label: "Desktop",
    color: "#2563eb",
  },
} satisfies ChartConfig

export function ChartDefault() {
  return (
    <ChartContainer config={chartConfig} className="min-h-[200px] w-full">
      <BarChart accessibilityLayer data={chartData}>
        <CartesianGrid vertical={false} />
        <XAxis
          dataKey="month"
          tickLine={false}
          tickMargin={10}
          axisLine={false}
          tickFormatter={(value) => value.slice(0, 3)}
        />
        <ChartTooltip content={<ChartTooltipContent />} />
        <Bar dataKey="desktop" fill="var(--color-desktop)" radius={8} />
      </BarChart>
    </ChartContainer>
  )
}

Styling

Components can be styled using the className prop. The design system uses Tailwind CSS for styling.

Classes

CSS classes used by this component:

  • chart-container

Accessibility

Ensure proper accessibility attributes are added when implementing this component.

CarouselCheckbox

On This Page

ExampleInstallationComponentsProps<ChartContainer><Tooltip><ChartTooltipContent><Legend><ChartLegendContent><ChartStyle>ExampleStylingClassesAccessibility

Contribute

  • Report an issue
  • Request a feature
  • Edit this page