Charts

7 chart types with Apple Health-inspired design

Charts

7 chart types with Apple Health-inspired SVG rendering. Each chart type is a separate component.

Chart Components

ComponentDescription
BarChartVertical bar chart with rounded corners
LineChartLine chart with optional data points
PieChartPie chart
DonutChartDonut chart with center cutout
AreaChartArea chart with gradient fill
RadarChartRadar/spider chart
ScatterChartScatter plot

Common Props

PropTypeDefaultDescription
dataExpressionRequiredArray of data objects
valueKeyExpressionRequiredKey to extract numeric values from data
labelKeyExpression-Key to extract labels from data
widthExpression300Chart width in pixels
heightExpression200Chart height in pixels
colorsExpressionBuilt-in paletteArray of color strings
showGridExpressionfalseShow grid lines
showLabelsExpressionfalseShow axis labels

BarChart Additional Props

PropTypeDefaultDescription
barGapExpression-Gap between bars
barRadiusExpression-Corner radius for rounded bars
orientationExpression"vertical"Bar orientation

Data Format

Chart data is a flat array of objects:

json
[
  { "label": "Jan", "value": 65 },
  { "label": "Feb", "value": 59 },
  { "label": "Mar", "value": 80 }
]

Examples

Bar Chart

json
{
  "kind": "component",
  "name": "BarChart",
  "props": {
    "data": { "expr": "state", "name": "chartData" },
    "valueKey": { "expr": "lit", "value": "value" },
    "labelKey": { "expr": "lit", "value": "label" },
    "showGrid": { "expr": "lit", "value": true },
    "showLabels": { "expr": "lit", "value": true },
    "barRadius": { "expr": "lit", "value": 4 }
  }
}

Line Chart

json
{
  "kind": "component",
  "name": "LineChart",
  "props": {
    "data": { "expr": "state", "name": "chartData" },
    "valueKey": { "expr": "lit", "value": "value" },
    "labelKey": { "expr": "lit", "value": "label" },
    "showGrid": { "expr": "lit", "value": true }
  }
}

Pie Chart

json
{
  "kind": "component",
  "name": "PieChart",
  "props": {
    "data": { "expr": "state", "name": "chartData" },
    "valueKey": { "expr": "lit", "value": "value" },
    "labelKey": { "expr": "lit", "value": "label" }
  }
}

Donut Chart

json
{
  "kind": "component",
  "name": "DonutChart",
  "props": {
    "data": { "expr": "state", "name": "chartData" },
    "valueKey": { "expr": "lit", "value": "value" },
    "labelKey": { "expr": "lit", "value": "label" }
  }
}

Area Chart

json
{
  "kind": "component",
  "name": "AreaChart",
  "props": {
    "data": { "expr": "state", "name": "chartData" },
    "valueKey": { "expr": "lit", "value": "value" },
    "labelKey": { "expr": "lit", "value": "label" },
    "showGrid": { "expr": "lit", "value": true }
  }
}

Radar Chart

json
{
  "kind": "component",
  "name": "RadarChart",
  "props": {
    "data": { "expr": "state", "name": "chartData" },
    "valueKey": { "expr": "lit", "value": "value" },
    "labelKey": { "expr": "lit", "value": "label" }
  }
}

Scatter Chart

json
{
  "kind": "component",
  "name": "ScatterChart",
  "props": {
    "data": { "expr": "state", "name": "chartData" },
    "valueKey": { "expr": "lit", "value": "value" },
    "labelKey": { "expr": "lit", "value": "label" }
  }
}

Styling

CSS classes:

  • .chart-container - Main container
  • .chart-svg - SVG element
  • .chart-bar - Bar elements
  • .chart-line - Line paths
  • .chart-area - Area fills
  • .chart-point - Data points
  • .chart-slice - Pie/donut slices
  • .chart-grid - Grid lines
  • .chart-label - Axis labels

Accessibility

  • ARIA labels for chart elements
  • Semantic SVG structure
  • High contrast mode support
  • Screen reader descriptions for data